UNPKG

coffeelint-multiple-callback

Version:

Coffeelint rule that checks for callbacks being called multiple times

234 lines (176 loc) 3.07 kB
some_require = require('./thing')() caller = ()-> return caller2 = (cb)-> # HIT return caller2() # var defs to prevent undefined errors stuff = {} async = require 'async' exports.getPoolConnection = (good_callback) -> # min=0 max=0 stuff.asdf.getConnection (err, connection) -> # min=0 max=0 if err # min=0 max=0 good_callback err # min=1 max=1, okay return # min=1 max=0 good_callback null, connection # min=2 max=1, okay return # min=2 max=1, okay return exports.getBadPoolConnection = (bad_callback) -> # min=0 max=0 stuff.getConnection (err, connection) -> # min=0 max=0 if err # min=0 max=0 bad_callback err # min=1 max=1 # min=1 max=1 bad_callback null, connection # HIT # min=2 max=2 BAD return # min=2 max=1, BAD return badFunc = (err, a_cb)-> a_cb err a_cb err # HIT return badFunc2 = (err, a_cb)-> a_cb err a_cb err # HIT return badFunc() badFunc3 = (cb)-> # HIT return badFunc3() goodIf = (err, cb)-> if err cb err else cb null return goodIf() goodIf2 = (err, cb)-> if err cb err return cb null return goodIf2() bad = (cb)-> cb() cb() # HIT cb() cb() cb() return bad() badIf = (err, cb)-> if err cb err cb null # HIT return badIf() # when 'CodeFragment', 'Base', 'Block', 'Literal', 'Undefined', 'Null', 'Bool', 'Return', 'Value', 'Comment', 'Call', 'Extends', 'Access' ,'Index', 'Range', 'Slice', 'Obj', 'Arr', 'Class', 'Assign', 'Code', 'Param', 'Splat', 'Expansion', 'While', 'Op', 'In', 'Try', 'Throw' ,'Existence', 'Parens', 'For', 'Switch', 'If' goodSwitch = (thing, cb)-> switch thing when 1 cb 1 when 2 cb 2 when 3 cb 3 when 4 cb 4 when 5,6 cb 5 else cb 9 return goodSwitch() badSwitch = (thing, cb)-> switch thing when 1 cb 1 when 2 cb 2 # HIT when 3 cb 3 when 4 cb 4 when 5,6 cb 5 else cb 9 cb 8 return badSwitch() # TODO: this fails. put effort into fixing it.... #factorial = (n) -> # if n < 0 # return 0 # # if n is 0 or n is 1 # return 1 # # return n * factorial(n - 1) six = 6 class A one: 1 @two: 2 three = 3 @four = 4 five() six 9 constructor: (bad_cb)-> # HIT return methodOne: (bad_cb2)-> # HIT return 1 @methodTwo: (bad_cb3)-> # HIT return 2 methodThree = (bad_cb4)-> # HIT return 3 @methodFour = (bad_cb5)-> # HIT return 4 class B extends A constructor: () -> super 'B' return goodTry = (cb)-> a = 0 try a = 1 # all of this catch e a = 2 # all of this cb() return finally a = 3 # all of this a = 4 cb() return goodTry() badTry = (bad_cb)-> try bad_cb() catch e stuff() return bad_cb() # HIT return badTry() goodFunc = (cb)-> someFunc cb, 123 return class A class B extends A thing: (callback)-> # superb callback super callback return