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);
 	}