summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/prism/node_ext.rb2
-rw-r--r--test/prism/constant_path_node_test.rb11
2 files changed, 12 insertions, 1 deletions
diff --git a/lib/prism/node_ext.rb b/lib/prism/node_ext.rb
index 974052e84b..e39579f534 100644
--- a/lib/prism/node_ext.rb
+++ b/lib/prism/node_ext.rb
@@ -118,7 +118,7 @@ module Prism
current = current.parent
end
- unless current.is_a?(ConstantReadNode)
+ unless current.is_a?(ConstantReadNode) || current == nil
raise DynamicPartsInConstantPathError, "Constant path contains dynamic parts. Cannot compute full name"
end
diff --git a/test/prism/constant_path_node_test.rb b/test/prism/constant_path_node_test.rb
index 9842be0c49..aeab6e01e9 100644
--- a/test/prism/constant_path_node_test.rb
+++ b/test/prism/constant_path_node_test.rb
@@ -52,5 +52,16 @@ module Prism
node = Prism.parse(source).value.statements.body.first
assert_equal("Foo::Bar::Baz::Qux", node.lefts.first.full_name)
end
+
+ def test_full_name_for_constant_path_with_stovetop_start
+ source = <<~RUBY
+ ::Foo:: # comment
+ Bar::Baz::
+ Qux, Something = [1, 2]
+ RUBY
+
+ node = Prism.parse(source).value.statements.body.first
+ assert_equal("::Foo::Bar::Baz::Qux", node.lefts.first.full_name)
+ end
end
end