From: nagachika00@... Date: 2017-07-23T08:16:09+00:00 Subject: [ruby-core:82135] [Ruby trunk Bug#11873] Syntax error and parse problem when calling a method without parentheses Issue #11873 has been updated by nagachika (Tomoyuki Chikanaga). Backport changed from 2.2: DONTNEED, 2.3: DONTNEED, 2.4: REQUIRED to 2.2: DONTNEED, 2.3: DONTNEED, 2.4: DONE ruby_2_4 r59406 merged revision(s) 58638,58640. ---------------------------------------- Bug #11873: Syntax error and parse problem when calling a method without parentheses https://bugs.ruby-lang.org/issues/11873#change-65893 * Author: tompng (tomoya ishida) * Status: Closed * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin14] * Backport: 2.2: DONTNEED, 2.3: DONTNEED, 2.4: DONE ---------------------------------------- In the following case, syntax error rises when calling a method without parentheses. ~~~ruby a b{c d}, :e do end #=> syntax error(should be syntax ok) a b(c d), :e do end #=> syntax error(should be syntax ok) a b{c(d)}, :e do end #=> syntax ok(expected) a b(c(d)), :e do end #=> syntax ok(expected) ~~~ If you change the literal `:e` to a method name, then the do-block is passed to the wrong method ~~~ruby p p{p p;p(p)}, tap do puts 'Hello' end #=> LocalJumpError(expected. do-end is passed to the first p) p p{p(p);p p}, tap do puts 'Hello' end #=> shows Hello(why? do-end is passed to tap) ~~~ versions are ~~~ 1.8.7-p375 1.9.3-p547 2.1.1p76 2.2.0p0 2.3.0p0 ~~~ -- https://bugs.ruby-lang.org/ Unsubscribe: