From 431c23284243477cd587ee47d7e2c4a9ee8ec5e9 Mon Sep 17 00:00:00 2001 From: Robert Griesemer Date: Wed, 18 Nov 2015 13:09:14 -0800 Subject: [PATCH] cmd/compile/internal/gc: address TODO (better comment) For #13243. Change-Id: I544a8c44971fad126103157575e983ab528309bf Reviewed-on: https://go-review.googlesource.com/17044 Reviewed-by: Chris Manghane --- src/cmd/compile/internal/gc/parser.go | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/cmd/compile/internal/gc/parser.go b/src/cmd/compile/internal/gc/parser.go index f2f84eed4c..94814cb539 100644 --- a/src/cmd/compile/internal/gc/parser.go +++ b/src/cmd/compile/internal/gc/parser.go @@ -1482,6 +1482,11 @@ func (p *parser) operand(keep_parens bool) *Node { p.advance() return nil } + + // Syntactically, composite literals are operands. Because a complit + // type may be a qualified identifier which is handled by pexpr + // (together with selector expressions), complits are parsed there + // as well (operand is only called from pexpr). } // go.y:pexpr, pexpr_no_paren @@ -1581,13 +1586,9 @@ loop: x.Isddd = ddd case '{': - // TODO(gri) should this (complit acceptance) be in operand? - // accept ()'s around the complit type but complain if we have a complit - // (issue 13243) - t := x - for t.Op == OPAREN { - t = t.Left - } + // operand may have returned a parenthesized complit + // type; accept it but complain if we have a complit + t := unparen(x) // determine if '{' belongs to a complit or a compound_stmt complit_ok := false switch t.Op { -- 2.48.1