Skip to content

Commit 1e20625

Browse files
authored
Merge pull request #4064 from Earlopain/parameters-signature-recovery
Adapt `ParametersNode#signature` to `ErrorRecoveryNode`
2 parents 6c73869 + 893f273 commit 1e20625

File tree

2 files changed

+8
-4
lines changed

2 files changed

+8
-4
lines changed

lib/prism/node_ext.rb

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -329,10 +329,7 @@ def signature
329329
case param
330330
when MultiTargetNode
331331
names << [:req]
332-
when NoKeywordsParameterNode, KeywordRestParameterNode,
333-
NoBlockParameterNode, BlockParameterNode,
334-
ForwardingParameterNode
335-
# Invalid syntax, e.g. "def f(**nil, ...)" moves the NoKeywordsParameterNode to posts
332+
when ErrorRecoveryNode
336333
raise "Invalid syntax"
337334
else
338335
names << [:req, param.name]

test/prism/ruby/parameters_signature_test.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,13 @@ def test_forwarding
7777
assert_parameters([[:rest, :*], [:keyrest, :**], [:block, :&]], "...")
7878
end
7979

80+
def test_invalid_syntax
81+
e = assert_raise(RuntimeError) do
82+
Prism.parse_statement("def f(**nil, ...); end").parameters.signature
83+
end
84+
assert_equal("Invalid syntax", e.message)
85+
end
86+
8087
private
8188

8289
def assert_parameters(expected, source, compare: true)

0 commit comments

Comments
 (0)