This patch by Ben Shi fixes the Go frontend to check duplicate
implicit indexes in slices/array composite literals. This fixes
https://golang.org/issue/28186. Bootstrapped and ran Go testsuite on
x86_64-pc-linux-gnu. Committed to mainline.
Ian
Index: gcc/go/gofrontend/MERGE
===================================================================
--- gcc/go/gofrontend/MERGE (revision 268465)
+++ gcc/go/gofrontend/MERGE (working copy)
@@ -1,4 +1,4 @@
-047b0aa6a29d46fde99b3e5823339ac8866f797c
+347628daf153baf3034b61b2abb4ec39e2ab37c8
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
Index: gcc/go/gofrontend/expressions.cc
===================================================================
--- gcc/go/gofrontend/expressions.cc (revision 268369)
+++ gcc/go/gofrontend/expressions.cc (working copy)
@@ -14244,6 +14244,13 @@ Composite_literal_expression::lower_arra
if (index_expr == NULL)
{
+ if (std::find(indexes->begin(), indexes->end(), index)
+ != indexes->end())
+ {
+ go_error_at(val->location(),
+ "duplicate value for index %lu", index);
+ return Expression::make_error(location);
+ }
if (!indexes->empty())
indexes->push_back(index);
}