Project

General

Profile

Actions

Bug #9376

closed

Passing do/end block inside decorated method fails, while passing {} block works.

Added by jemc (Joe McIlvain) over 8 years ago. Updated over 8 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:59612]

Description

=begin
Since method (({def})) returns the symbol in 2.1, it opens the door for a decorator pattern in which the method def is the argument to a method.
This currently works, unless the method happens to call another method and pass it a (({do/end})) block.
However, using (({{}})) instead causes no syntax error.
Here is the code to reproduce:

def foo(meth); end
x = Object.new

foo def bar(arg)
x.tap { } #=> (no problem here)
x.tap do end #=> syntax error, unexpected keyword_do_block, expecting keyword_end (SyntaxError)
end
=end


Related issues 1 (0 open1 closed)

Is duplicate of Ruby master - Bug #9308: def's return value causes errorsClosed12/27/2013Actions

Updated by nobu (Nobuyoshi Nakada) over 8 years ago

  • Description updated (diff)
  • Status changed from Open to Closed
  • Backport changed from 1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: UNKNOWN to 1.9.3: DONTNEED, 2.0.0: REQUIRED, 2.1: REQUIRED

Updated by naruse (Yui NARUSE) over 8 years ago

  • Backport changed from 1.9.3: DONTNEED, 2.0.0: REQUIRED, 2.1: REQUIRED to 1.9.3: DONTNEED, 2.0.0: DONTNEED, 2.1: DONTNEED
Actions

Also available in: Atom PDF