From 630c97acc74701724b3a1beb3f92aae192c69769 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Wed, 29 Nov 2023 14:39:26 -0800 Subject: Add a rescue for `defined?(A::B::C)` It's possible for `defined?(A::B::C)` to raise an exception. `defined?` must swallow the exception and return nil, so this commit adds a rescue entry for `defined?` expressions on constant paths --- test/ruby/test_compile_prism.rb | 3 +++ 1 file changed, 3 insertions(+) (limited to 'test/ruby') diff --git a/test/ruby/test_compile_prism.rb b/test/ruby/test_compile_prism.rb index e0db446fa7..63b06bc9bd 100644 --- a/test/ruby/test_compile_prism.rb +++ b/test/ruby/test_compile_prism.rb @@ -88,6 +88,8 @@ module Prism assert_prism_eval("Prism") end + Z = 1 + def test_DefinedNode assert_prism_eval("defined? nil") assert_prism_eval("defined? self") @@ -105,6 +107,7 @@ module Prism assert_prism_eval("defined? ::A") assert_prism_eval("defined? A::B") assert_prism_eval("defined? A::B::C") + assert_prism_eval("defined? #{self.class.name}::Z::A") assert_prism_eval("defined? yield") assert_prism_eval("defined? super") -- cgit v1.2.3