Issue #11107 has been updated by Nobuyoshi Nakada.

Description updated
Backport changed from 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN to 2.0.0: REQUIRED, 2.1: REQUIRED, 2.2: REQUIRED

----------------------------------------
Bug #11107: Syntax error is raised by "p ->() do a(1) do end end", but not by "p ->() do a 1 do end end"
https://bugs.ruby-lang.org/issues/11107#change-52287

* Author: _ wanabe
* Status: Closed
* Priority: Normal
* Assignee: 
* ruby -v: ruby 2.3.0dev (2015-04-26 trunk 50395) [x86_64-darwin14]
* Backport: 2.0.0: REQUIRED, 2.1: REQUIRED, 2.2: REQUIRED
----------------------------------------
As below, lambda literal with do..end block can raise syntax error.

```
$ ./ruby -ve 'p ->() do a(1) do end end'
ruby 2.3.0dev (2015-04-26 trunk 50395) [x86_64-darwin14]
-e:1: syntax error, unexpected keyword_do_block, expecting keyword_end
p ->() do a(1) do end end
                 ^
```

The error is not raised when I use {...} block or omit parentheses from method call in lambda.

NG cases:

```ruby
p ->() do a(1) do end end
p ->() do a() do end end
p 1, ->() do a(1) do end end
```

OK cases:

```ruby
p ->() do a 1 do end end
p ->() do a do end end
p ->() { a(1) do end }
p ->() do a(1) {} end
p ->() { a(1) { } }
```

Confirmed versions (same results):

* ruby 1.9.3p551 (2014-11-13 revision 48407) [x86_64-darwin14.3.0]
* ruby 2.0.0p598 (2014-11-13) [i386-mingw32]
* ruby 2.1.5p273 (2014-11-13 revision 48405) [i386-mingw32]
* ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-darwin14]
* ruby 2.3.0dev (2015-04-26 trunk 50395) [x86_64-darwin14]



-- 
https://bugs.ruby-lang.org/