From 42adc5bc6bb532e20bf2191ad99781ee701dea36 Mon Sep 17 00:00:00 2001 From: Jeremy Evans Date: Tue, 20 Aug 2019 12:28:04 -0700 Subject: [PATCH] Add back missing warning for duplicate keys in splatted hashes This reverts the changes to parse.y in a5b37262524ac39d2af13eea174486370a581c23 as they are not actually needed and cause the warning for duplicate hash keys to not be emitted. --- parse.y | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/parse.y b/parse.y index c575dfdded..ba43053a86 100644 --- a/parse.y +++ b/parse.y @@ -5151,6 +5151,12 @@ assocs : assoc assocs = tail; } else if (tail) { + if (assocs->nd_head && + !tail->nd_head && nd_type(tail->nd_next) == NODE_ARRAY && + nd_type(tail->nd_next->nd_head) == NODE_HASH) { + /* DSTAR */ + tail = tail->nd_next->nd_head->nd_head; + } assocs = list_concat(assocs, tail); } $$ = assocs; @@ -5188,7 +5194,11 @@ assoc : arg_value tASSOC arg_value | tDSTAR arg_value { /*%%%*/ - $$ = list_append(p, NEW_LIST(0, &@$), $2); + if (nd_type($2) == NODE_HASH && + !($2->nd_head && $2->nd_head->nd_alen)) + $$ = 0; + else + $$ = list_append(p, NEW_LIST(0, &@$), $2); /*% %*/ /*% ripper: assoc_splat!($2) %*/ }