summaryrefslogtreecommitdiff
path: root/test/ruby
diff options
context:
space:
mode:
authorJemma Issroff <jemmaissroff@gmail.com>2023-11-07 15:39:11 -0300
committerJemma Issroff <jemmaissroff@gmail.com>2023-11-08 18:15:47 -0300
commit26cff6ae2b7fe2259f942d1cf411c5af891b1de9 (patch)
tree790efc0798d9747e27aca66302804ec4c02f8026 /test/ruby
parent8d0eb872e8fd0cc1837318c4c242f4085df9812e (diff)
[PRISM] Add tests for several parameters nodes
This commit adds tests for BlockParameterNode, RequiredParameterNode, RequiredKeywordParameterNode and RestParameterNode
Diffstat (limited to 'test/ruby')
-rw-r--r--test/ruby/test_compile_prism.rb26
1 files changed, 25 insertions, 1 deletions
diff --git a/test/ruby/test_compile_prism.rb b/test/ruby/test_compile_prism.rb
index aeaa9e32fa..e94b256119 100644
--- a/test/ruby/test_compile_prism.rb
+++ b/test/ruby/test_compile_prism.rb
@@ -889,6 +889,11 @@ module Prism
assert_prism_eval("alias :prism_a :to_s")
end
+ def test_BlockParameterNode
+ assert_prism_eval("def prism_test_block_parameter_node(&bar) end")
+ assert_prism_eval("->(b, c=1, *d, e, &f){}")
+ end
+
def test_BlockParametersNode
assert_prism_eval("Object.tap { || }")
assert_prism_eval("[1].map { |num| num }")
@@ -909,6 +914,21 @@ module Prism
assert_prism_eval("def prism_test_parameters_node(a, b = 2); end")
end
+ def test_RequiredParameterNode
+ assert_prism_eval("def prism_test_required_param_node(bar); end")
+ assert_prism_eval("def prism_test_required_param_node(foo, bar); end")
+ end
+
+ def test_RequiredKeywordParameterNode
+ assert_prism_eval("def prism_test_required_param_node(bar:); end")
+ assert_prism_eval("def prism_test_required_param_node(foo:, bar:); end")
+ assert_prism_eval("-> a, b = 1, c:, d:, &e { a }")
+ end
+
+ def test_RestParameterNode
+ assert_prism_eval("def prism_test_rest_parameter_node(*a); end")
+ end
+
def test_UndefNode
assert_prism_eval("def prism_undef_node_1; end; undef prism_undef_node_1")
assert_prism_eval(<<-HERE
@@ -1038,7 +1058,11 @@ module Prism
ruby_eval = RubyVM::InstructionSequence.compile(source).eval
prism_eval = RubyVM::InstructionSequence.compile_prism(source).eval
- assert_equal ruby_eval, prism_eval
+ if ruby_eval.is_a? Proc
+ assert_equal ruby_eval.class, prism_eval.class
+ else
+ assert_equal ruby_eval, prism_eval
+ end
end
def assert_prism_eval(source)