From 107b0dc8cdd3c49563bd057c631c1d662d6dfd89 Mon Sep 17 00:00:00 2001 From: nobu Date: Wed, 28 Oct 2015 04:29:41 +0000 Subject: parse.y: fix op_assign type * parse.y (new_attr_op_assign): fix op_assign type, which is already an ID since r52284. [Feature #11537] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52318 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ parse.y | 2 +- test/ripper/test_parser_events.rb | 10 ++++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index a4e7d74659..c507fc5265 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Wed Oct 28 13:29:39 2015 Nobuyoshi Nakada + + * parse.y (new_attr_op_assign): fix op_assign type, which is + already an ID since r52284. [Feature #11537] + Tue Oct 27 23:14:14 2015 Nobuyoshi Nakada * defs/id.def: enable anonymous IDs not to expose internal IDs for diff --git a/parse.y b/parse.y index fbec9596ec..ca64942cb3 100644 --- a/parse.y +++ b/parse.y @@ -521,7 +521,7 @@ static int id_is_var_gen(struct parser_params *parser, ID id); static VALUE new_op_assign_gen(struct parser_params *parser, VALUE lhs, VALUE op, VALUE rhs); static VALUE new_attr_op_assign_gen(struct parser_params *parser, VALUE lhs, VALUE type, VALUE attr, VALUE op, VALUE rhs); -#define new_attr_op_assign(lhs, type, attr, op, rhs) new_attr_op_assign_gen(parser, (lhs), ripper_id2sym(type), (attr), (op), (rhs)) +#define new_attr_op_assign(lhs, type, attr, op, rhs) new_attr_op_assign_gen(parser, (lhs), (type), (attr), (op), (rhs)) #endif /* !RIPPER */ diff --git a/test/ripper/test_parser_events.rb b/test/ripper/test_parser_events.rb index aa222de84f..9fa65fa89b 100644 --- a/test/ripper/test_parser_events.rb +++ b/test/ripper/test_parser_events.rb @@ -789,6 +789,16 @@ class TestRipper::ParserEvents < Test::Unit::TestCase tree = parse('a::X ||= c 1', :on_opassign) {thru_opassign = true} assert_equal true, thru_opassign assert_equal "[opassign(const_path_field(vcall(a),X),||=,command(c,[1]))]", tree + + thru_opassign = false + tree = parse("self.foo += 1", :on_opassign) {thru_opassign = true} + assert_equal true, thru_opassign + assert_equal "[opassign(field(ref(self),.,foo),+=,1)]", tree + + thru_opassign = false + tree = parse("self.?foo += 1", :on_opassign) {thru_opassign = true} + assert_equal true, thru_opassign + assert_equal "[opassign(field(ref(self),.?,foo),+=,1)]", tree end def test_opassign_error -- cgit v1.2.3