Issue #11016 has been reported by Shota Fukumori.

----------------------------------------
Bug #11016: method calls without parenthesis makes SyntaxError when DVAR exists
https://bugs.ruby-lang.org/issues/11016

* Author: Shota Fukumori
* Status: Open
* Priority: Normal
* Assignee: 
* ruby -v: ruby 2.3.0dev (2015-03-30 trunk 50121) [x86_64-darwin14]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
It seems like the following situation makes SyntaxError

1. Try to call method which same name of local variable exists, without parenthesis
2. 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)
```



-- 
https://bugs.ruby-lang.org/