Actions
Bug #11016
closedmethod calls without parenthesis makes SyntaxError when DVAR exists
Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.3.0dev (2015-03-30 trunk 50121) [x86_64-darwin14]
Description
It seems like the following situation makes SyntaxError
- Try to call method which same name of local variable exists, without parenthesis
- Argument part contains colon (':')
All the following test cases contain empty method definition, but it's not required (if you omit it, the expected result is NoMethodError instead of SyntaxError)
ng_assoc.rb¶
def var(h); end
var = 1
var :a => :b
ruby 2.3.0dev (2015-03-30 trunk 50121) [x86_64-darwin14]
ng_assoc.rb:3: warning: `:' after local variable or literal is interpreted as binary operator
ng_assoc.rb:3: warning: even though it seems like symbol literal
ng_assoc.rb:3: warning: possibly useless use of a variable in void context
ng_assoc.rb:3: syntax error, unexpected ':', expecting end-of-input
var :a => :b
^
ng_assoc19.rb¶
def var(h); end
var = 1
var a: :b
ruby 2.3.0dev (2015-03-30 trunk 50121) [x86_64-darwin14]
ng_assoc19.rb:3: syntax error, unexpected ':', expecting end-of-input
var a: :b
^
ng_assoc19_strvalue.rb¶
def var(h); end
var = 1
var a: 2
ruby 2.3.0dev (2015-03-30 trunk 50121) [x86_64-darwin14]
ng_assoc19_strvalue.rb:4: syntax error, unexpected ':', expecting end-of-input
var a: 2
^
ng_sym.rb¶
def var(h); end
var = 1
var :sym
ruby 2.3.0dev (2015-03-30 trunk 50121) [x86_64-darwin14]
ng_sym.rb:3: warning: `:' after local variable or literal is interpreted as binary operator
ng_sym.rb:3: warning: even though it seems like symbol literal
ng_sym.rb:3: warning: possibly useless use of a variable in void context
ng_sym.rb:3: syntax error, unexpected ':', expecting end-of-input
var :sym
^
ok_assoc19_paren.rb¶
def var(h); end
var = 1
var(a: :b)
ruby 2.3.0dev (2015-03-30 trunk 50121) [x86_64-darwin14]
ok_assoc_paren.rb¶
def var(h); end
var = 1
var(:a => :b)
ruby 2.3.0dev (2015-03-30 trunk 50121) [x86_64-darwin14]
ok_different_name.rb¶
def var(h); end
var2 = 1
var :a => :b
ruby 2.3.0dev (2015-03-30 trunk 50121) [x86_64-darwin14]
ok_different_name.rb:2: warning: assigned but unused variable - var2
ok_string.rb¶
def var(h); end
var = 1
var "str"
ruby 2.3.0dev (2015-03-30 trunk 50121) [x86_64-darwin14]
This may be another issue, but I also surprised to the following result.
module M
class A
end
end
m = M
p m ::A #=> M::A
p M ::A #=> uninitialized constant A (NameError)
Updated by sorah (Sorah Fukumori) about 10 years ago
ng_assoc.rb and ng_sym.rb may be not a bug, as warning says.
Updated by jeremyevans0 (Jeremy Evans) over 5 years ago
- Status changed from Open to Closed
The ng_assoc19.rb
and ng_assoc19_strvalue.rb
examples are no longer syntax errors, so I think this can be closed.
Actions
Like0
Like0Like0