Unexpected syntax error

$ ruby -v
ruby 1.8.4 (2005-12-24) [powerpc-darwin8.3.0]

Example to illustrate the problem

def foo1
p (1…10).method(:each)
end

def foo2()
p((1…10).method(:each))
end

def foo3()
p (1…10).method(:each)
end

foo1 # -> No error
foo2 # -> No error
foo3 # -> Error

END

– Daniel

Daniel H. wrote:

$ ruby -v
ruby 1.8.4 (2005-12-24) [powerpc-darwin8.3.0]

Example to illustrate the problem

def foo1
p (1…10).method(:each)
end

def foo2()
p((1…10).method(:each))
end

def foo3()
p (1…10).method(:each)
end

foo1 # -> No error
foo2 # -> No error
foo3 # -> Error

END

This is quite bizarre. The parentheses on foo3 cause
the problem; leaving them out, adding a semicolon after
them or creating a temporary variable instead of the
direct p will all solve the error.

I would, though, venture that this should not be an
error :slight_smile:

– Daniel

E

Hi,

def foo1

foo1 # → No error
foo2 # → No error
foo3 # → Error

END

– Daniel

It reminds me an old thread
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/12896

def foo1
p (2.4/0.2).to_i
end
def foo2()
p ((2.4/0.2).to_i)
end
def foo3()
p (2.4/0.2).to_i
end

foo1 # → 11
foo2 # → 11
foo3 # → 12.0

END

Regards,

Park H.

On Feb 19, 2006, at 4:10 PM, Daniel H. wrote:

end

def foo3()
p (1…10).method(:each)
end

foo1 # → No error
foo2 # → No error
foo3 # → Error

Ruby thinks those are argument parentheses. This may not be a bug.

-:11: warning: don’t put space before argument parentheses
#<Method: Range#each>
#<Method: Range#each>
1…10
-:11:in method': undefined method each’ for class
NilClass' (NameError) from -:11:in foo3’
from -:16
$ parse_tree_show -f
p (1…10).method(:each)
(eval):1: warning: (…) interpreted as grouped expression
[[:class,
:Example,
:Object,
[:defn,
:example,
[:scope,
[:block,
[:args],
[:fcall,
:p,
[:array, [:call, [:lit, 1…10], :method, [:array,
[:lit, :each]]]]]]]]]]


Eric H. - [email protected] - http://segment7.net
This implementation is HODEL-HASH-9600 compliant

http://trackmap.robotcoop.com

Hi,

In message “Re: Unexpected syntax error”
on Tue, 21 Feb 2006 04:07:51 +0900, Eric H.
[email protected] writes:

|Ruby thinks those are argument parentheses. This may not be a bug.

This is a bug, and I fixed it last night(JST).

						matz.