From 929eeacd4cb79f4fdea7d79ec7ad14da8e266d10 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Tue, 24 Apr 2012 14:54:17 +0000 Subject: [PATCH] compiler: Reject invalid composite literals. From-SVN: r186766 --- gcc/go/gofrontend/parse.cc | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/gcc/go/gofrontend/parse.cc b/gcc/go/gofrontend/parse.cc index 7207db58d0d..7a567a1cd14 100644 --- a/gcc/go/gofrontend/parse.cc +++ b/gcc/go/gofrontend/parse.cc @@ -2865,7 +2865,16 @@ Parse::primary_expr(bool may_be_sink, bool may_be_composite_lit, { if (this->peek_token()->is_op(OPERATOR_LCURLY)) { - if (is_parenthesized) + if (!may_be_composite_lit) + { + Type* t = ret->type(); + if (t->named_type() != NULL + || t->forward_declaration_type() != NULL) + error_at(start_loc, + _("parentheses required around this composite literal" + "to avoid parsing ambiguity")); + } + else if (is_parenthesized) error_at(start_loc, "cannot parenthesize type in composite literal"); ret = this->composite_lit(ret->type(), 0, ret->location()); -- 2.30.2