From 893f2734cb1cf155196f2b32fb563df89b0eb0e1 Mon Sep 17 00:00:00 2001 From: Earlopain <14981592+Earlopain@users.noreply.github.com> Date: Sat, 4 Apr 2026 13:08:59 +0200 Subject: [PATCH] Adapt `ParametersNode#signature` to `ErrorRecoveryNode` No need to list them all out anymore, it's just a single possibility now --- lib/prism/node_ext.rb | 5 +---- test/prism/ruby/parameters_signature_test.rb | 7 +++++++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/prism/node_ext.rb b/lib/prism/node_ext.rb index aa9dba57c7..8a6624e76d 100644 --- a/lib/prism/node_ext.rb +++ b/lib/prism/node_ext.rb @@ -329,10 +329,7 @@ def signature case param when MultiTargetNode names << [:req] - when NoKeywordsParameterNode, KeywordRestParameterNode, - NoBlockParameterNode, BlockParameterNode, - ForwardingParameterNode - # Invalid syntax, e.g. "def f(**nil, ...)" moves the NoKeywordsParameterNode to posts + when ErrorRecoveryNode raise "Invalid syntax" else names << [:req, param.name] diff --git a/test/prism/ruby/parameters_signature_test.rb b/test/prism/ruby/parameters_signature_test.rb index 5a225862c3..1ca2b144a9 100644 --- a/test/prism/ruby/parameters_signature_test.rb +++ b/test/prism/ruby/parameters_signature_test.rb @@ -77,6 +77,13 @@ def test_forwarding assert_parameters([[:rest, :*], [:keyrest, :**], [:block, :&]], "...") end + def test_invalid_syntax + e = assert_raise(RuntimeError) do + Prism.parse_statement("def f(**nil, ...); end").parameters.signature + end + assert_equal("Invalid syntax", e.message) + end + private def assert_parameters(expected, source, compare: true)