aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoreileencodes <eileencodes@gmail.com>2023-12-05 12:07:26 -0500
committerJemma Issroff <jemmaissroff@gmail.com>2023-12-06 09:46:19 -0500
commit41b117e50c97ab8117ff538d6cd8ff2ebed57c71 (patch)
treeac87ad53b41ee0a2458b0352f724581aa549e827
parentb04255deff8da978a967447a478be44d9c66d74e (diff)
downloadruby-41b117e50c97ab8117ff538d6cd8ff2ebed57c71.tar.gz
[PRISM] Implement `PM_SOURCE_ENCODING_NODE` for `defined?
Ruby code: ```ruby defined?(__ENCODING__) ``` Instructions: ``` "********* Ruby *************" == disasm: #<ISeq:<compiled>@<compiled>:0 (0,0)-(0,22)> 0000 putobject "expression" 0002 leave "********* PRISM *************" == disasm: #<ISeq:<compiled>@<compiled>:0 (0,0)-(0,22)> 0000 putobject "expression" 0002 leave ```
-rw-r--r--prism_compile.c1
-rw-r--r--test/ruby/test_compile_prism.rb1
2 files changed, 2 insertions, 0 deletions
diff --git a/prism_compile.c b/prism_compile.c
index 5b30895fc6..951630c265 100644
--- a/prism_compile.c
+++ b/prism_compile.c
@@ -1491,6 +1491,7 @@ pm_compile_defined_expr0(rb_iseq_t *iseq, const pm_node_t *node, LINK_ANCHOR *co
case PM_OR_NODE:
case PM_RANGE_NODE:
case PM_REGULAR_EXPRESSION_NODE:
+ case PM_SOURCE_ENCODING_NODE:
case PM_STRING_NODE:
case PM_SYMBOL_NODE:
case PM_X_STRING_NODE:
diff --git a/test/ruby/test_compile_prism.rb b/test/ruby/test_compile_prism.rb
index f2962dc3c7..3cad58a184 100644
--- a/test/ruby/test_compile_prism.rb
+++ b/test/ruby/test_compile_prism.rb
@@ -110,6 +110,7 @@ module Prism
assert_prism_eval("defined? -> { 1 + 1 }")
assert_prism_eval("defined? a && b")
assert_prism_eval("defined? a || b")
+ assert_prism_eval("defined? __ENCODING__")
assert_prism_eval("defined? %[1,2,3]")
assert_prism_eval("defined? %q[1,2,3]")