diff options
| author | Jemma Issroff <jemmaissroff@gmail.com> | 2023-11-07 15:39:11 -0300 |
|---|---|---|
| committer | Jemma Issroff <jemmaissroff@gmail.com> | 2023-11-08 18:15:47 -0300 |
| commit | 26cff6ae2b7fe2259f942d1cf411c5af891b1de9 (patch) | |
| tree | 790efc0798d9747e27aca66302804ec4c02f8026 /test/ruby | |
| parent | 8d0eb872e8fd0cc1837318c4c242f4085df9812e (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.rb | 26 |
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) |
