summaryrefslogtreecommitdiff
path: root/test
diff options
authoryui-knk <[email protected]>2024-07-10 22:28:22 +0900
committerYuichiro Kaneko <[email protected]>2024-07-23 12:36:00 +0900
commitf23485a8d693cb69fd7b84c1ab93cb4198ecfe4a (patch)
tree12b99fc07f809edbd9ac32f3951a07f46e30a8cd /test
parent5617fec1f81d0f05563b70fd04e9494896f6abc7 (diff)
[Feature #20624] Enhance `RubyVM::AbstractSyntaxTree::Node#locations`
This commit introduce `RubyVM::AbstractSyntaxTree::Node#locations` method and `RubyVM::AbstractSyntaxTree::Location` class. Ruby AST node will hold multiple locations information. `RubyVM::AbstractSyntaxTree::Node#locations` provides a way to access these locations information. `RubyVM::AbstractSyntaxTree::Location` is a class which holds these location information: * `#first_lineno` * `#first_column` * `#last_lineno` * `#last_column`
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/11226
Diffstat (limited to 'test')
-rw-r--r--test/ruby/test_ast.rb19
1 files changed, 19 insertions, 0 deletions
diff --git a/test/ruby/test_ast.rb b/test/ruby/test_ast.rb
index ebef14c14b..4c579287a9 100644
--- a/test/ruby/test_ast.rb
+++ b/test/ruby/test_ast.rb
@@ -1297,6 +1297,13 @@ dummy
end;
end
+ def test_locations
+ node = RubyVM::AbstractSyntaxTree.parse("1 + 2")
+ locations = node.locations
+
+ assert_equal(RubyVM::AbstractSyntaxTree::Location, locations[0].class)
+ end
+
private
def assert_error_tolerant(src, expected, keep_tokens: false)
@@ -1316,4 +1323,16 @@ dummy
assert_equal(expected, str)
node
end
+
+ class TestLocation < Test::Unit::TestCase
+ def test_lineno_and_column
+ node = RubyVM::AbstractSyntaxTree.parse("1 + 2")
+ location = node.locations[0]
+
+ assert_equal(1, location.first_lineno)
+ assert_equal(0, location.first_column)
+ assert_equal(1, location.last_lineno)
+ assert_equal(5, location.last_column)
+ end
+ end
end