From 3fa061cd57021964a8536c34719729c7161fe38b Mon Sep 17 00:00:00 2001 From: nobu Date: Thu, 24 Sep 2015 08:25:11 +0000 Subject: parse.y: fix token * parse.y (paren_args): fix separator token at `foo::bar()` in ripper. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51927 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ parse.y | 4 ++-- test/ripper/test_parser_events.rb | 29 +++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 556892ae74..f18fc6808e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Thu Sep 24 17:25:09 2015 Nobuyoshi Nakada + + * parse.y (paren_args): fix separator token at `foo::bar()` in + ripper. + Thu Sep 24 00:00:17 2015 Rei Odaira * complex.c: ruby/config.h must be included before math.h diff --git a/parse.y b/parse.y index 84b414d21a..c72aacf9b4 100644 --- a/parse.y +++ b/parse.y @@ -3663,7 +3663,7 @@ method_call : fcall paren_args $$ = NEW_CALL($1, $3, $5); nd_set_line($$, $4); /*% - $$ = dispatch3(call, $1, ripper_id2sym('.'), $3); + $$ = dispatch3(call, $1, ripper_id2sym(idCOLON2), $3); $$ = method_optarg($$, $5); %*/ } @@ -10979,7 +10979,7 @@ ripper_id2sym(ID id) const char *name; char buf[8]; - if (id <= 256) { + if (ISASCII(id)) { buf[0] = (char)id; buf[1] = '\0'; return ID2SYM(rb_intern2(buf, 1)); diff --git a/test/ripper/test_parser_events.rb b/test/ripper/test_parser_events.rb index 6f1fc92238..46204bcec6 100644 --- a/test/ripper/test_parser_events.rb +++ b/test/ripper/test_parser_events.rb @@ -346,12 +346,41 @@ class TestRipper::ParserEvents < Test::Unit::TestCase } assert_equal true, thru_call assert_equal "[call(ref(self),.,foo)]", tree + + thru_call = false + assert_nothing_raised { + tree = parse("self.foo()", :on_call) {thru_call = true} + } + assert_equal true, thru_call + assert_equal "[call(ref(self),.,foo,[])]", tree + thru_call = false assert_nothing_raised(bug2233) { tree = parse("foo.()", :on_call) {thru_call = true} } assert_equal true, thru_call assert_equal "[call(vcall(foo),.,call,[])]", tree + + thru_call = false + assert_nothing_raised { + tree = parse("self::foo", :on_call) {thru_call = true} + } + assert_equal true, thru_call + assert_equal "[call(ref(self),::,foo)]", tree + + thru_call = false + assert_nothing_raised { + tree = parse("self::foo()", :on_call) {thru_call = true} + } + assert_equal true, thru_call + assert_equal "[call(ref(self),::,foo,[])]", tree + + thru_call = false + assert_nothing_raised(bug2233) { + tree = parse("foo::()", :on_call) {thru_call = true} + } + assert_equal true, thru_call + assert_equal "[call(vcall(foo),::,call,[])]", tree end def test_excessed_comma -- cgit v1.2.3