]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/internal/gc: fix vet detected printf problems
authorShenghou Ma <minux@golang.org>
Wed, 13 May 2015 23:05:50 +0000 (19:05 -0400)
committerMinux Ma <minux@golang.org>
Thu, 14 May 2015 05:34:29 +0000 (05:34 +0000)
Fixes #10805.

Change-Id: Ia77639e606a0c18fc53cba9749d92f325014025f
Reviewed-on: https://go-review.googlesource.com/10040
Reviewed-by: Josh Bleecher Snyder <josharian@gmail.com>
src/cmd/internal/gc/dcl.go
src/cmd/internal/gc/gen.go
src/cmd/internal/gc/go.y
src/cmd/internal/gc/typecheck.go
src/cmd/internal/gc/y.go
src/cmd/internal/gc/y.output

index 08d2469094b307b687bd55aab886645cfd450283..627556eeef12120ca2f74f76486e77fbd0f3b587 100644 (file)
@@ -183,7 +183,7 @@ func declare(n *Node, ctxt uint8) {
        }
 
        if ctxt == PEXTERN && s.Name == "init" {
-               Yyerror("cannot declare init - must be func", s)
+               Yyerror("cannot declare init - must be func")
        }
 
        gen := 0
index a9c348da2d2c8efb19e90e46a515ed0e3c49d876..fcb2499d3ba560c76eff0fc4a24e5f0eaf46a10a 100644 (file)
@@ -965,7 +965,7 @@ func cgen_callmeth(n *Node, proc int) {
        l := n.Left
 
        if l.Op != ODOTMETH {
-               Fatal("cgen_callmeth: not dotmethod: %v")
+               Fatal("cgen_callmeth: not dotmethod: %v", l)
        }
 
        n2 := *n
index f1904b0085ac6194c320edfff73c26871fdd8840..bbee200889c07c5b8cc9a0159992ed282ce7bc4e 100644 (file)
@@ -21,6 +21,7 @@
 package gc
 
 import (
+       "fmt"
        "strings"
 )
 %}
@@ -1975,9 +1976,9 @@ hidden_import:
                importlist = list(importlist, $2);
 
                if Debug['E'] > 0 {
-                       print("import [%q] func %lN \n", importpkg.Path, $2);
+                       fmt.Printf("import [%q] func %v \n", importpkg.Path, $2)
                        if Debug['m'] > 2 && $2.Func.Inl != nil {
-                               print("inl body:%+H\n", $2.Func.Inl);
+                               fmt.Printf("inl body:%v\n", $2.Func.Inl)
                        }
                }
        }
index 185cfecc685874bda54c91a067b6488bfd211be5..3061275da32800c1a451a98d8c5b678a7b7c481e 100644 (file)
@@ -1303,7 +1303,7 @@ OpSwitch:
                if l.Op == OTYPE {
                        if n.Isddd || l.Type.Bound == -100 {
                                if l.Type.Broke == 0 {
-                                       Yyerror("invalid use of ... in type conversion", l)
+                                       Yyerror("invalid use of ... in type conversion to %v", l.Type)
                                }
                                n.Diag = 1
                        }
@@ -1528,7 +1528,7 @@ OpSwitch:
                var t *Type
                switch l.Type.Etype {
                default:
-                       Yyerror("invalid operation: %v (arguments have type %v, expected floating-point)", n, l.Type, r.Type)
+                       Yyerror("invalid operation: %v (arguments have type %v, expected floating-point)", n, l.Type)
                        n.Type = nil
                        return
 
@@ -1645,7 +1645,7 @@ OpSwitch:
                n.Type = t
                if !Isslice(t) {
                        if Isconst(args.N, CTNIL) {
-                               Yyerror("first argument to append must be typed slice; have untyped nil", t)
+                               Yyerror("first argument to append must be typed slice; have untyped nil")
                                n.Type = nil
                                return
                        }
@@ -3526,7 +3526,7 @@ func typecheckfunc(n *Node) {
 func stringtoarraylit(np **Node) {
        n := *np
        if n.Left.Op != OLITERAL || n.Left.Val.Ctype != CTSTR {
-               Fatal("stringtoarraylit %N", n)
+               Fatal("stringtoarraylit %v", n)
        }
 
        s := n.Left.Val.U.Sval
index f2c8b969829a1ea611b15faba875ec4480462f67..fd3f2b3176e4d8f4aa7bfdf47795b81e3883f6cb 100644 (file)
@@ -5,10 +5,11 @@ import __yyfmt__ "fmt"
 
 //line go.y:21
 import (
+       "fmt"
        "strings"
 )
 
-//line go.y:27
+//line go.y:28
 type yySymType struct {
        yys  int
        node *Node
@@ -153,7 +154,7 @@ const yyEofCode = 1
 const yyErrCode = 2
 const yyMaxDepth = 200
 
-//line go.y:2242
+//line go.y:2243
 func fixlbrace(lbr int) {
        // If the opening brace was an LBODY,
        // set up for another one now that we're done.
@@ -1187,13 +1188,13 @@ yydefault:
 
        case 1:
                yyDollar = yyS[yypt-4 : yypt+1]
-               //line go.y:127
+               //line go.y:128
                {
                        xtop = concat(xtop, yyDollar[4].list)
                }
        case 2:
                yyDollar = yyS[yypt-0 : yypt+1]
-               //line go.y:133
+               //line go.y:134
                {
                        prevlineno = lineno
                        Yyerror("package statement must be first")
@@ -1201,13 +1202,13 @@ yydefault:
                }
        case 3:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:139
+               //line go.y:140
                {
                        mkpackage(yyDollar[2].sym.Name)
                }
        case 4:
                yyDollar = yyS[yypt-0 : yypt+1]
-               //line go.y:149
+               //line go.y:150
                {
                        importpkg = Runtimepkg
 
@@ -1220,13 +1221,13 @@ yydefault:
                }
        case 5:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:161
+               //line go.y:162
                {
                        importpkg = nil
                }
        case 11:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:175
+               //line go.y:176
                {
                        ipkg := importpkg
                        my := importmyname
@@ -1263,7 +1264,7 @@ yydefault:
                }
        case 12:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:210
+               //line go.y:211
                {
                        // When an invalid import path is passed to importfile,
                        // it calls Yyerror and then sets up a fake import with
@@ -1275,7 +1276,7 @@ yydefault:
                }
        case 15:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:226
+               //line go.y:227
                {
                        // import with original name
                        yyVAL.i = parserline()
@@ -1284,7 +1285,7 @@ yydefault:
                }
        case 16:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:233
+               //line go.y:234
                {
                        // import with given name
                        yyVAL.i = parserline()
@@ -1293,7 +1294,7 @@ yydefault:
                }
        case 17:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:240
+               //line go.y:241
                {
                        // import into my name space
                        yyVAL.i = parserline()
@@ -1302,7 +1303,7 @@ yydefault:
                }
        case 18:
                yyDollar = yyS[yypt-4 : yypt+1]
-               //line go.y:249
+               //line go.y:250
                {
                        if importpkg.Name == "" {
                                importpkg.Name = yyDollar[2].sym.Name
@@ -1319,7 +1320,7 @@ yydefault:
                }
        case 20:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:266
+               //line go.y:267
                {
                        if yyDollar[1].sym.Name == "safe" {
                                curio.importsafe = true
@@ -1327,64 +1328,64 @@ yydefault:
                }
        case 21:
                yyDollar = yyS[yypt-0 : yypt+1]
-               //line go.y:273
+               //line go.y:274
                {
                        defercheckwidth()
                }
        case 22:
                yyDollar = yyS[yypt-4 : yypt+1]
-               //line go.y:277
+               //line go.y:278
                {
                        resumecheckwidth()
                        unimportfile()
                }
        case 23:
                yyDollar = yyS[yypt-0 : yypt+1]
-               //line go.y:286
+               //line go.y:287
                {
                        Yyerror("empty top-level declaration")
                        yyVAL.list = nil
                }
        case 25:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:292
+               //line go.y:293
                {
                        yyVAL.list = list1(yyDollar[1].node)
                }
        case 26:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:296
+               //line go.y:297
                {
                        Yyerror("non-declaration statement outside function body")
                        yyVAL.list = nil
                }
        case 27:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:301
+               //line go.y:302
                {
                        yyVAL.list = nil
                }
        case 28:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:307
+               //line go.y:308
                {
                        yyVAL.list = yyDollar[2].list
                }
        case 29:
                yyDollar = yyS[yypt-5 : yypt+1]
-               //line go.y:311
+               //line go.y:312
                {
                        yyVAL.list = yyDollar[3].list
                }
        case 30:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:315
+               //line go.y:316
                {
                        yyVAL.list = nil
                }
        case 31:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:319
+               //line go.y:320
                {
                        yyVAL.list = yyDollar[2].list
                        iota_ = -100000
@@ -1392,7 +1393,7 @@ yydefault:
                }
        case 32:
                yyDollar = yyS[yypt-5 : yypt+1]
-               //line go.y:325
+               //line go.y:326
                {
                        yyVAL.list = yyDollar[3].list
                        iota_ = -100000
@@ -1400,7 +1401,7 @@ yydefault:
                }
        case 33:
                yyDollar = yyS[yypt-7 : yypt+1]
-               //line go.y:331
+               //line go.y:332
                {
                        yyVAL.list = concat(yyDollar[3].list, yyDollar[5].list)
                        iota_ = -100000
@@ -1408,80 +1409,80 @@ yydefault:
                }
        case 34:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:337
+               //line go.y:338
                {
                        yyVAL.list = nil
                        iota_ = -100000
                }
        case 35:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:342
+               //line go.y:343
                {
                        yyVAL.list = list1(yyDollar[2].node)
                }
        case 36:
                yyDollar = yyS[yypt-5 : yypt+1]
-               //line go.y:346
+               //line go.y:347
                {
                        yyVAL.list = yyDollar[3].list
                }
        case 37:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:350
+               //line go.y:351
                {
                        yyVAL.list = nil
                }
        case 38:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:356
+               //line go.y:357
                {
                        iota_ = 0
                }
        case 39:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:362
+               //line go.y:363
                {
                        yyVAL.list = variter(yyDollar[1].list, yyDollar[2].node, nil)
                }
        case 40:
                yyDollar = yyS[yypt-4 : yypt+1]
-               //line go.y:366
+               //line go.y:367
                {
                        yyVAL.list = variter(yyDollar[1].list, yyDollar[2].node, yyDollar[4].list)
                }
        case 41:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:370
+               //line go.y:371
                {
                        yyVAL.list = variter(yyDollar[1].list, nil, yyDollar[3].list)
                }
        case 42:
                yyDollar = yyS[yypt-4 : yypt+1]
-               //line go.y:376
+               //line go.y:377
                {
                        yyVAL.list = constiter(yyDollar[1].list, yyDollar[2].node, yyDollar[4].list)
                }
        case 43:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:380
+               //line go.y:381
                {
                        yyVAL.list = constiter(yyDollar[1].list, nil, yyDollar[3].list)
                }
        case 45:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:387
+               //line go.y:388
                {
                        yyVAL.list = constiter(yyDollar[1].list, yyDollar[2].node, nil)
                }
        case 46:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:391
+               //line go.y:392
                {
                        yyVAL.list = constiter(yyDollar[1].list, nil, nil)
                }
        case 47:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:397
+               //line go.y:398
                {
                        // different from dclname because the name
                        // becomes visible right here, not at the end
@@ -1490,13 +1491,13 @@ yydefault:
                }
        case 48:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:406
+               //line go.y:407
                {
                        yyVAL.node = typedcl1(yyDollar[1].node, yyDollar[2].node, true)
                }
        case 49:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:412
+               //line go.y:413
                {
                        yyVAL.node = yyDollar[1].node
 
@@ -1512,14 +1513,14 @@ yydefault:
                }
        case 50:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:426
+               //line go.y:427
                {
                        yyVAL.node = Nod(OASOP, yyDollar[1].node, yyDollar[3].node)
                        yyVAL.node.Etype = uint8(yyDollar[2].i) // rathole to pass opcode
                }
        case 51:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:431
+               //line go.y:432
                {
                        if yyDollar[1].list.Next == nil && yyDollar[3].list.Next == nil {
                                // simple
@@ -1533,7 +1534,7 @@ yydefault:
                }
        case 52:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:443
+               //line go.y:444
                {
                        if yyDollar[3].list.N.Op == OTYPESW {
                                yyVAL.node = Nod(OTYPESW, nil, yyDollar[3].list.N.Right)
@@ -1553,7 +1554,7 @@ yydefault:
                }
        case 53:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:461
+               //line go.y:462
                {
                        yyVAL.node = Nod(OASOP, yyDollar[1].node, Nodintconst(1))
                        yyVAL.node.Implicit = true
@@ -1561,7 +1562,7 @@ yydefault:
                }
        case 54:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:467
+               //line go.y:468
                {
                        yyVAL.node = Nod(OASOP, yyDollar[1].node, Nodintconst(1))
                        yyVAL.node.Implicit = true
@@ -1569,7 +1570,7 @@ yydefault:
                }
        case 55:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:475
+               //line go.y:476
                {
                        var n, nn *Node
 
@@ -1594,7 +1595,7 @@ yydefault:
                }
        case 56:
                yyDollar = yyS[yypt-5 : yypt+1]
-               //line go.y:498
+               //line go.y:499
                {
                        var n *Node
 
@@ -1614,7 +1615,7 @@ yydefault:
                }
        case 57:
                yyDollar = yyS[yypt-5 : yypt+1]
-               //line go.y:516
+               //line go.y:517
                {
                        // will be converted to OCASE
                        // right will point to next case
@@ -1625,7 +1626,7 @@ yydefault:
                }
        case 58:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:525
+               //line go.y:526
                {
                        var n, nn *Node
 
@@ -1646,13 +1647,13 @@ yydefault:
                }
        case 59:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:546
+               //line go.y:547
                {
                        markdcl()
                }
        case 60:
                yyDollar = yyS[yypt-4 : yypt+1]
-               //line go.y:550
+               //line go.y:551
                {
                        if yyDollar[3].list == nil {
                                yyVAL.node = Nod(OEMPTY, nil, nil)
@@ -1663,7 +1664,7 @@ yydefault:
                }
        case 61:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:561
+               //line go.y:562
                {
                        // If the last token read by the lexer was consumed
                        // as part of the case, clear it (parser has cleared yychar).
@@ -1676,7 +1677,7 @@ yydefault:
                }
        case 62:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:572
+               //line go.y:573
                {
                        // This is the only place in the language where a statement
                        // list is not allowed to drop the final semicolon, because
@@ -1696,32 +1697,32 @@ yydefault:
                }
        case 63:
                yyDollar = yyS[yypt-0 : yypt+1]
-               //line go.y:591
+               //line go.y:592
                {
                        yyVAL.list = nil
                }
        case 64:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:595
+               //line go.y:596
                {
                        yyVAL.list = list(yyDollar[1].list, yyDollar[2].node)
                }
        case 65:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:601
+               //line go.y:602
                {
                        markdcl()
                }
        case 66:
                yyDollar = yyS[yypt-4 : yypt+1]
-               //line go.y:605
+               //line go.y:606
                {
                        yyVAL.list = yyDollar[3].list
                        popdcl()
                }
        case 67:
                yyDollar = yyS[yypt-4 : yypt+1]
-               //line go.y:612
+               //line go.y:613
                {
                        yyVAL.node = Nod(ORANGE, nil, yyDollar[4].node)
                        yyVAL.node.List = yyDollar[1].list
@@ -1729,7 +1730,7 @@ yydefault:
                }
        case 68:
                yyDollar = yyS[yypt-4 : yypt+1]
-               //line go.y:618
+               //line go.y:619
                {
                        yyVAL.node = Nod(ORANGE, nil, yyDollar[4].node)
                        yyVAL.node.List = yyDollar[1].list
@@ -1738,14 +1739,14 @@ yydefault:
                }
        case 69:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:625
+               //line go.y:626
                {
                        yyVAL.node = Nod(ORANGE, nil, yyDollar[2].node)
                        yyVAL.node.Etype = 0 // := flag
                }
        case 70:
                yyDollar = yyS[yypt-5 : yypt+1]
-               //line go.y:632
+               //line go.y:633
                {
                        // init ; test ; incr
                        if yyDollar[5].node != nil && yyDollar[5].node.Colas {
@@ -1760,7 +1761,7 @@ yydefault:
                }
        case 71:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:645
+               //line go.y:646
                {
                        // normal test
                        yyVAL.node = Nod(OFOR, nil, nil)
@@ -1768,27 +1769,27 @@ yydefault:
                }
        case 73:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:654
+               //line go.y:655
                {
                        yyVAL.node = yyDollar[1].node
                        yyVAL.node.Nbody = concat(yyVAL.node.Nbody, yyDollar[2].list)
                }
        case 74:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:661
+               //line go.y:662
                {
                        markdcl()
                }
        case 75:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:665
+               //line go.y:666
                {
                        yyVAL.node = yyDollar[3].node
                        popdcl()
                }
        case 76:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:672
+               //line go.y:673
                {
                        // test
                        yyVAL.node = Nod(OIF, nil, nil)
@@ -1796,7 +1797,7 @@ yydefault:
                }
        case 77:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:678
+               //line go.y:679
                {
                        // init ; test
                        yyVAL.node = Nod(OIF, nil, nil)
@@ -1807,13 +1808,13 @@ yydefault:
                }
        case 78:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:690
+               //line go.y:691
                {
                        markdcl()
                }
        case 79:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:694
+               //line go.y:695
                {
                        if yyDollar[3].node.Ntest == nil {
                                Yyerror("missing condition in if statement")
@@ -1821,13 +1822,13 @@ yydefault:
                }
        case 80:
                yyDollar = yyS[yypt-5 : yypt+1]
-               //line go.y:700
+               //line go.y:701
                {
                        yyDollar[3].node.Nbody = yyDollar[5].list
                }
        case 81:
                yyDollar = yyS[yypt-8 : yypt+1]
-               //line go.y:704
+               //line go.y:705
                {
                        var n *Node
                        var nn *NodeList
@@ -1845,13 +1846,13 @@ yydefault:
                }
        case 82:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:722
+               //line go.y:723
                {
                        markdcl()
                }
        case 83:
                yyDollar = yyS[yypt-5 : yypt+1]
-               //line go.y:726
+               //line go.y:727
                {
                        if yyDollar[4].node.Ntest == nil {
                                Yyerror("missing condition in if statement")
@@ -1861,25 +1862,25 @@ yydefault:
                }
        case 84:
                yyDollar = yyS[yypt-0 : yypt+1]
-               //line go.y:735
+               //line go.y:736
                {
                        yyVAL.list = nil
                }
        case 85:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:739
+               //line go.y:740
                {
                        yyVAL.list = concat(yyDollar[1].list, yyDollar[2].list)
                }
        case 86:
                yyDollar = yyS[yypt-0 : yypt+1]
-               //line go.y:744
+               //line go.y:745
                {
                        yyVAL.list = nil
                }
        case 87:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:748
+               //line go.y:749
                {
                        l := &NodeList{N: yyDollar[2].node}
                        l.End = l
@@ -1887,13 +1888,13 @@ yydefault:
                }
        case 88:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:756
+               //line go.y:757
                {
                        markdcl()
                }
        case 89:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:760
+               //line go.y:761
                {
                        var n *Node
                        n = yyDollar[3].node.Ntest
@@ -1904,7 +1905,7 @@ yydefault:
                }
        case 90:
                yyDollar = yyS[yypt-7 : yypt+1]
-               //line go.y:769
+               //line go.y:770
                {
                        yyVAL.node = yyDollar[3].node
                        yyVAL.node.Op = OSWITCH
@@ -1914,13 +1915,13 @@ yydefault:
                }
        case 91:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:779
+               //line go.y:780
                {
                        typesw = Nod(OXXX, typesw, nil)
                }
        case 92:
                yyDollar = yyS[yypt-5 : yypt+1]
-               //line go.y:783
+               //line go.y:784
                {
                        yyVAL.node = Nod(OSELECT, nil, nil)
                        yyVAL.node.Lineno = typesw.Lineno
@@ -1929,133 +1930,133 @@ yydefault:
                }
        case 94:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:796
+               //line go.y:797
                {
                        yyVAL.node = Nod(OOROR, yyDollar[1].node, yyDollar[3].node)
                }
        case 95:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:800
+               //line go.y:801
                {
                        yyVAL.node = Nod(OANDAND, yyDollar[1].node, yyDollar[3].node)
                }
        case 96:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:804
+               //line go.y:805
                {
                        yyVAL.node = Nod(OEQ, yyDollar[1].node, yyDollar[3].node)
                }
        case 97:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:808
+               //line go.y:809
                {
                        yyVAL.node = Nod(ONE, yyDollar[1].node, yyDollar[3].node)
                }
        case 98:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:812
+               //line go.y:813
                {
                        yyVAL.node = Nod(OLT, yyDollar[1].node, yyDollar[3].node)
                }
        case 99:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:816
+               //line go.y:817
                {
                        yyVAL.node = Nod(OLE, yyDollar[1].node, yyDollar[3].node)
                }
        case 100:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:820
+               //line go.y:821
                {
                        yyVAL.node = Nod(OGE, yyDollar[1].node, yyDollar[3].node)
                }
        case 101:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:824
+               //line go.y:825
                {
                        yyVAL.node = Nod(OGT, yyDollar[1].node, yyDollar[3].node)
                }
        case 102:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:828
+               //line go.y:829
                {
                        yyVAL.node = Nod(OADD, yyDollar[1].node, yyDollar[3].node)
                }
        case 103:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:832
+               //line go.y:833
                {
                        yyVAL.node = Nod(OSUB, yyDollar[1].node, yyDollar[3].node)
                }
        case 104:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:836
+               //line go.y:837
                {
                        yyVAL.node = Nod(OOR, yyDollar[1].node, yyDollar[3].node)
                }
        case 105:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:840
+               //line go.y:841
                {
                        yyVAL.node = Nod(OXOR, yyDollar[1].node, yyDollar[3].node)
                }
        case 106:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:844
+               //line go.y:845
                {
                        yyVAL.node = Nod(OMUL, yyDollar[1].node, yyDollar[3].node)
                }
        case 107:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:848
+               //line go.y:849
                {
                        yyVAL.node = Nod(ODIV, yyDollar[1].node, yyDollar[3].node)
                }
        case 108:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:852
+               //line go.y:853
                {
                        yyVAL.node = Nod(OMOD, yyDollar[1].node, yyDollar[3].node)
                }
        case 109:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:856
+               //line go.y:857
                {
                        yyVAL.node = Nod(OAND, yyDollar[1].node, yyDollar[3].node)
                }
        case 110:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:860
+               //line go.y:861
                {
                        yyVAL.node = Nod(OANDNOT, yyDollar[1].node, yyDollar[3].node)
                }
        case 111:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:864
+               //line go.y:865
                {
                        yyVAL.node = Nod(OLSH, yyDollar[1].node, yyDollar[3].node)
                }
        case 112:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:868
+               //line go.y:869
                {
                        yyVAL.node = Nod(ORSH, yyDollar[1].node, yyDollar[3].node)
                }
        case 113:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:873
+               //line go.y:874
                {
                        yyVAL.node = Nod(OSEND, yyDollar[1].node, yyDollar[3].node)
                }
        case 115:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:880
+               //line go.y:881
                {
                        yyVAL.node = Nod(OIND, yyDollar[2].node, nil)
                }
        case 116:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:884
+               //line go.y:885
                {
                        if yyDollar[2].node.Op == OCOMPLIT {
                                // Special case for &T{...}: turn into (*T){...}.
@@ -2068,57 +2069,57 @@ yydefault:
                }
        case 117:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:895
+               //line go.y:896
                {
                        yyVAL.node = Nod(OPLUS, yyDollar[2].node, nil)
                }
        case 118:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:899
+               //line go.y:900
                {
                        yyVAL.node = Nod(OMINUS, yyDollar[2].node, nil)
                }
        case 119:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:903
+               //line go.y:904
                {
                        yyVAL.node = Nod(ONOT, yyDollar[2].node, nil)
                }
        case 120:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:907
+               //line go.y:908
                {
                        Yyerror("the bitwise complement operator is ^")
                        yyVAL.node = Nod(OCOM, yyDollar[2].node, nil)
                }
        case 121:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:912
+               //line go.y:913
                {
                        yyVAL.node = Nod(OCOM, yyDollar[2].node, nil)
                }
        case 122:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:916
+               //line go.y:917
                {
                        yyVAL.node = Nod(ORECV, yyDollar[2].node, nil)
                }
        case 123:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:926
+               //line go.y:927
                {
                        yyVAL.node = Nod(OCALL, yyDollar[1].node, nil)
                }
        case 124:
                yyDollar = yyS[yypt-5 : yypt+1]
-               //line go.y:930
+               //line go.y:931
                {
                        yyVAL.node = Nod(OCALL, yyDollar[1].node, nil)
                        yyVAL.node.List = yyDollar[3].list
                }
        case 125:
                yyDollar = yyS[yypt-6 : yypt+1]
-               //line go.y:935
+               //line go.y:936
                {
                        yyVAL.node = Nod(OCALL, yyDollar[1].node, nil)
                        yyVAL.node.List = yyDollar[3].list
@@ -2126,13 +2127,13 @@ yydefault:
                }
        case 126:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:943
+               //line go.y:944
                {
                        yyVAL.node = nodlit(yyDollar[1].val)
                }
        case 128:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:948
+               //line go.y:949
                {
                        if yyDollar[1].node.Op == OPACK {
                                var s *Sym
@@ -2145,31 +2146,31 @@ yydefault:
                }
        case 129:
                yyDollar = yyS[yypt-5 : yypt+1]
-               //line go.y:959
+               //line go.y:960
                {
                        yyVAL.node = Nod(ODOTTYPE, yyDollar[1].node, yyDollar[4].node)
                }
        case 130:
                yyDollar = yyS[yypt-5 : yypt+1]
-               //line go.y:963
+               //line go.y:964
                {
                        yyVAL.node = Nod(OTYPESW, nil, yyDollar[1].node)
                }
        case 131:
                yyDollar = yyS[yypt-4 : yypt+1]
-               //line go.y:967
+               //line go.y:968
                {
                        yyVAL.node = Nod(OINDEX, yyDollar[1].node, yyDollar[3].node)
                }
        case 132:
                yyDollar = yyS[yypt-6 : yypt+1]
-               //line go.y:971
+               //line go.y:972
                {
                        yyVAL.node = Nod(OSLICE, yyDollar[1].node, Nod(OKEY, yyDollar[3].node, yyDollar[5].node))
                }
        case 133:
                yyDollar = yyS[yypt-8 : yypt+1]
-               //line go.y:975
+               //line go.y:976
                {
                        if yyDollar[5].node == nil {
                                Yyerror("middle index required in 3-index slice")
@@ -2181,7 +2182,7 @@ yydefault:
                }
        case 135:
                yyDollar = yyS[yypt-5 : yypt+1]
-               //line go.y:986
+               //line go.y:987
                {
                        // conversion
                        yyVAL.node = Nod(OCALL, yyDollar[1].node, nil)
@@ -2189,7 +2190,7 @@ yydefault:
                }
        case 136:
                yyDollar = yyS[yypt-5 : yypt+1]
-               //line go.y:992
+               //line go.y:993
                {
                        yyVAL.node = yyDollar[3].node
                        yyVAL.node.Right = yyDollar[1].node
@@ -2198,7 +2199,7 @@ yydefault:
                }
        case 137:
                yyDollar = yyS[yypt-5 : yypt+1]
-               //line go.y:999
+               //line go.y:1000
                {
                        yyVAL.node = yyDollar[3].node
                        yyVAL.node.Right = yyDollar[1].node
@@ -2206,7 +2207,7 @@ yydefault:
                }
        case 138:
                yyDollar = yyS[yypt-7 : yypt+1]
-               //line go.y:1005
+               //line go.y:1006
                {
                        Yyerror("cannot parenthesize type in composite literal")
                        yyVAL.node = yyDollar[5].node
@@ -2215,7 +2216,7 @@ yydefault:
                }
        case 140:
                yyDollar = yyS[yypt-0 : yypt+1]
-               //line go.y:1014
+               //line go.y:1015
                {
                        // composite expression.
                        // make node early so we get the right line number.
@@ -2223,13 +2224,13 @@ yydefault:
                }
        case 141:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:1022
+               //line go.y:1023
                {
                        yyVAL.node = Nod(OKEY, yyDollar[1].node, yyDollar[3].node)
                }
        case 142:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:1028
+               //line go.y:1029
                {
                        // These nodes do not carry line numbers.
                        // Since a composite literal commonly spans several lines,
@@ -2244,21 +2245,21 @@ yydefault:
                }
        case 143:
                yyDollar = yyS[yypt-4 : yypt+1]
-               //line go.y:1041
+               //line go.y:1042
                {
                        yyVAL.node = yyDollar[2].node
                        yyVAL.node.List = yyDollar[3].list
                }
        case 145:
                yyDollar = yyS[yypt-4 : yypt+1]
-               //line go.y:1049
+               //line go.y:1050
                {
                        yyVAL.node = yyDollar[2].node
                        yyVAL.node.List = yyDollar[3].list
                }
        case 147:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:1057
+               //line go.y:1058
                {
                        yyVAL.node = yyDollar[2].node
 
@@ -2272,19 +2273,19 @@ yydefault:
                }
        case 151:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:1078
+               //line go.y:1079
                {
                        yyVAL.i = LBODY
                }
        case 152:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:1082
+               //line go.y:1083
                {
                        yyVAL.i = '{'
                }
        case 153:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:1093
+               //line go.y:1094
                {
                        if yyDollar[1].sym == nil {
                                yyVAL.node = nil
@@ -2294,19 +2295,19 @@ yydefault:
                }
        case 154:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:1103
+               //line go.y:1104
                {
                        yyVAL.node = dclname(yyDollar[1].sym)
                }
        case 155:
                yyDollar = yyS[yypt-0 : yypt+1]
-               //line go.y:1108
+               //line go.y:1109
                {
                        yyVAL.node = nil
                }
        case 157:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:1115
+               //line go.y:1116
                {
                        yyVAL.sym = yyDollar[1].sym
                        // during imports, unqualified non-exported identifiers are from builtinpkg
@@ -2316,13 +2317,13 @@ yydefault:
                }
        case 159:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:1124
+               //line go.y:1125
                {
                        yyVAL.sym = nil
                }
        case 160:
                yyDollar = yyS[yypt-4 : yypt+1]
-               //line go.y:1130
+               //line go.y:1131
                {
                        var p *Pkg
 
@@ -2338,7 +2339,7 @@ yydefault:
                }
        case 161:
                yyDollar = yyS[yypt-4 : yypt+1]
-               //line go.y:1144
+               //line go.y:1145
                {
                        var p *Pkg
 
@@ -2354,7 +2355,7 @@ yydefault:
                }
        case 162:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:1160
+               //line go.y:1161
                {
                        yyVAL.node = oldname(yyDollar[1].sym)
                        if yyVAL.node.Pack != nil {
@@ -2363,38 +2364,38 @@ yydefault:
                }
        case 164:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:1181
+               //line go.y:1182
                {
                        Yyerror("final argument in variadic function missing type")
                        yyVAL.node = Nod(ODDD, typenod(typ(TINTER)), nil)
                }
        case 165:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:1186
+               //line go.y:1187
                {
                        yyVAL.node = Nod(ODDD, yyDollar[2].node, nil)
                }
        case 171:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:1197
+               //line go.y:1198
                {
                        yyVAL.node = yyDollar[2].node
                }
        case 175:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:1206
+               //line go.y:1207
                {
                        yyVAL.node = Nod(OIND, yyDollar[2].node, nil)
                }
        case 180:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:1216
+               //line go.y:1217
                {
                        yyVAL.node = yyDollar[2].node
                }
        case 190:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:1237
+               //line go.y:1238
                {
                        if yyDollar[1].node.Op == OPACK {
                                var s *Sym
@@ -2407,53 +2408,53 @@ yydefault:
                }
        case 191:
                yyDollar = yyS[yypt-4 : yypt+1]
-               //line go.y:1250
+               //line go.y:1251
                {
                        yyVAL.node = Nod(OTARRAY, yyDollar[2].node, yyDollar[4].node)
                }
        case 192:
                yyDollar = yyS[yypt-4 : yypt+1]
-               //line go.y:1254
+               //line go.y:1255
                {
                        // array literal of nelem
                        yyVAL.node = Nod(OTARRAY, Nod(ODDD, nil, nil), yyDollar[4].node)
                }
        case 193:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:1259
+               //line go.y:1260
                {
                        yyVAL.node = Nod(OTCHAN, yyDollar[2].node, nil)
                        yyVAL.node.Etype = Cboth
                }
        case 194:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:1264
+               //line go.y:1265
                {
                        yyVAL.node = Nod(OTCHAN, yyDollar[3].node, nil)
                        yyVAL.node.Etype = Csend
                }
        case 195:
                yyDollar = yyS[yypt-5 : yypt+1]
-               //line go.y:1269
+               //line go.y:1270
                {
                        yyVAL.node = Nod(OTMAP, yyDollar[3].node, yyDollar[5].node)
                }
        case 198:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:1277
+               //line go.y:1278
                {
                        yyVAL.node = Nod(OIND, yyDollar[2].node, nil)
                }
        case 199:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:1283
+               //line go.y:1284
                {
                        yyVAL.node = Nod(OTCHAN, yyDollar[3].node, nil)
                        yyVAL.node.Etype = Crecv
                }
        case 200:
                yyDollar = yyS[yypt-5 : yypt+1]
-               //line go.y:1290
+               //line go.y:1291
                {
                        yyVAL.node = Nod(OTSTRUCT, nil, nil)
                        yyVAL.node.List = yyDollar[3].list
@@ -2461,14 +2462,14 @@ yydefault:
                }
        case 201:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:1296
+               //line go.y:1297
                {
                        yyVAL.node = Nod(OTSTRUCT, nil, nil)
                        fixlbrace(yyDollar[2].i)
                }
        case 202:
                yyDollar = yyS[yypt-5 : yypt+1]
-               //line go.y:1303
+               //line go.y:1304
                {
                        yyVAL.node = Nod(OTINTER, nil, nil)
                        yyVAL.node.List = yyDollar[3].list
@@ -2476,14 +2477,14 @@ yydefault:
                }
        case 203:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:1309
+               //line go.y:1310
                {
                        yyVAL.node = Nod(OTINTER, nil, nil)
                        fixlbrace(yyDollar[2].i)
                }
        case 204:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:1320
+               //line go.y:1321
                {
                        yyVAL.node = yyDollar[2].node
                        if yyVAL.node == nil {
@@ -2501,7 +2502,7 @@ yydefault:
                }
        case 205:
                yyDollar = yyS[yypt-5 : yypt+1]
-               //line go.y:1338
+               //line go.y:1339
                {
                        var t *Node
 
@@ -2534,7 +2535,7 @@ yydefault:
                }
        case 206:
                yyDollar = yyS[yypt-8 : yypt+1]
-               //line go.y:1369
+               //line go.y:1370
                {
                        var rcvr, t *Node
 
@@ -2572,7 +2573,7 @@ yydefault:
                }
        case 207:
                yyDollar = yyS[yypt-5 : yypt+1]
-               //line go.y:1407
+               //line go.y:1408
                {
                        var s *Sym
                        var t *Type
@@ -2599,7 +2600,7 @@ yydefault:
                }
        case 208:
                yyDollar = yyS[yypt-8 : yypt+1]
-               //line go.y:1432
+               //line go.y:1433
                {
                        yyVAL.node = methodname1(newname(yyDollar[4].sym), yyDollar[2].list.N.Right)
                        yyVAL.node.Type = functype(yyDollar[2].list.N, yyDollar[6].list, yyDollar[8].list)
@@ -2617,7 +2618,7 @@ yydefault:
                }
        case 209:
                yyDollar = yyS[yypt-5 : yypt+1]
-               //line go.y:1450
+               //line go.y:1451
                {
                        yyDollar[3].list = checkarglist(yyDollar[3].list, 1)
                        yyVAL.node = Nod(OTFUNC, nil, nil)
@@ -2626,13 +2627,13 @@ yydefault:
                }
        case 210:
                yyDollar = yyS[yypt-0 : yypt+1]
-               //line go.y:1458
+               //line go.y:1459
                {
                        yyVAL.list = nil
                }
        case 211:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:1462
+               //line go.y:1463
                {
                        yyVAL.list = yyDollar[2].list
                        if yyVAL.list == nil {
@@ -2641,51 +2642,51 @@ yydefault:
                }
        case 212:
                yyDollar = yyS[yypt-0 : yypt+1]
-               //line go.y:1471
+               //line go.y:1472
                {
                        yyVAL.list = nil
                }
        case 213:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:1475
+               //line go.y:1476
                {
                        yyVAL.list = list1(Nod(ODCLFIELD, nil, yyDollar[1].node))
                }
        case 214:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:1479
+               //line go.y:1480
                {
                        yyDollar[2].list = checkarglist(yyDollar[2].list, 0)
                        yyVAL.list = yyDollar[2].list
                }
        case 215:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:1486
+               //line go.y:1487
                {
                        closurehdr(yyDollar[1].node)
                }
        case 216:
                yyDollar = yyS[yypt-4 : yypt+1]
-               //line go.y:1492
+               //line go.y:1493
                {
                        yyVAL.node = closurebody(yyDollar[3].list)
                        fixlbrace(yyDollar[2].i)
                }
        case 217:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:1497
+               //line go.y:1498
                {
                        yyVAL.node = closurebody(nil)
                }
        case 218:
                yyDollar = yyS[yypt-0 : yypt+1]
-               //line go.y:1508
+               //line go.y:1509
                {
                        yyVAL.list = nil
                }
        case 219:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:1512
+               //line go.y:1513
                {
                        yyVAL.list = concat(yyDollar[1].list, yyDollar[2].list)
                        if nsyntaxerrors == 0 {
@@ -2698,49 +2699,49 @@ yydefault:
                }
        case 221:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:1526
+               //line go.y:1527
                {
                        yyVAL.list = concat(yyDollar[1].list, yyDollar[3].list)
                }
        case 223:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:1533
+               //line go.y:1534
                {
                        yyVAL.list = concat(yyDollar[1].list, yyDollar[3].list)
                }
        case 224:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:1539
+               //line go.y:1540
                {
                        yyVAL.list = list1(yyDollar[1].node)
                }
        case 225:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:1543
+               //line go.y:1544
                {
                        yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
                }
        case 227:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:1550
+               //line go.y:1551
                {
                        yyVAL.list = concat(yyDollar[1].list, yyDollar[3].list)
                }
        case 228:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:1556
+               //line go.y:1557
                {
                        yyVAL.list = list1(yyDollar[1].node)
                }
        case 229:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:1560
+               //line go.y:1561
                {
                        yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
                }
        case 230:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:1566
+               //line go.y:1567
                {
                        var l *NodeList
 
@@ -2766,14 +2767,14 @@ yydefault:
                }
        case 231:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:1590
+               //line go.y:1591
                {
                        yyDollar[1].node.Val = yyDollar[2].val
                        yyVAL.list = list1(yyDollar[1].node)
                }
        case 232:
                yyDollar = yyS[yypt-4 : yypt+1]
-               //line go.y:1595
+               //line go.y:1596
                {
                        yyDollar[2].node.Val = yyDollar[4].val
                        yyVAL.list = list1(yyDollar[2].node)
@@ -2781,7 +2782,7 @@ yydefault:
                }
        case 233:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:1601
+               //line go.y:1602
                {
                        yyDollar[2].node.Right = Nod(OIND, yyDollar[2].node.Right, nil)
                        yyDollar[2].node.Val = yyDollar[3].val
@@ -2789,7 +2790,7 @@ yydefault:
                }
        case 234:
                yyDollar = yyS[yypt-5 : yypt+1]
-               //line go.y:1607
+               //line go.y:1608
                {
                        yyDollar[3].node.Right = Nod(OIND, yyDollar[3].node.Right, nil)
                        yyDollar[3].node.Val = yyDollar[5].val
@@ -2798,7 +2799,7 @@ yydefault:
                }
        case 235:
                yyDollar = yyS[yypt-5 : yypt+1]
-               //line go.y:1614
+               //line go.y:1615
                {
                        yyDollar[3].node.Right = Nod(OIND, yyDollar[3].node.Right, nil)
                        yyDollar[3].node.Val = yyDollar[5].val
@@ -2807,7 +2808,7 @@ yydefault:
                }
        case 236:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:1623
+               //line go.y:1624
                {
                        var n *Node
 
@@ -2819,7 +2820,7 @@ yydefault:
                }
        case 237:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:1633
+               //line go.y:1634
                {
                        var pkg *Pkg
 
@@ -2834,33 +2835,33 @@ yydefault:
                }
        case 238:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:1648
+               //line go.y:1649
                {
                        yyVAL.node = embedded(yyDollar[1].sym, localpkg)
                }
        case 239:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:1654
+               //line go.y:1655
                {
                        yyVAL.node = Nod(ODCLFIELD, yyDollar[1].node, yyDollar[2].node)
                        ifacedcl(yyVAL.node)
                }
        case 240:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:1659
+               //line go.y:1660
                {
                        yyVAL.node = Nod(ODCLFIELD, nil, oldname(yyDollar[1].sym))
                }
        case 241:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:1663
+               //line go.y:1664
                {
                        yyVAL.node = Nod(ODCLFIELD, nil, oldname(yyDollar[2].sym))
                        Yyerror("cannot parenthesize embedded type")
                }
        case 242:
                yyDollar = yyS[yypt-4 : yypt+1]
-               //line go.y:1670
+               //line go.y:1671
                {
                        // without func keyword
                        yyDollar[2].list = checkarglist(yyDollar[2].list, 1)
@@ -2870,7 +2871,7 @@ yydefault:
                }
        case 244:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:1684
+               //line go.y:1685
                {
                        yyVAL.node = Nod(ONONAME, nil, nil)
                        yyVAL.node.Sym = yyDollar[1].sym
@@ -2878,7 +2879,7 @@ yydefault:
                }
        case 245:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:1690
+               //line go.y:1691
                {
                        yyVAL.node = Nod(ONONAME, nil, nil)
                        yyVAL.node.Sym = yyDollar[1].sym
@@ -2886,56 +2887,56 @@ yydefault:
                }
        case 247:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:1699
+               //line go.y:1700
                {
                        yyVAL.list = list1(yyDollar[1].node)
                }
        case 248:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:1703
+               //line go.y:1704
                {
                        yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
                }
        case 249:
                yyDollar = yyS[yypt-0 : yypt+1]
-               //line go.y:1708
+               //line go.y:1709
                {
                        yyVAL.list = nil
                }
        case 250:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:1712
+               //line go.y:1713
                {
                        yyVAL.list = yyDollar[1].list
                }
        case 251:
                yyDollar = yyS[yypt-0 : yypt+1]
-               //line go.y:1720
+               //line go.y:1721
                {
                        yyVAL.node = nil
                }
        case 253:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:1725
+               //line go.y:1726
                {
                        yyVAL.node = liststmt(yyDollar[1].list)
                }
        case 255:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:1730
+               //line go.y:1731
                {
                        yyVAL.node = nil
                }
        case 261:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:1741
+               //line go.y:1742
                {
                        yyDollar[1].node = Nod(OLABEL, yyDollar[1].node, nil)
                        yyDollar[1].node.Sym = dclstack // context, for goto restrictions
                }
        case 262:
                yyDollar = yyS[yypt-4 : yypt+1]
-               //line go.y:1746
+               //line go.y:1747
                {
                        var l *NodeList
 
@@ -2948,7 +2949,7 @@ yydefault:
                }
        case 263:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:1757
+               //line go.y:1758
                {
                        // will be converted to OFALL
                        yyVAL.node = Nod(OXFALL, nil, nil)
@@ -2956,38 +2957,38 @@ yydefault:
                }
        case 264:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:1763
+               //line go.y:1764
                {
                        yyVAL.node = Nod(OBREAK, yyDollar[2].node, nil)
                }
        case 265:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:1767
+               //line go.y:1768
                {
                        yyVAL.node = Nod(OCONTINUE, yyDollar[2].node, nil)
                }
        case 266:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:1771
+               //line go.y:1772
                {
                        yyVAL.node = Nod(OPROC, yyDollar[2].node, nil)
                }
        case 267:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:1775
+               //line go.y:1776
                {
                        yyVAL.node = Nod(ODEFER, yyDollar[2].node, nil)
                }
        case 268:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:1779
+               //line go.y:1780
                {
                        yyVAL.node = Nod(OGOTO, yyDollar[2].node, nil)
                        yyVAL.node.Sym = dclstack // context, for goto restrictions
                }
        case 269:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:1784
+               //line go.y:1785
                {
                        yyVAL.node = Nod(ORETURN, nil, nil)
                        yyVAL.node.List = yyDollar[2].list
@@ -3009,7 +3010,7 @@ yydefault:
                }
        case 270:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:1806
+               //line go.y:1807
                {
                        yyVAL.list = nil
                        if yyDollar[1].node != nil {
@@ -3018,7 +3019,7 @@ yydefault:
                }
        case 271:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:1813
+               //line go.y:1814
                {
                        yyVAL.list = yyDollar[1].list
                        if yyDollar[3].node != nil {
@@ -3027,163 +3028,163 @@ yydefault:
                }
        case 272:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:1822
+               //line go.y:1823
                {
                        yyVAL.list = list1(yyDollar[1].node)
                }
        case 273:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:1826
+               //line go.y:1827
                {
                        yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
                }
        case 274:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:1832
+               //line go.y:1833
                {
                        yyVAL.list = list1(yyDollar[1].node)
                }
        case 275:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:1836
+               //line go.y:1837
                {
                        yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
                }
        case 276:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:1842
+               //line go.y:1843
                {
                        yyVAL.list = list1(yyDollar[1].node)
                }
        case 277:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:1846
+               //line go.y:1847
                {
                        yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
                }
        case 278:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:1852
+               //line go.y:1853
                {
                        yyVAL.list = list1(yyDollar[1].node)
                }
        case 279:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:1856
+               //line go.y:1857
                {
                        yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
                }
        case 280:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:1865
+               //line go.y:1866
                {
                        yyVAL.list = list1(yyDollar[1].node)
                }
        case 281:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:1869
+               //line go.y:1870
                {
                        yyVAL.list = list1(yyDollar[1].node)
                }
        case 282:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:1873
+               //line go.y:1874
                {
                        yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
                }
        case 283:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:1877
+               //line go.y:1878
                {
                        yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
                }
        case 284:
                yyDollar = yyS[yypt-0 : yypt+1]
-               //line go.y:1882
+               //line go.y:1883
                {
                        yyVAL.list = nil
                }
        case 285:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:1886
+               //line go.y:1887
                {
                        yyVAL.list = yyDollar[1].list
                }
        case 290:
                yyDollar = yyS[yypt-0 : yypt+1]
-               //line go.y:1900
+               //line go.y:1901
                {
                        yyVAL.node = nil
                }
        case 292:
                yyDollar = yyS[yypt-0 : yypt+1]
-               //line go.y:1906
+               //line go.y:1907
                {
                        yyVAL.list = nil
                }
        case 294:
                yyDollar = yyS[yypt-0 : yypt+1]
-               //line go.y:1912
+               //line go.y:1913
                {
                        yyVAL.node = nil
                }
        case 296:
                yyDollar = yyS[yypt-0 : yypt+1]
-               //line go.y:1918
+               //line go.y:1919
                {
                        yyVAL.list = nil
                }
        case 298:
                yyDollar = yyS[yypt-0 : yypt+1]
-               //line go.y:1924
+               //line go.y:1925
                {
                        yyVAL.list = nil
                }
        case 300:
                yyDollar = yyS[yypt-0 : yypt+1]
-               //line go.y:1930
+               //line go.y:1931
                {
                        yyVAL.list = nil
                }
        case 302:
                yyDollar = yyS[yypt-0 : yypt+1]
-               //line go.y:1936
+               //line go.y:1937
                {
                        yyVAL.val.Ctype = CTxxx
                }
        case 304:
                yyDollar = yyS[yypt-4 : yypt+1]
-               //line go.y:1946
+               //line go.y:1947
                {
                        importimport(yyDollar[2].sym, yyDollar[3].val.U.Sval)
                }
        case 305:
                yyDollar = yyS[yypt-4 : yypt+1]
-               //line go.y:1950
+               //line go.y:1951
                {
                        importvar(yyDollar[2].sym, yyDollar[3].typ)
                }
        case 306:
                yyDollar = yyS[yypt-5 : yypt+1]
-               //line go.y:1954
+               //line go.y:1955
                {
                        importconst(yyDollar[2].sym, Types[TIDEAL], yyDollar[4].node)
                }
        case 307:
                yyDollar = yyS[yypt-6 : yypt+1]
-               //line go.y:1958
+               //line go.y:1959
                {
                        importconst(yyDollar[2].sym, yyDollar[3].typ, yyDollar[5].node)
                }
        case 308:
                yyDollar = yyS[yypt-4 : yypt+1]
-               //line go.y:1962
+               //line go.y:1963
                {
                        importtype(yyDollar[2].typ, yyDollar[3].typ)
                }
        case 309:
                yyDollar = yyS[yypt-4 : yypt+1]
-               //line go.y:1966
+               //line go.y:1967
                {
                        if yyDollar[2].node == nil {
                                dclcontext = PEXTERN // since we skip the funcbody below
@@ -3196,35 +3197,35 @@ yydefault:
                        importlist = list(importlist, yyDollar[2].node)
 
                        if Debug['E'] > 0 {
-                               print("import [%q] func %lN \n", importpkg.Path, yyDollar[2].node)
+                               fmt.Printf("import [%q] func %v \n", importpkg.Path, yyDollar[2].node)
                                if Debug['m'] > 2 && yyDollar[2].node.Func.Inl != nil {
-                                       print("inl body:%+H\n", yyDollar[2].node.Func.Inl)
+                                       fmt.Printf("inl body:%v\n", yyDollar[2].node.Func.Inl)
                                }
                        }
                }
        case 310:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:1987
+               //line go.y:1988
                {
                        yyVAL.sym = yyDollar[1].sym
                        structpkg = yyVAL.sym.Pkg
                }
        case 311:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:1994
+               //line go.y:1995
                {
                        yyVAL.typ = pkgtype(yyDollar[1].sym)
                        importsym(yyDollar[1].sym, OTYPE)
                }
        case 317:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:2014
+               //line go.y:2015
                {
                        yyVAL.typ = pkgtype(yyDollar[1].sym)
                }
        case 318:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:2018
+               //line go.y:2019
                {
                        // predefined name like uint8
                        yyDollar[1].sym = Pkglookup(yyDollar[1].sym.Name, builtinpkg)
@@ -3237,43 +3238,43 @@ yydefault:
                }
        case 319:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:2029
+               //line go.y:2030
                {
                        yyVAL.typ = aindex(nil, yyDollar[3].typ)
                }
        case 320:
                yyDollar = yyS[yypt-4 : yypt+1]
-               //line go.y:2033
+               //line go.y:2034
                {
                        yyVAL.typ = aindex(nodlit(yyDollar[2].val), yyDollar[4].typ)
                }
        case 321:
                yyDollar = yyS[yypt-5 : yypt+1]
-               //line go.y:2037
+               //line go.y:2038
                {
                        yyVAL.typ = maptype(yyDollar[3].typ, yyDollar[5].typ)
                }
        case 322:
                yyDollar = yyS[yypt-4 : yypt+1]
-               //line go.y:2041
+               //line go.y:2042
                {
                        yyVAL.typ = tostruct(yyDollar[3].list)
                }
        case 323:
                yyDollar = yyS[yypt-4 : yypt+1]
-               //line go.y:2045
+               //line go.y:2046
                {
                        yyVAL.typ = tointerface(yyDollar[3].list)
                }
        case 324:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:2049
+               //line go.y:2050
                {
                        yyVAL.typ = Ptrto(yyDollar[2].typ)
                }
        case 325:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:2053
+               //line go.y:2054
                {
                        yyVAL.typ = typ(TCHAN)
                        yyVAL.typ.Type = yyDollar[2].typ
@@ -3281,7 +3282,7 @@ yydefault:
                }
        case 326:
                yyDollar = yyS[yypt-4 : yypt+1]
-               //line go.y:2059
+               //line go.y:2060
                {
                        yyVAL.typ = typ(TCHAN)
                        yyVAL.typ.Type = yyDollar[3].typ
@@ -3289,7 +3290,7 @@ yydefault:
                }
        case 327:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:2065
+               //line go.y:2066
                {
                        yyVAL.typ = typ(TCHAN)
                        yyVAL.typ.Type = yyDollar[3].typ
@@ -3297,7 +3298,7 @@ yydefault:
                }
        case 328:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:2073
+               //line go.y:2074
                {
                        yyVAL.typ = typ(TCHAN)
                        yyVAL.typ.Type = yyDollar[3].typ
@@ -3305,13 +3306,13 @@ yydefault:
                }
        case 329:
                yyDollar = yyS[yypt-5 : yypt+1]
-               //line go.y:2081
+               //line go.y:2082
                {
                        yyVAL.typ = functype(nil, yyDollar[3].list, yyDollar[5].list)
                }
        case 330:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:2087
+               //line go.y:2088
                {
                        yyVAL.node = Nod(ODCLFIELD, nil, typenod(yyDollar[2].typ))
                        if yyDollar[1].sym != nil {
@@ -3321,7 +3322,7 @@ yydefault:
                }
        case 331:
                yyDollar = yyS[yypt-4 : yypt+1]
-               //line go.y:2095
+               //line go.y:2096
                {
                        var t *Type
 
@@ -3338,7 +3339,7 @@ yydefault:
                }
        case 332:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:2112
+               //line go.y:2113
                {
                        var s *Sym
                        var p *Pkg
@@ -3362,43 +3363,43 @@ yydefault:
                }
        case 333:
                yyDollar = yyS[yypt-5 : yypt+1]
-               //line go.y:2136
+               //line go.y:2137
                {
                        yyVAL.node = Nod(ODCLFIELD, newname(yyDollar[1].sym), typenod(functype(fakethis(), yyDollar[3].list, yyDollar[5].list)))
                }
        case 334:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:2140
+               //line go.y:2141
                {
                        yyVAL.node = Nod(ODCLFIELD, nil, typenod(yyDollar[1].typ))
                }
        case 335:
                yyDollar = yyS[yypt-0 : yypt+1]
-               //line go.y:2145
+               //line go.y:2146
                {
                        yyVAL.list = nil
                }
        case 337:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:2152
+               //line go.y:2153
                {
                        yyVAL.list = yyDollar[2].list
                }
        case 338:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:2156
+               //line go.y:2157
                {
                        yyVAL.list = list1(Nod(ODCLFIELD, nil, typenod(yyDollar[1].typ)))
                }
        case 339:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:2166
+               //line go.y:2167
                {
                        yyVAL.node = nodlit(yyDollar[1].val)
                }
        case 340:
                yyDollar = yyS[yypt-2 : yypt+1]
-               //line go.y:2170
+               //line go.y:2171
                {
                        yyVAL.node = nodlit(yyDollar[2].val)
                        switch yyVAL.node.Val.Ctype {
@@ -3418,7 +3419,7 @@ yydefault:
                }
        case 341:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:2188
+               //line go.y:2189
                {
                        yyVAL.node = oldname(Pkglookup(yyDollar[1].sym.Name, builtinpkg))
                        if yyVAL.node.Op != OLITERAL {
@@ -3427,7 +3428,7 @@ yydefault:
                }
        case 343:
                yyDollar = yyS[yypt-5 : yypt+1]
-               //line go.y:2198
+               //line go.y:2199
                {
                        if yyDollar[2].node.Val.Ctype == CTRUNE && yyDollar[4].node.Val.Ctype == CTINT {
                                yyVAL.node = yyDollar[2].node
@@ -3440,37 +3441,37 @@ yydefault:
                }
        case 346:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:2214
+               //line go.y:2215
                {
                        yyVAL.list = list1(yyDollar[1].node)
                }
        case 347:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:2218
+               //line go.y:2219
                {
                        yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
                }
        case 348:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:2224
+               //line go.y:2225
                {
                        yyVAL.list = list1(yyDollar[1].node)
                }
        case 349:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:2228
+               //line go.y:2229
                {
                        yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
                }
        case 350:
                yyDollar = yyS[yypt-1 : yypt+1]
-               //line go.y:2234
+               //line go.y:2235
                {
                        yyVAL.list = list1(yyDollar[1].node)
                }
        case 351:
                yyDollar = yyS[yypt-3 : yypt+1]
-               //line go.y:2238
+               //line go.y:2239
                {
                        yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
                }
index e4a5e5c212ebe81a21a71bf54453ed86afaed91a..f105838a7f8cc8fb1cf522c68ef56e79a6ac1bd4 100644 (file)
@@ -3,7 +3,7 @@ state 0
        $accept: .file $end 
        $$4: .    (4)
 
-       .  reduce 4 (src line 148)
+       .  reduce 4 (src line 149)
 
        file  goto 1
        loadsys  goto 2
@@ -21,7 +21,7 @@ state 2
        package: .    (2)
 
        LPACKAGE  shift 5
-       .  reduce 2 (src line 131)
+       .  reduce 2 (src line 132)
 
        package  goto 4
 
@@ -37,7 +37,7 @@ state 4
        file:  loadsys package.imports xdcl_list 
        imports: .    (6)
 
-       .  reduce 6 (src line 165)
+       .  reduce 6 (src line 166)
 
        imports  goto 8
 
@@ -56,7 +56,7 @@ state 6
        loadsys:  $$4 import_package.import_there 
        $$21: .    (21)
 
-       .  reduce 21 (src line 272)
+       .  reduce 21 (src line 273)
 
        import_there  goto 14
        $$21  goto 15
@@ -74,7 +74,7 @@ state 8
        xdcl_list: .    (218)
 
        LIMPORT  shift 19
-       .  reduce 218 (src line 1507)
+       .  reduce 218 (src line 1508)
 
        xdcl_list  goto 17
        import  goto 18
@@ -89,19 +89,19 @@ state 9
 state 10
        sym:  LNAME.    (157)
 
-       .  reduce 157 (src line 1113)
+       .  reduce 157 (src line 1114)
 
 
 state 11
        sym:  hidden_importsym.    (158)
 
-       .  reduce 158 (src line 1122)
+       .  reduce 158 (src line 1123)
 
 
 state 12
        sym:  '?'.    (159)
 
-       .  reduce 159 (src line 1123)
+       .  reduce 159 (src line 1124)
 
 
 state 13
@@ -115,14 +115,14 @@ state 13
 state 14
        loadsys:  $$4 import_package import_there.    (5)
 
-       .  reduce 5 (src line 159)
+       .  reduce 5 (src line 160)
 
 
 state 15
        import_there:  $$21.hidden_import_list '$' '$' 
        hidden_import_list: .    (344)
 
-       .  reduce 344 (src line 2209)
+       .  reduce 344 (src line 2210)
 
        hidden_import_list  goto 22
 
@@ -131,7 +131,7 @@ state 16
        import_safety: .    (19)
 
        LNAME  shift 24
-       .  reduce 19 (src line 264)
+       .  reduce 19 (src line 265)
 
        import_safety  goto 23
 
@@ -140,7 +140,7 @@ state 17
        xdcl_list:  xdcl_list.xdcl ';' 
        xdcl: .    (23)
 
-       $end  reduce 1 (src line 122)
+       $end  reduce 1 (src line 123)
        error  shift 29
        LLITERAL  shift 68
        LBREAK  shift 41
@@ -170,7 +170,7 @@ state 17
        '*'  shift 58
        '&'  shift 59
        '('  shift 67
-       ';'  reduce 23 (src line 285)
+       ';'  reduce 23 (src line 286)
        '!'  shift 62
        '~'  shift 63
        '['  shift 77
@@ -236,7 +236,7 @@ state 19
 state 20
        package:  LPACKAGE sym ';'.    (3)
 
-       .  reduce 3 (src line 138)
+       .  reduce 3 (src line 139)
 
 
 state 21
@@ -271,7 +271,7 @@ state 23
 state 24
        import_safety:  LNAME.    (20)
 
-       .  reduce 20 (src line 265)
+       .  reduce 20 (src line 266)
 
 
 state 25
@@ -284,25 +284,25 @@ state 25
 state 26
        xdcl:  common_dcl.    (24)
 
-       .  reduce 24 (src line 290)
+       .  reduce 24 (src line 291)
 
 
 state 27
        xdcl:  xfndcl.    (25)
 
-       .  reduce 25 (src line 291)
+       .  reduce 25 (src line 292)
 
 
 state 28
        xdcl:  non_dcl_stmt.    (26)
 
-       .  reduce 26 (src line 295)
+       .  reduce 26 (src line 296)
 
 
 state 29
        xdcl:  error.    (27)
 
-       .  reduce 27 (src line 300)
+       .  reduce 27 (src line 301)
 
 
 state 30
@@ -373,31 +373,31 @@ state 33
 state 34
        non_dcl_stmt:  simple_stmt.    (256)
 
-       .  reduce 256 (src line 1734)
+       .  reduce 256 (src line 1735)
 
 
 state 35
        non_dcl_stmt:  for_stmt.    (257)
 
-       .  reduce 257 (src line 1736)
+       .  reduce 257 (src line 1737)
 
 
 state 36
        non_dcl_stmt:  switch_stmt.    (258)
 
-       .  reduce 258 (src line 1737)
+       .  reduce 258 (src line 1738)
 
 
 state 37
        non_dcl_stmt:  select_stmt.    (259)
 
-       .  reduce 259 (src line 1738)
+       .  reduce 259 (src line 1739)
 
 
 state 38
        non_dcl_stmt:  if_stmt.    (260)
 
-       .  reduce 260 (src line 1739)
+       .  reduce 260 (src line 1740)
 
 
 state 39
@@ -410,7 +410,7 @@ state 39
 state 40
        non_dcl_stmt:  LFALL.    (263)
 
-       .  reduce 263 (src line 1756)
+       .  reduce 263 (src line 1757)
 
 
 state 41
@@ -420,7 +420,7 @@ state 41
        LNAME  shift 10
        '?'  shift 12
        '@'  shift 13
-       .  reduce 155 (src line 1107)
+       .  reduce 155 (src line 1108)
 
        sym  goto 119
        new_name  goto 118
@@ -434,7 +434,7 @@ state 42
        LNAME  shift 10
        '?'  shift 12
        '@'  shift 13
-       .  reduce 155 (src line 1107)
+       .  reduce 155 (src line 1108)
 
        sym  goto 119
        new_name  goto 118
@@ -538,7 +538,7 @@ state 46
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 292 (src line 1905)
+       .  reduce 292 (src line 1906)
 
        sym  goto 123
        expr  goto 129
@@ -562,7 +562,7 @@ state 46
 state 47
        lconst:  LCONST.    (38)
 
-       .  reduce 38 (src line 354)
+       .  reduce 38 (src line 355)
 
 
 state 48
@@ -593,7 +593,7 @@ state 48
        expr_list:  expr.    (276)
 
        LASOP  shift 130
-       LCOLAS  reduce 276 (src line 1840)
+       LCOLAS  reduce 276 (src line 1841)
        LANDAND  shift 134
        LANDNOT  shift 149
        LCOMM  shift 152
@@ -616,9 +616,9 @@ state 48
        '/'  shift 146
        '%'  shift 147
        '&'  shift 148
-       '='  reduce 276 (src line 1840)
-       ','  reduce 276 (src line 1840)
-       .  reduce 49 (src line 410)
+       '='  reduce 276 (src line 1841)
+       ','  reduce 276 (src line 1841)
+       .  reduce 49 (src line 411)
 
 
 state 49
@@ -636,7 +636,7 @@ state 50
        for_stmt:  LFOR.$$74 for_body 
        $$74: .    (74)
 
-       .  reduce 74 (src line 659)
+       .  reduce 74 (src line 660)
 
        $$74  goto 156
 
@@ -644,7 +644,7 @@ state 51
        switch_stmt:  LSWITCH.$$88 if_header $$89 LBODY caseblock_list '}' 
        $$88: .    (88)
 
-       .  reduce 88 (src line 754)
+       .  reduce 88 (src line 755)
 
        $$88  goto 157
 
@@ -652,7 +652,7 @@ state 52
        select_stmt:  LSELECT.$$91 LBODY caseblock_list '}' 
        $$91: .    (91)
 
-       .  reduce 91 (src line 777)
+       .  reduce 91 (src line 778)
 
        $$91  goto 158
 
@@ -660,28 +660,28 @@ state 53
        if_stmt:  LIF.$$78 if_header $$79 loop_body $$80 elseif_list else 
        $$78: .    (78)
 
-       .  reduce 78 (src line 688)
+       .  reduce 78 (src line 689)
 
        $$78  goto 159
 
 state 54
        labelname:  new_name.    (163)
 
-       .  reduce 163 (src line 1167)
+       .  reduce 163 (src line 1168)
 
 
 state 55
        expr:  uexpr.    (93)
 
-       .  reduce 93 (src line 793)
+       .  reduce 93 (src line 794)
 
 
 state 56
        new_name:  sym.    (153)
        name:  sym.    (162)
 
-       ':'  reduce 153 (src line 1091)
-       .  reduce 162 (src line 1158)
+       ':'  reduce 153 (src line 1092)
+       .  reduce 162 (src line 1159)
 
 
 state 57
@@ -699,7 +699,7 @@ state 57
        '('  shift 160
        '.'  shift 161
        '['  shift 162
-       .  reduce 114 (src line 877)
+       .  reduce 114 (src line 878)
 
 
 state 58
@@ -1027,7 +1027,7 @@ state 66
        pexpr:  pexpr_no_paren.    (146)
 
        '{'  shift 171
-       .  reduce 146 (src line 1054)
+       .  reduce 146 (src line 1055)
 
 
 state 67
@@ -1078,19 +1078,19 @@ state 67
 state 68
        pexpr_no_paren:  LLITERAL.    (126)
 
-       .  reduce 126 (src line 941)
+       .  reduce 126 (src line 942)
 
 
 state 69
        pexpr_no_paren:  name.    (127)
 
-       .  reduce 127 (src line 946)
+       .  reduce 127 (src line 947)
 
 
 state 70
        pexpr_no_paren:  pseudocall.    (134)
 
-       .  reduce 134 (src line 984)
+       .  reduce 134 (src line 985)
 
 
 state 71
@@ -1112,23 +1112,23 @@ state 72
 state 73
        pexpr_no_paren:  fnliteral.    (139)
 
-       .  reduce 139 (src line 1011)
+       .  reduce 139 (src line 1012)
 
 
 state 74
        convtype:  fntype.    (181)
        fnlitdcl:  fntype.    (215)
 
-       '('  reduce 181 (src line 1220)
-       .  reduce 215 (src line 1484)
+       '('  reduce 181 (src line 1221)
+       .  reduce 215 (src line 1485)
 
 
 state 75
        convtype:  othertype.    (182)
        comptype:  othertype.    (183)
 
-       '('  reduce 182 (src line 1222)
-       .  reduce 183 (src line 1224)
+       '('  reduce 182 (src line 1223)
+       .  reduce 183 (src line 1225)
 
 
 state 76
@@ -1167,7 +1167,7 @@ state 77
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 290 (src line 1899)
+       .  reduce 290 (src line 1900)
 
        sym  goto 123
        expr  goto 188
@@ -1226,13 +1226,13 @@ state 79
 state 80
        othertype:  structtype.    (196)
 
-       .  reduce 196 (src line 1272)
+       .  reduce 196 (src line 1273)
 
 
 state 81
        othertype:  interfacetype.    (197)
 
-       .  reduce 197 (src line 1273)
+       .  reduce 197 (src line 1274)
 
 
 state 82
@@ -1258,13 +1258,13 @@ state 83
 state 84
        imports:  imports import ';'.    (7)
 
-       .  reduce 7 (src line 166)
+       .  reduce 7 (src line 167)
 
 
 state 85
        import:  LIMPORT import_stmt.    (8)
 
-       .  reduce 8 (src line 168)
+       .  reduce 8 (src line 169)
 
 
 state 86
@@ -1291,7 +1291,7 @@ state 87
        $$21: .    (21)
 
        LPACKAGE  shift 7
-       .  reduce 21 (src line 272)
+       .  reduce 21 (src line 273)
 
        import_package  goto 204
        import_there  goto 205
@@ -1300,7 +1300,7 @@ state 87
 state 88
        import_here:  LLITERAL.    (15)
 
-       .  reduce 15 (src line 224)
+       .  reduce 15 (src line 225)
 
 
 state 89
@@ -1336,7 +1336,7 @@ state 92
 state 93
        hidden_import_list:  hidden_import_list hidden_import.    (345)
 
-       .  reduce 345 (src line 2210)
+       .  reduce 345 (src line 2211)
 
 
 state 94
@@ -1389,19 +1389,19 @@ state 98
 state 99
        import_package:  LPACKAGE LNAME import_safety ';'.    (18)
 
-       .  reduce 18 (src line 247)
+       .  reduce 18 (src line 248)
 
 
 state 100
        xdcl_list:  xdcl_list xdcl ';'.    (219)
 
-       .  reduce 219 (src line 1511)
+       .  reduce 219 (src line 1512)
 
 
 state 101
        common_dcl:  LVAR vardcl.    (28)
 
-       .  reduce 28 (src line 305)
+       .  reduce 28 (src line 306)
 
 
 state 102
@@ -1458,19 +1458,19 @@ state 103
 state 104
        dcl_name_list:  dcl_name.    (274)
 
-       .  reduce 274 (src line 1830)
+       .  reduce 274 (src line 1831)
 
 
 state 105
        dcl_name:  sym.    (154)
 
-       .  reduce 154 (src line 1101)
+       .  reduce 154 (src line 1102)
 
 
 state 106
        common_dcl:  lconst constdcl.    (31)
 
-       .  reduce 31 (src line 318)
+       .  reduce 31 (src line 319)
 
 
 state 107
@@ -1526,7 +1526,7 @@ state 108
 state 109
        common_dcl:  LTYPE typedcl.    (35)
 
-       .  reduce 35 (src line 341)
+       .  reduce 35 (src line 342)
 
 
 state 110
@@ -1577,7 +1577,7 @@ state 111
 state 112
        typedclname:  sym.    (47)
 
-       .  reduce 47 (src line 395)
+       .  reduce 47 (src line 396)
 
 
 state 113
@@ -1585,7 +1585,7 @@ state 113
        fnbody: .    (210)
 
        '{'  shift 242
-       .  reduce 210 (src line 1457)
+       .  reduce 210 (src line 1458)
 
        fnbody  goto 241
 
@@ -1607,7 +1607,7 @@ state 114
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 249 (src line 1707)
+       .  reduce 249 (src line 1708)
 
        sym  goto 247
        ntype  goto 249
@@ -1637,43 +1637,43 @@ state 116
        non_dcl_stmt:  labelname ':'.$$261 stmt 
        $$261: .    (261)
 
-       .  reduce 261 (src line 1740)
+       .  reduce 261 (src line 1741)
 
        $$261  goto 252
 
 state 117
        non_dcl_stmt:  LBREAK onew_name.    (264)
 
-       .  reduce 264 (src line 1762)
+       .  reduce 264 (src line 1763)
 
 
 state 118
        onew_name:  new_name.    (156)
 
-       .  reduce 156 (src line 1111)
+       .  reduce 156 (src line 1112)
 
 
 state 119
        new_name:  sym.    (153)
 
-       .  reduce 153 (src line 1091)
+       .  reduce 153 (src line 1092)
 
 
 state 120
        non_dcl_stmt:  LCONTINUE onew_name.    (265)
 
-       .  reduce 265 (src line 1766)
+       .  reduce 265 (src line 1767)
 
 
 state 121
        pexpr_no_paren:  pseudocall.    (134)
        non_dcl_stmt:  LGO pseudocall.    (266)
 
-       '('  reduce 134 (src line 984)
-       '.'  reduce 134 (src line 984)
-       '{'  reduce 134 (src line 984)
-       '['  reduce 134 (src line 984)
-       .  reduce 266 (src line 1770)
+       '('  reduce 134 (src line 985)
+       '.'  reduce 134 (src line 985)
+       '{'  reduce 134 (src line 985)
+       '['  reduce 134 (src line 985)
+       .  reduce 266 (src line 1771)
 
 
 state 122
@@ -1696,7 +1696,7 @@ state 122
 state 123
        name:  sym.    (162)
 
-       .  reduce 162 (src line 1158)
+       .  reduce 162 (src line 1159)
 
 
 state 124
@@ -1710,23 +1710,23 @@ state 125
        pexpr_no_paren:  pseudocall.    (134)
        non_dcl_stmt:  LDEFER pseudocall.    (267)
 
-       '('  reduce 134 (src line 984)
-       '.'  reduce 134 (src line 984)
-       '{'  reduce 134 (src line 984)
-       '['  reduce 134 (src line 984)
-       .  reduce 267 (src line 1774)
+       '('  reduce 134 (src line 985)
+       '.'  reduce 134 (src line 985)
+       '{'  reduce 134 (src line 985)
+       '['  reduce 134 (src line 985)
+       .  reduce 267 (src line 1775)
 
 
 state 126
        non_dcl_stmt:  LGOTO new_name.    (268)
 
-       .  reduce 268 (src line 1778)
+       .  reduce 268 (src line 1779)
 
 
 state 127
        non_dcl_stmt:  LRETURN oexpr_list.    (269)
 
-       .  reduce 269 (src line 1783)
+       .  reduce 269 (src line 1784)
 
 
 state 128
@@ -1734,7 +1734,7 @@ state 128
        oexpr_list:  expr_list.    (293)
 
        ','  shift 155
-       .  reduce 293 (src line 1909)
+       .  reduce 293 (src line 1910)
 
 
 state 129
@@ -1780,7 +1780,7 @@ state 129
        '/'  shift 146
        '%'  shift 147
        '&'  shift 148
-       .  reduce 276 (src line 1840)
+       .  reduce 276 (src line 1841)
 
 
 state 130
@@ -1827,13 +1827,13 @@ state 130
 state 131
        simple_stmt:  expr LINC.    (53)
 
-       .  reduce 53 (src line 460)
+       .  reduce 53 (src line 461)
 
 
 state 132
        simple_stmt:  expr LDEC.    (54)
 
-       .  reduce 54 (src line 466)
+       .  reduce 54 (src line 467)
 
 
 state 133
@@ -2805,7 +2805,7 @@ state 156
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 294 (src line 1911)
+       .  reduce 294 (src line 1912)
 
        sym  goto 123
        expr  goto 48
@@ -2853,7 +2853,7 @@ state 157
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 294 (src line 1911)
+       .  reduce 294 (src line 1912)
 
        sym  goto 123
        expr  goto 48
@@ -2906,7 +2906,7 @@ state 159
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 294 (src line 1911)
+       .  reduce 294 (src line 1912)
 
        sym  goto 123
        expr  goto 48
@@ -3016,7 +3016,7 @@ state 162
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 290 (src line 1899)
+       .  reduce 290 (src line 1900)
 
        sym  goto 123
        expr  goto 294
@@ -3039,56 +3039,56 @@ state 162
 state 163
        uexpr:  '*' uexpr.    (115)
 
-       .  reduce 115 (src line 879)
+       .  reduce 115 (src line 880)
 
 
 state 164
        uexpr:  '&' uexpr.    (116)
 
-       .  reduce 116 (src line 883)
+       .  reduce 116 (src line 884)
 
 
 state 165
        uexpr:  '+' uexpr.    (117)
 
-       .  reduce 117 (src line 894)
+       .  reduce 117 (src line 895)
 
 
 state 166
        uexpr:  '-' uexpr.    (118)
 
-       .  reduce 118 (src line 898)
+       .  reduce 118 (src line 899)
 
 
 state 167
        uexpr:  '!' uexpr.    (119)
 
-       .  reduce 119 (src line 902)
+       .  reduce 119 (src line 903)
 
 
 state 168
        uexpr:  '~' uexpr.    (120)
 
-       .  reduce 120 (src line 906)
+       .  reduce 120 (src line 907)
 
 
 state 169
        uexpr:  '^' uexpr.    (121)
 
-       .  reduce 121 (src line 911)
+       .  reduce 121 (src line 912)
 
 
 state 170
        uexpr:  LCOMM uexpr.    (122)
 
-       .  reduce 122 (src line 915)
+       .  reduce 122 (src line 916)
 
 
 state 171
        pexpr_no_paren:  pexpr_no_paren '{'.start_complit braced_keyval_list '}' 
        start_complit: .    (140)
 
-       .  reduce 140 (src line 1013)
+       .  reduce 140 (src line 1014)
 
        start_complit  goto 296
 
@@ -3143,19 +3143,19 @@ state 173
        '/'  shift 146
        '%'  shift 147
        '&'  shift 148
-       .  reduce 148 (src line 1069)
+       .  reduce 148 (src line 1070)
 
 
 state 174
        expr_or_type:  non_expr_type.    (149)
 
-       .  reduce 149 (src line 1071)
+       .  reduce 149 (src line 1072)
 
 
 state 175
        non_expr_type:  recvchantype.    (172)
 
-       .  reduce 172 (src line 1201)
+       .  reduce 172 (src line 1202)
 
 
 state 176
@@ -3163,11 +3163,11 @@ state 176
        convtype:  fntype.    (181)
        fnlitdcl:  fntype.    (215)
 
-       error  reduce 215 (src line 1484)
-       LBODY  reduce 215 (src line 1484)
-       '('  reduce 181 (src line 1220)
-       '{'  reduce 215 (src line 1484)
-       .  reduce 173 (src line 1203)
+       error  reduce 215 (src line 1485)
+       LBODY  reduce 215 (src line 1485)
+       '('  reduce 181 (src line 1221)
+       '{'  reduce 215 (src line 1485)
+       .  reduce 173 (src line 1204)
 
 
 state 177
@@ -3175,10 +3175,10 @@ state 177
        convtype:  othertype.    (182)
        comptype:  othertype.    (183)
 
-       LBODY  reduce 183 (src line 1224)
-       '('  reduce 182 (src line 1222)
-       '{'  reduce 183 (src line 1224)
-       .  reduce 174 (src line 1204)
+       LBODY  reduce 183 (src line 1225)
+       '('  reduce 182 (src line 1223)
+       '{'  reduce 183 (src line 1225)
+       .  reduce 174 (src line 1205)
 
 
 state 178
@@ -3310,20 +3310,20 @@ state 181
        pexpr_no_paren:  comptype lbrace.start_complit braced_keyval_list '}' 
        start_complit: .    (140)
 
-       .  reduce 140 (src line 1013)
+       .  reduce 140 (src line 1014)
 
        start_complit  goto 301
 
 state 182
        lbrace:  LBODY.    (151)
 
-       .  reduce 151 (src line 1076)
+       .  reduce 151 (src line 1077)
 
 
 state 183
        lbrace:  '{'.    (152)
 
-       .  reduce 152 (src line 1081)
+       .  reduce 152 (src line 1082)
 
 
 state 184
@@ -3359,9 +3359,9 @@ state 184
        '*'  shift 58
        '&'  shift 59
        '('  shift 67
-       ';'  reduce 251 (src line 1719)
+       ';'  reduce 251 (src line 1720)
        '{'  shift 308
-       '}'  reduce 251 (src line 1719)
+       '}'  reduce 251 (src line 1720)
        '!'  shift 62
        '~'  shift 63
        '['  shift 77
@@ -3403,7 +3403,7 @@ state 184
 state 185
        fnliteral:  fnlitdcl error.    (217)
 
-       .  reduce 217 (src line 1496)
+       .  reduce 217 (src line 1497)
 
 
 state 186
@@ -3463,13 +3463,13 @@ state 188
        '/'  shift 146
        '%'  shift 147
        '&'  shift 148
-       .  reduce 291 (src line 1903)
+       .  reduce 291 (src line 1904)
 
 
 state 189
        othertype:  LCHAN non_recvchantype.    (193)
 
-       .  reduce 193 (src line 1258)
+       .  reduce 193 (src line 1259)
 
 
 state 190
@@ -3504,25 +3504,25 @@ state 190
 state 191
        non_recvchantype:  fntype.    (176)
 
-       .  reduce 176 (src line 1210)
+       .  reduce 176 (src line 1211)
 
 
 state 192
        non_recvchantype:  othertype.    (177)
 
-       .  reduce 177 (src line 1212)
+       .  reduce 177 (src line 1213)
 
 
 state 193
        non_recvchantype:  ptrtype.    (178)
 
-       .  reduce 178 (src line 1213)
+       .  reduce 178 (src line 1214)
 
 
 state 194
        non_recvchantype:  dotname.    (179)
 
-       .  reduce 179 (src line 1214)
+       .  reduce 179 (src line 1215)
 
 
 state 195
@@ -3588,7 +3588,7 @@ state 197
        dotname:  name.'.' sym 
 
        '.'  shift 314
-       .  reduce 189 (src line 1234)
+       .  reduce 189 (src line 1235)
 
 
 state 198
@@ -3665,27 +3665,27 @@ state 201
        osemi: .    (286)
 
        ';'  shift 333
-       .  reduce 286 (src line 1893)
+       .  reduce 286 (src line 1894)
 
        osemi  goto 332
 
 state 202
        import:  LIMPORT '(' ')'.    (10)
 
-       .  reduce 10 (src line 171)
+       .  reduce 10 (src line 172)
 
 
 state 203
        import_stmt_list:  import_stmt.    (13)
 
-       .  reduce 13 (src line 220)
+       .  reduce 13 (src line 221)
 
 
 state 204
        import_stmt:  import_here import_package.import_there 
        $$21: .    (21)
 
-       .  reduce 21 (src line 272)
+       .  reduce 21 (src line 273)
 
        import_there  goto 334
        $$21  goto 15
@@ -3693,37 +3693,37 @@ state 204
 state 205
        import_stmt:  import_here import_there.    (12)
 
-       .  reduce 12 (src line 209)
+       .  reduce 12 (src line 210)
 
 
 state 206
        import_here:  sym LLITERAL.    (16)
 
-       .  reduce 16 (src line 232)
+       .  reduce 16 (src line 233)
 
 
 state 207
        import_here:  '.' LLITERAL.    (17)
 
-       .  reduce 17 (src line 239)
+       .  reduce 17 (src line 240)
 
 
 state 208
        hidden_importsym:  '@' LLITERAL '.' LNAME.    (160)
 
-       .  reduce 160 (src line 1128)
+       .  reduce 160 (src line 1129)
 
 
 state 209
        hidden_importsym:  '@' LLITERAL '.' '?'.    (161)
 
-       .  reduce 161 (src line 1143)
+       .  reduce 161 (src line 1144)
 
 
 state 210
        import_there:  $$21 hidden_import_list '$' '$'.    (22)
 
-       .  reduce 22 (src line 276)
+       .  reduce 22 (src line 277)
 
 
 state 211
@@ -3757,7 +3757,7 @@ state 212
 state 213
        hidden_pkg_importsym:  hidden_importsym.    (310)
 
-       .  reduce 310 (src line 1985)
+       .  reduce 310 (src line 1986)
 
 
 state 214
@@ -3807,7 +3807,7 @@ state 215
 state 216
        hidden_pkgtype:  hidden_pkg_importsym.    (311)
 
-       .  reduce 311 (src line 1992)
+       .  reduce 311 (src line 1993)
 
 
 state 217
@@ -3815,7 +3815,7 @@ state 217
        fnbody: .    (210)
 
        '{'  shift 242
-       .  reduce 210 (src line 1457)
+       .  reduce 210 (src line 1458)
 
        fnbody  goto 353
 
@@ -3845,20 +3845,20 @@ state 220
        osemi: .    (286)
 
        ';'  shift 359
-       .  reduce 286 (src line 1893)
+       .  reduce 286 (src line 1894)
 
        osemi  goto 358
 
 state 221
        common_dcl:  LVAR '(' ')'.    (30)
 
-       .  reduce 30 (src line 314)
+       .  reduce 30 (src line 315)
 
 
 state 222
        vardcl_list:  vardcl.    (220)
 
-       .  reduce 220 (src line 1523)
+       .  reduce 220 (src line 1524)
 
 
 state 223
@@ -3866,7 +3866,7 @@ state 223
        vardcl:  dcl_name_list ntype.'=' expr_list 
 
        '='  shift 360
-       .  reduce 39 (src line 360)
+       .  reduce 39 (src line 361)
 
 
 state 224
@@ -3926,31 +3926,31 @@ state 225
 state 226
        ntype:  recvchantype.    (166)
 
-       .  reduce 166 (src line 1190)
+       .  reduce 166 (src line 1191)
 
 
 state 227
        ntype:  fntype.    (167)
 
-       .  reduce 167 (src line 1192)
+       .  reduce 167 (src line 1193)
 
 
 state 228
        ntype:  othertype.    (168)
 
-       .  reduce 168 (src line 1193)
+       .  reduce 168 (src line 1194)
 
 
 state 229
        ntype:  ptrtype.    (169)
 
-       .  reduce 169 (src line 1194)
+       .  reduce 169 (src line 1195)
 
 
 state 230
        ntype:  dotname.    (170)
 
-       .  reduce 170 (src line 1195)
+       .  reduce 170 (src line 1196)
 
 
 state 231
@@ -3995,14 +3995,14 @@ state 233
        osemi: .    (286)
 
        ';'  shift 366
-       .  reduce 286 (src line 1893)
+       .  reduce 286 (src line 1894)
 
        osemi  goto 365
 
 state 234
        common_dcl:  lconst '(' ')'.    (34)
 
-       .  reduce 34 (src line 336)
+       .  reduce 34 (src line 337)
 
 
 state 235
@@ -4060,32 +4060,32 @@ state 237
        osemi: .    (286)
 
        ';'  shift 370
-       .  reduce 286 (src line 1893)
+       .  reduce 286 (src line 1894)
 
        osemi  goto 369
 
 state 238
        common_dcl:  LTYPE '(' ')'.    (37)
 
-       .  reduce 37 (src line 349)
+       .  reduce 37 (src line 350)
 
 
 state 239
        typedcl_list:  typedcl.    (224)
 
-       .  reduce 224 (src line 1537)
+       .  reduce 224 (src line 1538)
 
 
 state 240
        typedcl:  typedclname ntype.    (48)
 
-       .  reduce 48 (src line 404)
+       .  reduce 48 (src line 405)
 
 
 state 241
        xfndcl:  LFUNC fndcl fnbody.    (204)
 
-       .  reduce 204 (src line 1318)
+       .  reduce 204 (src line 1319)
 
 
 state 242
@@ -4121,9 +4121,9 @@ state 242
        '*'  shift 58
        '&'  shift 59
        '('  shift 67
-       ';'  reduce 251 (src line 1719)
+       ';'  reduce 251 (src line 1720)
        '{'  shift 308
-       '}'  reduce 251 (src line 1719)
+       '}'  reduce 251 (src line 1720)
        '!'  shift 62
        '~'  shift 63
        '['  shift 77
@@ -4176,20 +4176,20 @@ state 244
        ocomma: .    (288)
 
        ','  shift 373
-       .  reduce 288 (src line 1896)
+       .  reduce 288 (src line 1897)
 
        ocomma  goto 374
 
 state 245
        arg_type_list:  arg_type.    (247)
 
-       .  reduce 247 (src line 1697)
+       .  reduce 247 (src line 1698)
 
 
 state 246
        arg_type:  name_or_type.    (243)
 
-       .  reduce 243 (src line 1681)
+       .  reduce 243 (src line 1682)
 
 
 state 247
@@ -4210,7 +4210,7 @@ state 247
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 162 (src line 1158)
+       .  reduce 162 (src line 1159)
 
        sym  goto 123
        ntype  goto 249
@@ -4229,13 +4229,13 @@ state 247
 state 248
        arg_type:  dotdotdot.    (246)
 
-       .  reduce 246 (src line 1695)
+       .  reduce 246 (src line 1696)
 
 
 state 249
        name_or_type:  ntype.    (150)
 
-       .  reduce 150 (src line 1073)
+       .  reduce 150 (src line 1074)
 
 
 state 250
@@ -4254,7 +4254,7 @@ state 250
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 164 (src line 1179)
+       .  reduce 164 (src line 1180)
 
        sym  goto 123
        ntype  goto 377
@@ -4285,7 +4285,7 @@ state 251
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 249 (src line 1707)
+       .  reduce 249 (src line 1708)
 
        sym  goto 247
        ntype  goto 249
@@ -4311,11 +4311,11 @@ state 252
        error  shift 307
        LLITERAL  shift 68
        LBREAK  shift 41
-       LCASE  reduce 251 (src line 1719)
+       LCASE  reduce 251 (src line 1720)
        LCHAN  shift 78
        LCONST  shift 47
        LCONTINUE  shift 42
-       LDEFAULT  reduce 251 (src line 1719)
+       LDEFAULT  reduce 251 (src line 1720)
        LDEFER  shift 44
        LFALL  shift 40
        LFOR  shift 50
@@ -4339,9 +4339,9 @@ state 252
        '*'  shift 58
        '&'  shift 59
        '('  shift 67
-       ';'  reduce 251 (src line 1719)
+       ';'  reduce 251 (src line 1720)
        '{'  shift 308
-       '}'  reduce 251 (src line 1719)
+       '}'  reduce 251 (src line 1720)
        '!'  shift 62
        '~'  shift 63
        '['  shift 77
@@ -4396,7 +4396,7 @@ state 253
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 249 (src line 1707)
+       .  reduce 249 (src line 1708)
 
        sym  goto 247
        ntype  goto 249
@@ -4458,7 +4458,7 @@ state 254
        '/'  shift 146
        '%'  shift 147
        '&'  shift 148
-       .  reduce 50 (src line 425)
+       .  reduce 50 (src line 426)
 
 
 state 255
@@ -4502,7 +4502,7 @@ state 255
        '/'  shift 146
        '%'  shift 147
        '&'  shift 148
-       .  reduce 94 (src line 795)
+       .  reduce 94 (src line 796)
 
 
 state 256
@@ -4545,7 +4545,7 @@ state 256
        '/'  shift 146
        '%'  shift 147
        '&'  shift 148
-       .  reduce 95 (src line 799)
+       .  reduce 95 (src line 800)
 
 
 state 257
@@ -4582,7 +4582,7 @@ state 257
        '/'  shift 146
        '%'  shift 147
        '&'  shift 148
-       .  reduce 96 (src line 803)
+       .  reduce 96 (src line 804)
 
 
 state 258
@@ -4619,7 +4619,7 @@ state 258
        '/'  shift 146
        '%'  shift 147
        '&'  shift 148
-       .  reduce 97 (src line 807)
+       .  reduce 97 (src line 808)
 
 
 state 259
@@ -4656,7 +4656,7 @@ state 259
        '/'  shift 146
        '%'  shift 147
        '&'  shift 148
-       .  reduce 98 (src line 811)
+       .  reduce 98 (src line 812)
 
 
 state 260
@@ -4693,7 +4693,7 @@ state 260
        '/'  shift 146
        '%'  shift 147
        '&'  shift 148
-       .  reduce 99 (src line 815)
+       .  reduce 99 (src line 816)
 
 
 state 261
@@ -4730,7 +4730,7 @@ state 261
        '/'  shift 146
        '%'  shift 147
        '&'  shift 148
-       .  reduce 100 (src line 819)
+       .  reduce 100 (src line 820)
 
 
 state 262
@@ -4767,7 +4767,7 @@ state 262
        '/'  shift 146
        '%'  shift 147
        '&'  shift 148
-       .  reduce 101 (src line 823)
+       .  reduce 101 (src line 824)
 
 
 state 263
@@ -4800,7 +4800,7 @@ state 263
        '/'  shift 146
        '%'  shift 147
        '&'  shift 148
-       .  reduce 102 (src line 827)
+       .  reduce 102 (src line 828)
 
 
 state 264
@@ -4833,7 +4833,7 @@ state 264
        '/'  shift 146
        '%'  shift 147
        '&'  shift 148
-       .  reduce 103 (src line 831)
+       .  reduce 103 (src line 832)
 
 
 state 265
@@ -4866,7 +4866,7 @@ state 265
        '/'  shift 146
        '%'  shift 147
        '&'  shift 148
-       .  reduce 104 (src line 835)
+       .  reduce 104 (src line 836)
 
 
 state 266
@@ -4899,7 +4899,7 @@ state 266
        '/'  shift 146
        '%'  shift 147
        '&'  shift 148
-       .  reduce 105 (src line 839)
+       .  reduce 105 (src line 840)
 
 
 state 267
@@ -4925,7 +4925,7 @@ state 267
        expr:  expr.LRSH expr 
        expr:  expr.LCOMM expr 
 
-       .  reduce 106 (src line 843)
+       .  reduce 106 (src line 844)
 
 
 state 268
@@ -4951,7 +4951,7 @@ state 268
        expr:  expr.LRSH expr 
        expr:  expr.LCOMM expr 
 
-       .  reduce 107 (src line 847)
+       .  reduce 107 (src line 848)
 
 
 state 269
@@ -4977,7 +4977,7 @@ state 269
        expr:  expr.LRSH expr 
        expr:  expr.LCOMM expr 
 
-       .  reduce 108 (src line 851)
+       .  reduce 108 (src line 852)
 
 
 state 270
@@ -5003,7 +5003,7 @@ state 270
        expr:  expr.LRSH expr 
        expr:  expr.LCOMM expr 
 
-       .  reduce 109 (src line 855)
+       .  reduce 109 (src line 856)
 
 
 state 271
@@ -5029,7 +5029,7 @@ state 271
        expr:  expr.LRSH expr 
        expr:  expr.LCOMM expr 
 
-       .  reduce 110 (src line 859)
+       .  reduce 110 (src line 860)
 
 
 state 272
@@ -5055,7 +5055,7 @@ state 272
        expr:  expr.LRSH expr 
        expr:  expr.LCOMM expr 
 
-       .  reduce 111 (src line 863)
+       .  reduce 111 (src line 864)
 
 
 state 273
@@ -5081,7 +5081,7 @@ state 273
        expr:  expr LRSH expr.    (112)
        expr:  expr.LCOMM expr 
 
-       .  reduce 112 (src line 867)
+       .  reduce 112 (src line 868)
 
 
 state 274
@@ -5126,7 +5126,7 @@ state 274
        '/'  shift 146
        '%'  shift 147
        '&'  shift 148
-       .  reduce 113 (src line 872)
+       .  reduce 113 (src line 873)
 
 
 state 275
@@ -5134,7 +5134,7 @@ state 275
        expr_list:  expr_list.',' expr 
 
        ','  shift 155
-       .  reduce 51 (src line 430)
+       .  reduce 51 (src line 431)
 
 
 state 276
@@ -5142,7 +5142,7 @@ state 276
        expr_list:  expr_list.',' expr 
 
        ','  shift 155
-       .  reduce 52 (src line 442)
+       .  reduce 52 (src line 443)
 
 
 state 277
@@ -5188,13 +5188,13 @@ state 277
        '/'  shift 146
        '%'  shift 147
        '&'  shift 148
-       .  reduce 277 (src line 1845)
+       .  reduce 277 (src line 1846)
 
 
 state 278
        for_stmt:  LFOR $$74 for_body.    (75)
 
-       .  reduce 75 (src line 664)
+       .  reduce 75 (src line 665)
 
 
 state 279
@@ -5210,19 +5210,19 @@ state 280
        for_header:  osimple_stmt.    (71)
 
        ';'  shift 383
-       .  reduce 71 (src line 644)
+       .  reduce 71 (src line 645)
 
 
 state 281
        for_header:  range_stmt.    (72)
 
-       .  reduce 72 (src line 650)
+       .  reduce 72 (src line 651)
 
 
 state 282
        osimple_stmt:  simple_stmt.    (295)
 
-       .  reduce 295 (src line 1915)
+       .  reduce 295 (src line 1916)
 
 
 state 283
@@ -5283,7 +5283,7 @@ state 285
        switch_stmt:  LSWITCH $$88 if_header.$$89 LBODY caseblock_list '}' 
        $$89: .    (89)
 
-       .  reduce 89 (src line 759)
+       .  reduce 89 (src line 760)
 
        $$89  goto 387
 
@@ -5292,14 +5292,14 @@ state 286
        if_header:  osimple_stmt.';' osimple_stmt 
 
        ';'  shift 388
-       .  reduce 76 (src line 670)
+       .  reduce 76 (src line 671)
 
 
 state 287
        select_stmt:  LSELECT $$91 LBODY.caseblock_list '}' 
        caseblock_list: .    (63)
 
-       .  reduce 63 (src line 590)
+       .  reduce 63 (src line 591)
 
        caseblock_list  goto 389
 
@@ -5307,14 +5307,14 @@ state 288
        if_stmt:  LIF $$78 if_header.$$79 loop_body $$80 elseif_list else 
        $$79: .    (79)
 
-       .  reduce 79 (src line 693)
+       .  reduce 79 (src line 694)
 
        $$79  goto 390
 
 state 289
        pseudocall:  pexpr '(' ')'.    (123)
 
-       .  reduce 123 (src line 924)
+       .  reduce 123 (src line 925)
 
 
 state 290
@@ -5325,20 +5325,20 @@ state 290
 
        LDDD  shift 392
        ','  shift 393
-       .  reduce 288 (src line 1896)
+       .  reduce 288 (src line 1897)
 
        ocomma  goto 391
 
 state 291
        expr_or_type_list:  expr_or_type.    (278)
 
-       .  reduce 278 (src line 1850)
+       .  reduce 278 (src line 1851)
 
 
 state 292
        pexpr_no_paren:  pexpr '.' sym.    (128)
 
-       .  reduce 128 (src line 947)
+       .  reduce 128 (src line 948)
 
 
 state 293
@@ -5432,7 +5432,7 @@ state 294
        '%'  shift 147
        '&'  shift 148
        ']'  shift 396
-       .  reduce 291 (src line 1903)
+       .  reduce 291 (src line 1904)
 
 
 state 295
@@ -5467,7 +5467,7 @@ state 296
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 284 (src line 1881)
+       .  reduce 284 (src line 1882)
 
        sym  goto 123
        expr  goto 402
@@ -5495,13 +5495,13 @@ state 297
        pexpr:  '(' expr_or_type ')'.    (147)
 
        '{'  shift 404
-       .  reduce 147 (src line 1056)
+       .  reduce 147 (src line 1057)
 
 
 state 298
        non_expr_type:  '*' non_expr_type.    (175)
 
-       .  reduce 175 (src line 1205)
+       .  reduce 175 (src line 1206)
 
 
 state 299
@@ -5581,7 +5581,7 @@ state 300
        '%'  shift 147
        '&'  shift 148
        ','  shift 413
-       .  reduce 288 (src line 1896)
+       .  reduce 288 (src line 1897)
 
        ocomma  goto 412
 
@@ -5609,7 +5609,7 @@ state 301
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 284 (src line 1881)
+       .  reduce 284 (src line 1882)
 
        sym  goto 123
        expr  goto 402
@@ -5644,38 +5644,38 @@ state 302
 state 303
        stmt_list:  stmt.    (270)
 
-       .  reduce 270 (src line 1804)
+       .  reduce 270 (src line 1805)
 
 
 state 304
        stmt:  compound_stmt.    (252)
 
-       .  reduce 252 (src line 1723)
+       .  reduce 252 (src line 1724)
 
 
 state 305
        stmt:  common_dcl.    (253)
 
-       .  reduce 253 (src line 1724)
+       .  reduce 253 (src line 1725)
 
 
 state 306
        stmt:  non_dcl_stmt.    (254)
 
-       .  reduce 254 (src line 1728)
+       .  reduce 254 (src line 1729)
 
 
 state 307
        stmt:  error.    (255)
 
-       .  reduce 255 (src line 1729)
+       .  reduce 255 (src line 1730)
 
 
 state 308
        compound_stmt:  '{'.$$59 stmt_list '}' 
        $$59: .    (59)
 
-       .  reduce 59 (src line 544)
+       .  reduce 59 (src line 545)
 
        $$59  goto 417
 
@@ -5740,7 +5740,7 @@ state 310
 state 311
        othertype:  LCHAN LCOMM ntype.    (194)
 
-       .  reduce 194 (src line 1263)
+       .  reduce 194 (src line 1264)
 
 
 state 312
@@ -5753,7 +5753,7 @@ state 312
 state 313
        ptrtype:  '*' ntype.    (198)
 
-       .  reduce 198 (src line 1275)
+       .  reduce 198 (src line 1276)
 
 
 state 314
@@ -5780,20 +5780,20 @@ state 316
        osemi: .    (286)
 
        ';'  shift 424
-       .  reduce 286 (src line 1893)
+       .  reduce 286 (src line 1894)
 
        osemi  goto 423
 
 state 317
        structtype:  LSTRUCT lbrace '}'.    (201)
 
-       .  reduce 201 (src line 1295)
+       .  reduce 201 (src line 1296)
 
 
 state 318
        structdcl_list:  structdcl.    (226)
 
-       .  reduce 226 (src line 1547)
+       .  reduce 226 (src line 1548)
 
 
 state 319
@@ -5832,7 +5832,7 @@ state 320
        oliteral: .    (302)
 
        LLITERAL  shift 428
-       .  reduce 302 (src line 1935)
+       .  reduce 302 (src line 1936)
 
        oliteral  goto 427
 
@@ -5861,13 +5861,13 @@ state 322
 state 323
        new_name_list:  new_name.    (272)
 
-       .  reduce 272 (src line 1820)
+       .  reduce 272 (src line 1821)
 
 
 state 324
        embed:  packname.    (238)
 
-       .  reduce 238 (src line 1646)
+       .  reduce 238 (src line 1647)
 
 
 state 325
@@ -5875,11 +5875,11 @@ state 325
        packname:  LNAME.    (236)
        packname:  LNAME.'.' sym 
 
-       LLITERAL  reduce 236 (src line 1621)
-       ';'  reduce 236 (src line 1621)
+       LLITERAL  reduce 236 (src line 1622)
+       ';'  reduce 236 (src line 1622)
        '.'  shift 434
-       '}'  reduce 236 (src line 1621)
-       .  reduce 157 (src line 1113)
+       '}'  reduce 236 (src line 1622)
+       .  reduce 157 (src line 1114)
 
 
 state 326
@@ -5888,20 +5888,20 @@ state 326
        osemi: .    (286)
 
        ';'  shift 436
-       .  reduce 286 (src line 1893)
+       .  reduce 286 (src line 1894)
 
        osemi  goto 435
 
 state 327
        interfacetype:  LINTERFACE lbrace '}'.    (203)
 
-       .  reduce 203 (src line 1308)
+       .  reduce 203 (src line 1309)
 
 
 state 328
        interfacedcl_list:  interfacedcl.    (228)
 
-       .  reduce 228 (src line 1554)
+       .  reduce 228 (src line 1555)
 
 
 state 329
@@ -5915,7 +5915,7 @@ state 329
 state 330
        interfacedcl:  packname.    (240)
 
-       .  reduce 240 (src line 1658)
+       .  reduce 240 (src line 1659)
 
 
 state 331
@@ -5942,7 +5942,7 @@ state 333
        '.'  shift 90
        '?'  shift 12
        '@'  shift 13
-       .  reduce 287 (src line 1894)
+       .  reduce 287 (src line 1895)
 
        import_here  goto 87
        sym  goto 89
@@ -5952,7 +5952,7 @@ state 333
 state 334
        import_stmt:  import_here import_package import_there.    (11)
 
-       .  reduce 11 (src line 173)
+       .  reduce 11 (src line 174)
 
 
 state 335
@@ -5972,31 +5972,31 @@ state 336
 state 337
        hidden_type:  hidden_type_misc.    (312)
 
-       .  reduce 312 (src line 2003)
+       .  reduce 312 (src line 2004)
 
 
 state 338
        hidden_type:  hidden_type_recv_chan.    (313)
 
-       .  reduce 313 (src line 2005)
+       .  reduce 313 (src line 2006)
 
 
 state 339
        hidden_type:  hidden_type_func.    (314)
 
-       .  reduce 314 (src line 2006)
+       .  reduce 314 (src line 2007)
 
 
 state 340
        hidden_type_misc:  hidden_importsym.    (317)
 
-       .  reduce 317 (src line 2012)
+       .  reduce 317 (src line 2013)
 
 
 state 341
        hidden_type_misc:  LNAME.    (318)
 
-       .  reduce 318 (src line 2017)
+       .  reduce 318 (src line 2018)
 
 
 state 342
@@ -6131,7 +6131,7 @@ state 354
        LNAME  shift 10
        '?'  shift 12
        '@'  shift 13
-       .  reduce 296 (src line 1917)
+       .  reduce 296 (src line 1918)
 
        sym  goto 357
        hidden_importsym  goto 11
@@ -6151,7 +6151,7 @@ state 355
 state 356
        hidden_funarg_list:  hidden_funarg.    (346)
 
-       .  reduce 346 (src line 2212)
+       .  reduce 346 (src line 2213)
 
 
 state 357
@@ -6191,7 +6191,7 @@ state 359
        LNAME  shift 10
        '?'  shift 12
        '@'  shift 13
-       .  reduce 287 (src line 1894)
+       .  reduce 287 (src line 1895)
 
        sym  goto 105
        dcl_name  goto 104
@@ -6246,13 +6246,13 @@ state 361
        expr_list:  expr_list.',' expr 
 
        ','  shift 155
-       .  reduce 41 (src line 369)
+       .  reduce 41 (src line 370)
 
 
 state 362
        dcl_name_list:  dcl_name_list ',' dcl_name.    (275)
 
-       .  reduce 275 (src line 1835)
+       .  reduce 275 (src line 1836)
 
 
 state 363
@@ -6305,7 +6305,7 @@ state 366
        LNAME  shift 10
        '?'  shift 12
        '@'  shift 13
-       .  reduce 287 (src line 1894)
+       .  reduce 287 (src line 1895)
 
        sym  goto 105
        dcl_name  goto 104
@@ -6362,7 +6362,7 @@ state 368
        expr_list:  expr_list.',' expr 
 
        ','  shift 155
-       .  reduce 43 (src line 379)
+       .  reduce 43 (src line 380)
 
 
 state 369
@@ -6379,7 +6379,7 @@ state 370
        LNAME  shift 10
        '?'  shift 12
        '@'  shift 13
-       .  reduce 287 (src line 1894)
+       .  reduce 287 (src line 1895)
 
        sym  goto 112
        typedclname  goto 111
@@ -6412,7 +6412,7 @@ state 372
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 212 (src line 1469)
+       .  reduce 212 (src line 1470)
 
        sym  goto 485
        dotname  goto 493
@@ -6444,7 +6444,7 @@ state 373
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 289 (src line 1897)
+       .  reduce 289 (src line 1898)
 
        sym  goto 247
        ntype  goto 249
@@ -6464,25 +6464,25 @@ state 373
 state 374
        oarg_type_list_ocomma:  arg_type_list ocomma.    (250)
 
-       .  reduce 250 (src line 1711)
+       .  reduce 250 (src line 1712)
 
 
 state 375
        arg_type:  sym name_or_type.    (244)
 
-       .  reduce 244 (src line 1683)
+       .  reduce 244 (src line 1684)
 
 
 state 376
        arg_type:  sym dotdotdot.    (245)
 
-       .  reduce 245 (src line 1689)
+       .  reduce 245 (src line 1690)
 
 
 state 377
        dotdotdot:  LDDD ntype.    (165)
 
-       .  reduce 165 (src line 1185)
+       .  reduce 165 (src line 1186)
 
 
 state 378
@@ -6495,7 +6495,7 @@ state 378
 state 379
        non_dcl_stmt:  labelname ':' $$261 stmt.    (262)
 
-       .  reduce 262 (src line 1745)
+       .  reduce 262 (src line 1746)
 
 
 state 380
@@ -6508,14 +6508,14 @@ state 380
 state 381
        for_body:  for_header loop_body.    (73)
 
-       .  reduce 73 (src line 652)
+       .  reduce 73 (src line 653)
 
 
 state 382
        loop_body:  LBODY.$$65 stmt_list '}' 
        $$65: .    (65)
 
-       .  reduce 65 (src line 599)
+       .  reduce 65 (src line 600)
 
        $$65  goto 497
 
@@ -6542,7 +6542,7 @@ state 383
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 294 (src line 1911)
+       .  reduce 294 (src line 1912)
 
        sym  goto 123
        expr  goto 48
@@ -6695,7 +6695,7 @@ state 386
        '/'  shift 146
        '%'  shift 147
        '&'  shift 148
-       .  reduce 69 (src line 624)
+       .  reduce 69 (src line 625)
 
 
 state 387
@@ -6728,7 +6728,7 @@ state 388
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 294 (src line 1911)
+       .  reduce 294 (src line 1912)
 
        sym  goto 123
        expr  goto 48
@@ -6782,7 +6782,7 @@ state 392
        ocomma: .    (288)
 
        ','  shift 413
-       .  reduce 288 (src line 1896)
+       .  reduce 288 (src line 1897)
 
        ocomma  goto 510
 
@@ -6809,7 +6809,7 @@ state 393
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 289 (src line 1897)
+       .  reduce 289 (src line 1898)
 
        sym  goto 123
        expr  goto 173
@@ -6848,7 +6848,7 @@ state 395
 state 396
        pexpr_no_paren:  pexpr '[' expr ']'.    (131)
 
-       .  reduce 131 (src line 966)
+       .  reduce 131 (src line 967)
 
 
 state 397
@@ -6875,7 +6875,7 @@ state 397
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 290 (src line 1899)
+       .  reduce 290 (src line 1900)
 
        sym  goto 123
        expr  goto 188
@@ -6909,20 +6909,20 @@ state 399
        ocomma: .    (288)
 
        ','  shift 516
-       .  reduce 288 (src line 1896)
+       .  reduce 288 (src line 1897)
 
        ocomma  goto 517
 
 state 400
        keyval_list:  keyval.    (280)
 
-       .  reduce 280 (src line 1863)
+       .  reduce 280 (src line 1864)
 
 
 state 401
        keyval_list:  bare_complitexpr.    (281)
 
-       .  reduce 281 (src line 1868)
+       .  reduce 281 (src line 1869)
 
 
 state 402
@@ -6970,14 +6970,14 @@ state 402
        '%'  shift 147
        '&'  shift 148
        ':'  shift 518
-       .  reduce 142 (src line 1026)
+       .  reduce 142 (src line 1027)
 
 
 state 403
        bare_complitexpr:  '{'.start_complit braced_keyval_list '}' 
        start_complit: .    (140)
 
-       .  reduce 140 (src line 1013)
+       .  reduce 140 (src line 1014)
 
        start_complit  goto 519
 
@@ -6985,7 +6985,7 @@ state 404
        pexpr_no_paren:  '(' expr_or_type ')' '{'.start_complit braced_keyval_list '}' 
        start_complit: .    (140)
 
-       .  reduce 140 (src line 1013)
+       .  reduce 140 (src line 1014)
 
        start_complit  goto 520
 
@@ -7022,47 +7022,47 @@ state 405
 state 406
        recvchantype:  LCOMM LCHAN ntype.    (199)
 
-       .  reduce 199 (src line 1281)
+       .  reduce 199 (src line 1282)
 
 
 state 407
        ntype:  fntype.    (167)
        non_recvchantype:  fntype.    (176)
 
-       LBODY  reduce 176 (src line 1210)
-       '('  reduce 176 (src line 1210)
-       '{'  reduce 176 (src line 1210)
-       .  reduce 167 (src line 1192)
+       LBODY  reduce 176 (src line 1211)
+       '('  reduce 176 (src line 1211)
+       '{'  reduce 176 (src line 1211)
+       .  reduce 167 (src line 1193)
 
 
 state 408
        ntype:  othertype.    (168)
        non_recvchantype:  othertype.    (177)
 
-       LBODY  reduce 177 (src line 1212)
-       '('  reduce 177 (src line 1212)
-       '{'  reduce 177 (src line 1212)
-       .  reduce 168 (src line 1193)
+       LBODY  reduce 177 (src line 1213)
+       '('  reduce 177 (src line 1213)
+       '{'  reduce 177 (src line 1213)
+       .  reduce 168 (src line 1194)
 
 
 state 409
        ntype:  ptrtype.    (169)
        non_recvchantype:  ptrtype.    (178)
 
-       LBODY  reduce 178 (src line 1213)
-       '('  reduce 178 (src line 1213)
-       '{'  reduce 178 (src line 1213)
-       .  reduce 169 (src line 1194)
+       LBODY  reduce 178 (src line 1214)
+       '('  reduce 178 (src line 1214)
+       '{'  reduce 178 (src line 1214)
+       .  reduce 169 (src line 1195)
 
 
 state 410
        ntype:  dotname.    (170)
        non_recvchantype:  dotname.    (179)
 
-       LBODY  reduce 179 (src line 1214)
-       '('  reduce 179 (src line 1214)
-       '{'  reduce 179 (src line 1214)
-       .  reduce 170 (src line 1195)
+       LBODY  reduce 179 (src line 1215)
+       '('  reduce 179 (src line 1215)
+       '{'  reduce 179 (src line 1215)
+       .  reduce 170 (src line 1196)
 
 
 state 411
@@ -7105,7 +7105,7 @@ state 412
 state 413
        ocomma:  ','.    (289)
 
-       .  reduce 289 (src line 1897)
+       .  reduce 289 (src line 1898)
 
 
 state 414
@@ -7118,7 +7118,7 @@ state 414
 state 415
        fnliteral:  fnlitdcl lbrace stmt_list '}'.    (216)
 
-       .  reduce 216 (src line 1490)
+       .  reduce 216 (src line 1491)
 
 
 state 416
@@ -7128,11 +7128,11 @@ state 416
        error  shift 307
        LLITERAL  shift 68
        LBREAK  shift 41
-       LCASE  reduce 251 (src line 1719)
+       LCASE  reduce 251 (src line 1720)
        LCHAN  shift 78
        LCONST  shift 47
        LCONTINUE  shift 42
-       LDEFAULT  reduce 251 (src line 1719)
+       LDEFAULT  reduce 251 (src line 1720)
        LDEFER  shift 44
        LFALL  shift 40
        LFOR  shift 50
@@ -7156,9 +7156,9 @@ state 416
        '*'  shift 58
        '&'  shift 59
        '('  shift 67
-       ';'  reduce 251 (src line 1719)
+       ';'  reduce 251 (src line 1720)
        '{'  shift 308
-       '}'  reduce 251 (src line 1719)
+       '}'  reduce 251 (src line 1720)
        '!'  shift 62
        '~'  shift 63
        '['  shift 77
@@ -7229,9 +7229,9 @@ state 417
        '*'  shift 58
        '&'  shift 59
        '('  shift 67
-       ';'  reduce 251 (src line 1719)
+       ';'  reduce 251 (src line 1720)
        '{'  shift 308
-       '}'  reduce 251 (src line 1719)
+       '}'  reduce 251 (src line 1720)
        '!'  shift 62
        '~'  shift 63
        '['  shift 77
@@ -7273,25 +7273,25 @@ state 417
 state 418
        othertype:  '[' oexpr ']' ntype.    (191)
 
-       .  reduce 191 (src line 1248)
+       .  reduce 191 (src line 1249)
 
 
 state 419
        othertype:  '[' LDDD ']' ntype.    (192)
 
-       .  reduce 192 (src line 1253)
+       .  reduce 192 (src line 1254)
 
 
 state 420
        non_recvchantype:  '(' ntype ')'.    (180)
 
-       .  reduce 180 (src line 1215)
+       .  reduce 180 (src line 1216)
 
 
 state 421
        dotname:  name '.' sym.    (190)
 
-       .  reduce 190 (src line 1236)
+       .  reduce 190 (src line 1237)
 
 
 state 422
@@ -7339,7 +7339,7 @@ state 424
        '('  shift 321
        '?'  shift 12
        '@'  shift 13
-       .  reduce 287 (src line 1894)
+       .  reduce 287 (src line 1895)
 
        sym  goto 119
        packname  goto 324
@@ -7354,7 +7354,7 @@ state 425
        oliteral: .    (302)
 
        LLITERAL  shift 428
-       .  reduce 302 (src line 1935)
+       .  reduce 302 (src line 1936)
 
        oliteral  goto 529
 
@@ -7373,13 +7373,13 @@ state 426
 state 427
        structdcl:  embed oliteral.    (231)
 
-       .  reduce 231 (src line 1589)
+       .  reduce 231 (src line 1590)
 
 
 state 428
        oliteral:  LLITERAL.    (303)
 
-       .  reduce 303 (src line 1939)
+       .  reduce 303 (src line 1940)
 
 
 state 429
@@ -7403,7 +7403,7 @@ state 431
        packname:  LNAME.'.' sym 
 
        '.'  shift 434
-       .  reduce 236 (src line 1621)
+       .  reduce 236 (src line 1622)
 
 
 state 432
@@ -7411,7 +7411,7 @@ state 432
        oliteral: .    (302)
 
        LLITERAL  shift 428
-       .  reduce 302 (src line 1935)
+       .  reduce 302 (src line 1936)
 
        oliteral  goto 533
 
@@ -7450,7 +7450,7 @@ state 436
        '('  shift 331
        '?'  shift 12
        '@'  shift 13
-       .  reduce 287 (src line 1894)
+       .  reduce 287 (src line 1895)
 
        sym  goto 119
        packname  goto 330
@@ -7461,7 +7461,7 @@ state 436
 state 437
        interfacedcl:  new_name indcl.    (239)
 
-       .  reduce 239 (src line 1652)
+       .  reduce 239 (src line 1653)
 
 
 state 438
@@ -7481,7 +7481,7 @@ state 438
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 249 (src line 1707)
+       .  reduce 249 (src line 1708)
 
        sym  goto 247
        ntype  goto 249
@@ -7510,25 +7510,25 @@ state 439
 state 440
        import:  LIMPORT '(' import_stmt_list osemi ')'.    (9)
 
-       .  reduce 9 (src line 170)
+       .  reduce 9 (src line 171)
 
 
 state 441
        import_stmt_list:  import_stmt_list ';' import_stmt.    (14)
 
-       .  reduce 14 (src line 222)
+       .  reduce 14 (src line 223)
 
 
 state 442
        hidden_import:  LIMPORT LNAME LLITERAL ';'.    (304)
 
-       .  reduce 304 (src line 1944)
+       .  reduce 304 (src line 1945)
 
 
 state 443
        hidden_import:  LVAR hidden_pkg_importsym hidden_type ';'.    (305)
 
-       .  reduce 305 (src line 1949)
+       .  reduce 305 (src line 1950)
 
 
 state 444
@@ -7587,7 +7587,7 @@ state 447
        LNAME  shift 10
        '?'  shift 12
        '@'  shift 13
-       .  reduce 298 (src line 1923)
+       .  reduce 298 (src line 1924)
 
        sym  goto 546
        hidden_importsym  goto 11
@@ -7610,7 +7610,7 @@ state 448
        '['  shift 342
        '?'  shift 12
        '@'  shift 13
-       .  reduce 300 (src line 1929)
+       .  reduce 300 (src line 1930)
 
        sym  goto 550
        hidden_importsym  goto 553
@@ -7625,13 +7625,13 @@ state 448
 state 449
        hidden_type_misc:  '*' hidden_type.    (324)
 
-       .  reduce 324 (src line 2048)
+       .  reduce 324 (src line 2049)
 
 
 state 450
        hidden_type_misc:  LCHAN hidden_type_non_recv_chan.    (325)
 
-       .  reduce 325 (src line 2052)
+       .  reduce 325 (src line 2053)
 
 
 state 451
@@ -7666,13 +7666,13 @@ state 452
 state 453
        hidden_type_non_recv_chan:  hidden_type_misc.    (315)
 
-       .  reduce 315 (src line 2008)
+       .  reduce 315 (src line 2009)
 
 
 state 454
        hidden_type_non_recv_chan:  hidden_type_func.    (316)
 
-       .  reduce 316 (src line 2010)
+       .  reduce 316 (src line 2011)
 
 
 state 455
@@ -7703,7 +7703,7 @@ state 456
        LNAME  shift 10
        '?'  shift 12
        '@'  shift 13
-       .  reduce 296 (src line 1917)
+       .  reduce 296 (src line 1918)
 
        sym  goto 357
        hidden_importsym  goto 11
@@ -7721,7 +7721,7 @@ state 457
 state 458
        hidden_constant:  hidden_literal.    (342)
 
-       .  reduce 342 (src line 2195)
+       .  reduce 342 (src line 2196)
 
 
 state 459
@@ -7741,7 +7741,7 @@ state 459
 state 460
        hidden_literal:  LLITERAL.    (339)
 
-       .  reduce 339 (src line 2164)
+       .  reduce 339 (src line 2165)
 
 
 state 461
@@ -7754,7 +7754,7 @@ state 461
 state 462
        hidden_literal:  sym.    (341)
 
-       .  reduce 341 (src line 2187)
+       .  reduce 341 (src line 2188)
 
 
 state 463
@@ -7776,13 +7776,13 @@ state 463
 state 464
        hidden_import:  LTYPE hidden_pkgtype hidden_type ';'.    (308)
 
-       .  reduce 308 (src line 1961)
+       .  reduce 308 (src line 1962)
 
 
 state 465
        hidden_import:  LFUNC hidden_fndcl fnbody ';'.    (309)
 
-       .  reduce 309 (src line 1965)
+       .  reduce 309 (src line 1966)
 
 
 state 466
@@ -7797,7 +7797,7 @@ state 467
        hidden_funarg_list:  hidden_funarg_list.',' hidden_funarg 
 
        ','  shift 469
-       .  reduce 297 (src line 1921)
+       .  reduce 297 (src line 1922)
 
 
 state 468
@@ -7828,7 +7828,7 @@ state 470
        oliteral: .    (302)
 
        LLITERAL  shift 428
-       .  reduce 302 (src line 1935)
+       .  reduce 302 (src line 1936)
 
        oliteral  goto 565
 
@@ -7856,13 +7856,13 @@ state 471
 state 472
        common_dcl:  LVAR '(' vardcl_list osemi ')'.    (29)
 
-       .  reduce 29 (src line 310)
+       .  reduce 29 (src line 311)
 
 
 state 473
        vardcl_list:  vardcl_list ';' vardcl.    (221)
 
-       .  reduce 221 (src line 1525)
+       .  reduce 221 (src line 1526)
 
 
 state 474
@@ -7870,19 +7870,19 @@ state 474
        expr_list:  expr_list.',' expr 
 
        ','  shift 155
-       .  reduce 40 (src line 365)
+       .  reduce 40 (src line 366)
 
 
 state 475
        ntype:  '(' ntype ')'.    (171)
 
-       .  reduce 171 (src line 1196)
+       .  reduce 171 (src line 1197)
 
 
 state 476
        common_dcl:  lconst '(' constdcl osemi ')'.    (32)
 
-       .  reduce 32 (src line 324)
+       .  reduce 32 (src line 325)
 
 
 state 477
@@ -7891,20 +7891,20 @@ state 477
        osemi: .    (286)
 
        ';'  shift 568
-       .  reduce 286 (src line 1893)
+       .  reduce 286 (src line 1894)
 
        osemi  goto 567
 
 state 478
        constdcl_list:  constdcl1.    (222)
 
-       .  reduce 222 (src line 1530)
+       .  reduce 222 (src line 1531)
 
 
 state 479
        constdcl1:  constdcl.    (44)
 
-       .  reduce 44 (src line 384)
+       .  reduce 44 (src line 385)
 
 
 state 480
@@ -7928,7 +7928,7 @@ state 480
        '?'  shift 12
        '@'  shift 13
        ','  shift 225
-       .  reduce 46 (src line 390)
+       .  reduce 46 (src line 391)
 
        sym  goto 123
        ntype  goto 569
@@ -7947,25 +7947,25 @@ state 481
        expr_list:  expr_list.',' expr 
 
        ','  shift 155
-       .  reduce 42 (src line 374)
+       .  reduce 42 (src line 375)
 
 
 state 482
        common_dcl:  LTYPE '(' typedcl_list osemi ')'.    (36)
 
-       .  reduce 36 (src line 345)
+       .  reduce 36 (src line 346)
 
 
 state 483
        typedcl_list:  typedcl_list ';' typedcl.    (225)
 
-       .  reduce 225 (src line 1542)
+       .  reduce 225 (src line 1543)
 
 
 state 484
        fnbody:  '{' stmt_list '}'.    (211)
 
-       .  reduce 211 (src line 1461)
+       .  reduce 211 (src line 1462)
 
 
 state 485
@@ -7973,19 +7973,19 @@ state 485
        fndcl:  '(' oarg_type_list_ocomma ')' sym.'(' oarg_type_list_ocomma ')' fnres 
 
        '('  shift 570
-       .  reduce 162 (src line 1158)
+       .  reduce 162 (src line 1159)
 
 
 state 486
        fntype:  LFUNC '(' oarg_type_list_ocomma ')' fnres.    (209)
 
-       .  reduce 209 (src line 1448)
+       .  reduce 209 (src line 1449)
 
 
 state 487
        fnres:  fnret_type.    (213)
 
-       .  reduce 213 (src line 1474)
+       .  reduce 213 (src line 1475)
 
 
 state 488
@@ -8005,7 +8005,7 @@ state 488
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 249 (src line 1707)
+       .  reduce 249 (src line 1708)
 
        sym  goto 247
        ntype  goto 249
@@ -8027,37 +8027,37 @@ state 488
 state 489
        fnret_type:  recvchantype.    (184)
 
-       .  reduce 184 (src line 1227)
+       .  reduce 184 (src line 1228)
 
 
 state 490
        fnret_type:  fntype.    (185)
 
-       .  reduce 185 (src line 1229)
+       .  reduce 185 (src line 1230)
 
 
 state 491
        fnret_type:  othertype.    (186)
 
-       .  reduce 186 (src line 1230)
+       .  reduce 186 (src line 1231)
 
 
 state 492
        fnret_type:  ptrtype.    (187)
 
-       .  reduce 187 (src line 1231)
+       .  reduce 187 (src line 1232)
 
 
 state 493
        fnret_type:  dotname.    (188)
 
-       .  reduce 188 (src line 1232)
+       .  reduce 188 (src line 1233)
 
 
 state 494
        arg_type_list:  arg_type_list ',' arg_type.    (248)
 
-       .  reduce 248 (src line 1702)
+       .  reduce 248 (src line 1703)
 
 
 state 495
@@ -8076,7 +8076,7 @@ state 495
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 212 (src line 1469)
+       .  reduce 212 (src line 1470)
 
        sym  goto 123
        dotname  goto 493
@@ -8107,7 +8107,7 @@ state 496
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 212 (src line 1469)
+       .  reduce 212 (src line 1470)
 
        sym  goto 123
        dotname  goto 493
@@ -8155,9 +8155,9 @@ state 497
        '*'  shift 58
        '&'  shift 59
        '('  shift 67
-       ';'  reduce 251 (src line 1719)
+       ';'  reduce 251 (src line 1720)
        '{'  shift 308
-       '}'  reduce 251 (src line 1719)
+       '}'  reduce 251 (src line 1720)
        '!'  shift 62
        '~'  shift 63
        '['  shift 77
@@ -8289,33 +8289,33 @@ state 501
        switch_stmt:  LSWITCH $$88 if_header $$89 LBODY.caseblock_list '}' 
        caseblock_list: .    (63)
 
-       .  reduce 63 (src line 590)
+       .  reduce 63 (src line 591)
 
        caseblock_list  goto 577
 
 state 502
        if_header:  osimple_stmt ';' osimple_stmt.    (77)
 
-       .  reduce 77 (src line 677)
+       .  reduce 77 (src line 678)
 
 
 state 503
        caseblock_list:  caseblock_list caseblock.    (64)
 
-       .  reduce 64 (src line 594)
+       .  reduce 64 (src line 595)
 
 
 state 504
        select_stmt:  LSELECT $$91 LBODY caseblock_list '}'.    (92)
 
-       .  reduce 92 (src line 782)
+       .  reduce 92 (src line 783)
 
 
 state 505
        caseblock:  case.$$61 stmt_list 
        $$61: .    (61)
 
-       .  reduce 61 (src line 559)
+       .  reduce 61 (src line 560)
 
        $$61  goto 578
 
@@ -8377,14 +8377,14 @@ state 508
        if_stmt:  LIF $$78 if_header $$79 loop_body.$$80 elseif_list else 
        $$80: .    (80)
 
-       .  reduce 80 (src line 699)
+       .  reduce 80 (src line 700)
 
        $$80  goto 581
 
 state 509
        pseudocall:  pexpr '(' expr_or_type_list ocomma ')'.    (124)
 
-       .  reduce 124 (src line 929)
+       .  reduce 124 (src line 930)
 
 
 state 510
@@ -8397,19 +8397,19 @@ state 510
 state 511
        expr_or_type_list:  expr_or_type_list ',' expr_or_type.    (279)
 
-       .  reduce 279 (src line 1855)
+       .  reduce 279 (src line 1856)
 
 
 state 512
        pexpr_no_paren:  pexpr '.' '(' expr_or_type ')'.    (129)
 
-       .  reduce 129 (src line 958)
+       .  reduce 129 (src line 959)
 
 
 state 513
        pexpr_no_paren:  pexpr '.' '(' LTYPE ')'.    (130)
 
-       .  reduce 130 (src line 962)
+       .  reduce 130 (src line 963)
 
 
 state 514
@@ -8424,7 +8424,7 @@ state 514
 state 515
        pexpr_no_paren:  pexpr_no_paren '{' start_complit braced_keyval_list '}'.    (137)
 
-       .  reduce 137 (src line 998)
+       .  reduce 137 (src line 999)
 
 
 state 516
@@ -8452,7 +8452,7 @@ state 516
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 289 (src line 1897)
+       .  reduce 289 (src line 1898)
 
        sym  goto 123
        expr  goto 402
@@ -8476,7 +8476,7 @@ state 516
 state 517
        braced_keyval_list:  keyval_list ocomma.    (285)
 
-       .  reduce 285 (src line 1885)
+       .  reduce 285 (src line 1886)
 
 
 state 518
@@ -8546,7 +8546,7 @@ state 519
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 284 (src line 1881)
+       .  reduce 284 (src line 1882)
 
        sym  goto 123
        expr  goto 402
@@ -8593,7 +8593,7 @@ state 520
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 284 (src line 1881)
+       .  reduce 284 (src line 1882)
 
        sym  goto 123
        expr  goto 402
@@ -8627,19 +8627,19 @@ state 521
 state 522
        pexpr_no_paren:  convtype '(' expr ocomma ')'.    (135)
 
-       .  reduce 135 (src line 985)
+       .  reduce 135 (src line 986)
 
 
 state 523
        pexpr_no_paren:  comptype lbrace start_complit braced_keyval_list '}'.    (136)
 
-       .  reduce 136 (src line 991)
+       .  reduce 136 (src line 992)
 
 
 state 524
        stmt_list:  stmt_list ';' stmt.    (271)
 
-       .  reduce 271 (src line 1812)
+       .  reduce 271 (src line 1813)
 
 
 state 525
@@ -8654,31 +8654,31 @@ state 525
 state 526
        othertype:  LMAP '[' ntype ']' ntype.    (195)
 
-       .  reduce 195 (src line 1268)
+       .  reduce 195 (src line 1269)
 
 
 state 527
        structtype:  LSTRUCT lbrace structdcl_list osemi '}'.    (200)
 
-       .  reduce 200 (src line 1288)
+       .  reduce 200 (src line 1289)
 
 
 state 528
        structdcl_list:  structdcl_list ';' structdcl.    (227)
 
-       .  reduce 227 (src line 1549)
+       .  reduce 227 (src line 1550)
 
 
 state 529
        structdcl:  new_name_list ntype oliteral.    (230)
 
-       .  reduce 230 (src line 1564)
+       .  reduce 230 (src line 1565)
 
 
 state 530
        new_name_list:  new_name_list ',' new_name.    (273)
 
-       .  reduce 273 (src line 1825)
+       .  reduce 273 (src line 1826)
 
 
 state 531
@@ -8686,7 +8686,7 @@ state 531
        oliteral: .    (302)
 
        LLITERAL  shift 428
-       .  reduce 302 (src line 1935)
+       .  reduce 302 (src line 1936)
 
        oliteral  goto 594
 
@@ -8700,7 +8700,7 @@ state 532
 state 533
        structdcl:  '*' embed oliteral.    (233)
 
-       .  reduce 233 (src line 1600)
+       .  reduce 233 (src line 1601)
 
 
 state 534
@@ -8713,19 +8713,19 @@ state 534
 state 535
        packname:  LNAME '.' sym.    (237)
 
-       .  reduce 237 (src line 1632)
+       .  reduce 237 (src line 1633)
 
 
 state 536
        interfacetype:  LINTERFACE lbrace interfacedcl_list osemi '}'.    (202)
 
-       .  reduce 202 (src line 1301)
+       .  reduce 202 (src line 1302)
 
 
 state 537
        interfacedcl_list:  interfacedcl_list ';' interfacedcl.    (229)
 
-       .  reduce 229 (src line 1559)
+       .  reduce 229 (src line 1560)
 
 
 state 538
@@ -8738,13 +8738,13 @@ state 538
 state 539
        interfacedcl:  '(' packname ')'.    (241)
 
-       .  reduce 241 (src line 1662)
+       .  reduce 241 (src line 1663)
 
 
 state 540
        hidden_type_misc:  '[' ']' hidden_type.    (319)
 
-       .  reduce 319 (src line 2028)
+       .  reduce 319 (src line 2029)
 
 
 state 541
@@ -8787,13 +8787,13 @@ state 544
        hidden_structdcl_list:  hidden_structdcl_list.';' hidden_structdcl 
 
        ';'  shift 601
-       .  reduce 299 (src line 1927)
+       .  reduce 299 (src line 1928)
 
 
 state 545
        hidden_structdcl_list:  hidden_structdcl.    (348)
 
-       .  reduce 348 (src line 2222)
+       .  reduce 348 (src line 2223)
 
 
 state 546
@@ -8829,13 +8829,13 @@ state 548
        hidden_interfacedcl_list:  hidden_interfacedcl_list.';' hidden_interfacedcl 
 
        ';'  shift 604
-       .  reduce 301 (src line 1933)
+       .  reduce 301 (src line 1934)
 
 
 state 549
        hidden_interfacedcl_list:  hidden_interfacedcl.    (350)
 
-       .  reduce 350 (src line 2232)
+       .  reduce 350 (src line 2233)
 
 
 state 550
@@ -8848,23 +8848,23 @@ state 550
 state 551
        hidden_interfacedcl:  hidden_type.    (334)
 
-       .  reduce 334 (src line 2139)
+       .  reduce 334 (src line 2140)
 
 
 state 552
        sym:  LNAME.    (157)
        hidden_type_misc:  LNAME.    (318)
 
-       '('  reduce 157 (src line 1113)
-       .  reduce 318 (src line 2017)
+       '('  reduce 157 (src line 1114)
+       .  reduce 318 (src line 2018)
 
 
 state 553
        sym:  hidden_importsym.    (158)
        hidden_type_misc:  hidden_importsym.    (317)
 
-       '('  reduce 158 (src line 1122)
-       .  reduce 317 (src line 2012)
+       '('  reduce 158 (src line 1123)
+       .  reduce 317 (src line 2013)
 
 
 state 554
@@ -8877,13 +8877,13 @@ state 554
 state 555
        hidden_type_misc:  LCHAN LCOMM hidden_type.    (327)
 
-       .  reduce 327 (src line 2064)
+       .  reduce 327 (src line 2065)
 
 
 state 556
        hidden_type_recv_chan:  LCOMM LCHAN hidden_type.    (328)
 
-       .  reduce 328 (src line 2071)
+       .  reduce 328 (src line 2072)
 
 
 state 557
@@ -8896,7 +8896,7 @@ state 557
 state 558
        hidden_import:  LCONST hidden_pkg_importsym '=' hidden_constant ';'.    (306)
 
-       .  reduce 306 (src line 1953)
+       .  reduce 306 (src line 1954)
 
 
 state 559
@@ -8909,7 +8909,7 @@ state 559
 state 560
        hidden_literal:  '-' LLITERAL.    (340)
 
-       .  reduce 340 (src line 2169)
+       .  reduce 340 (src line 2170)
 
 
 state 561
@@ -8934,7 +8934,7 @@ state 562
        '('  shift 612
        '['  shift 342
        '@'  shift 13
-       .  reduce 335 (src line 2144)
+       .  reduce 335 (src line 2145)
 
        hidden_importsym  goto 340
        hidden_funres  goto 611
@@ -8954,13 +8954,13 @@ state 563
 state 564
        hidden_funarg_list:  hidden_funarg_list ',' hidden_funarg.    (347)
 
-       .  reduce 347 (src line 2217)
+       .  reduce 347 (src line 2218)
 
 
 state 565
        hidden_funarg:  sym hidden_type oliteral.    (330)
 
-       .  reduce 330 (src line 2085)
+       .  reduce 330 (src line 2086)
 
 
 state 566
@@ -8968,7 +8968,7 @@ state 566
        oliteral: .    (302)
 
        LLITERAL  shift 428
-       .  reduce 302 (src line 1935)
+       .  reduce 302 (src line 1936)
 
        oliteral  goto 615
 
@@ -8986,7 +8986,7 @@ state 568
        LNAME  shift 10
        '?'  shift 12
        '@'  shift 13
-       .  reduce 287 (src line 1894)
+       .  reduce 287 (src line 1895)
 
        sym  goto 105
        dcl_name  goto 104
@@ -9000,7 +9000,7 @@ state 569
        constdcl1:  dcl_name_list ntype.    (45)
 
        '='  shift 367
-       .  reduce 45 (src line 386)
+       .  reduce 45 (src line 387)
 
 
 state 570
@@ -9020,7 +9020,7 @@ state 570
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 249 (src line 1707)
+       .  reduce 249 (src line 1708)
 
        sym  goto 247
        ntype  goto 249
@@ -9049,7 +9049,7 @@ state 571
 state 572
        fndcl:  sym '(' oarg_type_list_ocomma ')' fnres.    (205)
 
-       .  reduce 205 (src line 1336)
+       .  reduce 205 (src line 1337)
 
 
 state 573
@@ -9084,7 +9084,7 @@ state 574
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 294 (src line 1911)
+       .  reduce 294 (src line 1912)
 
        sym  goto 123
        expr  goto 48
@@ -9149,7 +9149,7 @@ state 575
        '/'  shift 146
        '%'  shift 147
        '&'  shift 148
-       .  reduce 67 (src line 610)
+       .  reduce 67 (src line 611)
 
 
 state 576
@@ -9195,7 +9195,7 @@ state 576
        '/'  shift 146
        '%'  shift 147
        '&'  shift 148
-       .  reduce 68 (src line 617)
+       .  reduce 68 (src line 618)
 
 
 state 577
@@ -9217,11 +9217,11 @@ state 578
        error  shift 307
        LLITERAL  shift 68
        LBREAK  shift 41
-       LCASE  reduce 251 (src line 1719)
+       LCASE  reduce 251 (src line 1720)
        LCHAN  shift 78
        LCONST  shift 47
        LCONTINUE  shift 42
-       LDEFAULT  reduce 251 (src line 1719)
+       LDEFAULT  reduce 251 (src line 1720)
        LDEFER  shift 44
        LFALL  shift 40
        LFOR  shift 50
@@ -9245,9 +9245,9 @@ state 578
        '*'  shift 58
        '&'  shift 59
        '('  shift 67
-       ';'  reduce 251 (src line 1719)
+       ';'  reduce 251 (src line 1720)
        '{'  shift 308
-       '}'  reduce 251 (src line 1719)
+       '}'  reduce 251 (src line 1720)
        '!'  shift 62
        '~'  shift 63
        '['  shift 77
@@ -9302,27 +9302,27 @@ state 579
 state 580
        case:  LDEFAULT ':'.    (58)
 
-       .  reduce 58 (src line 524)
+       .  reduce 58 (src line 525)
 
 
 state 581
        if_stmt:  LIF $$78 if_header $$79 loop_body $$80.elseif_list else 
        elseif_list: .    (84)
 
-       .  reduce 84 (src line 734)
+       .  reduce 84 (src line 735)
 
        elseif_list  goto 628
 
 state 582
        pseudocall:  pexpr '(' expr_or_type_list LDDD ocomma ')'.    (125)
 
-       .  reduce 125 (src line 934)
+       .  reduce 125 (src line 935)
 
 
 state 583
        pexpr_no_paren:  pexpr '[' oexpr ':' oexpr ']'.    (132)
 
-       .  reduce 132 (src line 970)
+       .  reduce 132 (src line 971)
 
 
 state 584
@@ -9348,7 +9348,7 @@ state 584
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 290 (src line 1899)
+       .  reduce 290 (src line 1900)
 
        sym  goto 123
        expr  goto 188
@@ -9371,19 +9371,19 @@ state 584
 state 585
        keyval_list:  keyval_list ',' keyval.    (282)
 
-       .  reduce 282 (src line 1872)
+       .  reduce 282 (src line 1873)
 
 
 state 586
        keyval_list:  keyval_list ',' bare_complitexpr.    (283)
 
-       .  reduce 283 (src line 1876)
+       .  reduce 283 (src line 1877)
 
 
 state 587
        keyval:  expr ':' complitexpr.    (141)
 
-       .  reduce 141 (src line 1020)
+       .  reduce 141 (src line 1021)
 
 
 state 588
@@ -9429,14 +9429,14 @@ state 588
        '/'  shift 146
        '%'  shift 147
        '&'  shift 148
-       .  reduce 144 (src line 1046)
+       .  reduce 144 (src line 1047)
 
 
 state 589
        complitexpr:  '{'.start_complit braced_keyval_list '}' 
        start_complit: .    (140)
 
-       .  reduce 140 (src line 1013)
+       .  reduce 140 (src line 1014)
 
        start_complit  goto 630
 
@@ -9458,22 +9458,22 @@ state 592
        ntype:  '(' ntype ')'.    (171)
        non_recvchantype:  '(' ntype ')'.    (180)
 
-       LBODY  reduce 180 (src line 1215)
-       '('  reduce 180 (src line 1215)
-       '{'  reduce 180 (src line 1215)
-       .  reduce 171 (src line 1196)
+       LBODY  reduce 180 (src line 1216)
+       '('  reduce 180 (src line 1216)
+       '{'  reduce 180 (src line 1216)
+       .  reduce 171 (src line 1197)
 
 
 state 593
        compound_stmt:  '{' $$59 stmt_list '}'.    (60)
 
-       .  reduce 60 (src line 549)
+       .  reduce 60 (src line 550)
 
 
 state 594
        structdcl:  '(' embed ')' oliteral.    (232)
 
-       .  reduce 232 (src line 1594)
+       .  reduce 232 (src line 1595)
 
 
 state 595
@@ -9481,7 +9481,7 @@ state 595
        oliteral: .    (302)
 
        LLITERAL  shift 428
-       .  reduce 302 (src line 1935)
+       .  reduce 302 (src line 1936)
 
        oliteral  goto 633
 
@@ -9490,7 +9490,7 @@ state 596
        oliteral: .    (302)
 
        LLITERAL  shift 428
-       .  reduce 302 (src line 1935)
+       .  reduce 302 (src line 1936)
 
        oliteral  goto 634
 
@@ -9510,7 +9510,7 @@ state 597
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 212 (src line 1469)
+       .  reduce 212 (src line 1470)
 
        sym  goto 123
        dotname  goto 493
@@ -9528,7 +9528,7 @@ state 597
 state 598
        hidden_type_misc:  '[' LLITERAL ']' hidden_type.    (320)
 
-       .  reduce 320 (src line 2032)
+       .  reduce 320 (src line 2033)
 
 
 state 599
@@ -9555,7 +9555,7 @@ state 599
 state 600
        hidden_type_misc:  LSTRUCT '{' ohidden_structdcl_list '}'.    (322)
 
-       .  reduce 322 (src line 2040)
+       .  reduce 322 (src line 2041)
 
 
 state 601
@@ -9575,14 +9575,14 @@ state 602
        oliteral: .    (302)
 
        LLITERAL  shift 428
-       .  reduce 302 (src line 1935)
+       .  reduce 302 (src line 1936)
 
        oliteral  goto 638
 
 state 603
        hidden_type_misc:  LINTERFACE '{' ohidden_interfacedcl_list '}'.    (323)
 
-       .  reduce 323 (src line 2044)
+       .  reduce 323 (src line 2045)
 
 
 state 604
@@ -9616,7 +9616,7 @@ state 605
        LNAME  shift 10
        '?'  shift 12
        '@'  shift 13
-       .  reduce 296 (src line 1917)
+       .  reduce 296 (src line 1918)
 
        sym  goto 357
        hidden_importsym  goto 11
@@ -9627,7 +9627,7 @@ state 605
 state 606
        hidden_type_misc:  LCHAN '(' hidden_type_recv_chan ')'.    (326)
 
-       .  reduce 326 (src line 2058)
+       .  reduce 326 (src line 2059)
 
 
 state 607
@@ -9645,7 +9645,7 @@ state 607
        '('  shift 612
        '['  shift 342
        '@'  shift 13
-       .  reduce 335 (src line 2144)
+       .  reduce 335 (src line 2145)
 
        hidden_importsym  goto 340
        hidden_funres  goto 611
@@ -9672,19 +9672,19 @@ state 608
 state 609
        hidden_import:  LCONST hidden_pkg_importsym hidden_type '=' hidden_constant ';'.    (307)
 
-       .  reduce 307 (src line 1957)
+       .  reduce 307 (src line 1958)
 
 
 state 610
        hidden_fndcl:  hidden_pkg_importsym '(' ohidden_funarg_list ')' ohidden_funres.    (207)
 
-       .  reduce 207 (src line 1405)
+       .  reduce 207 (src line 1406)
 
 
 state 611
        ohidden_funres:  hidden_funres.    (336)
 
-       .  reduce 336 (src line 2148)
+       .  reduce 336 (src line 2149)
 
 
 state 612
@@ -9694,7 +9694,7 @@ state 612
        LNAME  shift 10
        '?'  shift 12
        '@'  shift 13
-       .  reduce 296 (src line 1917)
+       .  reduce 296 (src line 1918)
 
        sym  goto 357
        hidden_importsym  goto 11
@@ -9705,7 +9705,7 @@ state 612
 state 613
        hidden_funres:  hidden_type.    (338)
 
-       .  reduce 338 (src line 2155)
+       .  reduce 338 (src line 2156)
 
 
 state 614
@@ -9715,7 +9715,7 @@ state 614
        LNAME  shift 10
        '?'  shift 12
        '@'  shift 13
-       .  reduce 296 (src line 1917)
+       .  reduce 296 (src line 1918)
 
        sym  goto 357
        hidden_importsym  goto 11
@@ -9726,19 +9726,19 @@ state 614
 state 615
        hidden_funarg:  sym LDDD hidden_type oliteral.    (331)
 
-       .  reduce 331 (src line 2094)
+       .  reduce 331 (src line 2095)
 
 
 state 616
        common_dcl:  lconst '(' constdcl ';' constdcl_list osemi ')'.    (33)
 
-       .  reduce 33 (src line 330)
+       .  reduce 33 (src line 331)
 
 
 state 617
        constdcl_list:  constdcl_list ';' constdcl1.    (223)
 
-       .  reduce 223 (src line 1532)
+       .  reduce 223 (src line 1533)
 
 
 state 618
@@ -9751,25 +9751,25 @@ state 618
 state 619
        fnres:  '(' oarg_type_list_ocomma ')'.    (214)
 
-       .  reduce 214 (src line 1478)
+       .  reduce 214 (src line 1479)
 
 
 state 620
        loop_body:  LBODY $$65 stmt_list '}'.    (66)
 
-       .  reduce 66 (src line 604)
+       .  reduce 66 (src line 605)
 
 
 state 621
        for_header:  osimple_stmt ';' osimple_stmt ';' osimple_stmt.    (70)
 
-       .  reduce 70 (src line 630)
+       .  reduce 70 (src line 631)
 
 
 state 622
        switch_stmt:  LSWITCH $$88 if_header $$89 LBODY caseblock_list '}'.    (90)
 
-       .  reduce 90 (src line 768)
+       .  reduce 90 (src line 769)
 
 
 state 623
@@ -9777,13 +9777,13 @@ state 623
        stmt_list:  stmt_list.';' stmt 
 
        ';'  shift 416
-       .  reduce 62 (src line 571)
+       .  reduce 62 (src line 572)
 
 
 state 624
        case:  LCASE expr_or_type_list ':'.    (55)
 
-       .  reduce 55 (src line 473)
+       .  reduce 55 (src line 474)
 
 
 state 625
@@ -9918,7 +9918,7 @@ state 628
        else: .    (86)
 
        LELSE  shift 650
-       .  reduce 86 (src line 743)
+       .  reduce 86 (src line 744)
 
        elseif  goto 649
        else  goto 648
@@ -9954,7 +9954,7 @@ state 630
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 284 (src line 1881)
+       .  reduce 284 (src line 1882)
 
        sym  goto 123
        expr  goto 402
@@ -9980,55 +9980,55 @@ state 630
 state 631
        bare_complitexpr:  '{' start_complit braced_keyval_list '}'.    (143)
 
-       .  reduce 143 (src line 1040)
+       .  reduce 143 (src line 1041)
 
 
 state 632
        pexpr_no_paren:  '(' expr_or_type ')' '{' start_complit braced_keyval_list '}'.    (138)
 
-       .  reduce 138 (src line 1004)
+       .  reduce 138 (src line 1005)
 
 
 state 633
        structdcl:  '(' '*' embed ')' oliteral.    (234)
 
-       .  reduce 234 (src line 1606)
+       .  reduce 234 (src line 1607)
 
 
 state 634
        structdcl:  '*' '(' embed ')' oliteral.    (235)
 
-       .  reduce 235 (src line 1613)
+       .  reduce 235 (src line 1614)
 
 
 state 635
        indcl:  '(' oarg_type_list_ocomma ')' fnres.    (242)
 
-       .  reduce 242 (src line 1668)
+       .  reduce 242 (src line 1669)
 
 
 state 636
        hidden_type_misc:  LMAP '[' hidden_type ']' hidden_type.    (321)
 
-       .  reduce 321 (src line 2036)
+       .  reduce 321 (src line 2037)
 
 
 state 637
        hidden_structdcl_list:  hidden_structdcl_list ';' hidden_structdcl.    (349)
 
-       .  reduce 349 (src line 2227)
+       .  reduce 349 (src line 2228)
 
 
 state 638
        hidden_structdcl:  sym hidden_type oliteral.    (332)
 
-       .  reduce 332 (src line 2110)
+       .  reduce 332 (src line 2111)
 
 
 state 639
        hidden_interfacedcl_list:  hidden_interfacedcl_list ';' hidden_interfacedcl.    (351)
 
-       .  reduce 351 (src line 2237)
+       .  reduce 351 (src line 2238)
 
 
 state 640
@@ -10041,7 +10041,7 @@ state 640
 state 641
        hidden_type_func:  LFUNC '(' ohidden_funarg_list ')' ohidden_funres.    (329)
 
-       .  reduce 329 (src line 2079)
+       .  reduce 329 (src line 2080)
 
 
 state 642
@@ -10081,7 +10081,7 @@ state 645
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 212 (src line 1469)
+       .  reduce 212 (src line 1470)
 
        sym  goto 123
        dotname  goto 493
@@ -10193,13 +10193,13 @@ state 647
 state 648
        if_stmt:  LIF $$78 if_header $$79 loop_body $$80 elseif_list else.    (81)
 
-       .  reduce 81 (src line 703)
+       .  reduce 81 (src line 704)
 
 
 state 649
        elseif_list:  elseif_list elseif.    (85)
 
-       .  reduce 85 (src line 738)
+       .  reduce 85 (src line 739)
 
 
 state 650
@@ -10215,7 +10215,7 @@ state 650
 state 651
        pexpr_no_paren:  pexpr '[' oexpr ':' oexpr ':' oexpr ']'.    (133)
 
-       .  reduce 133 (src line 974)
+       .  reduce 133 (src line 975)
 
 
 state 652
@@ -10240,7 +10240,7 @@ state 653
        '('  shift 612
        '['  shift 342
        '@'  shift 13
-       .  reduce 335 (src line 2144)
+       .  reduce 335 (src line 2145)
 
        hidden_importsym  goto 340
        hidden_funres  goto 611
@@ -10253,13 +10253,13 @@ state 653
 state 654
        hidden_constant:  '(' hidden_literal '+' hidden_literal ')'.    (343)
 
-       .  reduce 343 (src line 2197)
+       .  reduce 343 (src line 2198)
 
 
 state 655
        hidden_funres:  '(' ohidden_funarg_list ')'.    (337)
 
-       .  reduce 337 (src line 2150)
+       .  reduce 337 (src line 2151)
 
 
 state 656
@@ -10277,7 +10277,7 @@ state 656
        '('  shift 612
        '['  shift 342
        '@'  shift 13
-       .  reduce 335 (src line 2144)
+       .  reduce 335 (src line 2145)
 
        hidden_importsym  goto 340
        hidden_funres  goto 611
@@ -10290,51 +10290,51 @@ state 656
 state 657
        fndcl:  '(' oarg_type_list_ocomma ')' sym '(' oarg_type_list_ocomma ')' fnres.    (206)
 
-       .  reduce 206 (src line 1368)
+       .  reduce 206 (src line 1369)
 
 
 state 658
        case:  LCASE expr_or_type_list '=' expr ':'.    (56)
 
-       .  reduce 56 (src line 497)
+       .  reduce 56 (src line 498)
 
 
 state 659
        case:  LCASE expr_or_type_list LCOLAS expr ':'.    (57)
 
-       .  reduce 57 (src line 515)
+       .  reduce 57 (src line 516)
 
 
 state 660
        elseif:  LELSE LIF.$$82 if_header loop_body 
        $$82: .    (82)
 
-       .  reduce 82 (src line 720)
+       .  reduce 82 (src line 721)
 
        $$82  goto 665
 
 state 661
        else:  LELSE compound_stmt.    (87)
 
-       .  reduce 87 (src line 747)
+       .  reduce 87 (src line 748)
 
 
 state 662
        complitexpr:  '{' start_complit braced_keyval_list '}'.    (145)
 
-       .  reduce 145 (src line 1048)
+       .  reduce 145 (src line 1049)
 
 
 state 663
        hidden_interfacedcl:  sym '(' ohidden_funarg_list ')' ohidden_funres.    (333)
 
-       .  reduce 333 (src line 2134)
+       .  reduce 333 (src line 2135)
 
 
 state 664
        hidden_fndcl:  '(' hidden_funarg_list ')' sym '(' ohidden_funarg_list ')' ohidden_funres.    (208)
 
-       .  reduce 208 (src line 1431)
+       .  reduce 208 (src line 1432)
 
 
 state 665
@@ -10360,7 +10360,7 @@ state 665
        '['  shift 77
        '?'  shift 12
        '@'  shift 13
-       .  reduce 294 (src line 1911)
+       .  reduce 294 (src line 1912)
 
        sym  goto 123
        expr  goto 48
@@ -10394,7 +10394,7 @@ state 666
 state 667
        elseif:  LELSE LIF $$82 if_header loop_body.    (83)
 
-       .  reduce 83 (src line 725)
+       .  reduce 83 (src line 726)
 
 
 76 terminals, 142 nonterminals