Open grajagandev opened 2 years ago
Greetings, many thanks for reporting this! I've confirmed that the above steps also reproduce the issue for me with our latest development version. I'll pass this along to our Ruby analysis team.
@grajagandev You're absolutely right this is an unexpected parse error; thanks for reporting!
I think the problem is not really the lambda though. The same parse error happens with other kinds of expressions. I can make the examples work by removing the space after the &
. The following parse fine:
foo() { boo( &lambda {}) }
foo() { boo( &->{}) }
The parser we're using is https://github.com/tree-sitter/tree-sitter-ruby. Looking at the scanner it is clear why the parser does not work if there is a space after the &
.
Removing that line, however, causes other problems as it is intended to disambiguate between "bitwise-and" and "block argument" expressions. For example:
foo & bar # a bitwise and of `foo` and `bar`
foo &bar # a call to `foo` with block argument `bar`
Without the check for spaces, both examples would be parsed as calls to foo
with block argument bar
.
I created an issue in the upstream repository: https://github.com/tree-sitter/tree-sitter-ruby/issues/218
Description of the issue
I am seeing parser errors on Ruby lambdas. Here is a test case:
Please let me know if you need further information - Thank you