diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | parse.y | 4 | ||||
-rw-r--r-- | test/ripper/test_parser_events.rb | 29 |
3 files changed, 36 insertions, 2 deletions
@@ -1,3 +1,8 @@ +Thu Sep 24 17:25:09 2015 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * parse.y (paren_args): fix separator token at `foo::bar()` in + ripper. + Thu Sep 24 00:00:17 2015 Rei Odaira <Rei.Odaira@gmail.com> * complex.c: ruby/config.h must be included before math.h @@ -3663,7 +3663,7 @@ method_call : fcall paren_args $$ = NEW_CALL($1, $3, $5); nd_set_line($$, $<num>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 |