• 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
Name
Last commit
Last update
..
bench Loading commit data...
bugs Loading commit data...
chan Loading commit data...
fixedbugs Loading commit data...
garbage Loading commit data...
interface Loading commit data...
ken Loading commit data...
nilptr Loading commit data...
syntax Loading commit data...
235.go Loading commit data...
64bit.go Loading commit data...
args.go Loading commit data...
arm-pass.txt Loading commit data...
assign.go Loading commit data...
assign1.go Loading commit data...
bigalg.go Loading commit data...
bigmap.go Loading commit data...
blank.go Loading commit data...
blank1.go Loading commit data...
chancap.go Loading commit data...
char_lit.go Loading commit data...
char_lit1.go Loading commit data...
closedchan.go Loading commit data...
closure.go Loading commit data...
cmp1.go Loading commit data...
cmp2.go Loading commit data...
cmp3.go Loading commit data...
cmp4.go Loading commit data...
cmp5.go Loading commit data...
cmplx.go Loading commit data...
cmplxdivide.c Loading commit data...
cmplxdivide.go Loading commit data...
cmplxdivide1.go Loading commit data...
complit.go Loading commit data...
compos.go Loading commit data...
const.go Loading commit data...
const1.go Loading commit data...
const2.go Loading commit data...
const3.go Loading commit data...
convert.go Loading commit data...
convert3.go Loading commit data...
convlit.go Loading commit data...
convlit1.go Loading commit data...
copy.go Loading commit data...
ddd.go Loading commit data...
ddd1.go Loading commit data...
ddd2.go Loading commit data...
ddd3.go Loading commit data...
decl.go Loading commit data...
declbad.go Loading commit data...
defer.go Loading commit data...
deferprint.go Loading commit data...
empty.go Loading commit data...
env.go Loading commit data...
errchk Loading commit data...
escape.go Loading commit data...
float_lit.go Loading commit data...
floatcmp.go Loading commit data...
for.go Loading commit data...
func.go Loading commit data...
func1.go Loading commit data...
func2.go Loading commit data...
func3.go Loading commit data...
func4.go Loading commit data...
func5.go Loading commit data...
gc.go Loading commit data...
gc1.go Loading commit data...
golden-arm.out Loading commit data...
golden.out Loading commit data...
hashmap.go Loading commit data...
helloworld.go Loading commit data...
if.go Loading commit data...
if1.go Loading commit data...
import.go Loading commit data...
import1.go Loading commit data...
import2.go Loading commit data...
import3.go Loading commit data...
import4.go Loading commit data...
indirect.go Loading commit data...
indirect1.go Loading commit data...
initcomma.go Loading commit data...
initialize.go Loading commit data...
initializerr.go Loading commit data...
initsyscall.go Loading commit data...
int_lit.go Loading commit data...
intcvt.go Loading commit data...
iota.go Loading commit data...
literal.go Loading commit data...
malloc1.go Loading commit data...
mallocfin.go Loading commit data...
mallocrand.go Loading commit data...
mallocrep.go Loading commit data...
mallocrep1.go Loading commit data...
map.go Loading commit data...
method.go Loading commit data...
method1.go Loading commit data...
method2.go Loading commit data...
method3.go Loading commit data...
named.go Loading commit data...
named1.go Loading commit data...
nil.go Loading commit data...
nul1.go Loading commit data...
parentype.go Loading commit data...
peano.go Loading commit data...
printbig.go Loading commit data...
range.go Loading commit data...
recover.go Loading commit data...
recover1.go Loading commit data...
recover2.go Loading commit data...
recover3.go Loading commit data...
rename.go Loading commit data...
rename1.go Loading commit data...
run Loading commit data...
run-arm Loading commit data...
runtime.go Loading commit data...
sieve.go Loading commit data...
sigchld.go Loading commit data...
simassign.go Loading commit data...
sinit.go Loading commit data...
stack.go Loading commit data...
string_lit.go Loading commit data...
stringrange.go Loading commit data...
switch.go Loading commit data...
switch1.go Loading commit data...
test0.go Loading commit data...
turing.go Loading commit data...
typeswitch.go Loading commit data...
typeswitch1.go Loading commit data...
typeswitch2.go Loading commit data...
undef.go Loading commit data...
utf.go Loading commit data...
varerr.go Loading commit data...
varinit.go Loading commit data...
vectors.go Loading commit data...
zerodivide.go Loading commit data...