diff --git a/lib/syntax_tree/parser.rb b/lib/syntax_tree/parser.rb index d5b82507..92a58ccb 100644 --- a/lib/syntax_tree/parser.rb +++ b/lib/syntax_tree/parser.rb @@ -761,8 +761,14 @@ def on_break(arguments) # (:call | Backtick | Const | Ident | Op) message # ) -> Call def on_call(receiver, operator, message) - ending = message - ending = operator if message == :call + ending = + if message != :call + message + elsif operator != :"::" + operator + else + receiver + end Call.new( receiver: receiver, diff --git a/test/fixtures/call.rb b/test/fixtures/call.rb new file mode 100644 index 00000000..874d290c --- /dev/null +++ b/test/fixtures/call.rb @@ -0,0 +1,14 @@ +% +foo.bar +% +foo.() +% +foo::() +- +foo.() +% +foo.(1) +% +foo::(1) +- +foo.(1)