summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--prism/prism.c21
-rw-r--r--test/prism/errors/command_calls_35.txt41
-rw-r--r--test/prism/fixtures/command_method_call.txt6
3 files changed, 1 insertions, 67 deletions
diff --git a/prism/prism.c b/prism/prism.c
index 2e0c941918..186cdd354c 100644
--- a/prism/prism.c
+++ b/prism/prism.c
@@ -14244,25 +14244,6 @@ parse_assocs(pm_parser_t *parser, pm_static_literals_t *literals, pm_node_t *nod
return contains_keyword_splat;
}
-static inline bool
-argument_allowed_for_bare_hash(pm_parser_t *parser, pm_node_t *argument) {
- if (pm_symbol_node_label_p(argument)) {
- return true;
- }
-
- switch (PM_NODE_TYPE(argument)) {
- case PM_CALL_NODE: {
- pm_call_node_t *cast = (pm_call_node_t *) argument;
- if (cast->opening_loc.start == NULL && cast->arguments != NULL) {
- return false;
- }
- break;
- }
- default: break;
- }
- return accept1(parser, PM_TOKEN_EQUAL_GREATER);
-}
-
/**
* Append an argument to a list of arguments.
*/
@@ -14420,7 +14401,7 @@ parse_arguments(pm_parser_t *parser, pm_arguments_t *arguments, bool accepts_for
bool contains_keywords = false;
bool contains_keyword_splat = false;
- if (argument_allowed_for_bare_hash(parser, argument)){
+ if (pm_symbol_node_label_p(argument) || accept1(parser, PM_TOKEN_EQUAL_GREATER)) {
if (parsed_bare_hash) {
pm_parser_err_previous(parser, PM_ERR_ARGUMENT_BARE_HASH);
}
diff --git a/test/prism/errors/command_calls_35.txt b/test/prism/errors/command_calls_35.txt
deleted file mode 100644
index 9eb011cd86..0000000000
--- a/test/prism/errors/command_calls_35.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-p(p a, x: b => value)
- ^~ unexpected '=>'; expected a `)` to close the arguments
- ^ unexpected ')', expecting end-of-input
- ^ unexpected ')', ignoring it
-
-p(p a, x: => value)
- ^~ unexpected '=>'; expected a `)` to close the arguments
- ^ unexpected ')', expecting end-of-input
- ^ unexpected ')', ignoring it
-
-p(p a, &block => value)
- ^~ unexpected '=>'; expected a `)` to close the arguments
- ^ unexpected ')', expecting end-of-input
- ^ unexpected ')', ignoring it
-
-p(p a, *args => value)
- ^~ unexpected '=>'; expected a `)` to close the arguments
- ^ unexpected ')', expecting end-of-input
- ^ unexpected ')', ignoring it
-
-p(p a, **kwargs => value)
- ^~ unexpected '=>'; expected a `)` to close the arguments
- ^ unexpected ')', expecting end-of-input
- ^ unexpected ')', ignoring it
-
-p p 1, &block => 2, &block
- ^~ unexpected '=>', expecting end-of-input
- ^~ unexpected '=>', ignoring it
- ^ unexpected ',', expecting end-of-input
- ^ unexpected ',', ignoring it
- ^ unexpected '&', ignoring it
-
-p p p 1 => 2 => 3 => 4
- ^~ unexpected '=>', expecting end-of-input
- ^~ unexpected '=>', ignoring it
-
-p[p a, x: b => value]
- ^ expected a matching `]`
- ^ unexpected ']', expecting end-of-input
- ^ unexpected ']', ignoring it
-
diff --git a/test/prism/fixtures/command_method_call.txt b/test/prism/fixtures/command_method_call.txt
index 3f510efa69..182b87948b 100644
--- a/test/prism/fixtures/command_method_call.txt
+++ b/test/prism/fixtures/command_method_call.txt
@@ -39,9 +39,3 @@ def foo = bar 1
!foo 1 or !bar 2
not !foo 1
-
-foo(bar baz, key => value)
-
-foo(bar baz, KEY => value)
-
-foo(bar baz, :key => value)