coffeelint
Version:
Lint your CoffeeScript
46 lines (37 loc) • 1.51 kB
text/coffeescript
module.exports = class NoImplicitParens
rule:
name: 'no_implicit_parens'
strict : true
level : 'ignore'
message : 'Implicit parens are forbidden'
description: """
This rule prohibits implicit parens on function calls.
<pre>
<code># Some folks don't like this style of coding.
myFunction a, b, c
# And would rather it always be written like this:
myFunction(a, b, c)
</code>
</pre>
Implicit parens are permitted by default, since their use is
idiomatic CoffeeScript.
"""
tokens: ['CALL_END']
lintToken : (token, tokenApi) ->
if token.generated
unless tokenApi.config[@rule.name].strict is false
return true
else
# If strict mode is turned off it allows implicit parens when
# the expression is spread over multiple lines.
i = -1
loop
t = tokenApi.peek(i)
if not t? or (t[0] is 'CALL_START' and t.generated)
return true
# If we have not found a CALL_START token that is generated,
# and we've moved into a new line, this is fine and should
# just return.
if t[2].first_line isnt token[2].first_line
return null
i -= 1