compiler: check duplicate implicit indexes in slices/arrays
Fixes golang/go#28186.
Change-Id: I5b912bf1c266296c3e1fccbdd5ab141cec588f34
Reviewed-on: https://go-review.googlesource.com/c/160832
Reviewed-by: Ian Lance Taylor <iant@golang.org>
diff --git a/go/expressions.cc b/go/expressions.cc
index ed3863c..8ffd9eb 100644
--- a/go/expressions.cc
+++ b/go/expressions.cc
@@ -14244,6 +14244,13 @@
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);
}