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:02 -0500 |
| commit | 80e379bda1aa38b601a3c010b401c566e1708189 (patch) | |
| tree | fa2691f69f1e8df9e23ac427a2a52e3e894481c7 /test | |
| parent | bc84334af7e6100f0ede678704f5b80fcaabc0c9 (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
Diffstat (limited to 'test')
| -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 5d4b95a224..1b51d715a7 100644 --- a/test/prism/errors_test.rb +++ b/test/prism/errors_test.rb @@ -1676,6 +1676,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") |
