diff options
| author | TSUYUSATO Kitsune <make.just.on@gmail.com> | 2023-11-14 16:20:41 +0900 |
|---|---|---|
| committer | Kevin Newton <kddnewton@gmail.com> | 2023-11-14 16:22:03 -0500 |
| commit | 5048c4f461bb98880bc8cacc2bbee9660afa8790 (patch) | |
| tree | 92b221e0d2a646a6f4bd1da25fc62927907a7b74 | |
| parent | ed755181925da920b8a9b07e167e92f3950d1b2a (diff) | |
[ruby/prism] Check value expressions on parsing arguments and assignments
They are corresponding to `arg_value` in `parse.y`.
https://github.com/ruby/prism/commit/a4a4834e0d
| -rw-r--r-- | test/prism/errors_test.rb | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/test/prism/errors_test.rb b/test/prism/errors_test.rb index 1b51d715a7..8bc61974a2 100644 --- a/test/prism/errors_test.rb +++ b/test/prism/errors_test.rb @@ -1716,6 +1716,46 @@ module Prism ], compare_ripper: false # Ripper does not check 'void value expression'. end + def test_void_value_expression_in_arguments + source = <<~RUBY + foo(return) + foo(1, return) + foo(*return) + foo(**return) + foo(&return) + foo(return => 1) + foo(:a => return) + foo(a: return) + RUBY + message = 'Unexpected void value expression' + assert_errors expression(source), source, [ + [message, 4..10], + [message, 19..25], + [message, 32..38], + [message, 46..52], + [message, 59..65], + [message, 71..77], + [message, 94..100], + [message, 109..115], + ], compare_ripper: false # Ripper does not check 'void value expression'. + end + + def test_void_value_expression_in_hash + source = <<~RUBY + { return => 1 } + { 1 => return } + { a: return } + { **return } + RUBY + message = 'Unexpected void value expression' + assert_errors expression(source), source, [ + [message, 2..8], + [message, 23..29], + [message, 37..43], + [message, 50..56], + ], compare_ripper: false # Ripper does not check 'void value expression'. + end + private def assert_errors(expected, source, errors, compare_ripper: RUBY_ENGINE == "ruby") |
