go/src/cmd/compile/internal/gc/y.go

3537 lines
85 KiB
Go
Raw Normal View History

//line go.y:21
package gc
import __yyfmt__ "fmt"
//line go.y:21
import (
"fmt"
"strings"
)
//line go.y:28
type yySymType struct {
yys int
node *Node
list *NodeList
typ *Type
sym *Sym
val Val
i int
}
const LLITERAL = 57346
const LASOP = 57347
const LCOLAS = 57348
const LBREAK = 57349
const LCASE = 57350
const LCHAN = 57351
const LCONST = 57352
const LCONTINUE = 57353
const LDDD = 57354
const LDEFAULT = 57355
const LDEFER = 57356
const LELSE = 57357
const LFALL = 57358
const LFOR = 57359
const LFUNC = 57360
const LGO = 57361
const LGOTO = 57362
const LIF = 57363
const LIMPORT = 57364
const LINTERFACE = 57365
const LMAP = 57366
const LNAME = 57367
const LPACKAGE = 57368
const LRANGE = 57369
const LRETURN = 57370
const LSELECT = 57371
const LSTRUCT = 57372
const LSWITCH = 57373
const LTYPE = 57374
const LVAR = 57375
const LANDAND = 57376
const LANDNOT = 57377
const LBODY = 57378
const LCOMM = 57379
const LDEC = 57380
const LEQ = 57381
const LGE = 57382
const LGT = 57383
const LIGNORE = 57384
const LINC = 57385
const LLE = 57386
const LLSH = 57387
const LLT = 57388
const LNE = 57389
const LOROR = 57390
const LRSH = 57391
const NotPackage = 57392
const NotParen = 57393
const PreferToRightParen = 57394
var yyToknames = [...]string{
"$end",
"error",
"$unk",
"LLITERAL",
"LASOP",
"LCOLAS",
"LBREAK",
"LCASE",
"LCHAN",
"LCONST",
"LCONTINUE",
"LDDD",
"LDEFAULT",
"LDEFER",
"LELSE",
"LFALL",
"LFOR",
"LFUNC",
"LGO",
"LGOTO",
"LIF",
"LIMPORT",
"LINTERFACE",
"LMAP",
"LNAME",
"LPACKAGE",
"LRANGE",
"LRETURN",
"LSELECT",
"LSTRUCT",
"LSWITCH",
"LTYPE",
"LVAR",
"LANDAND",
"LANDNOT",
"LBODY",
"LCOMM",
"LDEC",
"LEQ",
"LGE",
"LGT",
"LIGNORE",
"LINC",
"LLE",
"LLSH",
"LLT",
"LNE",
"LOROR",
"LRSH",
"'+'",
"'-'",
"'|'",
"'^'",
"'*'",
"'/'",
"'%'",
"'&'",
"NotPackage",
"NotParen",
"'('",
"')'",
"PreferToRightParen",
"';'",
"'.'",
"'$'",
"'='",
"':'",
"'{'",
"'}'",
"'!'",
"'~'",
"'['",
"']'",
"'?'",
"'@'",
"','",
}
var yyStatenames = [...]string{}
const yyEofCode = 1
const yyErrCode = 2
const yyMaxDepth = 200
//line go.y:2317
func fixlbrace(lbr int) {
// If the opening brace was an LBODY,
// set up for another one now that we're done.
// See comment in lex.C about loophack.
if lbr == LBODY {
loophack = true
}
}
//line yacctab:1
var yyExca = [...]int{
-1, 1,
1, -1,
-2, 0,
-1, 17,
1, 1,
63, 23,
-2, 0,
-1, 48,
6, 276,
66, 276,
76, 276,
-2, 49,
-1, 56,
67, 153,
-2, 162,
-1, 74,
60, 181,
-2, 215,
-1, 75,
60, 182,
-2, 183,
-1, 121,
60, 134,
64, 134,
68, 134,
72, 134,
-2, 266,
-1, 125,
60, 134,
64, 134,
68, 134,
72, 134,
-2, 267,
-1, 176,
2, 215,
36, 215,
60, 181,
68, 215,
-2, 173,
-1, 177,
36, 183,
60, 182,
68, 183,
-2, 174,
-1, 184,
63, 251,
69, 251,
-2, 0,
-1, 242,
63, 251,
69, 251,
-2, 0,
-1, 252,
8, 251,
13, 251,
63, 251,
69, 251,
-2, 0,
-1, 325,
4, 236,
63, 236,
69, 236,
-2, 157,
-1, 403,
67, 144,
-2, 142,
-1, 408,
36, 176,
60, 176,
68, 176,
-2, 167,
-1, 409,
36, 177,
60, 177,
68, 177,
-2, 168,
-1, 410,
36, 178,
60, 178,
68, 178,
-2, 169,
-1, 411,
36, 179,
60, 179,
68, 179,
-2, 170,
-1, 417,
8, 251,
13, 251,
63, 251,
69, 251,
-2, 0,
-1, 418,
63, 251,
69, 251,
-2, 0,
-1, 498,
63, 251,
69, 251,
-2, 0,
-1, 553,
60, 157,
-2, 318,
-1, 554,
60, 158,
-2, 317,
-1, 579,
8, 251,
13, 251,
63, 251,
69, 251,
-2, 0,
-1, 593,
36, 180,
60, 180,
68, 180,
-2, 171,
-1, 632,
67, 145,
-2, 143,
}
const yyNprod = 352
const yyPrivate = 57344
var yyTokenNames []string
var yyStates []string
const yyLast = 2321
var yyAct = [...]int{
74, 304, 381, 291, 487, 611, 459, 285, 546, 229,
398, 467, 34, 296, 75, 302, 402, 550, 290, 186,
286, 479, 458, 356, 400, 401, 389, 338, 103, 318,
328, 245, 303, 339, 324, 243, 337, 468, 101, 374,
109, 104, 248, 85, 14, 246, 241, 174, 480, 212,
6, 181, 325, 155, 470, 469, 325, 385, 332, 517,
108, 627, 414, 373, 13, 208, 585, 11, 176, 461,
470, 172, 584, 461, 652, 600, 230, 219, 392, 191,
106, 322, 177, 542, 226, 322, 423, 321, 193, 88,
10, 321, 13, 192, 10, 310, 317, 309, 154, 160,
447, 12, 13, 161, 227, 12, 13, 446, 198, 227,
10, 162, 227, 320, 209, 227, 462, 384, 228, 663,
462, 626, 625, 228, 55, 460, 228, 155, 184, 228,
203, 628, 205, 633, 199, 200, 108, 632, 204, 12,
13, 222, 393, 12, 13, 86, 214, 216, 218, 90,
604, 239, 175, 10, 449, 194, 233, 88, 153, 12,
13, 176, 661, 213, 213, 213, 213, 288, 155, 282,
282, 601, 282, 537, 417, 177, 445, 280, 10, 176,
621, 528, 295, 163, 164, 165, 166, 167, 168, 169,
170, 227, 417, 177, 417, 301, 227, 227, 594, 227,
485, 88, 12, 13, 185, 228, 417, 524, 48, 308,
228, 228, 416, 228, 202, 347, 516, 90, 472, 448,
405, 428, 10, 242, 349, 171, 298, 12, 13, 345,
343, 341, 227, 581, 507, 330, 344, 507, 182, 508,
519, 397, 508, 348, 116, 175, 228, 367, 227, 334,
464, 227, 227, 360, 227, 129, 325, 355, 371, 210,
346, 90, 228, 175, 353, 228, 228, 362, 228, 182,
183, 12, 13, 54, 435, 314, 173, 10, 342, 358,
340, 13, 340, 340, 91, 379, 188, 378, 325, 380,
376, 331, 365, 375, 176, 623, 369, 394, 505, 417,
408, 183, 610, 163, 170, 12, 13, 605, 177, 410,
227, 227, 415, 238, 409, 118, 118, 602, 575, 126,
227, 569, 559, 331, 228, 228, 12, 13, 466, 465,
391, 444, 327, 443, 228, 437, 425, 12, 13, 254,
413, 388, 255, 256, 257, 258, 259, 260, 261, 262,
263, 264, 265, 266, 267, 268, 269, 270, 271, 272,
273, 274, 129, 129, 277, 227, 440, 383, 370, 173,
366, 294, 359, 491, 227, 424, 411, 442, 175, 228,
10, 455, 493, 333, 454, 436, 100, 492, 228, 300,
99, 84, 10, 509, 176, 481, 282, 512, 474, 20,
657, 282, 656, 655, 499, 495, 614, 227, 177, 503,
654, 484, 10, 227, 340, 340, 234, 515, 520, 521,
646, 228, 620, 617, 227, 340, 608, 228, 221, 12,
13, 607, 511, 129, 526, 430, 433, 69, 228, 518,
227, 12, 13, 598, 597, 129, 596, 293, 96, 494,
525, 593, 583, 563, 228, 529, 98, 490, 540, 532,
94, 12, 13, 523, 514, 513, 510, 560, 538, 558,
97, 95, 330, 323, 329, 539, 497, 496, 175, 483,
555, 477, 227, 476, 10, 473, 441, 562, 432, 421,
227, 372, 297, 386, 565, 615, 228, 491, 491, 606,
571, 573, 173, 92, 228, 403, 493, 493, 176, 10,
403, 492, 492, 340, 574, 340, 197, 554, 10, 114,
457, 340, 177, 434, 340, 572, 580, 439, 10, 578,
354, 591, 592, 12, 13, 253, 588, 568, 251, 180,
340, 197, 586, 587, 110, 533, 197, 609, 535, 197,
432, 348, 197, 107, 117, 382, 70, 502, 12, 13,
287, 7, 5, 102, 432, 211, 24, 12, 13, 129,
16, 19, 227, 494, 494, 651, 129, 12, 13, 431,
456, 490, 490, 364, 429, 561, 228, 335, 282, 207,
206, 618, 175, 129, 129, 624, 622, 120, 481, 491,
121, 125, 173, 636, 631, 630, 188, 619, 493, 21,
340, 638, 305, 492, 642, 340, 643, 306, 641, 336,
57, 351, 352, 640, 93, 644, 252, 645, 197, 176,
26, 340, 512, 197, 197, 28, 197, 76, 158, 387,
157, 666, 653, 177, 582, 390, 159, 491, 530, 156,
498, 658, 579, 662, 418, 534, 493, 31, 22, 15,
664, 492, 23, 665, 122, 122, 201, 18, 340, 197,
668, 3, 123, 554, 667, 494, 340, 8, 9, 282,
4, 2, 1, 490, 451, 197, 215, 544, 197, 197,
56, 197, 89, 566, 545, 548, 549, 612, 488, 323,
249, 531, 189, 105, 105, 112, 115, 80, 81, 576,
577, 329, 438, 175, 119, 119, 173, 72, 119, 71,
237, 478, 340, 494, 149, 340, 403, 316, 589, 403,
403, 490, 220, 326, 150, 244, 649, 197, 151, 141,
142, 143, 144, 145, 146, 147, 148, 197, 197, 629,
650, 127, 17, 450, 595, 399, 319, 197, 25, 89,
27, 36, 37, 78, 471, 281, 49, 66, 111, 39,
38, 35, 124, 279, 278, 105, 149, 83, 79, 10,
105, 73, 217, 112, 82, 113, 150, 247, 504, 616,
151, 232, 506, 87, 188, 145, 146, 147, 148, 0,
0, 0, 197, 0, 223, 0, 0, 0, 196, 235,
197, 197, 240, 128, 231, 0, 0, 0, 634, 635,
236, 0, 0, 0, 0, 639, 77, 0, 12, 13,
225, 0, 0, 0, 292, 647, 648, 173, 0, 0,
403, 0, 0, 0, 197, 0, 0, 0, 0, 0,
197, 0, 541, 0, 543, 0, 552, 56, 0, 0,
556, 197, 0, 557, 0, 0, 0, 347, 0, 0,
0, 0, 119, 119, 0, 0, 349, 197, 0, 567,
0, 345, 343, 341, 0, 0, 0, 0, 344, 0,
0, 311, 357, 0, 0, 348, 312, 313, 105, 315,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 346, 0, 0, 56, 0, 0, 613, 197,
275, 276, 0, 283, 247, 56, 247, 197, 0, 0,
342, 0, 363, 13, 197, 197, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 599,
0, 377, 134, 149, 603, 152, 0, 135, 139, 140,
0, 0, 138, 150, 137, 136, 133, 151, 141, 142,
143, 144, 145, 146, 147, 148, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 422, 0, 0,
0, 361, 0, 0, 414, 0, 0, 0, 0, 0,
407, 0, 0, 368, 0, 0, 89, 637, 0, 197,
419, 420, 552, 0, 0, 0, 0, 0, 0, 347,
426, 0, 0, 463, 0, 0, 0, 357, 349, 0,
0, 0, 105, 345, 343, 341, 197, 0, 0, 105,
344, 0, 0, 112, 0, 486, 247, 348, 0, 0,
0, 0, 0, 0, 0, 0, 134, 149, 0, 152,
0, 135, 139, 140, 346, 407, 138, 150, 137, 136,
133, 151, 141, 142, 143, 144, 145, 146, 147, 148,
0, 0, 342, 0, 197, 13, 0, 0, 0, 0,
56, 56, 0, 0, 0, 396, 0, 0, 119, 0,
119, 0, 0, 0, 0, 0, 0, 311, 536, 0,
119, 0, 247, 522, 0, 0, 0, 0, 0, 0,
0, 547, 551, 0, 527, 0, 0, 475, 0, 0,
357, 0, 0, 463, 482, 0, 0, 463, 0, 0,
0, 0, 564, 357, 0, 0, 0, 0, 0, 0,
0, 275, 276, 0, 0, 0, 0, 0, 307, 0,
68, 0, 247, 41, 0, 78, 47, 42, 0, 0,
44, 56, 40, 50, 124, 43, 45, 53, 0, 83,
79, 10, 570, 0, 46, 52, 82, 51, 32, 30,
0, 0, 0, 65, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 60, 61, 0, 64,
58, 0, 0, 59, 0, 0, 67, 0, 0, 0,
0, 0, 0, 0, 308, 0, 62, 63, 77, 0,
12, 13, 0, 0, 0, 0, 0, 0, 0, 0,
0, 29, 105, 68, 247, 0, 41, 0, 78, 47,
42, 0, 56, 44, 0, 40, 50, 33, 43, 45,
53, 0, 83, 79, 10, 0, 0, 46, 52, 82,
51, 32, 30, 0, 0, 547, 65, 0, 551, 357,
0, 0, 463, 0, 0, 0, 357, 0, 357, 60,
61, 0, 64, 58, 0, 0, 59, 0, 68, 67,
0, 0, 0, 78, 0, 0, 0, 0, 0, 62,
63, 77, 124, 12, 13, 0, 0, 83, 79, 10,
68, 0, 0, 0, 82, 78, 0, 0, 0, 0,
0, 65, 0, 0, 124, 0, 0, 0, 0, 83,
79, 10, 0, 0, 60, 61, 82, 64, 58, 0,
0, 59, 0, 68, 67, 0, 0, 0, 78, 0,
0, 0, 404, 0, 62, 63, 77, 124, 12, 13,
0, 0, 83, 79, 10, 0, 67, 0, 0, 82,
0, 0, 0, 0, 0, 0, 65, 0, 77, 0,
12, 13, 0, 0, 0, 0, 0, 0, 0, 60,
61, 0, 64, 58, 0, 0, 59, 0, 68, 67,
0, 0, 0, 78, 0, 0, 0, 590, 0, 62,
63, 77, 124, 12, 13, 0, 0, 83, 79, 10,
0, 501, 0, 0, 82, 0, 0, 0, 0, 0,
0, 65, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 60, 61, 0, 64, 58, 0,
0, 59, 0, 68, 67, 0, 0, 0, 78, 0,
0, 0, 0, 0, 62, 63, 77, 124, 12, 13,
0, 0, 83, 79, 10, 0, 500, 0, 0, 82,
0, 0, 0, 0, 0, 0, 65, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 60,
61, 0, 64, 58, 0, 0, 59, 0, 68, 67,
0, 0, 0, 78, 0, 0, 0, 78, 0, 62,
63, 77, 124, 12, 13, 0, 124, 83, 79, 10,
0, 83, 79, 10, 82, 0, 395, 0, 82, 0,
0, 179, 0, 0, 0, 232, 0, 0, 0, 0,
0, 68, 0, 0, 60, 61, 78, 64, 178, 0,
0, 59, 196, 0, 67, 124, 0, 0, 489, 0,
83, 79, 10, 0, 62, 63, 77, 82, 12, 13,
77, 0, 12, 13, 179, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 60, 61, 0,
64, 178, 0, 0, 59, 0, 68, 67, 289, 0,
0, 78, 0, 0, 0, 0, 0, 62, 63, 77,
124, 12, 13, 0, 0, 83, 79, 10, 0, 284,
0, 0, 82, 0, 0, 0, 0, 0, 0, 65,
0, 0, 0, 0, 0, 0, 0, 0, 0, 68,
0, 0, 60, 61, 78, 64, 58, 187, 0, 59,
0, 0, 67, 124, 0, 0, 0, 0, 83, 79,
10, 0, 62, 63, 77, 82, 12, 13, 0, 0,
0, 0, 65, 0, 0, 0, 0, 0, 0, 0,
0, 0, 68, 0, 0, 60, 61, 78, 64, 58,
0, 0, 59, 0, 0, 67, 124, 0, 0, 0,
0, 83, 79, 10, 0, 62, 63, 77, 82, 12,
13, 0, 0, 0, 0, 65, 0, 0, 0, 0,
0, 0, 0, 0, 0, 68, 0, 0, 60, 61,
78, 64, 58, 0, 0, 59, 0, 0, 67, 124,
0, 0, 0, 0, 83, 79, 10, 0, 62, 63,
77, 82, 12, 13, 0, 0, 0, 0, 179, 0,
0, 0, 0, 0, 0, 0, 0, 0, 68, 0,
0, 60, 61, 299, 64, 178, 0, 0, 59, 0,
0, 67, 124, 0, 0, 0, 0, 83, 79, 10,
0, 62, 63, 77, 82, 12, 13, 0, 0, 0,
0, 65, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 60, 61, 78, 64, 58, 0,
0, 59, 0, 0, 67, 124, 0, 0, 0, 0,
83, 79, 10, 0, 62, 63, 77, 82, 12, 13,
0, 78, 0, 0, 232, 0, 0, 0, 0, 0,
124, 0, 0, 0, 0, 83, 79, 10, 0, 0,
0, 196, 82, 0, 0, 0, 0, 231, 0, 232,
0, 0, 0, 224, 0, 0, 0, 0, 0, 77,
0, 12, 13, 225, 0, 0, 196, 0, 0, 0,
0, 0, 231, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 77, 0, 12, 13, 427, 134,
149, 0, 152, 0, 135, 139, 140, 0, 0, 138,
150, 137, 136, 133, 151, 141, 142, 143, 144, 145,
146, 147, 148, 134, 149, 0, 152, 0, 135, 139,
140, 0, 660, 138, 150, 137, 136, 133, 151, 141,
142, 143, 144, 145, 146, 147, 148, 0, 78, 0,
0, 250, 78, 0, 0, 0, 659, 124, 0, 0,
0, 124, 83, 79, 10, 0, 83, 79, 10, 82,
0, 0, 0, 82, 299, 0, 232, 0, 0, 0,
232, 0, 0, 124, 0, 0, 0, 0, 83, 79,
10, 0, 0, 196, 0, 82, 0, 196, 0, 231,
0, 0, 232, 231, 0, 0, 0, 78, 0, 0,
0, 77, 0, 12, 13, 77, 124, 12, 13, 196,
0, 83, 79, 10, 0, 231, 0, 0, 82, 78,
0, 0, 0, 347, 0, 406, 0, 77, 124, 12,
13, 0, 349, 83, 79, 10, 0, 345, 343, 553,
82, 0, 196, 0, 344, 0, 0, 190, 412, 0,
0, 348, 0, 0, 0, 0, 0, 0, 0, 0,
77, 0, 12, 13, 196, 0, 0, 0, 346, 0,
195, 0, 0, 0, 0, 0, 0, 0, 347, 0,
0, 0, 77, 0, 12, 13, 342, 349, 12, 13,
0, 0, 345, 343, 341, 0, 0, 0, 347, 344,
0, 0, 0, 0, 0, 0, 453, 349, 0, 0,
0, 0, 345, 343, 341, 0, 0, 0, 0, 344,
0, 0, 0, 346, 0, 0, 348, 0, 0, 452,
0, 0, 0, 130, 0, 0, 0, 0, 0, 0,
0, 342, 0, 346, 13, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 350, 0, 0, 0, 0,
0, 342, 134, 149, 13, 152, 132, 135, 139, 140,
0, 131, 138, 150, 137, 136, 133, 151, 141, 142,
143, 144, 145, 146, 147, 148, 134, 149, 0, 152,
0, 135, 139, 140, 0, 0, 138, 150, 137, 136,
133, 151, 141, 142, 143, 144, 145, 146, 147, 148,
134, 149, 0, 0, 0, 135, 139, 140, 0, 0,
138, 150, 137, 136, 133, 151, 141, 142, 143, 144,
145, 146, 147, 148, 134, 149, 0, 0, 0, 135,
139, 140, 0, 0, 138, 150, 137, 136, 0, 151,
141, 142, 143, 144, 145, 146, 147, 148, 149, 0,
0, 0, 135, 139, 140, 0, 0, 138, 150, 137,
136, 0, 151, 141, 142, 143, 144, 145, 146, 147,
148,
}
var yyPact = [...]int{
-1000, -1000, 536, 535, -1000, 128, -1000, 545, 549, 336,
-1000, -1000, -1000, 605, -1000, -1000, 541, 1239, 328, 85,
-1000, 220, 438, 327, -1000, 323, -1000, -1000, -1000, -1000,
503, 493, 484, 459, -1000, -1000, -1000, -1000, -1000, 177,
-1000, 128, 128, 1316, 1316, 128, 1698, -1000, 2168, 92,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, 39, 1698, 1698,
1698, 1698, 1698, 1698, 1698, 1698, 157, 1741, -1000, -1000,
-1000, 479, 233, -1000, -1000, -1000, 202, 1655, 2050, 36,
-1000, -1000, 233, 233, -1000, -1000, 153, 535, -1000, 586,
585, 40, 194, -1000, 540, -11, -11, -11, 17, -1000,
-1000, -1000, 367, 1827, -1000, -1000, -1000, 355, 754, -1000,
252, 1973, -1000, 155, 1969, 478, -1000, -1000, -1000, -1000,
-1000, -1000, 39, -1000, 475, -1000, -1000, -1000, -23, 2192,
1698, -1000, -1000, 1698, 1698, 1698, 1698, 1698, 1698, 1698,
1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698,
1698, 1698, 1698, 1698, 1698, 1698, 1612, 1698, 524, 1698,
1557, 387, 1698, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-1000, -1000, 431, 2192, -1000, -1000, -1000, -1000, 1741, 1784,
1698, -1000, -1000, -1000, 1156, -1000, 24, 22, 2192, -1000,
1973, -1000, -1000, -1000, -1000, 1973, 1973, 211, 1973, 27,
263, 320, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-1000, 583, 1010, -1000, 2129, 1010, -1000, 155, 470, 128,
309, -1000, -1000, 187, 1698, 128, -1000, -1000, -1000, -1000,
-1000, 1973, 574, 307, -1000, 181, 1698, 305, -1000, -1000,
-1000, -1000, 1156, 430, -13, -1000, -1000, 1969, -1000, -1000,
1973, 1969, 1156, 1969, 2192, 2240, 2263, 689, 689, 689,
689, 689, 689, 741, 741, 741, 741, -1000, -1000, -1000,
-1000, -1000, -1000, -1000, 2216, -23, -23, 2192, -1000, 519,
304, -1000, -1000, 51, 1698, -1000, 278, -1000, -1000, -1000,
66, -1000, -1000, 1514, 1022, 174, 1294, 152, -1000, 2028,
918, 1294, 143, -1000, -1000, -1000, -1000, -1000, -1000, 1973,
1973, -1000, 428, -1000, 128, 13, 273, -1000, -1000, 1852,
580, 525, 463, -1000, -1000, 210, 272, -1000, -1000, 467,
-1000, 539, 425, 197, -1000, 270, 268, -1000, -1000, -1000,
-1000, -1000, 103, 28, 151, 86, 1010, 2109, 571, 460,
65, 184, 266, 265, 128, -6, -1000, 206, 424, 128,
1698, -23, -1000, 422, 1973, 420, 128, 1698, -23, 418,
128, 131, 1518, 1969, -1000, -1000, -1000, -1000, 416, -1000,
415, -1000, -1000, 1698, 1459, 1404, 2192, 521, 1698, 229,
519, 405, -14, 1741, 404, 403, -1000, 1698, 147, -17,
-1000, -1000, 173, 2192, -1000, -1000, 1995, -1000, -1000, -1000,
-1000, -1000, 1973, 402, -1000, 138, -1000, 1156, 1156, -1000,
-1000, -1000, -1000, 1973, 112, 31, 580, 128, -1000, -1000,
398, 539, 210, 580, 539, 128, 104, 231, -1000, 1969,
397, -1000, -1000, -1000, -1000, 1010, 10, 1010, 128, 2054,
-1000, -1000, 514, 1010, -1000, -1000, 1010, 128, 259, -1000,
69, -1000, 581, -1000, 65, -1000, -1000, 392, -22, 128,
128, 580, 1010, -1000, -1000, -23, -1000, -1000, 258, -1000,
-1000, 754, -23, -1000, -1000, -1000, 440, -1000, -1000, 1969,
-1000, -1000, -1000, -1000, -1000, -1000, 1518, 1518, 1156, 255,
1698, 1698, -1000, -1000, -1000, -1000, -1000, 1741, 166, -1000,
-1000, 391, -1000, -1000, -1000, -1, -1000, 1294, -1000, 1349,
1294, 1294, 390, -1000, -1000, -1000, 129, -1000, -1000, -1000,
-1000, -1000, 580, 385, -1000, 383, -1000, -1000, -1000, 382,
-1000, -1000, 1010, 2, 102, 254, -1000, 1010, 81, 244,
-1000, 439, -1000, -1000, -1000, 370, -1000, -1000, 365, -1000,
497, -1000, 239, 858, 435, -1000, -1000, 580, 362, 128,
181, 1969, 361, -1000, 111, 1698, 2192, 2192, 226, 1156,
55, -1000, -1000, -1000, -1000, 1698, -1000, -1000, -1000, 2192,
-1000, 68, 64, -1000, -1000, -1000, 580, 580, 1518, -1000,
1010, -1000, 128, 580, -1000, 2054, 128, -1000, 858, 69,
-1000, -1000, -1000, 128, -1000, 128, -1000, -1000, -1000, 359,
-1000, -1000, -1000, -1000, 236, -1000, 1698, 1698, 1741, 560,
1, 1294, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-1000, 349, -1000, 342, 341, 339, 1518, 1919, 1895, -1000,
-1000, 141, -1000, 50, 858, -1000, -1000, 858, -1000, -1000,
-1000, -1000, -1000, -1000, -1000, -1000, 1698, 519, -1000,
}
var yyPgo = [...]int{
0, 51, 793, 672, 34, 221, 32, 700, 31, 792,
788, 1, 76, 113, 208, 16, 25, 3, 785, 782,
781, 774, 773, 771, 7, 770, 617, 30, 24, 769,
437, 45, 47, 273, 41, 19, 768, 554, 20, 620,
767, 556, 765, 762, 12, 761, 124, 760, 40, 13,
758, 46, 4, 2, 28, 756, 766, 755, 10, 18,
752, 751, 26, 750, 749, 736, 15, 35, 735, 733,
38, 732, 29, 727, 612, 48, 21, 721, 720, 719,
717, 42, 712, 708, 707, 9, 84, 702, 14, 698,
0, 67, 49, 22, 6, 23, 17, 8, 697, 5,
37, 11, 696, 695, 694, 687, 406, 36, 686, 33,
27, 684, 682, 681, 680, 677, 671, 50, 44, 667,
43, 666, 58, 662, 659, 658, 657, 654, 652, 650,
649, 646, 645, 644, 641, 640, 639, 638, 39, 637,
626, 624,
}
var yyR1 = [...]int{
0, 112, 114, 114, 116, 113, 115, 115, 119, 119,
119, 120, 120, 121, 121, 2, 2, 2, 117, 123,
123, 124, 118, 50, 50, 50, 50, 50, 74, 74,
74, 74, 74, 74, 74, 74, 74, 74, 126, 70,
70, 70, 75, 75, 76, 76, 76, 36, 48, 44,
44, 44, 44, 44, 44, 9, 9, 9, 9, 127,
11, 128, 10, 62, 62, 129, 53, 42, 42, 42,
22, 22, 22, 21, 130, 23, 24, 24, 131, 132,
133, 25, 134, 63, 64, 64, 65, 65, 135, 136,
45, 137, 43, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 46, 46, 46, 46, 46, 46,
46, 46, 46, 41, 41, 41, 40, 40, 40, 40,
40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
49, 28, 16, 16, 15, 15, 39, 39, 17, 17,
31, 1, 1, 33, 34, 37, 37, 3, 3, 3,
91, 91, 30, 29, 81, 81, 7, 7, 7, 7,
7, 7, 32, 32, 32, 32, 87, 87, 87, 87,
87, 79, 79, 80, 89, 89, 89, 89, 89, 12,
12, 88, 88, 88, 88, 88, 88, 88, 85, 86,
84, 84, 83, 83, 47, 18, 18, 19, 19, 90,
51, 51, 52, 52, 52, 139, 20, 20, 60, 60,
71, 71, 77, 77, 78, 78, 73, 73, 69, 69,
72, 72, 72, 72, 72, 72, 4, 4, 13, 27,
27, 27, 82, 8, 8, 8, 8, 68, 68, 67,
67, 6, 6, 6, 6, 6, 26, 26, 26, 26,
26, 140, 26, 26, 26, 26, 26, 26, 26, 26,
66, 66, 55, 55, 54, 54, 56, 56, 59, 59,
57, 57, 57, 57, 58, 58, 122, 122, 138, 138,
35, 35, 61, 61, 38, 38, 101, 101, 105, 105,
103, 103, 5, 5, 141, 141, 141, 141, 141, 141,
92, 108, 106, 106, 106, 111, 111, 107, 107, 107,
107, 107, 107, 107, 107, 107, 107, 107, 110, 109,
95, 95, 97, 96, 96, 99, 99, 98, 98, 94,
94, 94, 93, 93, 125, 125, 100, 100, 104, 104,
102, 102,
}
var yyR2 = [...]int{
0, 4, 0, 3, 0, 3, 0, 3, 2, 5,
3, 3, 2, 1, 3, 1, 2, 2, 4, 0,
1, 0, 4, 0, 1, 1, 1, 1, 2, 5,
3, 2, 5, 7, 3, 2, 5, 3, 1, 2,
4, 3, 4, 3, 1, 2, 1, 1, 2, 1,
3, 3, 3, 2, 2, 3, 5, 5, 2, 0,
4, 0, 3, 0, 2, 0, 4, 4, 4, 2,
5, 1, 1, 2, 0, 3, 1, 3, 0, 0,
0, 8, 0, 5, 0, 2, 0, 2, 0, 0,
7, 0, 5, 1, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 1, 2, 2, 2, 2, 2,
2, 2, 2, 3, 5, 6, 1, 1, 3, 5,
5, 4, 6, 8, 1, 5, 5, 5, 7, 1,
0, 3, 1, 4, 1, 4, 1, 3, 1, 1,
1, 1, 1, 1, 1, 0, 1, 1, 1, 1,
4, 4, 1, 1, 1, 2, 1, 1, 1, 1,
1, 3, 1, 1, 1, 2, 1, 1, 1, 1,
3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3, 4, 4, 2, 3, 5, 1, 1, 2, 3,
5, 3, 5, 3, 3, 5, 8, 5, 8, 5,
0, 3, 0, 1, 3, 1, 4, 2, 0, 3,
1, 3, 1, 3, 1, 3, 1, 3, 1, 3,
3, 2, 4, 3, 5, 5, 1, 3, 1, 2,
1, 3, 4, 1, 2, 2, 1, 1, 3, 0,
2, 0, 1, 1, 1, 1, 1, 1, 1, 1,
1, 0, 4, 1, 2, 2, 2, 2, 2, 2,
1, 3, 1, 3, 1, 3, 1, 3, 1, 3,
1, 1, 3, 3, 0, 2, 0, 1, 0, 1,
0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
0, 1, 0, 1, 4, 4, 5, 6, 4, 4,
1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
4, 5, 4, 4, 2, 2, 4, 3, 3, 5,
3, 4, 3, 5, 1, 0, 1, 3, 1, 1,
2, 1, 1, 5, 0, 2, 1, 3, 1, 3,
1, 3,
}
var yyChk = [...]int{
-1000, -112, -113, -116, -114, 26, -117, 26, -115, -3,
25, -91, 74, 75, -118, -124, 25, -60, -119, 22,
63, 4, -125, -123, 25, -50, -74, -47, -26, 2,
33, -126, 32, 18, -44, -23, -45, -43, -25, -29,
16, 7, 11, 19, 14, 20, 28, 10, -14, -56,
17, 31, 29, 21, -33, -46, -3, -39, 54, 57,
50, 51, 70, 71, 53, 37, -40, 60, 4, -30,
-41, -79, -80, -20, -90, -88, -139, 72, 9, 24,
-84, -83, 30, 23, 63, -120, 60, -2, 4, -3,
64, 64, 65, -141, 22, 33, 10, 32, 18, 63,
63, -70, 60, -54, -34, -3, -75, 60, -54, -48,
60, -36, -3, -18, 60, -3, 67, -37, -33, -3,
-37, -41, -39, -3, 18, -41, -33, -61, -56, -14,
5, 43, 38, 48, 34, 39, 47, 46, 44, 40,
41, 50, 51, 52, 53, 54, 55, 56, 57, 35,
45, 49, 37, 66, 6, 76, -130, -135, -137, -131,
60, 64, 72, -46, -46, -46, -46, -46, -46, -46,
-46, 68, -17, -14, -32, -86, -90, -88, 54, 37,
60, -1, 36, 68, -1, 2, -35, 12, -14, -87,
37, -90, -88, -85, -12, 60, 54, -30, 72, -1,
-1, -121, 61, -120, -117, -118, 4, 4, 25, 74,
65, 25, -92, -91, -92, -108, -92, -19, -92, 60,
-71, 61, -70, -7, 66, 76, -86, -90, -88, -85,
-12, 60, 37, -75, 61, -7, 66, -78, 61, -48,
-7, -51, 68, -67, -68, -8, -31, -3, -81, -7,
12, 60, -140, 60, -14, -14, -14, -14, -14, -14,
-14, -14, -14, -14, -14, -14, -14, -14, -14, -14,
-14, -14, -14, -14, -14, -56, -56, -14, -21, -22,
-38, -42, -44, -56, 27, -24, -38, 36, -24, 61,
-59, -17, -3, 60, -14, -35, -49, 61, -32, 9,
-14, -49, -66, -6, -11, -74, -26, 2, 68, 73,
73, -7, -7, -7, 64, -7, -73, 69, -72, -55,
-13, 60, 54, -33, -4, 25, -69, 69, -27, -33,
-4, 60, -122, 63, -118, 4, -106, -107, -110, -109,
-91, 25, 72, 24, 30, 23, 54, 9, 37, 18,
66, -106, -106, -51, 60, -100, -95, -3, -122, 63,
66, -56, -34, -7, 9, -122, 63, 66, -56, -122,
63, -66, 61, 76, -138, -31, -81, -7, -67, -6,
-67, -53, 36, 63, 66, 6, -14, -136, 63, -62,
-132, -138, 12, 76, -17, 32, 73, 67, -58, -57,
-28, -16, -15, -14, 68, 68, 37, -7, -90, -88,
-85, -12, 60, -138, 76, -58, 69, 63, -127, -7,
-7, 61, -3, 73, -122, 63, -7, 76, -5, 4,
-13, 54, 25, -13, 60, 64, -122, 63, -82, 60,
-4, 61, -120, 63, 63, 73, 4, 72, 68, 68,
-106, -111, 60, 37, -107, -109, 9, 60, -93, -94,
60, 4, 51, -3, 66, 63, 63, -101, -100, 61,
76, -106, 12, 61, -70, -56, 61, 61, -77, -76,
-75, -54, -56, 61, -48, 69, -3, -52, -89, 60,
-86, -90, -88, -85, -12, -8, 61, 61, -129, -38,
27, 27, 36, -38, -10, 69, -9, 8, 13, -53,
61, -138, -17, 61, 61, -35, 69, 76, -138, 67,
-49, -49, -7, 61, 69, -6, -66, -7, 69, -72,
-5, -33, 61, -13, -5, -13, -3, 69, -27, -67,
61, -106, 73, -106, -105, -104, -97, -3, -103, -102,
-96, -3, -106, 25, -91, -110, -106, -106, -101, 63,
-94, 4, -93, 61, -3, -95, -5, -106, -122, 63,
-7, 60, -67, -52, -66, 63, -14, -14, -62, -128,
-59, 67, -133, 61, 73, 67, -28, -16, -15, -14,
68, -58, -58, 61, 69, -5, 61, 61, 61, -106,
73, 69, 63, -106, 69, 63, 60, 61, 61, 50,
63, -99, -98, 60, -106, 60, -5, 61, -76, -67,
61, 69, -38, 69, -66, 67, 66, 6, 76, -64,
-35, -49, 69, 69, -5, -5, -52, -106, -97, -5,
-96, -101, -99, -94, -101, -101, 61, -14, -14, -65,
-63, 15, 73, -58, 61, 61, 61, 61, -52, 67,
67, 21, -11, 69, -99, -99, -134, -24, -53,
}
var yyDef = [...]int{
4, -2, 2, 0, 6, 0, 21, 0, 218, 0,
157, 158, 159, 0, 5, 344, 19, -2, 0, 0,
3, 0, 0, 0, 20, 0, 24, 25, 26, 27,
0, 0, 0, 0, 256, 257, 258, 259, 260, 0,
263, 155, 155, 0, 0, 0, 292, 38, -2, 0,
74, 88, 91, 78, 163, 93, -2, 114, 0, 0,
0, 0, 0, 0, 0, 0, 146, 0, 126, 127,
134, 0, 0, 139, -2, -2, 0, 290, 0, 0,
196, 197, 0, 0, 7, 8, 0, 21, 15, 0,
0, 0, 0, 345, 0, 0, 0, 0, 0, 18,
219, 28, 0, 0, 274, 154, 31, 0, 0, 35,
0, 0, 47, 210, 249, 0, 261, 264, 156, 153,
265, -2, 0, 162, 0, -2, 268, 269, 293, 276,
0, 53, 54, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 294, 294, 0, 294,
0, 0, 290, 115, 116, 117, 118, 119, 120, 121,
122, 140, 0, 148, 149, 172, -2, -2, 0, 0,
0, 140, 151, 152, -2, 217, 0, 0, 291, 193,
0, 176, 177, 178, 179, 0, 0, 189, 0, 0,
0, 286, 10, 13, 21, 12, 16, 17, 160, 161,
22, 0, 0, 310, 0, 0, 311, 210, 0, 0,
286, 30, 220, 39, 0, 0, 166, 167, 168, 169,
170, 0, 0, 286, 34, 0, 0, 286, 37, 224,
48, 204, -2, 0, 288, 247, 243, 162, 246, 150,
164, 249, -2, 249, 50, 94, 95, 96, 97, 98,
99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
109, 110, 111, 112, 113, 51, 52, 277, 75, 0,
71, 72, 295, 0, 0, 89, 76, 63, 79, 123,
288, 278, 128, 0, 291, 0, 284, 147, 175, 0,
288, 284, 0, 270, 252, 253, 254, 255, 59, 0,
0, 194, 0, 198, 0, 0, 286, 201, 226, 0,
302, 0, 0, 272, 238, -2, 286, 203, 228, 0,
240, 0, 0, 287, 11, 0, 0, 312, 313, 314,
317, 318, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 296, 0, 346, 0, 0, 287,
0, 41, 275, 0, 0, 0, 287, 0, 43, 0,
287, 0, 212, 289, 250, 244, 245, 165, 0, 262,
0, 73, 65, 294, 0, 0, 69, 0, 294, 0,
0, 0, 288, 289, 0, 0, 131, 290, 0, 288,
280, 281, 0, -2, 140, 140, 0, 199, -2, -2,
-2, -2, 0, 0, 289, 0, 216, -2, -2, 191,
192, 180, 190, 0, 0, 287, 302, 0, 231, 303,
0, 0, 236, 302, 0, 0, 0, 287, 239, 249,
0, 9, 14, 304, 305, 0, 0, 0, 298, 300,
324, 325, 0, 0, 315, 316, 0, 296, 0, 342,
0, 339, 0, 341, 0, 308, 309, 0, 297, 0,
0, 302, 0, 29, 221, 40, 171, 32, 286, 222,
44, 46, 42, 36, 225, 211, 162, 209, 213, 249,
184, 185, 186, 187, 188, 248, 212, 212, -2, 0,
0, 0, 63, 77, 64, 92, 61, 0, 0, 80,
124, 0, 279, 129, 130, 0, 137, 289, 285, 0,
284, 284, 0, 135, 136, 271, 0, 195, 200, 227,
230, 273, 302, 0, 233, 0, 237, 202, 229, 0,
241, 319, 0, 0, 0, 299, 348, 0, 0, 301,
350, 0, 334, -2, -2, 0, 327, 328, 0, 306,
0, 340, 0, 335, 0, 347, 330, 302, 0, 287,
45, 249, 0, 205, 0, 294, 67, 68, 0, -2,
0, 58, 84, 125, 132, 290, 282, 283, 141, 144,
140, 0, 0, -2, 60, 232, 302, 302, 212, 320,
0, 322, 0, 302, 323, 0, 296, 326, 335, 0,
307, 207, 336, 296, 338, 296, 331, 33, 223, 0,
214, 66, 70, 90, 62, 55, 0, 0, 0, 86,
0, 284, -2, 138, 234, 235, 242, 321, 349, 332,
351, 0, 329, 0, 0, 0, 212, 0, 0, 81,
85, 0, 133, 0, 335, 343, 337, 335, 206, 56,
57, 82, 87, 145, 333, 208, 294, 0, 83,
}
var yyTok1 = [...]int{
1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 70, 3, 3, 65, 56, 57, 3,
60, 61, 54, 50, 76, 51, 64, 55, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 67, 63,
3, 66, 3, 74, 75, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 72, 3, 73, 53, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 68, 52, 69, 71,
}
var yyTok2 = [...]int{
2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
42, 43, 44, 45, 46, 47, 48, 49, 58, 59,
62,
}
var yyTok3 = [...]int{
0,
}
var yyErrorMessages = [...]struct {
state int
token int
msg string
}{
{332, 76, "unexpected comma during import block"},
{89, 63, "missing import path; require quoted string"},
{390, 63, "missing { after if clause"},
{387, 63, "missing { after switch clause"},
{279, 63, "missing { after for clause"},
{499, 36, "missing { after for clause"},
{17, 68, "unexpected semicolon or newline before {"},
{111, 63, "unexpected semicolon or newline in type declaration"},
{78, 69, "unexpected } in channel type"},
{78, 61, "unexpected ) in channel type"},
{78, 76, "unexpected comma in channel type"},
{417, 15, "unexpected semicolon or newline before else"},
{329, 76, "name list not allowed in interface type"},
{279, 33, "var declaration not allowed in for initializer"},
{25, 68, "unexpected { at end of statement"},
{371, 68, "unexpected { at end of statement"},
{122, 63, "argument to go/defer must be function call"},
{398, 63, "need trailing comma before newline in composite literal"},
{415, 63, "need trailing comma before newline in composite literal"},
{124, 25, "nested func not allowed"},
{651, 63, "else must be followed by if or statement block"},
}
//line yaccpar:1
/* parser for yacc output */
var (
yyDebug = 0
yyErrorVerbose = false
)
type yyLexer interface {
Lex(lval *yySymType) int
Error(s string)
}
type yyParser interface {
Parse(yyLexer) int
Lookahead() int
}
type yyParserImpl struct {
lookahead func() int
}
func (p *yyParserImpl) Lookahead() int {
return p.lookahead()
}
func yyNewParser() yyParser {
p := &yyParserImpl{
lookahead: func() int { return -1 },
}
return p
}
const yyFlag = -1000
func yyTokname(c int) string {
if c >= 1 && c-1 < len(yyToknames) {
if yyToknames[c-1] != "" {
return yyToknames[c-1]
}
}
return __yyfmt__.Sprintf("tok-%v", c)
}
func yyStatname(s int) string {
if s >= 0 && s < len(yyStatenames) {
if yyStatenames[s] != "" {
return yyStatenames[s]
}
}
return __yyfmt__.Sprintf("state-%v", s)
}
func yyErrorMessage(state, lookAhead int) string {
const TOKSTART = 4
if !yyErrorVerbose {
return "syntax error"
}
for _, e := range yyErrorMessages {
if e.state == state && e.token == lookAhead {
return "syntax error: " + e.msg
}
}
res := "syntax error: unexpected " + yyTokname(lookAhead)
// To match Bison, suggest at most four expected tokens.
expected := make([]int, 0, 4)
// Look for shiftable tokens.
base := yyPact[state]
for tok := TOKSTART; tok-1 < len(yyToknames); tok++ {
if n := base + tok; n >= 0 && n < yyLast && yyChk[yyAct[n]] == tok {
if len(expected) == cap(expected) {
return res
}
expected = append(expected, tok)
}
}
if yyDef[state] == -2 {
i := 0
for yyExca[i] != -1 || yyExca[i+1] != state {
i += 2
}
// Look for tokens that we accept or reduce.
for i += 2; yyExca[i] >= 0; i += 2 {
tok := yyExca[i]
if tok < TOKSTART || yyExca[i+1] == 0 {
continue
}
if len(expected) == cap(expected) {
return res
}
expected = append(expected, tok)
}
// If the default action is to accept or reduce, give up.
if yyExca[i+1] != 0 {
return res
}
}
for i, tok := range expected {
if i == 0 {
res += ", expecting "
} else {
res += " or "
}
res += yyTokname(tok)
}
return res
}
func yylex1(lex yyLexer, lval *yySymType) (char, token int) {
token = 0
char = lex.Lex(lval)
if char <= 0 {
token = yyTok1[0]
goto out
}
if char < len(yyTok1) {
token = yyTok1[char]
goto out
}
if char >= yyPrivate {
if char < yyPrivate+len(yyTok2) {
token = yyTok2[char-yyPrivate]
goto out
}
}
for i := 0; i < len(yyTok3); i += 2 {
token = yyTok3[i+0]
if token == char {
token = yyTok3[i+1]
goto out
}
}
out:
if token == 0 {
token = yyTok2[1] /* unknown char */
}
if yyDebug >= 3 {
__yyfmt__.Printf("lex %s(%d)\n", yyTokname(token), uint(char))
}
return char, token
}
func yyParse(yylex yyLexer) int {
return yyNewParser().Parse(yylex)
}
func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int {
var yyn int
var yylval yySymType
var yyVAL yySymType
var yyDollar []yySymType
_ = yyDollar // silence set and not used
yyS := make([]yySymType, yyMaxDepth)
Nerrs := 0 /* number of errors */
Errflag := 0 /* error recovery flag */
yystate := 0
yychar := -1
yytoken := -1 // yychar translated into internal numbering
yyrcvr.lookahead = func() int { return yychar }
defer func() {
// Make sure we report no lookahead when not parsing.
yystate = -1
yychar = -1
yytoken = -1
}()
yyp := -1
goto yystack
ret0:
return 0
ret1:
return 1
yystack:
/* put a state and value onto the stack */
if yyDebug >= 4 {
__yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate))
}
yyp++
if yyp >= len(yyS) {
nyys := make([]yySymType, len(yyS)*2)
copy(nyys, yyS)
yyS = nyys
}
yyS[yyp] = yyVAL
yyS[yyp].yys = yystate
yynewstate:
yyn = yyPact[yystate]
if yyn <= yyFlag {
goto yydefault /* simple state */
}
if yychar < 0 {
yychar, yytoken = yylex1(yylex, &yylval)
}
yyn += yytoken
if yyn < 0 || yyn >= yyLast {
goto yydefault
}
yyn = yyAct[yyn]
if yyChk[yyn] == yytoken { /* valid shift */
yychar = -1
yytoken = -1
yyVAL = yylval
yystate = yyn
if Errflag > 0 {
Errflag--
}
goto yystack
}
yydefault:
/* default state action */
yyn = yyDef[yystate]
if yyn == -2 {
if yychar < 0 {
yychar, yytoken = yylex1(yylex, &yylval)
}
/* look through exception table */
xi := 0
for {
if yyExca[xi+0] == -1 && yyExca[xi+1] == yystate {
break
}
xi += 2
}
for xi += 2; ; xi += 2 {
yyn = yyExca[xi+0]
if yyn < 0 || yyn == yytoken {
break
}
}
yyn = yyExca[xi+1]
if yyn < 0 {
goto ret0
}
}
if yyn == 0 {
/* error ... attempt to resume parsing */
switch Errflag {
case 0: /* brand new error */
yylex.Error(yyErrorMessage(yystate, yytoken))
Nerrs++
if yyDebug >= 1 {
__yyfmt__.Printf("%s", yyStatname(yystate))
__yyfmt__.Printf(" saw %s\n", yyTokname(yytoken))
}
fallthrough
case 1, 2: /* incompletely recovered error ... try again */
Errflag = 3
/* find a state where "error" is a legal shift action */
for yyp >= 0 {
yyn = yyPact[yyS[yyp].yys] + yyErrCode
if yyn >= 0 && yyn < yyLast {
yystate = yyAct[yyn] /* simulate a shift of "error" */
if yyChk[yystate] == yyErrCode {
goto yystack
}
}
/* the current p has no shift on "error", pop stack */
if yyDebug >= 2 {
__yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys)
}
yyp--
}
/* there is no state on the stack with an error shift ... abort */
goto ret1
case 3: /* no shift yet; clobber input char */
if yyDebug >= 2 {
__yyfmt__.Printf("error recovery discards %s\n", yyTokname(yytoken))
}
if yytoken == yyEofCode {
goto ret1
}
yychar = -1
yytoken = -1
goto yynewstate /* try again in the same state */
}
}
/* reduction by production yyn */
if yyDebug >= 2 {
__yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate))
}
yynt := yyn
yypt := yyp
_ = yypt // guard against "declared and not used"
yyp -= yyR2[yyn]
// yyp is now the index of $0. Perform the default action. Iff the
// reduced production is ε, $1 is possibly out of range.
if yyp+1 >= len(yyS) {
nyys := make([]yySymType, len(yyS)*2)
copy(nyys, yyS)
yyS = nyys
}
yyVAL = yyS[yyp+1]
/* consult goto table to find next state */
yyn = yyR1[yyn]
yyg := yyPgo[yyn]
yyj := yyg + yyS[yyp].yys + 1
if yyj >= yyLast {
yystate = yyAct[yyg]
} else {
yystate = yyAct[yyj]
if yyChk[yystate] != -yyn {
yystate = yyAct[yyg]
}
}
// dummy call; replaced with literal code
switch yynt {
case 1:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:189
{
xtop = concat(xtop, yyDollar[4].list)
}
case 2:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:195
{
prevlineno = lineno
Yyerror("package statement must be first")
errorexit()
}
case 3:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:201
{
mkpackage(yyDollar[2].sym.Name)
}
case 4:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:211
{
importpkg = Runtimepkg
if Debug['A'] != 0 {
cannedimports("runtime.Builtin", "package runtime\n\n$$\n\n")
} else {
cannedimports("runtime.Builtin", runtimeimport)
}
curio.importsafe = true
}
case 5:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:223
{
importpkg = nil
}
case 11:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:237
{
ipkg := importpkg
my := importmyname
importpkg = nil
importmyname = nil
if my == nil {
my = Lookup(ipkg.Name)
}
pack := Nod(OPACK, nil, nil)
pack.Sym = my
pack.Name.Pkg = ipkg
pack.Lineno = int32(yyDollar[1].i)
if strings.HasPrefix(my.Name, ".") {
importdot(ipkg, pack)
break
}
if my.Name == "init" {
cmd/compile/internal/gc: compact binary export format The binary import/export format is significantly more compact than the existing textual format. It should also be faster to read and write (to be measured). Use -newexport to enable, for instance: export GO_GCFLAGS=-newexport; make.bash The compiler can import packages using both the old and the new format ("mixed mode"). Missing: export info for inlined functions bodies (performance issue, does not affect correctness). Disabled by default until we have inlined function bodies and confirmation of no regression and equality of binaries. For #6110. For #1909. This change depends on: https://go-review.googlesource.com/16220 https://go-review.googlesource.com/16222 (already submitted) for all.bash to work. Some initial export data sizes for std lib packages. This data is without exported functions with inlineable function bodies. Package old new new/old archive/tar.................................13875.....3883 28% archive/zip.................................19464.....5046 26% bufio....................................... 7733.....2222 29% bytes.......................................10342.....3347 32% cmd/addr2line.................................242.......26 11% cmd/api.....................................39305....10368 26% cmd/asm/internal/arch.......................27732.....7939 29% cmd/asm/internal/asm........................35264....10295 29% cmd/asm/internal/flags........................629......178 28% cmd/asm/internal/lex........................39248....11128 28% cmd/asm.......................................306.......26 8% cmd/cgo.....................................40197....10570 26% cmd/compile/internal/amd64...................1106......214 19% cmd/compile/internal/arm....................27891.....7710 28% cmd/compile/internal/arm64....................891......153 17% cmd/compile/internal/big....................21637.....8336 39% cmd/compile/internal/gc....................109845....29727 27% cmd/compile/internal/mips64...................972......168 17% cmd/compile/internal/ppc64....................972......168 17% cmd/compile/internal/x86.....................1104......195 18% cmd/compile...................................329.......26 8% cmd/cover...................................12986.....3749 29% cmd/dist......................................477.......67 14% cmd/doc.....................................23043.....6793 29% cmd/expdump...................................167.......26 16% cmd/fix......................................1190......208 17% cmd/go......................................26399.....5629 21% cmd/gofmt.....................................499.......26 5% cmd/internal/gcprog..........................1342......490 37% cmd/internal/goobj...........................2690......980 36% cmd/internal/obj/arm........................32740....10057 31% cmd/internal/obj/arm64......................46542....15364 33% cmd/internal/obj/mips.......................42140....13731 33% cmd/internal/obj/ppc64......................42140....13731 33% cmd/internal/obj/x86........................52732....19015 36% cmd/internal/obj............................36729....11690 32% cmd/internal/objfile........................36365....10287 28% cmd/link/internal/amd64.....................45893....12220 27% cmd/link/internal/arm.........................307.......96 31% cmd/link/internal/arm64.......................345.......98 28% cmd/link/internal/ld.......................109300....46326 42% cmd/link/internal/ppc64.......................344.......99 29% cmd/link/internal/x86.........................334......107 32% cmd/link......................................314.......26 8% cmd/newlink..................................8110.....2544 31% cmd/nm........................................210.......26 12% cmd/objdump...................................244.......26 11% cmd/pack....................................14248.....4066 29% cmd/pprof/internal/commands..................5239.....1285 25% cmd/pprof/internal/driver...................37967.....8860 23% cmd/pprof/internal/fetch....................30962.....7337 24% cmd/pprof/internal/plugin...................47734.....7719 16% cmd/pprof/internal/profile..................22286.....6922 31% cmd/pprof/internal/report...................31187.....7838 25% cmd/pprof/internal/svg.......................4315......965 22% cmd/pprof/internal/symbolizer...............30051.....7397 25% cmd/pprof/internal/symbolz..................28545.....6949 24% cmd/pprof/internal/tempfile.................12550.....3356 27% cmd/pprof.....................................563.......26 5% cmd/trace....................................1455......636 44% cmd/vendor/golang.org/x/arch/arm/armasm....168035....64737 39% cmd/vendor/golang.org/x/arch/x86/x86asm.....26871.....8578 32% cmd/vet.....................................38980.....9913 25% cmd/vet/whitelist.............................102.......49 48% cmd/yacc.....................................2518......926 37% compress/bzip2...............................6326......129 2% compress/flate...............................7069.....2541 36% compress/gzip...............................20143.....5069 25% compress/lzw..................................828......295 36% compress/zlib...............................10676.....2692 25% container/heap................................523......181 35% container/list...............................3517......740 21% container/ring................................881......229 26% crypto/aes....................................550......187 34% crypto/cipher................................1966......825 42% crypto.......................................1836......646 35% crypto/des....................................632......235 37% crypto/dsa..................................18718.....5035 27% crypto/ecdsa................................23131.....6097 26% crypto/elliptic.............................20790.....5740 28% crypto/hmac...................................455......186 41% crypto/md5...................................1375......171 12% crypto/rand.................................18132.....4748 26% crypto/rc4....................................561......240 43% crypto/rsa..................................22094.....6380 29% crypto/sha1..................................1416......172 12% crypto/sha256.................................551......238 43% crypto/sha512.................................839......378 45% crypto/subtle................................1153......250 22% crypto/tls..................................58203....17984 31% crypto/x509/pkix............................29447.....8161 28% database/sql/driver..........................3318.....1096 33% database/sql................................11258.....3942 35% debug/dwarf.................................18416.....7006 38% debug/elf...................................57530....21014 37% debug/gosym..................................4992.....2058 41% debug/macho.................................23037.....6538 28% debug/pe....................................21063.....6619 31% debug/plan9obj...............................2467......802 33% encoding/ascii85.............................1523......360 24% encoding/asn1................................1718......527 31% encoding/base32..............................2642......686 26% encoding/base64..............................3077......800 26% encoding/binary..............................4727.....1040 22% encoding/csv................................12223.....2850 23% encoding......................................383......217 57% encoding/gob................................37563....10113 27% encoding/hex.................................1327......390 29% encoding/json...............................30897.....7804 25% encoding/pem..................................595......200 34% encoding/xml................................37798.....9336 25% errors........................................274.......36 13% expvar.......................................3155.....1021 32% flag........................................19860.....2849 14% fmt..........................................3137.....1263 40% go/ast......................................44729....13422 30% go/build....................................16336.....4657 29% go/constant..................................3703......846 23% go/doc.......................................9877.....2807 28% go/format....................................5472.....1575 29% go/importer..................................4980.....1301 26% go/internal/gccgoimporter....................5587.....1525 27% go/internal/gcimporter.......................8979.....2186 24% go/parser...................................20692.....5304 26% go/printer...................................7015.....2029 29% go/scanner...................................9719.....2824 29% go/token.....................................7933.....2465 31% go/types....................................64569....19978 31% hash/adler32.................................1176......176 15% hash/crc32...................................1663......360 22% hash/crc64...................................1587......306 19% hash/fnv.....................................3964......260 7% hash..........................................591......278 47% html..........................................217.......74 34% html/template...............................69623....12588 18% image/color/palette...........................315.......98 31% image/color..................................5565.....1036 19% image/draw...................................6917.....1028 15% image/gif....................................8894.....1654 19% image/internal/imageutil.....................9112.....1476 16% image/jpeg...................................6647.....1026 15% image/png....................................6906.....1069 15% image.......................................28992.....6139 21% index/suffixarray...........................17106.....4773 28% internal/singleflight........................1614......506 31% internal/testenv............................12212.....3152 26% internal/trace...............................2762.....1323 48% io/ioutil...................................13502.....3682 27% io...........................................6765.....2482 37% log.........................................11620.....3317 29% log/syslog..................................13516.....3821 28% math/big....................................21819.....8320 38% math/cmplx...................................2816......438 16% math/rand....................................2317......929 40% math.........................................7511.....2444 33% mime/multipart..............................12679.....3360 27% mime/quotedprintable.........................5458.....1235 23% mime.........................................6076.....1628 27% net/http/cgi................................59796....17173 29% net/http/cookiejar..........................14781.....3739 25% net/http/fcgi...............................57861....16426 28% net/http/httptest...........................84100....24365 29% net/http/httputil...........................67763....18869 28% net/http/internal............................6907......637 9% net/http/pprof..............................57945....16316 28% net/http....................................95391....30210 32% net/internal/socktest........................4555.....1453 32% net/mail....................................14481.....3608 25% net/rpc/jsonrpc.............................33335......988 3% net/rpc.....................................79950....23106 29% net/smtp....................................57790....16468 28% net/textproto...............................11356.....3248 29% net/url......................................3123.....1009 32% os/exec.....................................20738.....5769 28% os/signal.....................................437......167 38% os..........................................24875.....6668 27% path/filepath...............................11340.....2826 25% path..........................................778......285 37% reflect.....................................15469.....5198 34% regexp......................................13627.....4661 34% regexp/syntax................................5539.....2249 41% runtime/debug................................9275.....2322 25% runtime/pprof................................1355......477 35% runtime/race...................................39.......17 44% runtime/trace.................................228.......92 40% runtime.....................................13498.....1821 13% sort.........................................2848......842 30% strconv......................................2947.....1252 42% strings......................................7983.....2456 31% sync/atomic..................................2666.....1149 43% sync.........................................2568......845 33% syscall.....................................81252....38398 47% testing/iotest...............................2444......302 12% testing/quick...............................18890.....5076 27% testing.....................................16502.....4800 29% text/scanner.................................6849.....2052 30% text/tabwriter...............................6607.....1863 28% text/template/parse.........................22978.....6183 27% text/template...............................64153....11518 18% time........................................12103.....3546 29% unicode......................................9706.....3320 34% unicode/utf16................................1055......148 14% unicode/utf8.................................1118......513 46% vendor/golang.org/x/net/http2/hpack..........8905.....2636 30% All packages 3518505 1017774 29% Change-Id: Id657334f276383ff1e6fa91472d3d1db5a03349c Reviewed-on: https://go-review.googlesource.com/13937 Run-TryBot: Robert Griesemer <gri@golang.org> Reviewed-by: Chris Manghane <cmang@golang.org>
2015-08-13 19:05:37 -07:00
lineno = int32(yyDollar[1].i)
Yyerror("cannot import package as init - init must be a func")
break
}
if my.Name == "_" {
break
}
if my.Def != nil {
lineno = int32(yyDollar[1].i)
redeclare(my, "as imported package name")
}
my.Def = pack
my.Lastlineno = int32(yyDollar[1].i)
my.Block = 1 // at top level
}
case 12:
yyDollar = yyS[yypt-2 : yypt+1]
cmd/compile/internal/gc: compact binary export format The binary import/export format is significantly more compact than the existing textual format. It should also be faster to read and write (to be measured). Use -newexport to enable, for instance: export GO_GCFLAGS=-newexport; make.bash The compiler can import packages using both the old and the new format ("mixed mode"). Missing: export info for inlined functions bodies (performance issue, does not affect correctness). Disabled by default until we have inlined function bodies and confirmation of no regression and equality of binaries. For #6110. For #1909. This change depends on: https://go-review.googlesource.com/16220 https://go-review.googlesource.com/16222 (already submitted) for all.bash to work. Some initial export data sizes for std lib packages. This data is without exported functions with inlineable function bodies. Package old new new/old archive/tar.................................13875.....3883 28% archive/zip.................................19464.....5046 26% bufio....................................... 7733.....2222 29% bytes.......................................10342.....3347 32% cmd/addr2line.................................242.......26 11% cmd/api.....................................39305....10368 26% cmd/asm/internal/arch.......................27732.....7939 29% cmd/asm/internal/asm........................35264....10295 29% cmd/asm/internal/flags........................629......178 28% cmd/asm/internal/lex........................39248....11128 28% cmd/asm.......................................306.......26 8% cmd/cgo.....................................40197....10570 26% cmd/compile/internal/amd64...................1106......214 19% cmd/compile/internal/arm....................27891.....7710 28% cmd/compile/internal/arm64....................891......153 17% cmd/compile/internal/big....................21637.....8336 39% cmd/compile/internal/gc....................109845....29727 27% cmd/compile/internal/mips64...................972......168 17% cmd/compile/internal/ppc64....................972......168 17% cmd/compile/internal/x86.....................1104......195 18% cmd/compile...................................329.......26 8% cmd/cover...................................12986.....3749 29% cmd/dist......................................477.......67 14% cmd/doc.....................................23043.....6793 29% cmd/expdump...................................167.......26 16% cmd/fix......................................1190......208 17% cmd/go......................................26399.....5629 21% cmd/gofmt.....................................499.......26 5% cmd/internal/gcprog..........................1342......490 37% cmd/internal/goobj...........................2690......980 36% cmd/internal/obj/arm........................32740....10057 31% cmd/internal/obj/arm64......................46542....15364 33% cmd/internal/obj/mips.......................42140....13731 33% cmd/internal/obj/ppc64......................42140....13731 33% cmd/internal/obj/x86........................52732....19015 36% cmd/internal/obj............................36729....11690 32% cmd/internal/objfile........................36365....10287 28% cmd/link/internal/amd64.....................45893....12220 27% cmd/link/internal/arm.........................307.......96 31% cmd/link/internal/arm64.......................345.......98 28% cmd/link/internal/ld.......................109300....46326 42% cmd/link/internal/ppc64.......................344.......99 29% cmd/link/internal/x86.........................334......107 32% cmd/link......................................314.......26 8% cmd/newlink..................................8110.....2544 31% cmd/nm........................................210.......26 12% cmd/objdump...................................244.......26 11% cmd/pack....................................14248.....4066 29% cmd/pprof/internal/commands..................5239.....1285 25% cmd/pprof/internal/driver...................37967.....8860 23% cmd/pprof/internal/fetch....................30962.....7337 24% cmd/pprof/internal/plugin...................47734.....7719 16% cmd/pprof/internal/profile..................22286.....6922 31% cmd/pprof/internal/report...................31187.....7838 25% cmd/pprof/internal/svg.......................4315......965 22% cmd/pprof/internal/symbolizer...............30051.....7397 25% cmd/pprof/internal/symbolz..................28545.....6949 24% cmd/pprof/internal/tempfile.................12550.....3356 27% cmd/pprof.....................................563.......26 5% cmd/trace....................................1455......636 44% cmd/vendor/golang.org/x/arch/arm/armasm....168035....64737 39% cmd/vendor/golang.org/x/arch/x86/x86asm.....26871.....8578 32% cmd/vet.....................................38980.....9913 25% cmd/vet/whitelist.............................102.......49 48% cmd/yacc.....................................2518......926 37% compress/bzip2...............................6326......129 2% compress/flate...............................7069.....2541 36% compress/gzip...............................20143.....5069 25% compress/lzw..................................828......295 36% compress/zlib...............................10676.....2692 25% container/heap................................523......181 35% container/list...............................3517......740 21% container/ring................................881......229 26% crypto/aes....................................550......187 34% crypto/cipher................................1966......825 42% crypto.......................................1836......646 35% crypto/des....................................632......235 37% crypto/dsa..................................18718.....5035 27% crypto/ecdsa................................23131.....6097 26% crypto/elliptic.............................20790.....5740 28% crypto/hmac...................................455......186 41% crypto/md5...................................1375......171 12% crypto/rand.................................18132.....4748 26% crypto/rc4....................................561......240 43% crypto/rsa..................................22094.....6380 29% crypto/sha1..................................1416......172 12% crypto/sha256.................................551......238 43% crypto/sha512.................................839......378 45% crypto/subtle................................1153......250 22% crypto/tls..................................58203....17984 31% crypto/x509/pkix............................29447.....8161 28% database/sql/driver..........................3318.....1096 33% database/sql................................11258.....3942 35% debug/dwarf.................................18416.....7006 38% debug/elf...................................57530....21014 37% debug/gosym..................................4992.....2058 41% debug/macho.................................23037.....6538 28% debug/pe....................................21063.....6619 31% debug/plan9obj...............................2467......802 33% encoding/ascii85.............................1523......360 24% encoding/asn1................................1718......527 31% encoding/base32..............................2642......686 26% encoding/base64..............................3077......800 26% encoding/binary..............................4727.....1040 22% encoding/csv................................12223.....2850 23% encoding......................................383......217 57% encoding/gob................................37563....10113 27% encoding/hex.................................1327......390 29% encoding/json...............................30897.....7804 25% encoding/pem..................................595......200 34% encoding/xml................................37798.....9336 25% errors........................................274.......36 13% expvar.......................................3155.....1021 32% flag........................................19860.....2849 14% fmt..........................................3137.....1263 40% go/ast......................................44729....13422 30% go/build....................................16336.....4657 29% go/constant..................................3703......846 23% go/doc.......................................9877.....2807 28% go/format....................................5472.....1575 29% go/importer..................................4980.....1301 26% go/internal/gccgoimporter....................5587.....1525 27% go/internal/gcimporter.......................8979.....2186 24% go/parser...................................20692.....5304 26% go/printer...................................7015.....2029 29% go/scanner...................................9719.....2824 29% go/token.....................................7933.....2465 31% go/types....................................64569....19978 31% hash/adler32.................................1176......176 15% hash/crc32...................................1663......360 22% hash/crc64...................................1587......306 19% hash/fnv.....................................3964......260 7% hash..........................................591......278 47% html..........................................217.......74 34% html/template...............................69623....12588 18% image/color/palette...........................315.......98 31% image/color..................................5565.....1036 19% image/draw...................................6917.....1028 15% image/gif....................................8894.....1654 19% image/internal/imageutil.....................9112.....1476 16% image/jpeg...................................6647.....1026 15% image/png....................................6906.....1069 15% image.......................................28992.....6139 21% index/suffixarray...........................17106.....4773 28% internal/singleflight........................1614......506 31% internal/testenv............................12212.....3152 26% internal/trace...............................2762.....1323 48% io/ioutil...................................13502.....3682 27% io...........................................6765.....2482 37% log.........................................11620.....3317 29% log/syslog..................................13516.....3821 28% math/big....................................21819.....8320 38% math/cmplx...................................2816......438 16% math/rand....................................2317......929 40% math.........................................7511.....2444 33% mime/multipart..............................12679.....3360 27% mime/quotedprintable.........................5458.....1235 23% mime.........................................6076.....1628 27% net/http/cgi................................59796....17173 29% net/http/cookiejar..........................14781.....3739 25% net/http/fcgi...............................57861....16426 28% net/http/httptest...........................84100....24365 29% net/http/httputil...........................67763....18869 28% net/http/internal............................6907......637 9% net/http/pprof..............................57945....16316 28% net/http....................................95391....30210 32% net/internal/socktest........................4555.....1453 32% net/mail....................................14481.....3608 25% net/rpc/jsonrpc.............................33335......988 3% net/rpc.....................................79950....23106 29% net/smtp....................................57790....16468 28% net/textproto...............................11356.....3248 29% net/url......................................3123.....1009 32% os/exec.....................................20738.....5769 28% os/signal.....................................437......167 38% os..........................................24875.....6668 27% path/filepath...............................11340.....2826 25% path..........................................778......285 37% reflect.....................................15469.....5198 34% regexp......................................13627.....4661 34% regexp/syntax................................5539.....2249 41% runtime/debug................................9275.....2322 25% runtime/pprof................................1355......477 35% runtime/race...................................39.......17 44% runtime/trace.................................228.......92 40% runtime.....................................13498.....1821 13% sort.........................................2848......842 30% strconv......................................2947.....1252 42% strings......................................7983.....2456 31% sync/atomic..................................2666.....1149 43% sync.........................................2568......845 33% syscall.....................................81252....38398 47% testing/iotest...............................2444......302 12% testing/quick...............................18890.....5076 27% testing.....................................16502.....4800 29% text/scanner.................................6849.....2052 30% text/tabwriter...............................6607.....1863 28% text/template/parse.........................22978.....6183 27% text/template...............................64153....11518 18% time........................................12103.....3546 29% unicode......................................9706.....3320 34% unicode/utf16................................1055......148 14% unicode/utf8.................................1118......513 46% vendor/golang.org/x/net/http2/hpack..........8905.....2636 30% All packages 3518505 1017774 29% Change-Id: Id657334f276383ff1e6fa91472d3d1db5a03349c Reviewed-on: https://go-review.googlesource.com/13937 Run-TryBot: Robert Griesemer <gri@golang.org> Reviewed-by: Chris Manghane <cmang@golang.org>
2015-08-13 19:05:37 -07:00
//line go.y:273
{
// When an invalid import path is passed to importfile,
// it calls Yyerror and then sets up a fake import with
// no package statement. This allows us to test more
// than one invalid import statement in a single file.
if nerrors == 0 {
Fatalf("phase error in import")
}
}
case 15:
yyDollar = yyS[yypt-1 : yypt+1]
cmd/compile/internal/gc: compact binary export format The binary import/export format is significantly more compact than the existing textual format. It should also be faster to read and write (to be measured). Use -newexport to enable, for instance: export GO_GCFLAGS=-newexport; make.bash The compiler can import packages using both the old and the new format ("mixed mode"). Missing: export info for inlined functions bodies (performance issue, does not affect correctness). Disabled by default until we have inlined function bodies and confirmation of no regression and equality of binaries. For #6110. For #1909. This change depends on: https://go-review.googlesource.com/16220 https://go-review.googlesource.com/16222 (already submitted) for all.bash to work. Some initial export data sizes for std lib packages. This data is without exported functions with inlineable function bodies. Package old new new/old archive/tar.................................13875.....3883 28% archive/zip.................................19464.....5046 26% bufio....................................... 7733.....2222 29% bytes.......................................10342.....3347 32% cmd/addr2line.................................242.......26 11% cmd/api.....................................39305....10368 26% cmd/asm/internal/arch.......................27732.....7939 29% cmd/asm/internal/asm........................35264....10295 29% cmd/asm/internal/flags........................629......178 28% cmd/asm/internal/lex........................39248....11128 28% cmd/asm.......................................306.......26 8% cmd/cgo.....................................40197....10570 26% cmd/compile/internal/amd64...................1106......214 19% cmd/compile/internal/arm....................27891.....7710 28% cmd/compile/internal/arm64....................891......153 17% cmd/compile/internal/big....................21637.....8336 39% cmd/compile/internal/gc....................109845....29727 27% cmd/compile/internal/mips64...................972......168 17% cmd/compile/internal/ppc64....................972......168 17% cmd/compile/internal/x86.....................1104......195 18% cmd/compile...................................329.......26 8% cmd/cover...................................12986.....3749 29% cmd/dist......................................477.......67 14% cmd/doc.....................................23043.....6793 29% cmd/expdump...................................167.......26 16% cmd/fix......................................1190......208 17% cmd/go......................................26399.....5629 21% cmd/gofmt.....................................499.......26 5% cmd/internal/gcprog..........................1342......490 37% cmd/internal/goobj...........................2690......980 36% cmd/internal/obj/arm........................32740....10057 31% cmd/internal/obj/arm64......................46542....15364 33% cmd/internal/obj/mips.......................42140....13731 33% cmd/internal/obj/ppc64......................42140....13731 33% cmd/internal/obj/x86........................52732....19015 36% cmd/internal/obj............................36729....11690 32% cmd/internal/objfile........................36365....10287 28% cmd/link/internal/amd64.....................45893....12220 27% cmd/link/internal/arm.........................307.......96 31% cmd/link/internal/arm64.......................345.......98 28% cmd/link/internal/ld.......................109300....46326 42% cmd/link/internal/ppc64.......................344.......99 29% cmd/link/internal/x86.........................334......107 32% cmd/link......................................314.......26 8% cmd/newlink..................................8110.....2544 31% cmd/nm........................................210.......26 12% cmd/objdump...................................244.......26 11% cmd/pack....................................14248.....4066 29% cmd/pprof/internal/commands..................5239.....1285 25% cmd/pprof/internal/driver...................37967.....8860 23% cmd/pprof/internal/fetch....................30962.....7337 24% cmd/pprof/internal/plugin...................47734.....7719 16% cmd/pprof/internal/profile..................22286.....6922 31% cmd/pprof/internal/report...................31187.....7838 25% cmd/pprof/internal/svg.......................4315......965 22% cmd/pprof/internal/symbolizer...............30051.....7397 25% cmd/pprof/internal/symbolz..................28545.....6949 24% cmd/pprof/internal/tempfile.................12550.....3356 27% cmd/pprof.....................................563.......26 5% cmd/trace....................................1455......636 44% cmd/vendor/golang.org/x/arch/arm/armasm....168035....64737 39% cmd/vendor/golang.org/x/arch/x86/x86asm.....26871.....8578 32% cmd/vet.....................................38980.....9913 25% cmd/vet/whitelist.............................102.......49 48% cmd/yacc.....................................2518......926 37% compress/bzip2...............................6326......129 2% compress/flate...............................7069.....2541 36% compress/gzip...............................20143.....5069 25% compress/lzw..................................828......295 36% compress/zlib...............................10676.....2692 25% container/heap................................523......181 35% container/list...............................3517......740 21% container/ring................................881......229 26% crypto/aes....................................550......187 34% crypto/cipher................................1966......825 42% crypto.......................................1836......646 35% crypto/des....................................632......235 37% crypto/dsa..................................18718.....5035 27% crypto/ecdsa................................23131.....6097 26% crypto/elliptic.............................20790.....5740 28% crypto/hmac...................................455......186 41% crypto/md5...................................1375......171 12% crypto/rand.................................18132.....4748 26% crypto/rc4....................................561......240 43% crypto/rsa..................................22094.....6380 29% crypto/sha1..................................1416......172 12% crypto/sha256.................................551......238 43% crypto/sha512.................................839......378 45% crypto/subtle................................1153......250 22% crypto/tls..................................58203....17984 31% crypto/x509/pkix............................29447.....8161 28% database/sql/driver..........................3318.....1096 33% database/sql................................11258.....3942 35% debug/dwarf.................................18416.....7006 38% debug/elf...................................57530....21014 37% debug/gosym..................................4992.....2058 41% debug/macho.................................23037.....6538 28% debug/pe....................................21063.....6619 31% debug/plan9obj...............................2467......802 33% encoding/ascii85.............................1523......360 24% encoding/asn1................................1718......527 31% encoding/base32..............................2642......686 26% encoding/base64..............................3077......800 26% encoding/binary..............................4727.....1040 22% encoding/csv................................12223.....2850 23% encoding......................................383......217 57% encoding/gob................................37563....10113 27% encoding/hex.................................1327......390 29% encoding/json...............................30897.....7804 25% encoding/pem..................................595......200 34% encoding/xml................................37798.....9336 25% errors........................................274.......36 13% expvar.......................................3155.....1021 32% flag........................................19860.....2849 14% fmt..........................................3137.....1263 40% go/ast......................................44729....13422 30% go/build....................................16336.....4657 29% go/constant..................................3703......846 23% go/doc.......................................9877.....2807 28% go/format....................................5472.....1575 29% go/importer..................................4980.....1301 26% go/internal/gccgoimporter....................5587.....1525 27% go/internal/gcimporter.......................8979.....2186 24% go/parser...................................20692.....5304 26% go/printer...................................7015.....2029 29% go/scanner...................................9719.....2824 29% go/token.....................................7933.....2465 31% go/types....................................64569....19978 31% hash/adler32.................................1176......176 15% hash/crc32...................................1663......360 22% hash/crc64...................................1587......306 19% hash/fnv.....................................3964......260 7% hash..........................................591......278 47% html..........................................217.......74 34% html/template...............................69623....12588 18% image/color/palette...........................315.......98 31% image/color..................................5565.....1036 19% image/draw...................................6917.....1028 15% image/gif....................................8894.....1654 19% image/internal/imageutil.....................9112.....1476 16% image/jpeg...................................6647.....1026 15% image/png....................................6906.....1069 15% image.......................................28992.....6139 21% index/suffixarray...........................17106.....4773 28% internal/singleflight........................1614......506 31% internal/testenv............................12212.....3152 26% internal/trace...............................2762.....1323 48% io/ioutil...................................13502.....3682 27% io...........................................6765.....2482 37% log.........................................11620.....3317 29% log/syslog..................................13516.....3821 28% math/big....................................21819.....8320 38% math/cmplx...................................2816......438 16% math/rand....................................2317......929 40% math.........................................7511.....2444 33% mime/multipart..............................12679.....3360 27% mime/quotedprintable.........................5458.....1235 23% mime.........................................6076.....1628 27% net/http/cgi................................59796....17173 29% net/http/cookiejar..........................14781.....3739 25% net/http/fcgi...............................57861....16426 28% net/http/httptest...........................84100....24365 29% net/http/httputil...........................67763....18869 28% net/http/internal............................6907......637 9% net/http/pprof..............................57945....16316 28% net/http....................................95391....30210 32% net/internal/socktest........................4555.....1453 32% net/mail....................................14481.....3608 25% net/rpc/jsonrpc.............................33335......988 3% net/rpc.....................................79950....23106 29% net/smtp....................................57790....16468 28% net/textproto...............................11356.....3248 29% net/url......................................3123.....1009 32% os/exec.....................................20738.....5769 28% os/signal.....................................437......167 38% os..........................................24875.....6668 27% path/filepath...............................11340.....2826 25% path..........................................778......285 37% reflect.....................................15469.....5198 34% regexp......................................13627.....4661 34% regexp/syntax................................5539.....2249 41% runtime/debug................................9275.....2322 25% runtime/pprof................................1355......477 35% runtime/race...................................39.......17 44% runtime/trace.................................228.......92 40% runtime.....................................13498.....1821 13% sort.........................................2848......842 30% strconv......................................2947.....1252 42% strings......................................7983.....2456 31% sync/atomic..................................2666.....1149 43% sync.........................................2568......845 33% syscall.....................................81252....38398 47% testing/iotest...............................2444......302 12% testing/quick...............................18890.....5076 27% testing.....................................16502.....4800 29% text/scanner.................................6849.....2052 30% text/tabwriter...............................6607.....1863 28% text/template/parse.........................22978.....6183 27% text/template...............................64153....11518 18% time........................................12103.....3546 29% unicode......................................9706.....3320 34% unicode/utf16................................1055......148 14% unicode/utf8.................................1118......513 46% vendor/golang.org/x/net/http2/hpack..........8905.....2636 30% All packages 3518505 1017774 29% Change-Id: Id657334f276383ff1e6fa91472d3d1db5a03349c Reviewed-on: https://go-review.googlesource.com/13937 Run-TryBot: Robert Griesemer <gri@golang.org> Reviewed-by: Chris Manghane <cmang@golang.org>
2015-08-13 19:05:37 -07:00
//line go.y:289
{
// import with original name
yyVAL.i = parserline()
importmyname = nil
importfile(&yyDollar[1].val, yyVAL.i)
}
case 16:
yyDollar = yyS[yypt-2 : yypt+1]
cmd/compile/internal/gc: compact binary export format The binary import/export format is significantly more compact than the existing textual format. It should also be faster to read and write (to be measured). Use -newexport to enable, for instance: export GO_GCFLAGS=-newexport; make.bash The compiler can import packages using both the old and the new format ("mixed mode"). Missing: export info for inlined functions bodies (performance issue, does not affect correctness). Disabled by default until we have inlined function bodies and confirmation of no regression and equality of binaries. For #6110. For #1909. This change depends on: https://go-review.googlesource.com/16220 https://go-review.googlesource.com/16222 (already submitted) for all.bash to work. Some initial export data sizes for std lib packages. This data is without exported functions with inlineable function bodies. Package old new new/old archive/tar.................................13875.....3883 28% archive/zip.................................19464.....5046 26% bufio....................................... 7733.....2222 29% bytes.......................................10342.....3347 32% cmd/addr2line.................................242.......26 11% cmd/api.....................................39305....10368 26% cmd/asm/internal/arch.......................27732.....7939 29% cmd/asm/internal/asm........................35264....10295 29% cmd/asm/internal/flags........................629......178 28% cmd/asm/internal/lex........................39248....11128 28% cmd/asm.......................................306.......26 8% cmd/cgo.....................................40197....10570 26% cmd/compile/internal/amd64...................1106......214 19% cmd/compile/internal/arm....................27891.....7710 28% cmd/compile/internal/arm64....................891......153 17% cmd/compile/internal/big....................21637.....8336 39% cmd/compile/internal/gc....................109845....29727 27% cmd/compile/internal/mips64...................972......168 17% cmd/compile/internal/ppc64....................972......168 17% cmd/compile/internal/x86.....................1104......195 18% cmd/compile...................................329.......26 8% cmd/cover...................................12986.....3749 29% cmd/dist......................................477.......67 14% cmd/doc.....................................23043.....6793 29% cmd/expdump...................................167.......26 16% cmd/fix......................................1190......208 17% cmd/go......................................26399.....5629 21% cmd/gofmt.....................................499.......26 5% cmd/internal/gcprog..........................1342......490 37% cmd/internal/goobj...........................2690......980 36% cmd/internal/obj/arm........................32740....10057 31% cmd/internal/obj/arm64......................46542....15364 33% cmd/internal/obj/mips.......................42140....13731 33% cmd/internal/obj/ppc64......................42140....13731 33% cmd/internal/obj/x86........................52732....19015 36% cmd/internal/obj............................36729....11690 32% cmd/internal/objfile........................36365....10287 28% cmd/link/internal/amd64.....................45893....12220 27% cmd/link/internal/arm.........................307.......96 31% cmd/link/internal/arm64.......................345.......98 28% cmd/link/internal/ld.......................109300....46326 42% cmd/link/internal/ppc64.......................344.......99 29% cmd/link/internal/x86.........................334......107 32% cmd/link......................................314.......26 8% cmd/newlink..................................8110.....2544 31% cmd/nm........................................210.......26 12% cmd/objdump...................................244.......26 11% cmd/pack....................................14248.....4066 29% cmd/pprof/internal/commands..................5239.....1285 25% cmd/pprof/internal/driver...................37967.....8860 23% cmd/pprof/internal/fetch....................30962.....7337 24% cmd/pprof/internal/plugin...................47734.....7719 16% cmd/pprof/internal/profile..................22286.....6922 31% cmd/pprof/internal/report...................31187.....7838 25% cmd/pprof/internal/svg.......................4315......965 22% cmd/pprof/internal/symbolizer...............30051.....7397 25% cmd/pprof/internal/symbolz..................28545.....6949 24% cmd/pprof/internal/tempfile.................12550.....3356 27% cmd/pprof.....................................563.......26 5% cmd/trace....................................1455......636 44% cmd/vendor/golang.org/x/arch/arm/armasm....168035....64737 39% cmd/vendor/golang.org/x/arch/x86/x86asm.....26871.....8578 32% cmd/vet.....................................38980.....9913 25% cmd/vet/whitelist.............................102.......49 48% cmd/yacc.....................................2518......926 37% compress/bzip2...............................6326......129 2% compress/flate...............................7069.....2541 36% compress/gzip...............................20143.....5069 25% compress/lzw..................................828......295 36% compress/zlib...............................10676.....2692 25% container/heap................................523......181 35% container/list...............................3517......740 21% container/ring................................881......229 26% crypto/aes....................................550......187 34% crypto/cipher................................1966......825 42% crypto.......................................1836......646 35% crypto/des....................................632......235 37% crypto/dsa..................................18718.....5035 27% crypto/ecdsa................................23131.....6097 26% crypto/elliptic.............................20790.....5740 28% crypto/hmac...................................455......186 41% crypto/md5...................................1375......171 12% crypto/rand.................................18132.....4748 26% crypto/rc4....................................561......240 43% crypto/rsa..................................22094.....6380 29% crypto/sha1..................................1416......172 12% crypto/sha256.................................551......238 43% crypto/sha512.................................839......378 45% crypto/subtle................................1153......250 22% crypto/tls..................................58203....17984 31% crypto/x509/pkix............................29447.....8161 28% database/sql/driver..........................3318.....1096 33% database/sql................................11258.....3942 35% debug/dwarf.................................18416.....7006 38% debug/elf...................................57530....21014 37% debug/gosym..................................4992.....2058 41% debug/macho.................................23037.....6538 28% debug/pe....................................21063.....6619 31% debug/plan9obj...............................2467......802 33% encoding/ascii85.............................1523......360 24% encoding/asn1................................1718......527 31% encoding/base32..............................2642......686 26% encoding/base64..............................3077......800 26% encoding/binary..............................4727.....1040 22% encoding/csv................................12223.....2850 23% encoding......................................383......217 57% encoding/gob................................37563....10113 27% encoding/hex.................................1327......390 29% encoding/json...............................30897.....7804 25% encoding/pem..................................595......200 34% encoding/xml................................37798.....9336 25% errors........................................274.......36 13% expvar.......................................3155.....1021 32% flag........................................19860.....2849 14% fmt..........................................3137.....1263 40% go/ast......................................44729....13422 30% go/build....................................16336.....4657 29% go/constant..................................3703......846 23% go/doc.......................................9877.....2807 28% go/format....................................5472.....1575 29% go/importer..................................4980.....1301 26% go/internal/gccgoimporter....................5587.....1525 27% go/internal/gcimporter.......................8979.....2186 24% go/parser...................................20692.....5304 26% go/printer...................................7015.....2029 29% go/scanner...................................9719.....2824 29% go/token.....................................7933.....2465 31% go/types....................................64569....19978 31% hash/adler32.................................1176......176 15% hash/crc32...................................1663......360 22% hash/crc64...................................1587......306 19% hash/fnv.....................................3964......260 7% hash..........................................591......278 47% html..........................................217.......74 34% html/template...............................69623....12588 18% image/color/palette...........................315.......98 31% image/color..................................5565.....1036 19% image/draw...................................6917.....1028 15% image/gif....................................8894.....1654 19% image/internal/imageutil.....................9112.....1476 16% image/jpeg...................................6647.....1026 15% image/png....................................6906.....1069 15% image.......................................28992.....6139 21% index/suffixarray...........................17106.....4773 28% internal/singleflight........................1614......506 31% internal/testenv............................12212.....3152 26% internal/trace...............................2762.....1323 48% io/ioutil...................................13502.....3682 27% io...........................................6765.....2482 37% log.........................................11620.....3317 29% log/syslog..................................13516.....3821 28% math/big....................................21819.....8320 38% math/cmplx...................................2816......438 16% math/rand....................................2317......929 40% math.........................................7511.....2444 33% mime/multipart..............................12679.....3360 27% mime/quotedprintable.........................5458.....1235 23% mime.........................................6076.....1628 27% net/http/cgi................................59796....17173 29% net/http/cookiejar..........................14781.....3739 25% net/http/fcgi...............................57861....16426 28% net/http/httptest...........................84100....24365 29% net/http/httputil...........................67763....18869 28% net/http/internal............................6907......637 9% net/http/pprof..............................57945....16316 28% net/http....................................95391....30210 32% net/internal/socktest........................4555.....1453 32% net/mail....................................14481.....3608 25% net/rpc/jsonrpc.............................33335......988 3% net/rpc.....................................79950....23106 29% net/smtp....................................57790....16468 28% net/textproto...............................11356.....3248 29% net/url......................................3123.....1009 32% os/exec.....................................20738.....5769 28% os/signal.....................................437......167 38% os..........................................24875.....6668 27% path/filepath...............................11340.....2826 25% path..........................................778......285 37% reflect.....................................15469.....5198 34% regexp......................................13627.....4661 34% regexp/syntax................................5539.....2249 41% runtime/debug................................9275.....2322 25% runtime/pprof................................1355......477 35% runtime/race...................................39.......17 44% runtime/trace.................................228.......92 40% runtime.....................................13498.....1821 13% sort.........................................2848......842 30% strconv......................................2947.....1252 42% strings......................................7983.....2456 31% sync/atomic..................................2666.....1149 43% sync.........................................2568......845 33% syscall.....................................81252....38398 47% testing/iotest...............................2444......302 12% testing/quick...............................18890.....5076 27% testing.....................................16502.....4800 29% text/scanner.................................6849.....2052 30% text/tabwriter...............................6607.....1863 28% text/template/parse.........................22978.....6183 27% text/template...............................64153....11518 18% time........................................12103.....3546 29% unicode......................................9706.....3320 34% unicode/utf16................................1055......148 14% unicode/utf8.................................1118......513 46% vendor/golang.org/x/net/http2/hpack..........8905.....2636 30% All packages 3518505 1017774 29% Change-Id: Id657334f276383ff1e6fa91472d3d1db5a03349c Reviewed-on: https://go-review.googlesource.com/13937 Run-TryBot: Robert Griesemer <gri@golang.org> Reviewed-by: Chris Manghane <cmang@golang.org>
2015-08-13 19:05:37 -07:00
//line go.y:296
{
// import with given name
yyVAL.i = parserline()
importmyname = yyDollar[1].sym
importfile(&yyDollar[2].val, yyVAL.i)
}
case 17:
yyDollar = yyS[yypt-2 : yypt+1]
cmd/compile/internal/gc: compact binary export format The binary import/export format is significantly more compact than the existing textual format. It should also be faster to read and write (to be measured). Use -newexport to enable, for instance: export GO_GCFLAGS=-newexport; make.bash The compiler can import packages using both the old and the new format ("mixed mode"). Missing: export info for inlined functions bodies (performance issue, does not affect correctness). Disabled by default until we have inlined function bodies and confirmation of no regression and equality of binaries. For #6110. For #1909. This change depends on: https://go-review.googlesource.com/16220 https://go-review.googlesource.com/16222 (already submitted) for all.bash to work. Some initial export data sizes for std lib packages. This data is without exported functions with inlineable function bodies. Package old new new/old archive/tar.................................13875.....3883 28% archive/zip.................................19464.....5046 26% bufio....................................... 7733.....2222 29% bytes.......................................10342.....3347 32% cmd/addr2line.................................242.......26 11% cmd/api.....................................39305....10368 26% cmd/asm/internal/arch.......................27732.....7939 29% cmd/asm/internal/asm........................35264....10295 29% cmd/asm/internal/flags........................629......178 28% cmd/asm/internal/lex........................39248....11128 28% cmd/asm.......................................306.......26 8% cmd/cgo.....................................40197....10570 26% cmd/compile/internal/amd64...................1106......214 19% cmd/compile/internal/arm....................27891.....7710 28% cmd/compile/internal/arm64....................891......153 17% cmd/compile/internal/big....................21637.....8336 39% cmd/compile/internal/gc....................109845....29727 27% cmd/compile/internal/mips64...................972......168 17% cmd/compile/internal/ppc64....................972......168 17% cmd/compile/internal/x86.....................1104......195 18% cmd/compile...................................329.......26 8% cmd/cover...................................12986.....3749 29% cmd/dist......................................477.......67 14% cmd/doc.....................................23043.....6793 29% cmd/expdump...................................167.......26 16% cmd/fix......................................1190......208 17% cmd/go......................................26399.....5629 21% cmd/gofmt.....................................499.......26 5% cmd/internal/gcprog..........................1342......490 37% cmd/internal/goobj...........................2690......980 36% cmd/internal/obj/arm........................32740....10057 31% cmd/internal/obj/arm64......................46542....15364 33% cmd/internal/obj/mips.......................42140....13731 33% cmd/internal/obj/ppc64......................42140....13731 33% cmd/internal/obj/x86........................52732....19015 36% cmd/internal/obj............................36729....11690 32% cmd/internal/objfile........................36365....10287 28% cmd/link/internal/amd64.....................45893....12220 27% cmd/link/internal/arm.........................307.......96 31% cmd/link/internal/arm64.......................345.......98 28% cmd/link/internal/ld.......................109300....46326 42% cmd/link/internal/ppc64.......................344.......99 29% cmd/link/internal/x86.........................334......107 32% cmd/link......................................314.......26 8% cmd/newlink..................................8110.....2544 31% cmd/nm........................................210.......26 12% cmd/objdump...................................244.......26 11% cmd/pack....................................14248.....4066 29% cmd/pprof/internal/commands..................5239.....1285 25% cmd/pprof/internal/driver...................37967.....8860 23% cmd/pprof/internal/fetch....................30962.....7337 24% cmd/pprof/internal/plugin...................47734.....7719 16% cmd/pprof/internal/profile..................22286.....6922 31% cmd/pprof/internal/report...................31187.....7838 25% cmd/pprof/internal/svg.......................4315......965 22% cmd/pprof/internal/symbolizer...............30051.....7397 25% cmd/pprof/internal/symbolz..................28545.....6949 24% cmd/pprof/internal/tempfile.................12550.....3356 27% cmd/pprof.....................................563.......26 5% cmd/trace....................................1455......636 44% cmd/vendor/golang.org/x/arch/arm/armasm....168035....64737 39% cmd/vendor/golang.org/x/arch/x86/x86asm.....26871.....8578 32% cmd/vet.....................................38980.....9913 25% cmd/vet/whitelist.............................102.......49 48% cmd/yacc.....................................2518......926 37% compress/bzip2...............................6326......129 2% compress/flate...............................7069.....2541 36% compress/gzip...............................20143.....5069 25% compress/lzw..................................828......295 36% compress/zlib...............................10676.....2692 25% container/heap................................523......181 35% container/list...............................3517......740 21% container/ring................................881......229 26% crypto/aes....................................550......187 34% crypto/cipher................................1966......825 42% crypto.......................................1836......646 35% crypto/des....................................632......235 37% crypto/dsa..................................18718.....5035 27% crypto/ecdsa................................23131.....6097 26% crypto/elliptic.............................20790.....5740 28% crypto/hmac...................................455......186 41% crypto/md5...................................1375......171 12% crypto/rand.................................18132.....4748 26% crypto/rc4....................................561......240 43% crypto/rsa..................................22094.....6380 29% crypto/sha1..................................1416......172 12% crypto/sha256.................................551......238 43% crypto/sha512.................................839......378 45% crypto/subtle................................1153......250 22% crypto/tls..................................58203....17984 31% crypto/x509/pkix............................29447.....8161 28% database/sql/driver..........................3318.....1096 33% database/sql................................11258.....3942 35% debug/dwarf.................................18416.....7006 38% debug/elf...................................57530....21014 37% debug/gosym..................................4992.....2058 41% debug/macho.................................23037.....6538 28% debug/pe....................................21063.....6619 31% debug/plan9obj...............................2467......802 33% encoding/ascii85.............................1523......360 24% encoding/asn1................................1718......527 31% encoding/base32..............................2642......686 26% encoding/base64..............................3077......800 26% encoding/binary..............................4727.....1040 22% encoding/csv................................12223.....2850 23% encoding......................................383......217 57% encoding/gob................................37563....10113 27% encoding/hex.................................1327......390 29% encoding/json...............................30897.....7804 25% encoding/pem..................................595......200 34% encoding/xml................................37798.....9336 25% errors........................................274.......36 13% expvar.......................................3155.....1021 32% flag........................................19860.....2849 14% fmt..........................................3137.....1263 40% go/ast......................................44729....13422 30% go/build....................................16336.....4657 29% go/constant..................................3703......846 23% go/doc.......................................9877.....2807 28% go/format....................................5472.....1575 29% go/importer..................................4980.....1301 26% go/internal/gccgoimporter....................5587.....1525 27% go/internal/gcimporter.......................8979.....2186 24% go/parser...................................20692.....5304 26% go/printer...................................7015.....2029 29% go/scanner...................................9719.....2824 29% go/token.....................................7933.....2465 31% go/types....................................64569....19978 31% hash/adler32.................................1176......176 15% hash/crc32...................................1663......360 22% hash/crc64...................................1587......306 19% hash/fnv.....................................3964......260 7% hash..........................................591......278 47% html..........................................217.......74 34% html/template...............................69623....12588 18% image/color/palette...........................315.......98 31% image/color..................................5565.....1036 19% image/draw...................................6917.....1028 15% image/gif....................................8894.....1654 19% image/internal/imageutil.....................9112.....1476 16% image/jpeg...................................6647.....1026 15% image/png....................................6906.....1069 15% image.......................................28992.....6139 21% index/suffixarray...........................17106.....4773 28% internal/singleflight........................1614......506 31% internal/testenv............................12212.....3152 26% internal/trace...............................2762.....1323 48% io/ioutil...................................13502.....3682 27% io...........................................6765.....2482 37% log.........................................11620.....3317 29% log/syslog..................................13516.....3821 28% math/big....................................21819.....8320 38% math/cmplx...................................2816......438 16% math/rand....................................2317......929 40% math.........................................7511.....2444 33% mime/multipart..............................12679.....3360 27% mime/quotedprintable.........................5458.....1235 23% mime.........................................6076.....1628 27% net/http/cgi................................59796....17173 29% net/http/cookiejar..........................14781.....3739 25% net/http/fcgi...............................57861....16426 28% net/http/httptest...........................84100....24365 29% net/http/httputil...........................67763....18869 28% net/http/internal............................6907......637 9% net/http/pprof..............................57945....16316 28% net/http....................................95391....30210 32% net/internal/socktest........................4555.....1453 32% net/mail....................................14481.....3608 25% net/rpc/jsonrpc.............................33335......988 3% net/rpc.....................................79950....23106 29% net/smtp....................................57790....16468 28% net/textproto...............................11356.....3248 29% net/url......................................3123.....1009 32% os/exec.....................................20738.....5769 28% os/signal.....................................437......167 38% os..........................................24875.....6668 27% path/filepath...............................11340.....2826 25% path..........................................778......285 37% reflect.....................................15469.....5198 34% regexp......................................13627.....4661 34% regexp/syntax................................5539.....2249 41% runtime/debug................................9275.....2322 25% runtime/pprof................................1355......477 35% runtime/race...................................39.......17 44% runtime/trace.................................228.......92 40% runtime.....................................13498.....1821 13% sort.........................................2848......842 30% strconv......................................2947.....1252 42% strings......................................7983.....2456 31% sync/atomic..................................2666.....1149 43% sync.........................................2568......845 33% syscall.....................................81252....38398 47% testing/iotest...............................2444......302 12% testing/quick...............................18890.....5076 27% testing.....................................16502.....4800 29% text/scanner.................................6849.....2052 30% text/tabwriter...............................6607.....1863 28% text/template/parse.........................22978.....6183 27% text/template...............................64153....11518 18% time........................................12103.....3546 29% unicode......................................9706.....3320 34% unicode/utf16................................1055......148 14% unicode/utf8.................................1118......513 46% vendor/golang.org/x/net/http2/hpack..........8905.....2636 30% All packages 3518505 1017774 29% Change-Id: Id657334f276383ff1e6fa91472d3d1db5a03349c Reviewed-on: https://go-review.googlesource.com/13937 Run-TryBot: Robert Griesemer <gri@golang.org> Reviewed-by: Chris Manghane <cmang@golang.org>
2015-08-13 19:05:37 -07:00
//line go.y:303
{
// import into my name space
yyVAL.i = parserline()
importmyname = Lookup(".")
importfile(&yyDollar[2].val, yyVAL.i)
}
case 18:
yyDollar = yyS[yypt-4 : yypt+1]
cmd/compile/internal/gc: compact binary export format The binary import/export format is significantly more compact than the existing textual format. It should also be faster to read and write (to be measured). Use -newexport to enable, for instance: export GO_GCFLAGS=-newexport; make.bash The compiler can import packages using both the old and the new format ("mixed mode"). Missing: export info for inlined functions bodies (performance issue, does not affect correctness). Disabled by default until we have inlined function bodies and confirmation of no regression and equality of binaries. For #6110. For #1909. This change depends on: https://go-review.googlesource.com/16220 https://go-review.googlesource.com/16222 (already submitted) for all.bash to work. Some initial export data sizes for std lib packages. This data is without exported functions with inlineable function bodies. Package old new new/old archive/tar.................................13875.....3883 28% archive/zip.................................19464.....5046 26% bufio....................................... 7733.....2222 29% bytes.......................................10342.....3347 32% cmd/addr2line.................................242.......26 11% cmd/api.....................................39305....10368 26% cmd/asm/internal/arch.......................27732.....7939 29% cmd/asm/internal/asm........................35264....10295 29% cmd/asm/internal/flags........................629......178 28% cmd/asm/internal/lex........................39248....11128 28% cmd/asm.......................................306.......26 8% cmd/cgo.....................................40197....10570 26% cmd/compile/internal/amd64...................1106......214 19% cmd/compile/internal/arm....................27891.....7710 28% cmd/compile/internal/arm64....................891......153 17% cmd/compile/internal/big....................21637.....8336 39% cmd/compile/internal/gc....................109845....29727 27% cmd/compile/internal/mips64...................972......168 17% cmd/compile/internal/ppc64....................972......168 17% cmd/compile/internal/x86.....................1104......195 18% cmd/compile...................................329.......26 8% cmd/cover...................................12986.....3749 29% cmd/dist......................................477.......67 14% cmd/doc.....................................23043.....6793 29% cmd/expdump...................................167.......26 16% cmd/fix......................................1190......208 17% cmd/go......................................26399.....5629 21% cmd/gofmt.....................................499.......26 5% cmd/internal/gcprog..........................1342......490 37% cmd/internal/goobj...........................2690......980 36% cmd/internal/obj/arm........................32740....10057 31% cmd/internal/obj/arm64......................46542....15364 33% cmd/internal/obj/mips.......................42140....13731 33% cmd/internal/obj/ppc64......................42140....13731 33% cmd/internal/obj/x86........................52732....19015 36% cmd/internal/obj............................36729....11690 32% cmd/internal/objfile........................36365....10287 28% cmd/link/internal/amd64.....................45893....12220 27% cmd/link/internal/arm.........................307.......96 31% cmd/link/internal/arm64.......................345.......98 28% cmd/link/internal/ld.......................109300....46326 42% cmd/link/internal/ppc64.......................344.......99 29% cmd/link/internal/x86.........................334......107 32% cmd/link......................................314.......26 8% cmd/newlink..................................8110.....2544 31% cmd/nm........................................210.......26 12% cmd/objdump...................................244.......26 11% cmd/pack....................................14248.....4066 29% cmd/pprof/internal/commands..................5239.....1285 25% cmd/pprof/internal/driver...................37967.....8860 23% cmd/pprof/internal/fetch....................30962.....7337 24% cmd/pprof/internal/plugin...................47734.....7719 16% cmd/pprof/internal/profile..................22286.....6922 31% cmd/pprof/internal/report...................31187.....7838 25% cmd/pprof/internal/svg.......................4315......965 22% cmd/pprof/internal/symbolizer...............30051.....7397 25% cmd/pprof/internal/symbolz..................28545.....6949 24% cmd/pprof/internal/tempfile.................12550.....3356 27% cmd/pprof.....................................563.......26 5% cmd/trace....................................1455......636 44% cmd/vendor/golang.org/x/arch/arm/armasm....168035....64737 39% cmd/vendor/golang.org/x/arch/x86/x86asm.....26871.....8578 32% cmd/vet.....................................38980.....9913 25% cmd/vet/whitelist.............................102.......49 48% cmd/yacc.....................................2518......926 37% compress/bzip2...............................6326......129 2% compress/flate...............................7069.....2541 36% compress/gzip...............................20143.....5069 25% compress/lzw..................................828......295 36% compress/zlib...............................10676.....2692 25% container/heap................................523......181 35% container/list...............................3517......740 21% container/ring................................881......229 26% crypto/aes....................................550......187 34% crypto/cipher................................1966......825 42% crypto.......................................1836......646 35% crypto/des....................................632......235 37% crypto/dsa..................................18718.....5035 27% crypto/ecdsa................................23131.....6097 26% crypto/elliptic.............................20790.....5740 28% crypto/hmac...................................455......186 41% crypto/md5...................................1375......171 12% crypto/rand.................................18132.....4748 26% crypto/rc4....................................561......240 43% crypto/rsa..................................22094.....6380 29% crypto/sha1..................................1416......172 12% crypto/sha256.................................551......238 43% crypto/sha512.................................839......378 45% crypto/subtle................................1153......250 22% crypto/tls..................................58203....17984 31% crypto/x509/pkix............................29447.....8161 28% database/sql/driver..........................3318.....1096 33% database/sql................................11258.....3942 35% debug/dwarf.................................18416.....7006 38% debug/elf...................................57530....21014 37% debug/gosym..................................4992.....2058 41% debug/macho.................................23037.....6538 28% debug/pe....................................21063.....6619 31% debug/plan9obj...............................2467......802 33% encoding/ascii85.............................1523......360 24% encoding/asn1................................1718......527 31% encoding/base32..............................2642......686 26% encoding/base64..............................3077......800 26% encoding/binary..............................4727.....1040 22% encoding/csv................................12223.....2850 23% encoding......................................383......217 57% encoding/gob................................37563....10113 27% encoding/hex.................................1327......390 29% encoding/json...............................30897.....7804 25% encoding/pem..................................595......200 34% encoding/xml................................37798.....9336 25% errors........................................274.......36 13% expvar.......................................3155.....1021 32% flag........................................19860.....2849 14% fmt..........................................3137.....1263 40% go/ast......................................44729....13422 30% go/build....................................16336.....4657 29% go/constant..................................3703......846 23% go/doc.......................................9877.....2807 28% go/format....................................5472.....1575 29% go/importer..................................4980.....1301 26% go/internal/gccgoimporter....................5587.....1525 27% go/internal/gcimporter.......................8979.....2186 24% go/parser...................................20692.....5304 26% go/printer...................................7015.....2029 29% go/scanner...................................9719.....2824 29% go/token.....................................7933.....2465 31% go/types....................................64569....19978 31% hash/adler32.................................1176......176 15% hash/crc32...................................1663......360 22% hash/crc64...................................1587......306 19% hash/fnv.....................................3964......260 7% hash..........................................591......278 47% html..........................................217.......74 34% html/template...............................69623....12588 18% image/color/palette...........................315.......98 31% image/color..................................5565.....1036 19% image/draw...................................6917.....1028 15% image/gif....................................8894.....1654 19% image/internal/imageutil.....................9112.....1476 16% image/jpeg...................................6647.....1026 15% image/png....................................6906.....1069 15% image.......................................28992.....6139 21% index/suffixarray...........................17106.....4773 28% internal/singleflight........................1614......506 31% internal/testenv............................12212.....3152 26% internal/trace...............................2762.....1323 48% io/ioutil...................................13502.....3682 27% io...........................................6765.....2482 37% log.........................................11620.....3317 29% log/syslog..................................13516.....3821 28% math/big....................................21819.....8320 38% math/cmplx...................................2816......438 16% math/rand....................................2317......929 40% math.........................................7511.....2444 33% mime/multipart..............................12679.....3360 27% mime/quotedprintable.........................5458.....1235 23% mime.........................................6076.....1628 27% net/http/cgi................................59796....17173 29% net/http/cookiejar..........................14781.....3739 25% net/http/fcgi...............................57861....16426 28% net/http/httptest...........................84100....24365 29% net/http/httputil...........................67763....18869 28% net/http/internal............................6907......637 9% net/http/pprof..............................57945....16316 28% net/http....................................95391....30210 32% net/internal/socktest........................4555.....1453 32% net/mail....................................14481.....3608 25% net/rpc/jsonrpc.............................33335......988 3% net/rpc.....................................79950....23106 29% net/smtp....................................57790....16468 28% net/textproto...............................11356.....3248 29% net/url......................................3123.....1009 32% os/exec.....................................20738.....5769 28% os/signal.....................................437......167 38% os..........................................24875.....6668 27% path/filepath...............................11340.....2826 25% path..........................................778......285 37% reflect.....................................15469.....5198 34% regexp......................................13627.....4661 34% regexp/syntax................................5539.....2249 41% runtime/debug................................9275.....2322 25% runtime/pprof................................1355......477 35% runtime/race...................................39.......17 44% runtime/trace.................................228.......92 40% runtime.....................................13498.....1821 13% sort.........................................2848......842 30% strconv......................................2947.....1252 42% strings......................................7983.....2456 31% sync/atomic..................................2666.....1149 43% sync.........................................2568......845 33% syscall.....................................81252....38398 47% testing/iotest...............................2444......302 12% testing/quick...............................18890.....5076 27% testing.....................................16502.....4800 29% text/scanner.................................6849.....2052 30% text/tabwriter...............................6607.....1863 28% text/template/parse.........................22978.....6183 27% text/template...............................64153....11518 18% time........................................12103.....3546 29% unicode......................................9706.....3320 34% unicode/utf16................................1055......148 14% unicode/utf8.................................1118......513 46% vendor/golang.org/x/net/http2/hpack..........8905.....2636 30% All packages 3518505 1017774 29% Change-Id: Id657334f276383ff1e6fa91472d3d1db5a03349c Reviewed-on: https://go-review.googlesource.com/13937 Run-TryBot: Robert Griesemer <gri@golang.org> Reviewed-by: Chris Manghane <cmang@golang.org>
2015-08-13 19:05:37 -07:00
//line go.y:312
{
if importpkg.Name == "" {
importpkg.Name = yyDollar[2].sym.Name
numImport[yyDollar[2].sym.Name]++
} else if importpkg.Name != yyDollar[2].sym.Name {
Yyerror("conflicting names %s and %s for package %q", importpkg.Name, yyDollar[2].sym.Name, importpkg.Path)
}
if incannedimport == 0 {
importpkg.Direct = true
}
importpkg.Safe = curio.importsafe
if safemode != 0 && !curio.importsafe {
Yyerror("cannot import unsafe package %q", importpkg.Path)
}
}
case 20:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:331
{
if yyDollar[1].sym.Name == "safe" {
curio.importsafe = true
}
}
case 21:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:338
{
defercheckwidth()
}
case 22:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:342
{
resumecheckwidth()
unimportfile()
}
case 23:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:351
{
Yyerror("empty top-level declaration")
yyVAL.list = nil
}
case 25:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:357
{
yyVAL.list = list1(yyDollar[1].node)
}
case 26:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:361
{
Yyerror("non-declaration statement outside function body")
yyVAL.list = nil
}
case 27:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:366
{
yyVAL.list = nil
}
case 28:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:372
{
yyVAL.list = yyDollar[2].list
}
case 29:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:376
{
yyVAL.list = yyDollar[3].list
}
case 30:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:380
{
yyVAL.list = nil
}
case 31:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:384
{
yyVAL.list = yyDollar[2].list
iota_ = -100000
lastconst = nil
}
case 32:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:390
{
yyVAL.list = yyDollar[3].list
iota_ = -100000
lastconst = nil
}
case 33:
yyDollar = yyS[yypt-7 : yypt+1]
//line go.y:396
{
yyVAL.list = concat(yyDollar[3].list, yyDollar[5].list)
iota_ = -100000
lastconst = nil
}
case 34:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:402
{
yyVAL.list = nil
iota_ = -100000
}
case 35:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:407
{
yyVAL.list = list1(yyDollar[2].node)
}
case 36:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:411
{
yyVAL.list = yyDollar[3].list
}
case 37:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:415
{
yyVAL.list = nil
}
case 38:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:421
{
iota_ = 0
}
case 39:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:427
{
yyVAL.list = variter(yyDollar[1].list, yyDollar[2].node, nil)
}
case 40:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:431
{
yyVAL.list = variter(yyDollar[1].list, yyDollar[2].node, yyDollar[4].list)
}
case 41:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:435
{
yyVAL.list = variter(yyDollar[1].list, nil, yyDollar[3].list)
}
case 42:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:441
{
yyVAL.list = constiter(yyDollar[1].list, yyDollar[2].node, yyDollar[4].list)
}
case 43:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:445
{
yyVAL.list = constiter(yyDollar[1].list, nil, yyDollar[3].list)
}
case 45:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:452
{
yyVAL.list = constiter(yyDollar[1].list, yyDollar[2].node, nil)
}
case 46:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:456
{
yyVAL.list = constiter(yyDollar[1].list, nil, nil)
}
case 47:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:462
{
// different from dclname because the name
// becomes visible right here, not at the end
// of the declaration.
yyVAL.node = typedcl0(yyDollar[1].sym)
}
case 48:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:471
{
yyVAL.node = typedcl1(yyDollar[1].node, yyDollar[2].node, true)
}
case 49:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:477
{
yyVAL.node = yyDollar[1].node
// These nodes do not carry line numbers.
// Since a bare name used as an expression is an error,
// introduce a wrapper node to give the correct line.
switch yyVAL.node.Op {
case ONAME, ONONAME, OTYPE, OPACK, OLITERAL:
yyVAL.node = Nod(OPAREN, yyVAL.node, nil)
yyVAL.node.Implicit = true
break
}
}
case 50:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:491
{
yyVAL.node = Nod(OASOP, yyDollar[1].node, yyDollar[3].node)
yyVAL.node.Etype = EType(yyDollar[2].i) // rathole to pass opcode
}
case 51:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:496
{
if yyDollar[1].list.Next == nil && yyDollar[3].list.Next == nil {
// simple
yyVAL.node = Nod(OAS, yyDollar[1].list.N, yyDollar[3].list.N)
break
}
// multiple
yyVAL.node = Nod(OAS2, nil, nil)
yyVAL.node.List = yyDollar[1].list
yyVAL.node.Rlist = yyDollar[3].list
}
case 52:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:508
{
if yyDollar[3].list.N.Op == OTYPESW {
yyVAL.node = Nod(OTYPESW, nil, yyDollar[3].list.N.Right)
if yyDollar[3].list.Next != nil {
Yyerror("expr.(type) must be alone in list")
}
if yyDollar[1].list.Next != nil {
Yyerror("argument count mismatch: %d = %d", count(yyDollar[1].list), 1)
} else if (yyDollar[1].list.N.Op != ONAME && yyDollar[1].list.N.Op != OTYPE && yyDollar[1].list.N.Op != ONONAME && (yyDollar[1].list.N.Op != OLITERAL || yyDollar[1].list.N.Name == nil)) || isblank(yyDollar[1].list.N) {
Yyerror("invalid variable name %s in type switch", yyDollar[1].list.N)
} else {
yyVAL.node.Left = dclname(yyDollar[1].list.N.Sym)
} // it's a colas, so must not re-use an oldname.
break
}
yyVAL.node = colas(yyDollar[1].list, yyDollar[3].list, int32(yyDollar[2].i))
}
case 53:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:526
{
yyVAL.node = Nod(OASOP, yyDollar[1].node, Nodintconst(1))
yyVAL.node.Implicit = true
// TODO(marvin): Fix Node.EType type union.
yyVAL.node.Etype = EType(OADD)
}
case 54:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:533
{
yyVAL.node = Nod(OASOP, yyDollar[1].node, Nodintconst(1))
yyVAL.node.Implicit = true
// TODO(marvin): Fix Node.EType type union.
yyVAL.node.Etype = EType(OSUB)
}
case 55:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:542
{
var n, nn *Node
// will be converted to OCASE
// right will point to next case
// done in casebody()
markdcl()
yyVAL.node = Nod(OXCASE, nil, nil)
yyVAL.node.List = yyDollar[2].list
if typesw != nil && typesw.Right != nil {
n = typesw.Right.Left
if n != nil {
// type switch - declare variable
nn = newname(n.Sym)
declare(nn, dclcontext)
yyVAL.node.Rlist = list1(nn)
// keep track of the instances for reporting unused
nn.Name.Defn = typesw.Right
}
}
}
case 56:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:565
{
var n *Node
// will be converted to OCASE
// right will point to next case
// done in casebody()
markdcl()
yyVAL.node = Nod(OXCASE, nil, nil)
if yyDollar[2].list.Next == nil {
n = Nod(OAS, yyDollar[2].list.N, yyDollar[4].node)
} else {
n = Nod(OAS2, nil, nil)
n.List = yyDollar[2].list
n.Rlist = list1(yyDollar[4].node)
}
yyVAL.node.List = list1(n)
}
case 57:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:583
{
// will be converted to OCASE
// right will point to next case
// done in casebody()
markdcl()
yyVAL.node = Nod(OXCASE, nil, nil)
yyVAL.node.List = list1(colas(yyDollar[2].list, list1(yyDollar[4].node), int32(yyDollar[3].i)))
}
case 58:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:592
{
var n, nn *Node
markdcl()
yyVAL.node = Nod(OXCASE, nil, nil)
if typesw != nil && typesw.Right != nil {
n = typesw.Right.Left
if n != nil {
// type switch - declare variable
nn = newname(n.Sym)
declare(nn, dclcontext)
yyVAL.node.Rlist = list1(nn)
// keep track of the instances for reporting unused
nn.Name.Defn = typesw.Right
}
}
}
case 59:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:613
{
markdcl()
}
case 60:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:617
{
if yyDollar[3].list == nil {
yyVAL.node = Nod(OEMPTY, nil, nil)
} else {
yyVAL.node = liststmt(yyDollar[3].list)
}
popdcl()
}
case 61:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:628
{
// If the last token read by the lexer was consumed
// as part of the case, clear it (parser has cleared yychar).
// If the last token read by the lexer was the lookahead
// leave it alone (parser has it cached in yychar).
// This is so that the stmt_list action doesn't look at
// the case tokens if the stmt_list is empty.
yylast = yychar
yyDollar[1].node.Xoffset = int64(block)
}
case 62:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:639
{
// This is the only place in the language where a statement
// list is not allowed to drop the final semicolon, because
// it's the only place where a statement list is not followed
// by a closing brace. Handle the error for pedantry.
// Find the final token of the statement list.
// yylast is lookahead; yyprev is last of stmt_list
last := yyprev
if last > 0 && last != ';' && yychar != '}' {
Yyerror("missing statement after label")
}
yyVAL.node = yyDollar[1].node
yyVAL.node.Nbody = yyDollar[3].list
popdcl()
}
case 63:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:658
{
yyVAL.list = nil
}
case 64:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:662
{
yyVAL.list = list(yyDollar[1].list, yyDollar[2].node)
}
case 65:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:668
{
markdcl()
}
case 66:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:672
{
yyVAL.list = yyDollar[3].list
popdcl()
}
case 67:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:679
{
yyVAL.node = Nod(ORANGE, nil, yyDollar[4].node)
yyVAL.node.List = yyDollar[1].list
yyVAL.node.Etype = 0 // := flag
}
case 68:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:685
{
yyVAL.node = Nod(ORANGE, nil, yyDollar[4].node)
yyVAL.node.List = yyDollar[1].list
yyVAL.node.Colas = true
colasdefn(yyDollar[1].list, yyVAL.node)
}
case 69:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:692
{
yyVAL.node = Nod(ORANGE, nil, yyDollar[2].node)
yyVAL.node.Etype = 0 // := flag
}
case 70:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:699
{
// init ; test ; incr
if yyDollar[5].node != nil && yyDollar[5].node.Colas {
Yyerror("cannot declare in the for-increment")
}
yyVAL.node = Nod(OFOR, nil, nil)
if yyDollar[1].node != nil {
yyVAL.node.Ninit = list1(yyDollar[1].node)
}
yyVAL.node.Left = yyDollar[3].node
yyVAL.node.Right = yyDollar[5].node
}
case 71:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:712
{
// normal test
yyVAL.node = Nod(OFOR, nil, nil)
yyVAL.node.Left = yyDollar[1].node
}
case 73:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:721
{
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:728
{
markdcl()
}
case 75:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:732
{
yyVAL.node = yyDollar[3].node
popdcl()
}
case 76:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:739
{
// test
yyVAL.node = Nod(OIF, nil, nil)
yyVAL.node.Left = yyDollar[1].node
}
case 77:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:745
{
// init ; test
yyVAL.node = Nod(OIF, nil, nil)
if yyDollar[1].node != nil {
yyVAL.node.Ninit = list1(yyDollar[1].node)
}
yyVAL.node.Left = yyDollar[3].node
}
case 78:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:757
{
markdcl()
}
case 79:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:761
{
if yyDollar[3].node.Left == nil {
Yyerror("missing condition in if statement")
}
}
case 80:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:767
{
yyDollar[3].node.Nbody = yyDollar[5].list
}
case 81:
yyDollar = yyS[yypt-8 : yypt+1]
//line go.y:771
{
var n *Node
var nn *NodeList
yyVAL.node = yyDollar[3].node
n = yyDollar[3].node
popdcl()
for nn = concat(yyDollar[7].list, yyDollar[8].list); nn != nil; nn = nn.Next {
if nn.N.Op == OIF {
popdcl()
}
n.Rlist = list1(nn.N)
n = nn.N
}
}
case 82:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:789
{
markdcl()
}
case 83:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:793
{
if yyDollar[4].node.Left == nil {
Yyerror("missing condition in if statement")
}
yyDollar[4].node.Nbody = yyDollar[5].list
yyVAL.list = list1(yyDollar[4].node)
}
case 84:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:802
{
yyVAL.list = nil
}
case 85:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:806
{
yyVAL.list = concat(yyDollar[1].list, yyDollar[2].list)
}
case 86:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:811
{
yyVAL.list = nil
}
case 87:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:815
{
l := &NodeList{N: yyDollar[2].node}
l.End = l
yyVAL.list = l
}
case 88:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:823
{
markdcl()
}
case 89:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:827
{
var n *Node
n = yyDollar[3].node.Left
if n != nil && n.Op != OTYPESW {
n = nil
}
typesw = Nod(OXXX, typesw, n)
}
case 90:
yyDollar = yyS[yypt-7 : yypt+1]
//line go.y:836
{
yyVAL.node = yyDollar[3].node
yyVAL.node.Op = OSWITCH
yyVAL.node.List = yyDollar[6].list
typesw = typesw.Left
popdcl()
}
case 91:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:846
{
typesw = Nod(OXXX, typesw, nil)
}
case 92:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:850
{
yyVAL.node = Nod(OSELECT, nil, nil)
yyVAL.node.Lineno = typesw.Lineno
yyVAL.node.List = yyDollar[4].list
typesw = typesw.Left
}
case 94:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:863
{
yyVAL.node = Nod(OOROR, yyDollar[1].node, yyDollar[3].node)
}
case 95:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:867
{
yyVAL.node = Nod(OANDAND, yyDollar[1].node, yyDollar[3].node)
}
case 96:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:871
{
yyVAL.node = Nod(OEQ, yyDollar[1].node, yyDollar[3].node)
}
case 97:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:875
{
yyVAL.node = Nod(ONE, yyDollar[1].node, yyDollar[3].node)
}
case 98:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:879
{
yyVAL.node = Nod(OLT, yyDollar[1].node, yyDollar[3].node)
}
case 99:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:883
{
yyVAL.node = Nod(OLE, yyDollar[1].node, yyDollar[3].node)
}
case 100:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:887
{
yyVAL.node = Nod(OGE, yyDollar[1].node, yyDollar[3].node)
}
case 101:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:891
{
yyVAL.node = Nod(OGT, yyDollar[1].node, yyDollar[3].node)
}
case 102:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:895
{
yyVAL.node = Nod(OADD, yyDollar[1].node, yyDollar[3].node)
}
case 103:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:899
{
yyVAL.node = Nod(OSUB, yyDollar[1].node, yyDollar[3].node)
}
case 104:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:903
{
yyVAL.node = Nod(OOR, yyDollar[1].node, yyDollar[3].node)
}
case 105:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:907
{
yyVAL.node = Nod(OXOR, yyDollar[1].node, yyDollar[3].node)
}
case 106:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:911
{
yyVAL.node = Nod(OMUL, yyDollar[1].node, yyDollar[3].node)
}
case 107:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:915
{
yyVAL.node = Nod(ODIV, yyDollar[1].node, yyDollar[3].node)
}
case 108:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:919
{
yyVAL.node = Nod(OMOD, yyDollar[1].node, yyDollar[3].node)
}
case 109:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:923
{
yyVAL.node = Nod(OAND, yyDollar[1].node, yyDollar[3].node)
}
case 110:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:927
{
yyVAL.node = Nod(OANDNOT, yyDollar[1].node, yyDollar[3].node)
}
case 111:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:931
{
yyVAL.node = Nod(OLSH, yyDollar[1].node, yyDollar[3].node)
}
case 112:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:935
{
yyVAL.node = Nod(ORSH, yyDollar[1].node, yyDollar[3].node)
}
case 113:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:940
{
yyVAL.node = Nod(OSEND, yyDollar[1].node, yyDollar[3].node)
}
case 115:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:947
{
yyVAL.node = Nod(OIND, yyDollar[2].node, nil)
}
case 116:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:951
{
if yyDollar[2].node.Op == OCOMPLIT {
// Special case for &T{...}: turn into (*T){...}.
yyVAL.node = yyDollar[2].node
yyVAL.node.Right = Nod(OIND, yyVAL.node.Right, nil)
yyVAL.node.Right.Implicit = true
} else {
yyVAL.node = Nod(OADDR, yyDollar[2].node, nil)
}
}
case 117:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:962
{
yyVAL.node = Nod(OPLUS, yyDollar[2].node, nil)
}
case 118:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:966
{
yyVAL.node = Nod(OMINUS, yyDollar[2].node, nil)
}
case 119:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:970
{
yyVAL.node = Nod(ONOT, yyDollar[2].node, nil)
}
case 120:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:974
{
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:979
{
yyVAL.node = Nod(OCOM, yyDollar[2].node, nil)
}
case 122:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:983
{
yyVAL.node = Nod(ORECV, yyDollar[2].node, nil)
}
case 123:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:993
{
yyVAL.node = Nod(OCALL, yyDollar[1].node, nil)
}
case 124:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:997
{
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:1002
{
yyVAL.node = Nod(OCALL, yyDollar[1].node, nil)
yyVAL.node.List = yyDollar[3].list
yyVAL.node.Isddd = true
}
case 126:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1010
{
yyVAL.node = nodlit(yyDollar[1].val)
}
case 128:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1015
{
if yyDollar[1].node.Op == OPACK {
var s *Sym
s = restrictlookup(yyDollar[3].sym.Name, yyDollar[1].node.Name.Pkg)
yyDollar[1].node.Used = true
yyVAL.node = oldname(s)
break
}
yyVAL.node = Nod(OXDOT, yyDollar[1].node, newname(yyDollar[3].sym))
}
case 129:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:1026
{
yyVAL.node = Nod(ODOTTYPE, yyDollar[1].node, yyDollar[4].node)
}
case 130:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:1030
{
yyVAL.node = Nod(OTYPESW, nil, yyDollar[1].node)
}
case 131:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:1034
{
yyVAL.node = Nod(OINDEX, yyDollar[1].node, yyDollar[3].node)
}
case 132:
yyDollar = yyS[yypt-6 : yypt+1]
//line go.y:1038
{
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:1042
{
if yyDollar[5].node == nil {
Yyerror("middle index required in 3-index slice")
}
if yyDollar[7].node == nil {
Yyerror("final index required in 3-index slice")
}
yyVAL.node = Nod(OSLICE3, yyDollar[1].node, Nod(OKEY, yyDollar[3].node, Nod(OKEY, yyDollar[5].node, yyDollar[7].node)))
}
case 135:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:1053
{
// conversion
yyVAL.node = Nod(OCALL, yyDollar[1].node, nil)
yyVAL.node.List = list1(yyDollar[3].node)
}
case 136:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:1059
{
yyVAL.node = yyDollar[3].node
yyVAL.node.Right = yyDollar[1].node
yyVAL.node.List = yyDollar[4].list
fixlbrace(yyDollar[2].i)
}
case 137:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:1066
{
yyVAL.node = yyDollar[3].node
yyVAL.node.Right = yyDollar[1].node
yyVAL.node.List = yyDollar[4].list
}
case 138:
yyDollar = yyS[yypt-7 : yypt+1]
//line go.y:1072
{
Yyerror("cannot parenthesize type in composite literal")
yyVAL.node = yyDollar[5].node
yyVAL.node.Right = yyDollar[2].node
yyVAL.node.List = yyDollar[6].list
}
case 140:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1081
{
// composite expression.
// make node early so we get the right line number.
yyVAL.node = Nod(OCOMPLIT, nil, nil)
}
case 141:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1089
{
yyVAL.node = Nod(OKEY, yyDollar[1].node, yyDollar[3].node)
}
case 142:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1095
{
// These nodes do not carry line numbers.
// Since a composite literal commonly spans several lines,
// the line number on errors may be misleading.
// Introduce a wrapper node to give the correct line.
yyVAL.node = yyDollar[1].node
switch yyVAL.node.Op {
case ONAME, ONONAME, OTYPE, OPACK, OLITERAL:
yyVAL.node = Nod(OPAREN, yyVAL.node, nil)
yyVAL.node.Implicit = true
}
}
case 143:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:1108
{
yyVAL.node = yyDollar[2].node
yyVAL.node.List = yyDollar[3].list
}
case 145:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:1116
{
yyVAL.node = yyDollar[2].node
yyVAL.node.List = yyDollar[3].list
}
case 147:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1124
{
yyVAL.node = yyDollar[2].node
// Need to know on lhs of := whether there are ( ).
// Don't bother with the OPAREN in other cases:
// it's just a waste of memory and time.
switch yyVAL.node.Op {
case ONAME, ONONAME, OPACK, OTYPE, OLITERAL, OTYPESW:
yyVAL.node = Nod(OPAREN, yyVAL.node, nil)
}
}
case 151:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1145
{
yyVAL.i = LBODY
}
case 152:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1149
{
yyVAL.i = '{'
}
case 153:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1160
{
if yyDollar[1].sym == nil {
yyVAL.node = nil
} else {
yyVAL.node = newname(yyDollar[1].sym)
}
}
case 154:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1170
{
yyVAL.node = dclname(yyDollar[1].sym)
}
case 155:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1175
{
yyVAL.node = nil
}
case 157:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1182
{
yyVAL.sym = yyDollar[1].sym
// during imports, unqualified non-exported identifiers are from builtinpkg
if importpkg != nil && !exportname(yyDollar[1].sym.Name) {
yyVAL.sym = Pkglookup(yyDollar[1].sym.Name, builtinpkg)
}
}
case 159:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1191
{
yyVAL.sym = nil
}
case 160:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:1197
{
var p *Pkg
if yyDollar[2].val.U.(string) == "" {
p = importpkg
} else {
if isbadimport(yyDollar[2].val.U.(string)) {
errorexit()
}
p = mkpkg(yyDollar[2].val.U.(string))
}
yyVAL.sym = Pkglookup(yyDollar[4].sym.Name, p)
}
case 161:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:1211
{
var p *Pkg
if yyDollar[2].val.U.(string) == "" {
p = importpkg
} else {
if isbadimport(yyDollar[2].val.U.(string)) {
errorexit()
}
p = mkpkg(yyDollar[2].val.U.(string))
}
yyVAL.sym = Pkglookup("?", p)
}
case 162:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1227
{
yyVAL.node = oldname(yyDollar[1].sym)
if yyVAL.node.Name != nil && yyVAL.node.Name.Pack != nil {
yyVAL.node.Name.Pack.Used = true
}
}
case 164:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1248
{
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:1253
{
yyVAL.node = Nod(ODDD, yyDollar[2].node, nil)
}
case 171:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1264
{
yyVAL.node = yyDollar[2].node
}
case 175:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1273
{
yyVAL.node = Nod(OIND, yyDollar[2].node, nil)
}
case 180:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1283
{
yyVAL.node = yyDollar[2].node
}
case 190:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1304
{
if yyDollar[1].node.Op == OPACK {
var s *Sym
s = restrictlookup(yyDollar[3].sym.Name, yyDollar[1].node.Name.Pkg)
yyDollar[1].node.Used = true
yyVAL.node = oldname(s)
break
}
yyVAL.node = Nod(OXDOT, yyDollar[1].node, newname(yyDollar[3].sym))
}
case 191:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:1317
{
yyVAL.node = Nod(OTARRAY, yyDollar[2].node, yyDollar[4].node)
}
case 192:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:1321
{
// 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:1326
{
yyVAL.node = Nod(OTCHAN, yyDollar[2].node, nil)
yyVAL.node.Etype = Cboth
}
case 194:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1331
{
yyVAL.node = Nod(OTCHAN, yyDollar[3].node, nil)
yyVAL.node.Etype = Csend
}
case 195:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:1336
{
yyVAL.node = Nod(OTMAP, yyDollar[3].node, yyDollar[5].node)
}
case 198:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1344
{
yyVAL.node = Nod(OIND, yyDollar[2].node, nil)
}
case 199:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1350
{
yyVAL.node = Nod(OTCHAN, yyDollar[3].node, nil)
yyVAL.node.Etype = Crecv
}
case 200:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:1357
{
yyVAL.node = Nod(OTSTRUCT, nil, nil)
yyVAL.node.List = yyDollar[3].list
fixlbrace(yyDollar[2].i)
}
case 201:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1363
{
yyVAL.node = Nod(OTSTRUCT, nil, nil)
fixlbrace(yyDollar[2].i)
}
case 202:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:1370
{
yyVAL.node = Nod(OTINTER, nil, nil)
yyVAL.node.List = yyDollar[3].list
fixlbrace(yyDollar[2].i)
}
case 203:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1376
{
yyVAL.node = Nod(OTINTER, nil, nil)
fixlbrace(yyDollar[2].i)
}
case 204:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1387
{
yyVAL.node = yyDollar[2].node
if yyVAL.node == nil {
break
}
if noescape && yyDollar[3].list != nil {
Yyerror("can only use //go:noescape with external func implementations")
}
yyVAL.node.Nbody = yyDollar[3].list
yyVAL.node.Func.Endlineno = lineno
yyVAL.node.Noescape = noescape
yyVAL.node.Func.Norace = norace
yyVAL.node.Func.Nosplit = nosplit
yyVAL.node.Func.Noinline = noinline
yyVAL.node.Func.Nowritebarrier = nowritebarrier
yyVAL.node.Func.Nowritebarrierrec = nowritebarrierrec
yyVAL.node.Func.Systemstack = systemstack
funcbody(yyVAL.node)
}
case 205:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:1409
{
var t *Node
yyVAL.node = nil
yyDollar[3].list = checkarglist(yyDollar[3].list, 1)
if yyDollar[1].sym.Name == "init" {
yyDollar[1].sym = renameinit()
if yyDollar[3].list != nil || yyDollar[5].list != nil {
Yyerror("func init must have no arguments and no return values")
}
}
if localpkg.Name == "main" && yyDollar[1].sym.Name == "main" {
if yyDollar[3].list != nil || yyDollar[5].list != nil {
Yyerror("func main must have no arguments and no return values")
}
}
t = Nod(OTFUNC, nil, nil)
t.List = yyDollar[3].list
t.Rlist = yyDollar[5].list
yyVAL.node = Nod(ODCLFUNC, nil, nil)
yyVAL.node.Func.Nname = newfuncname(yyDollar[1].sym)
yyVAL.node.Func.Nname.Name.Defn = yyVAL.node
yyVAL.node.Func.Nname.Name.Param.Ntype = t // TODO: check if nname already has an ntype
declare(yyVAL.node.Func.Nname, PFUNC)
funchdr(yyVAL.node)
}
case 206:
yyDollar = yyS[yypt-8 : yypt+1]
//line go.y:1440
{
var rcvr, t *Node
yyVAL.node = nil
yyDollar[2].list = checkarglist(yyDollar[2].list, 0)
yyDollar[6].list = checkarglist(yyDollar[6].list, 1)
if yyDollar[2].list == nil {
Yyerror("method has no receiver")
break
}
if yyDollar[2].list.Next != nil {
Yyerror("method has multiple receivers")
break
}
rcvr = yyDollar[2].list.N
if rcvr.Op != ODCLFIELD {
Yyerror("bad receiver in method")
break
}
t = Nod(OTFUNC, rcvr, nil)
t.List = yyDollar[6].list
t.Rlist = yyDollar[8].list
yyVAL.node = Nod(ODCLFUNC, nil, nil)
yyVAL.node.Func.Shortname = newfuncname(yyDollar[4].sym)
yyVAL.node.Func.Nname = methodname1(yyVAL.node.Func.Shortname, rcvr.Right)
yyVAL.node.Func.Nname.Name.Defn = yyVAL.node
yyVAL.node.Func.Nname.Name.Param.Ntype = t
yyVAL.node.Func.Nname.Nointerface = nointerface
declare(yyVAL.node.Func.Nname, PFUNC)
funchdr(yyVAL.node)
}
case 207:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:1478
{
var s *Sym
var t *Type
yyVAL.node = nil
s = yyDollar[1].sym
t = functype(nil, yyDollar[3].list, yyDollar[5].list)
importsym(s, ONAME)
if s.Def != nil && s.Def.Op == ONAME {
if Eqtype(t, s.Def.Type) {
dclcontext = PDISCARD // since we skip funchdr below
break
}
Yyerror("inconsistent definition for func %v during import\n\t%v\n\t%v", s, s.Def.Type, t)
}
yyVAL.node = newfuncname(s)
yyVAL.node.Type = t
declare(yyVAL.node, PFUNC)
funchdr(yyVAL.node)
}
case 208:
yyDollar = yyS[yypt-8 : yypt+1]
//line go.y:1503
{
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)
checkwidth(yyVAL.node.Type)
addmethod(yyDollar[4].sym, yyVAL.node.Type, false, nointerface)
nointerface = false
funchdr(yyVAL.node)
// inl.C's inlnode in on a dotmeth node expects to find the inlineable body as
// (dotmeth's type).Nname.Inl, and dotmeth's type has been pulled
// out by typecheck's lookdot as this $$.ttype. So by providing
// this back link here we avoid special casing there.
yyVAL.node.Type.Nname = yyVAL.node
}
case 209:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:1521
{
yyDollar[3].list = checkarglist(yyDollar[3].list, 1)
yyVAL.node = Nod(OTFUNC, nil, nil)
yyVAL.node.List = yyDollar[3].list
yyVAL.node.Rlist = yyDollar[5].list
}
case 210:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1529
{
yyVAL.list = nil
}
case 211:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1533
{
yyVAL.list = yyDollar[2].list
if yyVAL.list == nil {
yyVAL.list = list1(Nod(OEMPTY, nil, nil))
}
}
case 212:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1542
{
yyVAL.list = nil
}
case 213:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1546
{
yyVAL.list = list1(Nod(ODCLFIELD, nil, yyDollar[1].node))
}
case 214:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1550
{
yyDollar[2].list = checkarglist(yyDollar[2].list, 0)
yyVAL.list = yyDollar[2].list
}
case 215:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1557
{
closurehdr(yyDollar[1].node)
}
case 216:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:1563
{
yyVAL.node = closurebody(yyDollar[3].list)
fixlbrace(yyDollar[2].i)
}
case 217:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1568
{
yyVAL.node = closurebody(nil)
}
case 218:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1579
{
yyVAL.list = nil
}
case 219:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1583
{
yyVAL.list = concat(yyDollar[1].list, yyDollar[2].list)
if nsyntaxerrors == 0 {
testdclstack()
}
noescape = false
noinline = false
nointerface = false
norace = false
nosplit = false
nowritebarrier = false
nowritebarrierrec = false
systemstack = false
}
case 221:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1601
{
yyVAL.list = concat(yyDollar[1].list, yyDollar[3].list)
}
case 223:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1608
{
yyVAL.list = concat(yyDollar[1].list, yyDollar[3].list)
}
case 224:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1614
{
yyVAL.list = list1(yyDollar[1].node)
}
case 225:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1618
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 227:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1625
{
yyVAL.list = concat(yyDollar[1].list, yyDollar[3].list)
}
case 228:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1631
{
yyVAL.list = list1(yyDollar[1].node)
}
case 229:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1635
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 230:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1641
{
var l *NodeList
var n *Node
l = yyDollar[1].list
if l == nil || l.N.Sym.Name == "?" {
// ? symbol, during import (list1(nil) == nil)
n = yyDollar[2].node
if n.Op == OIND {
n = n.Left
}
n = embedded(n.Sym, importpkg)
n.Right = yyDollar[2].node
n.SetVal(yyDollar[3].val)
yyVAL.list = list1(n)
break
}
for l = yyDollar[1].list; l != nil; l = l.Next {
l.N = Nod(ODCLFIELD, l.N, yyDollar[2].node)
l.N.SetVal(yyDollar[3].val)
}
}
case 231:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1665
{
yyDollar[1].node.SetVal(yyDollar[2].val)
yyVAL.list = list1(yyDollar[1].node)
}
case 232:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:1670
{
yyDollar[2].node.SetVal(yyDollar[4].val)
yyVAL.list = list1(yyDollar[2].node)
Yyerror("cannot parenthesize embedded type")
}
case 233:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1676
{
yyDollar[2].node.Right = Nod(OIND, yyDollar[2].node.Right, nil)
yyDollar[2].node.SetVal(yyDollar[3].val)
yyVAL.list = list1(yyDollar[2].node)
}
case 234:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:1682
{
yyDollar[3].node.Right = Nod(OIND, yyDollar[3].node.Right, nil)
yyDollar[3].node.SetVal(yyDollar[5].val)
yyVAL.list = list1(yyDollar[3].node)
Yyerror("cannot parenthesize embedded type")
}
case 235:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:1689
{
yyDollar[3].node.Right = Nod(OIND, yyDollar[3].node.Right, nil)
yyDollar[3].node.SetVal(yyDollar[5].val)
yyVAL.list = list1(yyDollar[3].node)
Yyerror("cannot parenthesize embedded type")
}
case 236:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1698
{
var n *Node
yyVAL.sym = yyDollar[1].sym
n = oldname(yyDollar[1].sym)
if n.Name != nil && n.Name.Pack != nil {
n.Name.Pack.Used = true
}
}
case 237:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1708
{
var pkg *Pkg
if yyDollar[1].sym.Def == nil || yyDollar[1].sym.Def.Op != OPACK {
Yyerror("%v is not a package", yyDollar[1].sym)
pkg = localpkg
} else {
yyDollar[1].sym.Def.Used = true
pkg = yyDollar[1].sym.Def.Name.Pkg
}
yyVAL.sym = restrictlookup(yyDollar[3].sym.Name, pkg)
}
case 238:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1723
{
yyVAL.node = embedded(yyDollar[1].sym, localpkg)
}
case 239:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1729
{
yyVAL.node = Nod(ODCLFIELD, yyDollar[1].node, yyDollar[2].node)
ifacedcl(yyVAL.node)
}
case 240:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1734
{
yyVAL.node = Nod(ODCLFIELD, nil, oldname(yyDollar[1].sym))
}
case 241:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1738
{
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:1745
{
// without func keyword
yyDollar[2].list = checkarglist(yyDollar[2].list, 1)
yyVAL.node = Nod(OTFUNC, fakethis(), nil)
yyVAL.node.List = yyDollar[2].list
yyVAL.node.Rlist = yyDollar[4].list
}
case 244:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1759
{
yyVAL.node = Nod(ONONAME, nil, nil)
yyVAL.node.Sym = yyDollar[1].sym
yyVAL.node = Nod(OKEY, yyVAL.node, yyDollar[2].node)
}
case 245:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1765
{
yyVAL.node = Nod(ONONAME, nil, nil)
yyVAL.node.Sym = yyDollar[1].sym
yyVAL.node = Nod(OKEY, yyVAL.node, yyDollar[2].node)
}
case 247:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1774
{
yyVAL.list = list1(yyDollar[1].node)
}
case 248:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1778
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 249:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1783
{
yyVAL.list = nil
}
case 250:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1787
{
yyVAL.list = yyDollar[1].list
}
case 251:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1795
{
yyVAL.node = nil
}
case 253:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1800
{
yyVAL.node = liststmt(yyDollar[1].list)
}
case 255:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1805
{
yyVAL.node = nil
}
case 261:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1816
{
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:1821
{
var l *NodeList
yyDollar[1].node.Name.Defn = yyDollar[4].node
l = list1(yyDollar[1].node)
if yyDollar[4].node != nil {
l = list(l, yyDollar[4].node)
}
yyVAL.node = liststmt(l)
}
case 263:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1832
{
// will be converted to OFALL
yyVAL.node = Nod(OXFALL, nil, nil)
yyVAL.node.Xoffset = int64(block)
}
case 264:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1838
{
yyVAL.node = Nod(OBREAK, yyDollar[2].node, nil)
}
case 265:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1842
{
yyVAL.node = Nod(OCONTINUE, yyDollar[2].node, nil)
}
case 266:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1846
{
yyVAL.node = Nod(OPROC, yyDollar[2].node, nil)
}
case 267:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1850
{
yyVAL.node = Nod(ODEFER, yyDollar[2].node, nil)
}
case 268:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1854
{
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:1859
{
yyVAL.node = Nod(ORETURN, nil, nil)
yyVAL.node.List = yyDollar[2].list
if yyVAL.node.List == nil && Curfn != nil {
var l *NodeList
for l = Curfn.Func.Dcl; l != nil; l = l.Next {
if l.N.Class == PPARAM {
continue
}
if l.N.Class != PPARAMOUT {
break
}
if l.N.Sym.Def != l.N {
Yyerror("%s is shadowed during return", l.N.Sym.Name)
}
}
}
}
case 270:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1881
{
yyVAL.list = nil
if yyDollar[1].node != nil {
yyVAL.list = list1(yyDollar[1].node)
}
}
case 271:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1888
{
yyVAL.list = yyDollar[1].list
if yyDollar[3].node != nil {
yyVAL.list = list(yyVAL.list, yyDollar[3].node)
}
}
case 272:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1897
{
yyVAL.list = list1(yyDollar[1].node)
}
case 273:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1901
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 274:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1907
{
yyVAL.list = list1(yyDollar[1].node)
}
case 275:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1911
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 276:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1917
{
yyVAL.list = list1(yyDollar[1].node)
}
case 277:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1921
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 278:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1927
{
yyVAL.list = list1(yyDollar[1].node)
}
case 279:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1931
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 280:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1940
{
yyVAL.list = list1(yyDollar[1].node)
}
case 281:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:1944
{
yyVAL.list = list1(yyDollar[1].node)
}
case 282:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1948
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 283:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:1952
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 284:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1957
{
yyVAL.list = nil
}
case 285:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:1961
{
yyVAL.list = yyDollar[1].list
}
case 290:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1975
{
yyVAL.node = nil
}
case 292:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1981
{
yyVAL.list = nil
}
case 294:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1987
{
yyVAL.node = nil
}
case 296:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1993
{
yyVAL.list = nil
}
case 298:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:1999
{
yyVAL.list = nil
}
case 300:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:2005
{
yyVAL.list = nil
}
case 302:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:2011
{
yyVAL.val.U = nil
}
case 304:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:2021
{
importimport(yyDollar[2].sym, yyDollar[3].val.U.(string))
}
case 305:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:2025
{
importvar(yyDollar[2].sym, yyDollar[3].typ)
}
case 306:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:2029
{
importconst(yyDollar[2].sym, Types[TIDEAL], yyDollar[4].node)
}
case 307:
yyDollar = yyS[yypt-6 : yypt+1]
//line go.y:2033
{
importconst(yyDollar[2].sym, yyDollar[3].typ, yyDollar[5].node)
}
case 308:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:2037
{
importtype(yyDollar[2].typ, yyDollar[3].typ)
}
case 309:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:2041
{
if yyDollar[2].node == nil {
dclcontext = PEXTERN // since we skip the funcbody below
break
}
yyDollar[2].node.Func.Inl = yyDollar[3].list
funcbody(yyDollar[2].node)
importlist = append(importlist, yyDollar[2].node)
if Debug['E'] > 0 {
fmt.Printf("import [%q] func %v \n", importpkg.Path, yyDollar[2].node)
if Debug['m'] > 2 && yyDollar[2].node.Func.Inl != nil {
fmt.Printf("inl body:%v\n", yyDollar[2].node.Func.Inl)
}
}
}
case 310:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:2062
{
yyVAL.sym = yyDollar[1].sym
structpkg = yyVAL.sym.Pkg
}
case 311:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:2069
{
yyVAL.typ = pkgtype(yyDollar[1].sym)
importsym(yyDollar[1].sym, OTYPE)
}
case 317:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:2089
{
yyVAL.typ = pkgtype(yyDollar[1].sym)
}
case 318:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:2093
{
// predefined name like uint8
yyDollar[1].sym = Pkglookup(yyDollar[1].sym.Name, builtinpkg)
if yyDollar[1].sym.Def == nil || yyDollar[1].sym.Def.Op != OTYPE {
Yyerror("%s is not a type", yyDollar[1].sym.Name)
yyVAL.typ = nil
} else {
yyVAL.typ = yyDollar[1].sym.Def.Type
}
}
case 319:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:2104
{
yyVAL.typ = aindex(nil, yyDollar[3].typ)
}
case 320:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:2108
{
yyVAL.typ = aindex(nodlit(yyDollar[2].val), yyDollar[4].typ)
}
case 321:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:2112
{
yyVAL.typ = maptype(yyDollar[3].typ, yyDollar[5].typ)
}
case 322:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:2116
{
yyVAL.typ = tostruct(yyDollar[3].list)
}
case 323:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:2120
{
yyVAL.typ = tointerface(yyDollar[3].list)
}
case 324:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:2124
{
yyVAL.typ = Ptrto(yyDollar[2].typ)
}
case 325:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:2128
{
yyVAL.typ = typ(TCHAN)
yyVAL.typ.Type = yyDollar[2].typ
yyVAL.typ.Chan = Cboth
}
case 326:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:2134
{
yyVAL.typ = typ(TCHAN)
yyVAL.typ.Type = yyDollar[3].typ
yyVAL.typ.Chan = Cboth
}
case 327:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:2140
{
yyVAL.typ = typ(TCHAN)
yyVAL.typ.Type = yyDollar[3].typ
yyVAL.typ.Chan = Csend
}
case 328:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:2148
{
yyVAL.typ = typ(TCHAN)
yyVAL.typ.Type = yyDollar[3].typ
yyVAL.typ.Chan = Crecv
}
case 329:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:2156
{
yyVAL.typ = functype(nil, yyDollar[3].list, yyDollar[5].list)
}
case 330:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:2162
{
yyVAL.node = Nod(ODCLFIELD, nil, typenod(yyDollar[2].typ))
if yyDollar[1].sym != nil {
yyVAL.node.Left = newname(yyDollar[1].sym)
}
yyVAL.node.SetVal(yyDollar[3].val)
}
case 331:
yyDollar = yyS[yypt-4 : yypt+1]
//line go.y:2170
{
var t *Type
t = typ(TARRAY)
t.Bound = -1
t.Type = yyDollar[3].typ
yyVAL.node = Nod(ODCLFIELD, nil, typenod(t))
if yyDollar[1].sym != nil {
yyVAL.node.Left = newname(yyDollar[1].sym)
}
yyVAL.node.Isddd = true
yyVAL.node.SetVal(yyDollar[4].val)
}
case 332:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:2187
{
var s *Sym
var p *Pkg
if yyDollar[1].sym != nil && yyDollar[1].sym.Name != "?" {
yyVAL.node = Nod(ODCLFIELD, newname(yyDollar[1].sym), typenod(yyDollar[2].typ))
yyVAL.node.SetVal(yyDollar[3].val)
} else {
s = yyDollar[2].typ.Sym
if s == nil && Isptr[yyDollar[2].typ.Etype] {
s = yyDollar[2].typ.Type.Sym
}
p = importpkg
if yyDollar[1].sym != nil {
p = yyDollar[1].sym.Pkg
}
yyVAL.node = embedded(s, p)
yyVAL.node.Right = typenod(yyDollar[2].typ)
yyVAL.node.SetVal(yyDollar[3].val)
}
}
case 333:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:2211
{
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:2215
{
yyVAL.node = Nod(ODCLFIELD, nil, typenod(yyDollar[1].typ))
}
case 335:
yyDollar = yyS[yypt-0 : yypt+1]
//line go.y:2220
{
yyVAL.list = nil
}
case 337:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:2227
{
yyVAL.list = yyDollar[2].list
}
case 338:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:2231
{
yyVAL.list = list1(Nod(ODCLFIELD, nil, typenod(yyDollar[1].typ)))
}
case 339:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:2241
{
yyVAL.node = nodlit(yyDollar[1].val)
}
case 340:
yyDollar = yyS[yypt-2 : yypt+1]
//line go.y:2245
{
yyVAL.node = nodlit(yyDollar[2].val)
switch yyVAL.node.Val().Ctype() {
case CTINT, CTRUNE:
mpnegfix(yyVAL.node.Val().U.(*Mpint))
break
case CTFLT:
mpnegflt(yyVAL.node.Val().U.(*Mpflt))
break
case CTCPLX:
mpnegflt(&yyVAL.node.Val().U.(*Mpcplx).Real)
mpnegflt(&yyVAL.node.Val().U.(*Mpcplx).Imag)
break
default:
Yyerror("bad negated constant")
}
}
case 341:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:2263
{
yyVAL.node = oldname(Pkglookup(yyDollar[1].sym.Name, builtinpkg))
if yyVAL.node.Op != OLITERAL {
Yyerror("bad constant %v", yyVAL.node.Sym)
}
}
case 343:
yyDollar = yyS[yypt-5 : yypt+1]
//line go.y:2273
{
if yyDollar[2].node.Val().Ctype() == CTRUNE && yyDollar[4].node.Val().Ctype() == CTINT {
yyVAL.node = yyDollar[2].node
mpaddfixfix(yyDollar[2].node.Val().U.(*Mpint), yyDollar[4].node.Val().U.(*Mpint), 0)
break
}
yyDollar[4].node.Val().U.(*Mpcplx).Real = yyDollar[4].node.Val().U.(*Mpcplx).Imag
Mpmovecflt(&yyDollar[4].node.Val().U.(*Mpcplx).Imag, 0.0)
yyVAL.node = nodcplxlit(yyDollar[2].node.Val(), yyDollar[4].node.Val())
}
case 346:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:2289
{
yyVAL.list = list1(yyDollar[1].node)
}
case 347:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:2293
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 348:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:2299
{
yyVAL.list = list1(yyDollar[1].node)
}
case 349:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:2303
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
case 350:
yyDollar = yyS[yypt-1 : yypt+1]
//line go.y:2309
{
yyVAL.list = list1(yyDollar[1].node)
}
case 351:
yyDollar = yyS[yypt-3 : yypt+1]
//line go.y:2313
{
yyVAL.list = list(yyDollar[1].list, yyDollar[3].node)
}
}
goto yystack /* stack new state and value */
}