diff options
| author | Jeremy Evans <code@jeremyevans.net> | 2024-01-10 13:07:34 -0800 |
|---|---|---|
| committer | Jeremy Evans <code@jeremyevans.net> | 2024-01-10 16:02:38 -0800 |
| commit | ef751252711ca7ecabb3e4ad9214fa0d1d63608a (patch) | |
| tree | d9c62a3c8ca06c2b9c983b7b49e24ee6d849ac60 /test/ruby | |
| parent | 25f5b83689fc6dd137d45b634a0cd6e8bd024728 (diff) | |
Make defined? for op asgn expressions to constants use "assignment"
Previously, it used "expression", as that was the default. However,
op asgn expressions to constants use the NODE_OP_CDECL, so recognize
that node type as assignement.
Fixes [Bug #20111]
Diffstat (limited to 'test/ruby')
| -rw-r--r-- | test/ruby/test_defined.rb | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/test/ruby/test_defined.rb b/test/ruby/test_defined.rb index b9bf939394..0505bdada6 100644 --- a/test/ruby/test_defined.rb +++ b/test/ruby/test_defined.rb @@ -127,6 +127,18 @@ class TestDefined < Test::Unit::TestCase assert_equal nil, defined?($2) end + def test_defined_assignment + assert_equal("assignment", defined?(a = 1)) + assert_equal("assignment", defined?(a += 1)) + assert_equal("assignment", defined?(a &&= 1)) + assert_equal("assignment", eval('defined?(A = 1)')) + assert_equal("assignment", eval('defined?(A += 1)')) + assert_equal("assignment", eval('defined?(A &&= 1)')) + assert_equal("assignment", eval('defined?(A::B = 1)')) + assert_equal("assignment", eval('defined?(A::B += 1)')) + assert_equal("assignment", eval('defined?(A::B &&= 1)')) + end + def test_defined_literal assert_equal("nil", defined?(nil)) assert_equal("true", defined?(true)) |
