diff options
author | Kevin Newton <kddnewton@gmail.com> | 2023-09-28 12:14:38 -0400 |
---|---|---|
committer | Kevin Newton <kddnewton@gmail.com> | 2023-09-28 15:13:09 -0400 |
commit | 6e88a56f63958a7939927545528df2aad78a32ff (patch) | |
tree | 1837753d0a7a7cda1ac2cb1c57a1b4d7392dd6b5 /test | |
parent | 223e9fcb275379c7b397b56f5b32efa616b0f7e7 (diff) | |
download | ruby-6e88a56f63958a7939927545528df2aad78a32ff.tar.gz |
Compile basic pattern matching expressions
Diffstat (limited to 'test')
-rw-r--r-- | test/ruby/test_compile_prism.rb | 41 |
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) |