From b81e1cd506ad06e4eb0a658d26119129d110a5a9 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Tue, 5 Feb 2019 18:21:07 +0000 Subject: [PATCH] compiler: check duplicate implicit indexes in slices/arrays Fixes golang/go#28186. Reviewed-on: https://go-review.googlesource.com/c/160832 From-SVN: r268554 --- gcc/go/gofrontend/MERGE | 2 +- gcc/go/gofrontend/expressions.cc | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index 3b43b63..3220671 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -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. diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc index ed3863c..8ffd9eb 100644 --- a/gcc/go/gofrontend/expressions.cc +++ b/gcc/go/gofrontend/expressions.cc @@ -14244,6 +14244,13 @@ Composite_literal_expression::lower_array(Type* type) 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); } -- 2.7.4