[javascriptlint-commit] SF.net SVN: javascriptlint:[380] trunk
Status: Beta
Brought to you by:
matthiasmiller
From: <mat...@us...> - 2018-06-10 05:46:18
|
Revision: 380 http://sourceforge.net/p/javascriptlint/code/380 Author: matthiasmiller Date: 2018-06-10 05:46:15 +0000 (Sun, 10 Jun 2018) Log Message: ----------- Add a warning against invalid ! usage Modified Paths: -------------- trunk/javascriptlint/lintwarnings.py trunk/tests/warnings/for_in_missing_identifier.js Modified: trunk/javascriptlint/lintwarnings.py =================================================================== --- trunk/javascriptlint/lintwarnings.py 2018-01-02 22:12:15 UTC (rev 379) +++ trunk/javascriptlint/lintwarnings.py 2018-06-10 05:46:15 UTC (rev 380) @@ -107,6 +107,7 @@ 'e4x_deprecated': 'e4x is deprecated', 'ambiguous_numeric_prop': 'numeric property should be normalized; use {normalized}', 'duplicate_property': 'duplicate property in object initializer', + 'ambiguous_not': 'the ! operator is ambiguous; use clarifying parentheses' } errors = { @@ -686,6 +687,16 @@ return # Allow as constructors raise LintWarning(node) +@lookfor((tok.UNARYOP, op.NOT)) +def ambiguous_not(node): + # Avoid for(!s in o) + if node.parent and node.parent.kind == tok.IN: + raise LintWarning(node) + + # Avoid use in comparisons. + if node.parent and node.parent.kind in (tok.EQOP, tok.RELOP): + raise LintWarning(node) + def _get_function_property_name(node): # Ignore function statements. if node.opcode in (None, op.CLOSURE): Modified: trunk/tests/warnings/for_in_missing_identifier.js =================================================================== --- trunk/tests/warnings/for_in_missing_identifier.js 2018-01-02 22:12:15 UTC (rev 379) +++ trunk/tests/warnings/for_in_missing_identifier.js 2018-06-10 05:46:15 UTC (rev 380) @@ -7,6 +7,6 @@ for (var prop2 in o) o[prop2]++; - for (!prop in o) /*warning:for_in_missing_identifier*/ + for (!prop in o) /*warning:for_in_missing_identifier*/ /*warning:ambiguous_not*/ o[prop]++; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |