ruby-changes:62134
From: manga_osyo <ko1@a...>
Date: Mon, 6 Jul 2020 00:48:33 +0900 (JST)
Subject: [ruby-changes:62134] 8e189df32c (master): Add operator info to `OP_ASGN2` of `RubyVM::AbstractSyntaxTree`.
https://git.ruby-lang.org/ruby.git/commit/?id=8e189df32c From 8e189df32cacef4b21e357a590d349330532baf5 Mon Sep 17 00:00:00 2001 From: manga_osyo <manga.osyo@g...> Date: Sun, 5 Jul 2020 20:58:55 +0900 Subject: Add operator info to `OP_ASGN2` of `RubyVM::AbstractSyntaxTree`. diff --git a/ast.c b/ast.c index e43f6f8..27a1074 100644 --- a/ast.c +++ b/ast.c @@ -398,9 +398,10 @@ node_children(rb_ast_t *ast, NODE *node) https://github.com/ruby/ruby/blob/trunk/ast.c#L398 NEW_CHILD(ast, node->nd_args->nd_head), NEW_CHILD(ast, node->nd_args->nd_body)); case NODE_OP_ASGN2: - return rb_ary_new_from_args(4, NEW_CHILD(ast, node->nd_recv), + return rb_ary_new_from_args(5, NEW_CHILD(ast, node->nd_recv), node->nd_next->nd_aid ? Qtrue : Qfalse, ID2SYM(node->nd_next->nd_vid), + ID2SYM(node->nd_next->nd_mid), NEW_CHILD(ast, node->nd_value)); case NODE_OP_ASGN_AND: return rb_ary_new_from_args(3, NEW_CHILD(ast, node->nd_head), ID2SYM(idANDOP), diff --git a/test/ruby/test_ast.rb b/test/ruby/test_ast.rb index 147d05e..da7dde4 100644 --- a/test/ruby/test_ast.rb +++ b/test/ruby/test_ast.rb @@ -319,4 +319,15 @@ class TestAst < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/ruby/test_ast.rb#L319 helper.validate_range assert_equal([], helper.errors) end + + def test_op_asgn2 + node = RubyVM::AbstractSyntaxTree.parse("struct.field += foo") + _, _, body = *node.children + assert_equal(:OP_ASGN2, body.type) + recv, _, mid, op, value = body.children + assert_equal(:VCALL, recv.type) + assert_equal(:field, mid) + assert_equal(:+, op) + assert_equal(:VCALL, value.type) + end end -- cgit v0.10.2 -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/