diff options
-rw-r--r-- | lib/prism/node_ext.rb | 2 | ||||
-rw-r--r-- | test/prism/constant_path_node_test.rb | 11 |
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 |