aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorKevin Newton <kddnewton@gmail.com>2023-09-28 12:14:38 -0400
committerKevin Newton <kddnewton@gmail.com>2023-09-28 15:13:09 -0400
commit6e88a56f63958a7939927545528df2aad78a32ff (patch)
tree1837753d0a7a7cda1ac2cb1c57a1b4d7392dd6b5 /test
parent223e9fcb275379c7b397b56f5b32efa616b0f7e7 (diff)
downloadruby-6e88a56f63958a7939927545528df2aad78a32ff.tar.gz
Compile basic pattern matching expressions
Diffstat (limited to 'test')
-rw-r--r--test/ruby/test_compile_prism.rb41
1 files changed, 41 insertions, 0 deletions
diff --git a/test/ruby/test_compile_prism.rb b/test/ruby/test_compile_prism.rb
index d5a00a2a8e..c74ecfef8c 100644
--- a/test/ruby/test_compile_prism.rb
+++ b/test/ruby/test_compile_prism.rb
@@ -334,6 +334,47 @@ module Prism
test_prism_eval("(1)")
end
+ ############################################################################
+ # Pattern matching #
+ ############################################################################
+
+ def test_MatchPredicateNode
+ test_prism_eval("1 in 1")
+ test_prism_eval("1.0 in 1.0")
+ test_prism_eval("1i in 1i")
+ test_prism_eval("1r in 1r")
+
+ test_prism_eval("\"foo\" in \"foo\"")
+ test_prism_eval("\"foo \#{1}\" in \"foo \#{1}\"")
+
+ test_prism_eval("false in false")
+ test_prism_eval("nil in nil")
+ test_prism_eval("self in self")
+ test_prism_eval("true in true")
+
+ test_prism_eval("5 in 0..10")
+ test_prism_eval("5 in 0...10")
+
+ test_prism_eval("module Prism; @@prism = 1; 1 in ^@@prism; end")
+ test_prism_eval("module Prism; @prism = 1; 1 in ^@prism; end")
+ test_prism_eval("$prism = 1; 1 in ^$prism")
+ test_prism_eval("prism = 1; 1 in ^prism")
+
+ test_prism_eval("[\"5\"] in %w[5]")
+
+ test_prism_eval("Prism in Prism")
+ test_prism_eval("Prism in ::Prism")
+
+ test_prism_eval(":prism in :prism")
+ test_prism_eval("%s[prism\#{1}] in %s[prism\#{1}]")
+ test_prism_eval("\"foo\" in /.../")
+ test_prism_eval("\"foo1\" in /...\#{1}/")
+ test_prism_eval("4 in ->(v) { v.even? }")
+ test_prism_eval("4 in ^(4)")
+
+ test_prism_eval("1 in 2")
+ end
+
private
def compare_eval(source)