[PRISM] Handle percent literals for defined?
Tests all the possible percent literal with `defined?`. Implements the missing `PM_X_STRING_NODE` for the `%x` literal. Code: ```ruby defined?(%x[1,2,3]) ``` ``` "********* Ruby *************" == disasm: #<ISeq:<compiled>@<compiled>:0 (0,0)-(0,19)> 0000 putobject "expression" 0002 leave "********* PRISM *************" == disasm: #<ISeq:<compiled>@<compiled>:0 (0,0)-(0,19)> 0000 putobject "expression" 0002 leave ```
This commit is contained in:
parent
09e8d37f5b
commit
7d371ca25d
@ -1486,6 +1486,7 @@ pm_compile_defined_expr0(rb_iseq_t *iseq, const pm_node_t *node, LINK_ANCHOR *co
|
||||
case PM_REGULAR_EXPRESSION_NODE:
|
||||
case PM_STRING_NODE:
|
||||
case PM_SYMBOL_NODE:
|
||||
case PM_X_STRING_NODE:
|
||||
dtype = DEFINED_EXPR;
|
||||
break;
|
||||
case PM_LOCAL_VARIABLE_READ_NODE:
|
||||
|
@ -110,6 +110,17 @@ module Prism
|
||||
assert_prism_eval("defined? a && b")
|
||||
assert_prism_eval("defined? a || b")
|
||||
|
||||
assert_prism_eval("defined? %[1,2,3]")
|
||||
assert_prism_eval("defined? %q[1,2,3]")
|
||||
assert_prism_eval("defined? %Q[1,2,3]")
|
||||
assert_prism_eval("defined? %r[1,2,3]")
|
||||
assert_prism_eval("defined? %i[1,2,3]")
|
||||
assert_prism_eval("defined? %I[1,2,3]")
|
||||
assert_prism_eval("defined? %w[1,2,3]")
|
||||
assert_prism_eval("defined? %W[1,2,3]")
|
||||
assert_prism_eval("defined? %s[1,2,3]")
|
||||
assert_prism_eval("defined? %x[1,2,3]")
|
||||
|
||||
assert_prism_eval("defined? @a")
|
||||
assert_prism_eval("defined? $a")
|
||||
assert_prism_eval("defined? @@a")
|
||||
|
Loading…
x
Reference in New Issue
Block a user