Descriptiongo_spec: don't allow parens around the literal type of composite literals
Background: The current spec is imprecise with respect to the parsing ambiguity
for composite literals: It says that the ambiguity arises when the TypeName form
of the LiteralType is used. The following code:
if (B) {} ...
is not using the TypeName form (but the parenthesized TypeName form) and thus
could be interpreted as:
if ((B){}) ...
instead of
if B {} ...
Both compilers and gofmt choose the latter interpretation. One could fix the
spec by making the clause regarding the parsing ambiguity more precise ("...using
the _possibly parenthesized_ TypeName form of the LiteralType..."). The alternative
(chosen here) is to simply disallow parenthesized literal types. Except for a single
test case (test/parentype.go) there appears to be no Go code under $GOROOT containing
parenthesized literal types. Furthermore, parentheses are never needed around a
literal type for correct parsing.
Patch Set 1 #Patch Set 2 : code review 1913041: go_spec: don't allow parens around the literal type of ... #Patch Set 3 : code review 1913041: go_spec: don't allow parens around the literal type of ... #Patch Set 4 : code review 1913041: go_spec: don't allow parens around the literal type of ... #Patch Set 5 : code review 1913041: go_spec: don't allow parens around the literal type of ... #
MessagesTotal messages: 4
|