From c141a0f7e751779aa16f19e938dc49b8dec0145e Mon Sep 17 00:00:00 2001 From: mame Date: Fri, 19 Jan 2018 15:22:36 +0000 Subject: parse.y: swap `foo!` and `foo` in Ripper DSL `foo!(...)` means Ripper event, and `foo(...)` means C function/macro call. This is for fail-safe; if I forget `!` accidentally, it would fail to compile, instead of wrongly adding a new Ripper event. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61962 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/ripper/tools/dsl.rb | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'ext') diff --git a/ext/ripper/tools/dsl.rb b/ext/ripper/tools/dsl.rb index e67294e265..dec4820d74 100644 --- a/ext/ripper/tools/dsl.rb +++ b/ext/ripper/tools/dsl.rb @@ -34,12 +34,13 @@ class DSL s end - def method_missing(*args) - if args.first =~ /!\z/ - "#{ $` }(#{ args.drop(1).join(", ") })" + def method_missing(event, *args) + if event.to_s =~ /!\z/ + event = $` + @events[event] = args.size + "dispatch#{ args.size }(#{ [event, *args].join(", ") })" else - @events[args.first.to_s] = args.size - 1 - "dispatch#{ args.size - 1 }(#{ args.join(", ") })" + "#{ event }(#{ args.join(", ") })" end end end -- cgit v1.2.3