diff --git a/lib/rewriter.js b/lib/rewriter.js index 82aedd2b..af1c0ee6 100644 --- a/lib/rewriter.js +++ b/lib/rewriter.js @@ -408,7 +408,7 @@ return _j; })(); EXPRESSION_CLOSE = ['CATCH', 'WHEN', 'ELSE', 'FINALLY'].concat(EXPRESSION_END); - IMPLICIT_FUNC = ['IDENTIFIER', 'SUPER', ')', 'CALL_END', ']', 'INDEX_END', '@']; + IMPLICIT_FUNC = ['IDENTIFIER', 'SUPER', ')', 'CALL_END', ']', 'INDEX_END', '@', 'THIS']; IMPLICIT_CALL = ['IDENTIFIER', 'NUMBER', 'STRING', 'JS', 'REGEX', 'NEW', 'PARAM_START', 'CLASS', 'IF', 'UNLESS', 'TRY', 'SWITCH', 'THIS', 'NULL', 'UNARY', 'TRUE', 'FALSE', 'YES', 'NO', 'ON', 'OFF', '@', '->', '=>', '[', '(', '{']; IMPLICIT_BLOCK = ['->', '=>', '{', '[', ',']; IMPLICIT_END = ['POST_IF', 'POST_UNLESS', 'FOR', 'WHILE', 'UNTIL', 'LOOP', 'TERMINATOR', 'INDENT']; diff --git a/src/rewriter.coffee b/src/rewriter.coffee index f4912362..d17c8c4d 100644 --- a/src/rewriter.coffee +++ b/src/rewriter.coffee @@ -329,7 +329,7 @@ EXPRESSION_END = pair[1] for pair in BALANCED_PAIRS EXPRESSION_CLOSE = ['CATCH', 'WHEN', 'ELSE', 'FINALLY'].concat EXPRESSION_END # Tokens that, if followed by an `IMPLICIT_CALL`, indicate a function invocation. -IMPLICIT_FUNC = ['IDENTIFIER', 'SUPER', ')', 'CALL_END', ']', 'INDEX_END', '@'] +IMPLICIT_FUNC = ['IDENTIFIER', 'SUPER', ')', 'CALL_END', ']', 'INDEX_END', '@', 'THIS'] # If preceded by an `IMPLICIT_FUNC`, indicates a function invocation. IMPLICIT_CALL = [ diff --git a/test/test_functions.coffee b/test/test_functions.coffee index 734013fd..edbfbb4d 100644 --- a/test/test_functions.coffee +++ b/test/test_functions.coffee @@ -220,3 +220,12 @@ obj = ok obj.func(101, 102, 103, 104) is undefined ok obj.param is 101 ok obj.rest.join(' ') is '102 103 104' + + +# `@` and `this` should both be able to invoke a method. +func = (arg) -> ok arg is true +func.withAt = -> @ true +func.withThis = -> this true + +func.withAt() +func.withThis()