aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ast.c14
-rw-r--r--lib/pp.rb8
-rw-r--r--test/ruby/test_ast.rb28
3 files changed, 25 insertions, 25 deletions
diff --git a/ast.c b/ast.c
index afed691a7d..d6a3073f58 100644
--- a/ast.c
+++ b/ast.c
@@ -262,21 +262,21 @@ rb_ast_node_alloc(VALUE klass)
}
static const char*
-node_type_to_str(NODE *node)
+node_type_to_str(const NODE *node)
{
- return ruby_node_name(nd_type(node));
+ return (ruby_node_name(nd_type(node)) + rb_strlen_lit("NODE_"));
}
/*
* call-seq:
- * node.type -> string
+ * node.type -> symbol
*
- * Returns the type of this node as a string.
+ * Returns the type of this node as a symbol.
*
* root = RubyVM::AbstractSyntaxTree.parse("x = 1 + 2")
- * root.type # => "NODE_SCOPE"
+ * root.type # => :SCOPE
* call = root.children[2]
- * call.type # => "NODE_OPCALL"
+ * call.type # => :OPCALL
*/
static VALUE
rb_ast_node_type(VALUE self)
@@ -284,7 +284,7 @@ rb_ast_node_type(VALUE self)
struct ASTNodeData *data;
TypedData_Get_Struct(self, struct ASTNodeData, &rb_node_type, data);
- return rb_fstring_cstr(node_type_to_str(data->node));
+ return rb_sym_intern_ascii_cstr(node_type_to_str(data->node));
}
#define NEW_CHILD(ast, node) node ? ast_new_internal(ast, node) : Qnil
diff --git a/lib/pp.rb b/lib/pp.rb
index bb504bc1b4..ad0391c012 100644
--- a/lib/pp.rb
+++ b/lib/pp.rb
@@ -529,13 +529,13 @@ class RubyVM::AbstractSyntaxTree::Node
end
def pretty_print(q)
- q.group(1, "(#{type.sub(/\ANODE_/,'')}@#{first_lineno}:#{first_column}-#{last_lineno}:#{last_column}", ")") {
+ q.group(1, "(#{type}@#{first_lineno}:#{first_column}-#{last_lineno}:#{last_column}", ")") {
case type
- when "NODE_SCOPE"
+ when :SCOPE
pretty_print_children(q, %w"tbl args body")
- when "NODE_ARGS"
+ when :ARGS
pretty_print_children(q, %w[pre_num pre_init opt first_post post_num post_init rest kw kwrest block])
- when "NODE_DEFN"
+ when :DEFN
pretty_print_children(q, %w[mid body])
else
pretty_print_children(q)
diff --git a/test/ruby/test_ast.rb b/test/ruby/test_ast.rb
index 31744e9215..055567d574 100644
--- a/test/ruby/test_ast.rb
+++ b/test/ruby/test_ast.rb
@@ -76,7 +76,7 @@ class TestAst < Test::Unit::TestCase
return true if children.empty?
# These NODE_D* has NODE_ARRAY as nd_next->nd_next whose last locations
# we can not update when item is appended.
- return true if ["NODE_DSTR", "NODE_DXSTR", "NODE_DREGX", "NODE_DSYM"].include? node.type
+ return true if [:DSTR, :DXSTR, :DREGX, :DSYM].include? node.type
min = children.map(&:beg_pos).min
max = children.map(&:end_pos).max
@@ -138,18 +138,18 @@ class TestAst < Test::Unit::TestCase
term = "A"*257
ast = RubyVM::AbstractSyntaxTree.parse("<<-#{term}\n""ddddddd\n#{term}\n")
node = ast.children[2]
- assert_equal("NODE_STR", node.type)
+ assert_equal(:STR, node.type)
assert_equal(0, node.first_column)
end
def test_column_of_heredoc
node = RubyVM::AbstractSyntaxTree.parse("<<-SRC\nddddddd\nSRC\n").children[2]
- assert_equal("NODE_STR", node.type)
+ assert_equal(:STR, node.type)
assert_equal(0, node.first_column)
assert_equal(6, node.last_column)
node = RubyVM::AbstractSyntaxTree.parse("<<SRC\nddddddd\nSRC\n").children[2]
- assert_equal("NODE_STR", node.type)
+ assert_equal(:STR, node.type)
assert_equal(0, node.first_column)
assert_equal(5, node.last_column)
end
@@ -200,15 +200,15 @@ class TestAst < Test::Unit::TestCase
node = RubyVM::AbstractSyntaxTree.parse("x = 0")
lv, _, body = *node.children
assert_equal([:x], lv)
- assert_equal("NODE_LASGN", body.type)
+ assert_equal(:LASGN, body.type)
end
def test_call
node = RubyVM::AbstractSyntaxTree.parse("nil.foo")
_, _, body = *node.children
- assert_equal("NODE_CALL", body.type)
+ assert_equal(:CALL, body.type)
recv, mid, args = body.children
- assert_equal("NODE_NIL", recv.type)
+ assert_equal(:NIL, recv.type)
assert_equal(:foo, mid)
assert_nil(args)
end
@@ -216,7 +216,7 @@ class TestAst < Test::Unit::TestCase
def test_fcall
node = RubyVM::AbstractSyntaxTree.parse("foo()")
_, _, body = *node.children
- assert_equal("NODE_FCALL", body.type)
+ assert_equal(:FCALL, body.type)
mid, args = body.children
assert_equal(:foo, mid)
assert_nil(args)
@@ -225,7 +225,7 @@ class TestAst < Test::Unit::TestCase
def test_vcall
node = RubyVM::AbstractSyntaxTree.parse("foo")
_, _, body = *node.children
- assert_equal("NODE_VCALL", body.type)
+ assert_equal(:VCALL, body.type)
mid, args = body.children
assert_equal(:foo, mid)
assert_nil(args)
@@ -234,19 +234,19 @@ class TestAst < Test::Unit::TestCase
def test_defn
node = RubyVM::AbstractSyntaxTree.parse("def a; end")
_, _, body = *node.children
- assert_equal("NODE_DEFN", body.type)
+ assert_equal(:DEFN, body.type)
mid, defn = body.children
assert_equal(:a, mid)
- assert_equal("NODE_SCOPE", defn.type)
+ assert_equal(:SCOPE, defn.type)
end
def test_defs
node = RubyVM::AbstractSyntaxTree.parse("def a.b; end")
_, _, body = *node.children
- assert_equal("NODE_DEFS", body.type)
+ assert_equal(:DEFS, body.type)
recv, mid, defn = body.children
- assert_equal("NODE_VCALL", recv.type)
+ assert_equal(:VCALL, recv.type)
assert_equal(:b, mid)
- assert_equal("NODE_SCOPE", defn.type)
+ assert_equal(:SCOPE, defn.type)
end
end