Project

General

Profile

Bug #11873

Syntax error and parse problem when calling a method without parentheses

Added by tompng (tomoya ishida) almost 5 years ago. Updated about 3 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin14]
[ruby-core:72482]

Description

In the following case, syntax error rises when calling a method without parentheses.

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

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

Related issues

Related to Ruby master - Bug #12900: TestSyntax#test_block_after_cmdarg_in_paren fails on PPC64ClosedActions
Related to Ruby master - Bug #12789: syntax error keyword_do_block at ruby 2.4.0dev (2016-09-26 trunk 56254)ClosedActions
Related to Ruby master - Bug #13547: [].delete 1 { 'NG' }ClosedActions
#1

Updated by nobu (Nobuyoshi Nakada) about 4 years ago

  • Status changed from Open to Closed

Applied in changeset r56198.


parse.y: do after cmdarg in paren

  • parse.y: do after cmdarg in parentheses should be do_block and bound to the outer method. [ruby-core:72482] [Bug #11873]

Updated by whitequark (whitequark *) almost 4 years ago

Will this change be backported?

#3

Updated by vo.x (Vit Ondruch) almost 4 years ago

  • Related to Bug #12900: TestSyntax#test_block_after_cmdarg_in_paren fails on PPC64 added
#4

Updated by nobu (Nobuyoshi Nakada) almost 4 years ago

  • Related to Bug #12789: syntax error keyword_do_block at ruby 2.4.0dev (2016-09-26 trunk 56254) added
#5

Updated by nobu (Nobuyoshi Nakada) over 3 years ago

  • Related to Bug #13547: [].delete 1 { 'NG' } added
#6

Updated by usa (Usaku NAKAMURA) over 3 years ago

  • Backport changed from 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN to 2.2: DONTNEED, 2.3: DONTNEED, 2.4: REQUIRED

Updated by nagachika (Tomoyuki Chikanaga) about 3 years ago

  • 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.

Also available in: Atom PDF