• Robert Griesemer's avatar
    go_spec: don't allow parens around the literal type of composite literals · 07cc6440
    Robert Griesemer authored
    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.
    
    R=golang-dev
    CC=golang-dev
    https://golang.org/cl/1913041
    07cc6440
go_spec.html 150 KB