aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-10-28 04:29:41 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2015-10-28 04:29:41 +0000
commit107b0dc8cdd3c49563bd057c631c1d662d6dfd89 (patch)
tree85bdbc342c4ebe29ad36b663768967c84789f0f2
parentedc87841f261b40ba8e4f1e0f7523d2da531dbfd (diff)
downloadruby-107b0dc8cdd3c49563bd057c631c1d662d6dfd89.tar.gz
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
-rw-r--r--ChangeLog5
-rw-r--r--parse.y2
-rw-r--r--test/ripper/test_parser_events.rb10
3 files changed, 16 insertions, 1 deletions
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 <nobu@ruby-lang.org>
+
+ * 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 <nobu@ruby-lang.org>
* 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