From b5c2bacdec8a3f0b195304196937bcf93d8c7b72 Mon Sep 17 00:00:00 2001 From: Wolfy-J Date: Fri, 3 Apr 2026 17:13:11 -0400 Subject: [PATCH] Fix parser: allow void return type with named parameters in record fields MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add missing grammar rule for (params) -> () in function type expressions. The parser handled () -> () but not (self: T) -> () or (a: number) -> (), causing parse errors in record field type annotations with void-returning methods. One new rule in parser.go.y: '(' funcparamlist ')' TArrow '(' ')' → FunctionTypeExpr with empty Returns Impact on real-world fixture scorecard (117 → 72 tracked errors): - factory-constructor: 6 → 0 (fixed) - iterator-pipeline: 11 → 0 (fixed) - module-with-generics: 5 → 0 (fixed) - service-locator: 14 → 0 (fixed) - generic-registry: 12 → 4 - metatable-oop: 5 → 4 --- compiler/parse/parser.go | 570 +- compiler/parse/parser.go.y | 4 + compiler/parse/parser_test.go | 38 + compiler/parse/y.output | 7641 +++++++++++++++++ .../factory-constructor/manifest.json | 3 +- .../realworld/generic-registry/manifest.json | 2 +- .../realworld/iterator-pipeline/manifest.json | 2 +- .../realworld/metatable-oop/manifest.json | 2 +- .../module-with-generics/manifest.json | 3 +- .../realworld/service-locator/manifest.json | 2 +- 10 files changed, 7978 insertions(+), 289 deletions(-) create mode 100644 compiler/parse/y.output diff --git a/compiler/parse/parser.go b/compiler/parse/parser.go index dd6d36aa..01a1a184 100644 --- a/compiler/parse/parser.go +++ b/compiler/parse/parser.go @@ -219,7 +219,7 @@ const yyEofCode = 1 const yyErrCode = 2 const yyInitialStackSize = 16 -//line parser.go.y:1283 +//line parser.go.y:1287 // nameWithPos holds a name with its token position type nameWithPos struct { @@ -305,13 +305,13 @@ var yyExca = [...]int16{ const yyPrivate = 57344 -const yyLast = 1792 +const yyLast = 1808 var yyAct = [...]int16{ 425, 424, 317, 205, 55, 26, 288, 277, 262, 208, 67, 109, 260, 185, 252, 202, 103, 58, 255, 257, 66, 254, 274, 289, 248, 27, 249, 43, 44, 253, - 52, 248, 255, 249, 256, 150, 151, 57, 458, 59, + 52, 248, 255, 249, 256, 150, 151, 57, 459, 59, 429, 36, 255, 415, 248, 324, 249, 432, 401, 35, 72, 53, 122, 389, 51, 49, 48, 393, 141, 54, 374, 323, 50, 99, 100, 101, 102, 248, 296, 249, @@ -320,22 +320,22 @@ var yyAct = [...]int16{ 256, 444, 159, 325, 213, 155, 212, 184, 201, 295, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 248, 248, 249, 249, 373, 482, 74, 480, - 477, 291, 372, 475, 450, 434, 473, 215, 468, 465, - 448, 445, 388, 390, 303, 246, 371, 147, 225, 449, - 227, 449, 371, 229, 25, 449, 242, 243, 449, 240, - 449, 154, 449, 74, 328, 241, 53, 322, 385, 239, + 182, 183, 248, 248, 249, 249, 373, 483, 74, 481, + 478, 291, 372, 476, 451, 434, 474, 215, 469, 466, + 449, 445, 388, 390, 303, 246, 371, 147, 225, 450, + 227, 450, 371, 229, 25, 450, 242, 243, 450, 240, + 450, 154, 450, 74, 328, 241, 53, 322, 385, 239, 226, 327, 228, 360, 54, 53, 53, 53, 53, 53, 53, 53, 321, 54, 54, 54, 54, 54, 54, 54, 328, 244, 224, 328, 258, 280, 217, 218, 219, 220, 221, 222, 223, 153, 154, 148, 322, 189, 46, 47, 74, 214, 146, 187, 74, 105, 106, 367, 248, 188, - 249, 96, 292, 297, 196, 197, 472, 198, 156, 199, - 200, 329, 195, 251, 97, 483, 248, 112, 249, 467, + 249, 96, 292, 297, 196, 197, 473, 198, 156, 199, + 200, 329, 195, 251, 97, 484, 248, 112, 249, 468, 298, 192, 191, 190, 193, 304, 194, 248, 98, 249, - 426, 248, 386, 249, 314, 454, 396, 391, 318, 410, + 426, 248, 386, 249, 314, 455, 396, 391, 318, 410, 320, 89, 309, 310, 311, 248, 248, 249, 249, 248, - 104, 249, 380, 313, 312, 68, 485, 280, 481, 332, + 104, 249, 380, 313, 312, 68, 486, 280, 482, 332, 106, 442, 280, 356, 344, 250, 157, 349, 287, 319, 318, 354, 352, 351, 350, 336, 346, 359, 161, 330, 357, 248, 241, 249, 334, 358, 251, 204, 365, 204, @@ -348,26 +348,25 @@ var yyAct = [...]int16{ 28, 38, 414, 68, 238, 413, 30, 68, 230, 152, 71, 421, 70, 422, 69, 124, 404, 428, 64, 406, 430, 416, 417, 418, 419, 32, 60, 123, 45, 31, - 43, 44, 435, 24, 412, 144, 305, 436, 484, 307, - 462, 23, 440, 460, 443, 40, 446, 438, 37, 362, - 363, 361, 447, 437, 433, 409, 398, 452, 300, 453, - 455, 39, 142, 457, 441, 318, 73, 459, 312, 312, - 312, 312, 76, 370, 461, 466, 56, 1, 158, 464, - 469, 470, 306, 471, 245, 207, 75, 186, 474, 476, - 264, 232, 233, 234, 235, 236, 237, 96, 478, 110, - 211, 108, 479, 33, 81, 82, 80, 79, 83, 231, - 97, 22, 61, 8, 63, 62, 3, 301, 4, 93, - 94, 95, 76, 2, 98, 0, 77, 78, 91, 92, - 90, 84, 85, 86, 87, 88, 75, 89, 0, 0, - 0, 0, 0, 0, 299, 0, 0, 96, 134, 135, - 136, 137, 138, 139, 81, 82, 80, 79, 83, 0, - 97, 0, 0, 0, 0, 0, 133, 0, 0, 93, + 43, 44, 435, 24, 412, 144, 305, 436, 485, 307, + 463, 23, 440, 461, 443, 40, 446, 438, 37, 362, + 363, 361, 447, 437, 433, 409, 398, 453, 300, 454, + 456, 39, 76, 458, 441, 318, 73, 460, 312, 312, + 312, 312, 142, 370, 462, 467, 75, 56, 1, 465, + 158, 470, 471, 306, 472, 245, 207, 96, 186, 475, + 477, 264, 110, 211, 81, 82, 80, 79, 83, 479, + 97, 108, 33, 480, 22, 61, 8, 63, 62, 93, + 94, 95, 76, 3, 98, 301, 77, 78, 91, 92, + 90, 84, 85, 86, 87, 88, 75, 89, 4, 2, + 0, 0, 0, 0, 299, 0, 0, 96, 232, 233, + 234, 235, 236, 237, 81, 82, 80, 79, 83, 0, + 97, 0, 0, 0, 0, 0, 231, 0, 0, 93, 94, 95, 0, 0, 98, 0, 77, 78, 91, 92, 90, 84, 85, 86, 87, 88, 29, 89, 41, 0, 0, 0, 28, 38, 216, 0, 0, 0, 30, 0, 0, 0, 114, 115, 116, 117, 118, 119, 0, 120, - 121, 127, 128, 129, 130, 131, 132, 32, 0, 0, - 113, 31, 43, 44, 107, 24, 29, 0, 41, 126, + 121, 134, 135, 136, 137, 138, 139, 32, 0, 0, + 113, 31, 43, 44, 107, 24, 29, 0, 41, 133, 0, 0, 28, 38, 0, 0, 0, 40, 30, 0, 37, 0, 114, 115, 116, 117, 118, 119, 0, 120, 121, 111, 0, 39, 76, 0, 407, 32, 0, 0, @@ -377,14 +376,14 @@ var yyAct = [...]int16{ 83, 111, 97, 39, 0, 0, 0, 0, 0, 0, 0, 93, 94, 95, 76, 0, 98, 0, 77, 78, 91, 92, 90, 84, 85, 86, 87, 88, 75, 89, - 0, 0, 408, 0, 0, 0, 0, 0, 0, 96, + 0, 0, 408, 127, 128, 129, 130, 131, 132, 96, 0, 0, 0, 0, 0, 0, 81, 82, 80, 79, - 83, 0, 97, 0, 0, 0, 0, 0, 0, 0, + 83, 126, 97, 0, 0, 0, 0, 0, 0, 0, 0, 93, 94, 95, 0, 0, 98, 0, 77, 78, 91, 92, 90, 84, 85, 86, 87, 88, 189, 89, 0, 0, 302, 0, 187, 0, 0, 0, 0, 0, 188, 0, 0, 0, 270, 265, 266, 271, 267, 272, - 268, 269, 273, 195, 76, 0, 463, 0, 0, 0, + 268, 269, 273, 195, 76, 0, 464, 0, 0, 0, 0, 0, 263, 191, 190, 193, 261, 194, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 81, 82, 80, 79, @@ -453,101 +452,103 @@ var yyAct = [...]int16{ 279, 191, 190, 193, 188, 276, 275, 0, 0, 196, 197, 0, 198, 0, 199, 200, 0, 195, 189, 0, 0, 0, 0, 278, 187, 0, 279, 191, 190, 193, - 188, 276, 423, 0, 0, 196, 197, 0, 198, 0, + 188, 276, 448, 0, 0, 196, 197, 0, 198, 0, 199, 200, 0, 195, 189, 0, 0, 0, 0, 278, - 187, 0, 279, 191, 190, 193, 188, 276, 399, 0, + 187, 0, 279, 191, 190, 193, 188, 276, 423, 0, 0, 196, 197, 0, 198, 0, 199, 200, 0, 195, 189, 0, 0, 0, 0, 278, 187, 0, 279, 191, - 190, 193, 188, 194, 335, 0, 0, 196, 197, 0, + 190, 193, 188, 276, 399, 0, 0, 196, 197, 0, 198, 0, 199, 200, 0, 195, 189, 0, 0, 0, - 0, 278, 187, 0, 279, 191, 190, 193, 188, 276, - 331, 0, 0, 196, 197, 0, 198, 0, 199, 200, - 0, 195, 189, 0, 0, 0, 0, 382, 187, 0, - 279, 191, 190, 193, 188, 194, 0, 0, 0, 196, + 0, 278, 187, 0, 279, 191, 190, 193, 188, 194, + 335, 0, 0, 196, 197, 0, 198, 0, 199, 200, + 0, 195, 189, 0, 0, 0, 0, 278, 187, 0, + 279, 191, 190, 193, 188, 276, 331, 0, 0, 196, 197, 0, 198, 0, 199, 200, 0, 195, 189, 0, - 0, 0, 0, 0, 187, 0, 192, 191, 190, 193, + 0, 0, 0, 382, 187, 0, 279, 191, 190, 193, 188, 194, 0, 0, 0, 196, 197, 0, 198, 0, 199, 200, 0, 195, 189, 0, 0, 0, 0, 0, - 187, 0, 192, 191, 190, 193, 188, 456, 0, 0, + 187, 0, 192, 191, 190, 193, 188, 194, 0, 0, 0, 196, 197, 0, 198, 0, 199, 200, 0, 195, 189, 0, 0, 0, 0, 0, 187, 0, 192, 191, - 190, 193, 188, 451, 0, 0, 0, 196, 197, 0, + 190, 193, 188, 457, 0, 0, 0, 196, 197, 0, 198, 0, 199, 200, 0, 195, 189, 0, 0, 0, - 0, 0, 187, 0, 192, 191, 190, 193, 188, 431, + 0, 0, 187, 0, 192, 191, 190, 193, 188, 452, 0, 0, 0, 196, 197, 0, 198, 0, 199, 200, 0, 195, 189, 0, 0, 0, 0, 0, 187, 0, - 192, 191, 190, 193, 188, 427, 0, 0, 0, 196, + 192, 191, 190, 193, 188, 431, 0, 0, 0, 196, 197, 0, 198, 0, 199, 200, 0, 195, 189, 0, 0, 0, 0, 0, 187, 0, 192, 191, 190, 193, - 188, 420, 0, 0, 0, 196, 197, 0, 198, 0, + 188, 427, 0, 0, 0, 196, 197, 0, 198, 0, 199, 200, 0, 195, 189, 0, 0, 0, 0, 0, - 187, 0, 192, 191, 190, 193, 188, 383, 0, 0, + 187, 0, 192, 191, 190, 193, 188, 420, 0, 0, 0, 196, 197, 0, 198, 0, 199, 200, 0, 195, - 0, 0, 0, 0, 0, 0, 0, 0, 192, 191, - 190, 193, 0, 353, 270, 339, 340, 271, 341, 272, - 343, 342, 273, 270, 339, 340, 271, 341, 272, 343, - 342, 273, 338, 0, 0, 0, 337, 0, 0, 0, - 0, 338, + 189, 0, 0, 0, 0, 0, 187, 0, 192, 191, + 190, 193, 188, 383, 0, 0, 0, 196, 197, 0, + 198, 0, 199, 200, 0, 195, 0, 0, 0, 0, + 0, 0, 0, 0, 192, 191, 190, 193, 0, 353, + 270, 339, 340, 271, 341, 272, 343, 342, 273, 270, + 339, 340, 271, 341, 272, 343, 342, 273, 338, 0, + 0, 0, 337, 0, 0, 0, 0, 338, } var yyPact = [...]int16{ - -1000, -1000, 1185, 84, -1000, -1000, 1172, -1000, 137, -19, - -1000, 1172, -1000, 1172, 352, 344, 333, -1000, 340, 338, - 336, -1000, -1000, -1000, 1172, -1000, 56, 1059, -1000, -1000, - -1000, -1000, -1000, -1000, -19, -1000, -1000, 1172, 1172, 1172, - 1172, 221, -1000, -1000, 546, -1000, 1172, 270, 1172, 555, - -1000, 492, 1131, -1000, -1000, 423, -1000, 1020, 382, 981, + -1000, -1000, 1175, 84, -1000, -1000, 1162, -1000, 137, -19, + -1000, 1162, -1000, 1162, 352, 344, 333, -1000, 340, 338, + 336, -1000, -1000, -1000, 1162, -1000, 56, 1049, -1000, -1000, + -1000, -1000, -1000, -1000, -19, -1000, -1000, 1162, 1162, 1162, + 1162, 221, -1000, -1000, 536, -1000, 1162, 270, 1162, 657, + -1000, 545, 1121, -1000, -1000, 433, -1000, 1010, 382, 971, 141, 133, 221, -38, -1000, 335, 132, -1000, 22, -1000, - 157, 19, 928, 248, 1172, 1172, 1172, 1172, 1172, 1172, - 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, 1172, - 1172, 1172, 1172, 1172, 1172, 1172, 1532, 1532, -1000, 192, + 157, 19, 918, 248, 1162, 1162, 1162, 1162, 1162, 1162, + 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, 1162, + 1162, 1162, 1162, 1162, 1162, 1162, 1548, 1548, -1000, 192, 192, 192, 192, -1000, 268, 283, 299, -1000, 24, -1000, - 140, 1172, 1059, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, 56, -1000, -19, 488, -1000, -1000, -1000, -1000, + 140, 1162, 1049, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 56, -1000, -19, 478, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 292, 292, 292, 292, 292, 292, 292, - -1000, 142, -1000, -1000, 1172, -1000, 1172, 1172, 334, -1000, - 435, 330, 221, 1172, 329, 1532, 1532, 120, 73, 325, - -1000, -1000, 1059, 1098, 1201, 1229, 1229, 1229, 1229, 1229, - 1229, 1324, 291, 291, 192, 192, 192, 192, 1304, 1257, - 1285, 1324, 1324, 192, -1000, 251, -46, -1000, -1000, -1000, - -1000, -1000, -40, 728, 1376, 274, 295, 288, 307, 273, + -1000, 142, -1000, -1000, 1162, -1000, 1162, 1162, 334, -1000, + 482, 330, 221, 1162, 329, 1548, 1548, 120, 73, 325, + -1000, -1000, 1049, 1088, 1191, 1219, 1219, 1219, 1219, 1219, + 1219, 1314, 291, 291, 192, 192, 192, 192, 1294, 1247, + 1275, 1314, 1314, 192, -1000, 251, -46, -1000, -1000, -1000, + -1000, -1000, -40, 718, 1366, 274, 295, 288, 307, 273, 272, -1000, 238, -50, 13, 59, 266, 27, -1000, -5, - -1000, 586, -1000, -1000, 1172, 438, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 419, 1059, -1000, 670, 138, + -1000, 576, -1000, -1000, 1162, 428, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 419, 1049, -1000, 660, 138, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 56, -1000, 158, 158, 1532, 397, 321, -1000, 1532, 1532, - 1532, -1000, -60, 197, -1000, 317, 315, 1532, 241, 1532, + 56, -1000, 158, 158, 1548, 397, 321, -1000, 1548, 1548, + 1548, -1000, -60, 197, -1000, 317, 315, 1548, 241, 1548, 134, -1000, -1000, 14, 20, 295, 288, 307, 273, 272, - -1000, -1000, -1000, -1000, 121, 177, 1480, -1000, 1532, 16, - 158, 1454, 1738, 907, 286, 1172, 1532, -50, -1000, 1714, - 1532, 309, 233, -50, -1000, 299, 1532, -1000, 1059, 102, - -1000, 412, 1172, -1000, 158, -1000, -1000, 271, -1000, 178, + -1000, -1000, -1000, -1000, 121, 177, 1496, -1000, 1548, 16, + 158, 1470, 1754, 897, 286, 1162, 1548, -50, -1000, 1730, + 1548, 309, 233, -50, -1000, 299, 1548, -1000, 1049, 102, + -1000, 412, 1162, -1000, 158, -1000, -1000, 271, -1000, 178, 178, 162, -1000, -1000, 7, 264, -1000, 74, 158, -1000, - -16, -1000, 1747, 1532, 1532, 1532, 1532, 218, 1506, 1688, - 118, 198, 158, 1532, 92, -20, 95, -1000, -12, -1000, - -1000, -1000, -1000, -1000, 209, 1532, 9, 1532, 849, 206, - -1000, 417, 10, 1428, 158, -25, -50, -1000, -1000, 158, - 1172, -1000, -1000, 1172, 620, 416, 210, 1532, -1000, 354, - -1000, 1532, -1000, -1000, -30, -1000, -36, -36, -36, -36, - 1662, -1000, 1532, 1402, 158, 196, 1636, 158, -33, 1610, + -16, -1000, 1763, 1548, 1548, 1548, 1548, 218, 1522, 1704, + 118, 198, 158, 1548, 92, -20, 95, -1000, -12, -1000, + -1000, -1000, -1000, -1000, 209, 1548, 9, 1548, 839, 206, + -1000, 417, 10, 1444, 158, -25, -50, -1000, -1000, 158, + 1162, -1000, -1000, 1162, 610, 416, 210, 1548, -1000, 354, + -1000, 1548, -1000, -1000, -30, -1000, -36, -36, -36, -36, + 1678, -1000, 1548, 1418, 158, 196, 1652, 158, -33, 1626, -1000, -1000, -29, -1000, 158, -1000, -1000, 415, -1000, 177, - 63, 1532, -1000, 414, 1059, 408, 810, -1000, 1172, -1000, - 231, 18, -1000, 91, 158, 1532, -60, -60, -60, -60, - 1376, 158, 158, 177, 90, 62, 1584, 1402, 205, 1558, - 158, 1376, -35, -1000, 1532, 158, 404, -1000, -1000, -1000, - 401, 760, -50, 89, 1532, -1000, 191, 88, -1000, 1532, - 1532, 1376, 176, 86, -1000, 158, 1376, 83, 1532, 80, - -1000, -1000, -1000, -1000, -1000, -50, 158, -1000, -1000, 158, - 158, 79, -1000, 228, 77, -1000, 187, -1000, 399, -1000, - 226, -1000, -1000, -1000, -1000, -1000, + 63, 1548, -1000, 414, 1049, 408, 800, -1000, 1162, -1000, + 231, 18, -1000, 91, 158, 1548, -60, -60, -60, -60, + 1392, 158, 158, 177, 90, 62, 1600, 1418, 205, 1574, + 158, 1366, -35, -1000, 1548, 158, 404, -1000, -1000, -1000, + 401, 750, -50, 89, 1548, -1000, 191, 88, 177, -1000, + 1548, 1548, 1392, 176, 86, -1000, 158, 1366, 83, 1548, + 80, -1000, -1000, -1000, -1000, -1000, -50, 158, -1000, -1000, + 158, 158, 79, -1000, 228, 77, -1000, 187, -1000, 399, + -1000, 226, -1000, -1000, -1000, -1000, -1000, } var yyPgo = [...]int16{ - 0, 446, 493, 4, 488, 487, 486, 485, 484, 483, - 349, 482, 5, 25, 49, 337, 411, 481, 62, 473, - 16, 15, 41, 471, 11, 470, 469, 460, 0, 13, - 457, 2, 1, 6, 215, 455, 9, 12, 8, 3, - 10, 454, 452, 448, 7, 22, 21, 14, 443, + 0, 447, 499, 4, 498, 485, 483, 478, 477, 476, + 349, 475, 5, 25, 49, 337, 411, 474, 62, 472, + 16, 15, 41, 471, 11, 463, 462, 461, 0, 13, + 458, 2, 1, 6, 215, 456, 9, 12, 8, 3, + 10, 455, 453, 450, 7, 22, 21, 14, 443, } var yyR1 = [...]int8{ @@ -570,12 +571,12 @@ var yyR1 = [...]int8{ 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, - 30, 30, 30, 30, 30, 30, 30, 30, 30, 31, - 31, 32, 32, 48, 48, 44, 44, 45, 45, 45, - 45, 37, 37, 37, 38, 38, 38, 38, 38, 38, - 38, 38, 47, 47, 46, 46, 46, 34, 35, 35, - 36, 36, 39, 39, 40, 40, 43, 43, 43, 41, - 41, 42, 42, + 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, + 31, 31, 32, 32, 48, 48, 44, 44, 45, 45, + 45, 45, 37, 37, 37, 38, 38, 38, 38, 38, + 38, 38, 38, 47, 47, 46, 46, 46, 34, 35, + 35, 36, 36, 39, 39, 40, 40, 43, 43, 43, + 41, 41, 42, 42, } var yyR2 = [...]int8{ @@ -596,14 +597,14 @@ var yyR2 = [...]int8{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, 3, 6, 1, 3, 3, 7, 1, 2, 2, 1, 1, 1, 1, 1, 1, 3, 4, 3, - 7, 3, 7, 5, 6, 4, 5, 7, 6, 9, - 8, 6, 8, 5, 7, 4, 3, 4, 3, 3, - 4, 8, 4, 2, 2, 4, 4, 4, 4, 1, - 3, 3, 3, 1, 1, 3, 1, 1, 3, 2, - 4, 1, 3, 2, 3, 4, 3, 4, 3, 4, - 3, 4, 1, 2, 2, 4, 5, 3, 1, 3, - 1, 3, 1, 3, 1, 3, 0, 2, 3, 0, - 2, 5, 6, + 7, 3, 7, 6, 5, 6, 4, 5, 7, 6, + 9, 8, 6, 8, 5, 7, 4, 3, 4, 3, + 3, 4, 8, 4, 2, 2, 4, 4, 4, 4, + 1, 3, 3, 3, 1, 1, 3, 1, 1, 3, + 2, 4, 1, 3, 2, 3, 4, 3, 4, 3, + 4, 3, 4, 1, 2, 2, 4, 5, 3, 1, + 3, 1, 3, 1, 3, 1, 3, 0, 2, 3, + 0, 2, 5, 6, } var yyChk = [...]int16{ @@ -651,11 +652,11 @@ var yyChk = [...]int16{ 49, -28, 50, -12, -28, 73, -47, -47, -47, -47, 49, -28, -28, 50, -32, -28, 54, 49, -28, 73, -28, 49, 76, 9, 72, -28, -3, 9, 9, 21, - -3, -13, 50, -39, 73, 50, -28, -32, 50, 72, - 72, 49, -28, -32, 50, -28, 49, -32, 73, -31, - 9, -3, 9, 6, -33, 50, -28, 48, 50, -28, - -28, -32, 50, 50, -32, 50, -28, 50, -3, -33, - 50, 50, 50, 48, 9, 50, + -3, -13, 50, -39, 73, 50, -28, -32, 50, 50, + 72, 72, 49, -28, -32, 50, -28, 49, -32, 73, + -31, 9, -3, 9, 6, -33, 50, -28, 48, 50, + -28, -28, -32, 50, 50, -32, 50, -28, 50, -3, + -33, 50, 50, 50, 48, 9, 50, } var yyDef = [...]int16{ @@ -665,8 +666,8 @@ var yyDef = [...]int16{ 59, 60, 61, 62, 63, 64, 65, 0, 0, 0, 0, 0, 95, 94, 0, 44, 0, 0, 0, 0, 100, 0, 0, 110, 111, 0, 7, 0, 0, 0, - 53, 0, 0, 32, 40, 0, 21, 232, 234, 23, - 0, 236, 0, 97, 0, 0, 0, 0, 0, 0, + 53, 0, 0, 32, 40, 0, 21, 233, 235, 23, + 0, 237, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 87, 88, 89, 90, 112, 0, 0, 0, 122, 0, 124, @@ -674,40 +675,40 @@ var yyDef = [...]int16{ 137, 138, 8, -2, 0, 0, 46, 47, 48, 49, 50, 51, 52, 0, 0, 0, 0, 0, 0, 0, 108, 0, 10, 4, 0, 4, 0, 0, 0, 18, - 0, 0, 0, 0, 0, 0, 0, 0, 239, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, 98, 99, 56, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 91, 154, 158, 161, 162, 163, 164, 165, 166, 0, 0, 0, 0, 0, 0, 0, - 0, 92, 0, 150, 117, 119, 0, 0, 228, 230, + 0, 92, 0, 150, 117, 119, 0, 0, 229, 231, 123, 126, 148, 149, 0, 0, 45, 101, 102, 103, 104, 105, 106, 107, 109, 0, 12, 27, 0, 0, 54, 33, 34, 35, 36, 37, 38, 39, 41, 19, - 20, 233, 235, 24, 0, 0, 0, 237, 0, 0, - 0, 160, 159, 0, 222, 0, 0, 0, 0, 0, - 0, 193, 211, 166, 0, 140, 141, 143, 147, 145, - 139, 142, 144, 146, 0, 0, 0, 207, 0, 166, - 206, 0, 0, 0, 194, 0, 0, 150, 4, 0, - 0, 0, 0, 150, 227, 0, 0, 125, 127, 0, - 11, 0, 0, 4, 25, 26, 240, 0, 238, 155, - 156, 0, 223, 189, 0, 224, 167, 0, 199, 169, - 0, 171, 213, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 209, 0, 0, 186, 0, 188, 0, 140, + 20, 234, 236, 24, 0, 0, 0, 238, 0, 0, + 0, 160, 159, 0, 223, 0, 0, 0, 0, 0, + 0, 194, 212, 166, 0, 140, 141, 143, 147, 145, + 139, 142, 144, 146, 0, 0, 0, 208, 0, 166, + 207, 0, 0, 0, 195, 0, 0, 150, 4, 0, + 0, 0, 0, 150, 228, 0, 0, 125, 127, 0, + 11, 0, 0, 4, 25, 26, 241, 0, 239, 155, + 156, 0, 224, 190, 0, 225, 167, 0, 200, 169, + 0, 171, 214, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 210, 0, 0, 187, 0, 189, 0, 140, 141, 143, 145, 147, 0, 0, 0, 0, 0, 0, - 4, 0, 151, 0, 118, 120, 150, 4, 229, 231, - 0, 13, 4, 0, 0, 0, 0, 160, 198, 0, - 168, 0, 203, 204, 0, 212, 214, 216, 218, 220, - 0, 208, 0, 0, 175, 0, 0, 205, 185, 0, - 187, 190, 0, 192, 195, 196, 197, 0, 114, 152, - 206, 0, 4, 0, 128, 0, 0, 4, 0, 17, - 0, 0, 225, 0, 200, 0, 215, 217, 219, 221, - 0, 173, 210, 176, 0, 206, 0, 0, 175, 0, - 183, 0, 0, 113, 0, 121, 0, 116, 14, 4, - 0, 0, 150, 0, 0, 226, 0, 0, 174, 0, - 0, 0, 173, 0, 178, 181, 0, 0, 0, 0, - 115, 28, 15, 4, 241, 150, 157, 170, 172, 202, - 201, 0, 177, 174, 0, 184, 0, 153, 0, 242, - 172, 180, 182, 191, 16, 179, + 4, 0, 151, 0, 118, 120, 150, 4, 230, 232, + 0, 13, 4, 0, 0, 0, 0, 160, 199, 0, + 168, 0, 204, 205, 0, 213, 215, 217, 219, 221, + 0, 209, 0, 0, 176, 0, 0, 206, 186, 0, + 188, 191, 0, 193, 196, 197, 198, 0, 114, 152, + 207, 0, 4, 0, 128, 0, 0, 4, 0, 17, + 0, 0, 226, 0, 201, 0, 216, 218, 220, 222, + 0, 174, 211, 177, 0, 207, 0, 0, 176, 0, + 184, 0, 0, 113, 0, 121, 0, 116, 14, 4, + 0, 0, 150, 0, 0, 227, 0, 0, 173, 175, + 0, 0, 0, 174, 0, 179, 182, 0, 0, 0, + 0, 115, 28, 15, 4, 242, 150, 157, 170, 172, + 203, 202, 0, 178, 175, 0, 185, 0, 153, 0, + 243, 172, 181, 183, 192, 16, 180, } var yyTok1 = [...]int8{ @@ -2362,221 +2363,228 @@ yydefault: yyVAL.typeexpr.SetPosFromToken(yyDollar[1].token.Pos) } case 173: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] //line parser.go.y:1001 { - yyVAL.typeexpr = &ast.FunctionTypeExpr{Params: yyDollar[2].funcparams, Returns: []ast.TypeExpr{yyDollar[5].typeexpr}} + yyVAL.typeexpr = &ast.FunctionTypeExpr{Params: yyDollar[2].funcparams, Returns: []ast.TypeExpr{}} yyVAL.typeexpr.SetPosFromToken(yyDollar[1].token.Pos) } case 174: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] //line parser.go.y:1005 { - yyVAL.typeexpr = &ast.FunctionTypeExpr{Params: []ast.FunctionParamExpr{}, Returns: yyDollar[5].typeexprlist} + yyVAL.typeexpr = &ast.FunctionTypeExpr{Params: yyDollar[2].funcparams, Returns: []ast.TypeExpr{yyDollar[5].typeexpr}} yyVAL.typeexpr.SetPosFromToken(yyDollar[1].token.Pos) } case 175: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] //line parser.go.y:1009 { - yyVAL.typeexpr = &ast.FunctionTypeExpr{Params: []ast.FunctionParamExpr{}, Returns: []ast.TypeExpr{yyDollar[4].typeexpr}} + yyVAL.typeexpr = &ast.FunctionTypeExpr{Params: []ast.FunctionParamExpr{}, Returns: yyDollar[5].typeexprlist} yyVAL.typeexpr.SetPosFromToken(yyDollar[1].token.Pos) } case 176: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line parser.go.y:1013 { - yyVAL.typeexpr = &ast.FunctionTypeExpr{Params: []ast.FunctionParamExpr{}, Returns: []ast.TypeExpr{}} + yyVAL.typeexpr = &ast.FunctionTypeExpr{Params: []ast.FunctionParamExpr{}, Returns: []ast.TypeExpr{yyDollar[4].typeexpr}} yyVAL.typeexpr.SetPosFromToken(yyDollar[1].token.Pos) } case 177: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] //line parser.go.y:1017 { - yyVAL.typeexpr = &ast.FunctionTypeExpr{Params: yyDollar[3].funcparams, Returns: []ast.TypeExpr{yyDollar[6].typeexpr}} + yyVAL.typeexpr = &ast.FunctionTypeExpr{Params: []ast.FunctionParamExpr{}, Returns: []ast.TypeExpr{}} yyVAL.typeexpr.SetPosFromToken(yyDollar[1].token.Pos) } case 178: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-7 : yypt+1] //line parser.go.y:1021 { - yyVAL.typeexpr = &ast.FunctionTypeExpr{Params: []ast.FunctionParamExpr{}, Returns: []ast.TypeExpr{yyDollar[5].typeexpr}} + yyVAL.typeexpr = &ast.FunctionTypeExpr{Params: yyDollar[3].funcparams, Returns: []ast.TypeExpr{yyDollar[6].typeexpr}} yyVAL.typeexpr.SetPosFromToken(yyDollar[1].token.Pos) } case 179: - yyDollar = yyS[yypt-9 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] //line parser.go.y:1025 { - yyVAL.typeexpr = &ast.FunctionTypeExpr{Params: yyDollar[3].funcparams, Returns: yyDollar[7].typeexprlist} + yyVAL.typeexpr = &ast.FunctionTypeExpr{Params: []ast.FunctionParamExpr{}, Returns: []ast.TypeExpr{yyDollar[5].typeexpr}} yyVAL.typeexpr.SetPosFromToken(yyDollar[1].token.Pos) } case 180: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-9 : yypt+1] //line parser.go.y:1029 { - yyVAL.typeexpr = &ast.FunctionTypeExpr{Params: []ast.FunctionParamExpr{}, Returns: yyDollar[6].typeexprlist} + yyVAL.typeexpr = &ast.FunctionTypeExpr{Params: yyDollar[3].funcparams, Returns: yyDollar[7].typeexprlist} yyVAL.typeexpr.SetPosFromToken(yyDollar[1].token.Pos) } case 181: - yyDollar = yyS[yypt-6 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] //line parser.go.y:1033 { - yyVAL.typeexpr = &ast.FunctionTypeExpr{Params: yyDollar[3].funcparams, Returns: []ast.TypeExpr{yyDollar[6].typeexpr}} + yyVAL.typeexpr = &ast.FunctionTypeExpr{Params: []ast.FunctionParamExpr{}, Returns: yyDollar[6].typeexprlist} yyVAL.typeexpr.SetPosFromToken(yyDollar[1].token.Pos) } case 182: - yyDollar = yyS[yypt-8 : yypt+1] + yyDollar = yyS[yypt-6 : yypt+1] //line parser.go.y:1037 { - yyVAL.typeexpr = &ast.FunctionTypeExpr{Params: yyDollar[3].funcparams, Returns: yyDollar[7].typeexprlist} + yyVAL.typeexpr = &ast.FunctionTypeExpr{Params: yyDollar[3].funcparams, Returns: []ast.TypeExpr{yyDollar[6].typeexpr}} yyVAL.typeexpr.SetPosFromToken(yyDollar[1].token.Pos) } case 183: - yyDollar = yyS[yypt-5 : yypt+1] + yyDollar = yyS[yypt-8 : yypt+1] //line parser.go.y:1041 { - yyVAL.typeexpr = &ast.FunctionTypeExpr{Params: []ast.FunctionParamExpr{}, Returns: []ast.TypeExpr{yyDollar[5].typeexpr}} + yyVAL.typeexpr = &ast.FunctionTypeExpr{Params: yyDollar[3].funcparams, Returns: yyDollar[7].typeexprlist} yyVAL.typeexpr.SetPosFromToken(yyDollar[1].token.Pos) } case 184: - yyDollar = yyS[yypt-7 : yypt+1] + yyDollar = yyS[yypt-5 : yypt+1] //line parser.go.y:1045 { - yyVAL.typeexpr = &ast.FunctionTypeExpr{Params: []ast.FunctionParamExpr{}, Returns: yyDollar[6].typeexprlist} + yyVAL.typeexpr = &ast.FunctionTypeExpr{Params: []ast.FunctionParamExpr{}, Returns: []ast.TypeExpr{yyDollar[5].typeexpr}} yyVAL.typeexpr.SetPosFromToken(yyDollar[1].token.Pos) } case 185: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-7 : yypt+1] //line parser.go.y:1049 { - yyVAL.typeexpr = &ast.FunctionTypeExpr{Params: yyDollar[3].funcparams, Returns: nil} + yyVAL.typeexpr = &ast.FunctionTypeExpr{Params: []ast.FunctionParamExpr{}, Returns: yyDollar[6].typeexprlist} yyVAL.typeexpr.SetPosFromToken(yyDollar[1].token.Pos) } case 186: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line parser.go.y:1053 { - yyVAL.typeexpr = &ast.FunctionTypeExpr{Params: []ast.FunctionParamExpr{}, Returns: nil} + yyVAL.typeexpr = &ast.FunctionTypeExpr{Params: yyDollar[3].funcparams, Returns: nil} yyVAL.typeexpr.SetPosFromToken(yyDollar[1].token.Pos) } case 187: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-3 : yypt+1] //line parser.go.y:1057 { - yyVAL.typeexpr = &ast.RecordTypeExpr{Fields: yyDollar[3].recordfields} + yyVAL.typeexpr = &ast.FunctionTypeExpr{Params: []ast.FunctionParamExpr{}, Returns: nil} yyVAL.typeexpr.SetPosFromToken(yyDollar[1].token.Pos) } case 188: - yyDollar = yyS[yypt-3 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line parser.go.y:1061 { - yyVAL.typeexpr = &ast.RecordTypeExpr{Fields: nil} + yyVAL.typeexpr = &ast.RecordTypeExpr{Fields: yyDollar[3].recordfields} yyVAL.typeexpr.SetPosFromToken(yyDollar[1].token.Pos) } case 189: yyDollar = yyS[yypt-3 : yypt+1] //line parser.go.y:1065 + { + yyVAL.typeexpr = &ast.RecordTypeExpr{Fields: nil} + yyVAL.typeexpr.SetPosFromToken(yyDollar[1].token.Pos) + } + case 190: + yyDollar = yyS[yypt-3 : yypt+1] +//line parser.go.y:1069 { yyVAL.typeexpr = &ast.ArrayTypeExpr{Element: yyDollar[1].typeexpr} yyVAL.typeexpr.CopyPos(yyDollar[1].typeexpr) } - case 190: + case 191: yyDollar = yyS[yypt-4 : yypt+1] -//line parser.go.y:1069 +//line parser.go.y:1073 { arr := &ast.ArrayTypeExpr{Element: yyDollar[3].typeexpr, Readonly: true} arr.SetPosFromToken(yyDollar[1].token.Pos) yyVAL.typeexpr = arr } - case 191: + case 192: yyDollar = yyS[yypt-8 : yypt+1] -//line parser.go.y:1074 +//line parser.go.y:1078 { m := &ast.MapTypeExpr{Key: yyDollar[4].typeexpr, Value: yyDollar[7].typeexpr, Readonly: true} m.SetPosFromToken(yyDollar[1].token.Pos) yyVAL.typeexpr = m } - case 192: - yyDollar = yyS[yypt-4 : yypt+1] -//line parser.go.y:1079 - { - yyVAL.typeexpr = &ast.RecordTypeExpr{Fields: yyDollar[3].recordfields, Readonly: true} - yyVAL.typeexpr.SetPosFromToken(yyDollar[1].token.Pos) - } case 193: - yyDollar = yyS[yypt-2 : yypt+1] + yyDollar = yyS[yypt-4 : yypt+1] //line parser.go.y:1083 { - yyVAL.typeexpr = &ast.RecordTypeExpr{Fields: nil} + yyVAL.typeexpr = &ast.RecordTypeExpr{Fields: yyDollar[3].recordfields, Readonly: true} yyVAL.typeexpr.SetPosFromToken(yyDollar[1].token.Pos) } case 194: yyDollar = yyS[yypt-2 : yypt+1] //line parser.go.y:1087 { - yyVAL.typeexpr = &ast.AssertsTypeExpr{ParamName: yyDollar[2].token.Str, NarrowTo: nil} + yyVAL.typeexpr = &ast.RecordTypeExpr{Fields: nil} yyVAL.typeexpr.SetPosFromToken(yyDollar[1].token.Pos) } case 195: - yyDollar = yyS[yypt-4 : yypt+1] + yyDollar = yyS[yypt-2 : yypt+1] //line parser.go.y:1091 { - yyVAL.typeexpr = &ast.AssertsTypeExpr{ParamName: yyDollar[2].token.Str, NarrowTo: yyDollar[4].typeexpr} + yyVAL.typeexpr = &ast.AssertsTypeExpr{ParamName: yyDollar[2].token.Str, NarrowTo: nil} yyVAL.typeexpr.SetPosFromToken(yyDollar[1].token.Pos) } case 196: yyDollar = yyS[yypt-4 : yypt+1] //line parser.go.y:1095 { - yyVAL.typeexpr = &ast.TypeOfExpr{Expr: yyDollar[3].expr} + yyVAL.typeexpr = &ast.AssertsTypeExpr{ParamName: yyDollar[2].token.Str, NarrowTo: yyDollar[4].typeexpr} yyVAL.typeexpr.SetPosFromToken(yyDollar[1].token.Pos) } case 197: yyDollar = yyS[yypt-4 : yypt+1] //line parser.go.y:1099 { - yyVAL.typeexpr = &ast.KeyOfExpr{Inner: yyDollar[3].typeexpr} + yyVAL.typeexpr = &ast.TypeOfExpr{Expr: yyDollar[3].expr} yyVAL.typeexpr.SetPosFromToken(yyDollar[1].token.Pos) } case 198: yyDollar = yyS[yypt-4 : yypt+1] //line parser.go.y:1103 + { + yyVAL.typeexpr = &ast.KeyOfExpr{Inner: yyDollar[3].typeexpr} + yyVAL.typeexpr.SetPosFromToken(yyDollar[1].token.Pos) + } + case 199: + yyDollar = yyS[yypt-4 : yypt+1] +//line parser.go.y:1107 { yyVAL.typeexpr = &ast.IndexAccessExpr{Object: yyDollar[1].typeexpr, Index: yyDollar[3].typeexpr} yyVAL.typeexpr.CopyPos(yyDollar[1].typeexpr) } - case 199: + case 200: yyDollar = yyS[yypt-1 : yypt+1] -//line parser.go.y:1109 +//line parser.go.y:1113 { yyVAL.typeexprlist = []ast.TypeExpr{yyDollar[1].typeexpr} } - case 200: + case 201: yyDollar = yyS[yypt-3 : yypt+1] -//line parser.go.y:1112 +//line parser.go.y:1116 { yyVAL.typeexprlist = append(yyDollar[1].typeexprlist, yyDollar[3].typeexpr) } - case 201: + case 202: yyDollar = yyS[yypt-3 : yypt+1] -//line parser.go.y:1117 +//line parser.go.y:1121 { yyVAL.typeexprlist = []ast.TypeExpr{yyDollar[1].typeexpr, yyDollar[3].typeexpr} } - case 202: + case 203: yyDollar = yyS[yypt-3 : yypt+1] -//line parser.go.y:1120 +//line parser.go.y:1124 { yyVAL.typeexprlist = append(yyDollar[1].typeexprlist, yyDollar[3].typeexpr) } - case 203: + case 204: yyDollar = yyS[yypt-1 : yypt+1] -//line parser.go.y:1125 +//line parser.go.y:1129 { } - case 204: + case 205: yyDollar = yyS[yypt-1 : yypt+1] -//line parser.go.y:1127 +//line parser.go.y:1131 { yylex.(*Lexer).PendingGT = &ast.Token{ Type: '>', @@ -2584,234 +2592,234 @@ yydefault: Pos: ast.Position{Source: yyDollar[1].token.Pos.Source, Line: yyDollar[1].token.Pos.Line, Column: yyDollar[1].token.Pos.Column + 1}, } } - case 205: + case 206: yyDollar = yyS[yypt-3 : yypt+1] -//line parser.go.y:1136 +//line parser.go.y:1140 { yyVAL.funcparam = ast.FunctionParamExpr{Name: yyDollar[1].token.Str, Type: yyDollar[3].typeexpr} } - case 206: + case 207: yyDollar = yyS[yypt-1 : yypt+1] -//line parser.go.y:1139 +//line parser.go.y:1143 { yyVAL.funcparam = ast.FunctionParamExpr{Name: "", Type: yyDollar[1].typeexpr} } - case 207: + case 208: yyDollar = yyS[yypt-1 : yypt+1] -//line parser.go.y:1144 +//line parser.go.y:1148 { yyVAL.funcparams = []ast.FunctionParamExpr{yyDollar[1].funcparam} } - case 208: + case 209: yyDollar = yyS[yypt-3 : yypt+1] -//line parser.go.y:1147 +//line parser.go.y:1151 { yyVAL.funcparams = append(yyDollar[1].funcparams, yyDollar[3].funcparam) } - case 209: + case 210: yyDollar = yyS[yypt-2 : yypt+1] -//line parser.go.y:1150 +//line parser.go.y:1154 { yyVAL.funcparams = []ast.FunctionParamExpr{{Name: "...", Type: yyDollar[2].typeexpr}} } - case 210: + case 211: yyDollar = yyS[yypt-4 : yypt+1] -//line parser.go.y:1153 +//line parser.go.y:1157 { yyVAL.funcparams = append(yyDollar[1].funcparams, ast.FunctionParamExpr{Name: "...", Type: yyDollar[4].typeexpr}) } - case 211: + case 212: yyDollar = yyS[yypt-1 : yypt+1] -//line parser.go.y:1158 +//line parser.go.y:1162 { yyVAL.recordfields = []ast.RecordFieldExpr{yyDollar[1].recordfield} } - case 212: + case 213: yyDollar = yyS[yypt-3 : yypt+1] -//line parser.go.y:1161 +//line parser.go.y:1165 { yyVAL.recordfields = append(yyDollar[1].recordfields, yyDollar[3].recordfield) } - case 213: + case 214: yyDollar = yyS[yypt-2 : yypt+1] -//line parser.go.y:1164 +//line parser.go.y:1168 { yyVAL.recordfields = yyDollar[1].recordfields } - case 214: + case 215: yyDollar = yyS[yypt-3 : yypt+1] -//line parser.go.y:1169 +//line parser.go.y:1173 { yyVAL.recordfield = ast.RecordFieldExpr{Name: yyDollar[1].token.Str, Type: yyDollar[3].typeexpr, Optional: false} } - case 215: + case 216: yyDollar = yyS[yypt-4 : yypt+1] -//line parser.go.y:1172 +//line parser.go.y:1176 { yyVAL.recordfield = ast.RecordFieldExpr{Name: yyDollar[1].token.Str, Type: yyDollar[3].typeexpr, Optional: false, Annotations: yyDollar[4].annotations} } - case 216: + case 217: yyDollar = yyS[yypt-3 : yypt+1] -//line parser.go.y:1175 +//line parser.go.y:1179 { yyVAL.recordfield = ast.RecordFieldExpr{Name: yyDollar[1].token.Str, Type: yyDollar[3].typeexpr, Optional: true} } - case 217: + case 218: yyDollar = yyS[yypt-4 : yypt+1] -//line parser.go.y:1178 +//line parser.go.y:1182 { yyVAL.recordfield = ast.RecordFieldExpr{Name: yyDollar[1].token.Str, Type: yyDollar[3].typeexpr, Optional: true, Annotations: yyDollar[4].annotations} } - case 218: + case 219: yyDollar = yyS[yypt-3 : yypt+1] -//line parser.go.y:1181 +//line parser.go.y:1185 { yyVAL.recordfield = ast.RecordFieldExpr{Name: yyDollar[1].fieldname, Type: yyDollar[3].typeexpr, Optional: false} } - case 219: + case 220: yyDollar = yyS[yypt-4 : yypt+1] -//line parser.go.y:1184 +//line parser.go.y:1188 { yyVAL.recordfield = ast.RecordFieldExpr{Name: yyDollar[1].fieldname, Type: yyDollar[3].typeexpr, Optional: false, Annotations: yyDollar[4].annotations} } - case 220: + case 221: yyDollar = yyS[yypt-3 : yypt+1] -//line parser.go.y:1187 +//line parser.go.y:1191 { yyVAL.recordfield = ast.RecordFieldExpr{Name: yyDollar[1].fieldname, Type: yyDollar[3].typeexpr, Optional: true} } - case 221: + case 222: yyDollar = yyS[yypt-4 : yypt+1] -//line parser.go.y:1190 +//line parser.go.y:1194 { yyVAL.recordfield = ast.RecordFieldExpr{Name: yyDollar[1].fieldname, Type: yyDollar[3].typeexpr, Optional: true, Annotations: yyDollar[4].annotations} } - case 222: + case 223: yyDollar = yyS[yypt-1 : yypt+1] -//line parser.go.y:1195 +//line parser.go.y:1199 { yyVAL.annotations = []ast.AnnotationExpr{yyDollar[1].annotation} } - case 223: + case 224: yyDollar = yyS[yypt-2 : yypt+1] -//line parser.go.y:1198 +//line parser.go.y:1202 { yyVAL.annotations = append(yyDollar[1].annotations, yyDollar[2].annotation) } - case 224: + case 225: yyDollar = yyS[yypt-2 : yypt+1] -//line parser.go.y:1203 +//line parser.go.y:1207 { yyVAL.annotation = ast.AnnotationExpr{Name: yyDollar[2].token.Str, Args: nil} } - case 225: + case 226: yyDollar = yyS[yypt-4 : yypt+1] -//line parser.go.y:1206 +//line parser.go.y:1210 { yyVAL.annotation = ast.AnnotationExpr{Name: yyDollar[2].token.Str, Args: nil} } - case 226: + case 227: yyDollar = yyS[yypt-5 : yypt+1] -//line parser.go.y:1209 +//line parser.go.y:1213 { yyVAL.annotation = ast.AnnotationExpr{Name: yyDollar[2].token.Str, Args: yyDollar[4].exprlist} } - case 227: + case 228: yyDollar = yyS[yypt-3 : yypt+1] -//line parser.go.y:1214 +//line parser.go.y:1218 { yyVAL.typeparams = yyDollar[2].typeparams } - case 228: + case 229: yyDollar = yyS[yypt-1 : yypt+1] -//line parser.go.y:1219 +//line parser.go.y:1223 { yyVAL.typeparams = []ast.TypeParamExpr{yyDollar[1].typeparam} } - case 229: + case 230: yyDollar = yyS[yypt-3 : yypt+1] -//line parser.go.y:1222 +//line parser.go.y:1226 { yyVAL.typeparams = append(yyDollar[1].typeparams, yyDollar[3].typeparam) } - case 230: + case 231: yyDollar = yyS[yypt-1 : yypt+1] -//line parser.go.y:1227 +//line parser.go.y:1231 { yyVAL.typeparam = ast.TypeParamExpr{Name: yyDollar[1].token.Str, Constraint: nil} } - case 231: + case 232: yyDollar = yyS[yypt-3 : yypt+1] -//line parser.go.y:1230 +//line parser.go.y:1234 { yyVAL.typeparam = ast.TypeParamExpr{Name: yyDollar[1].token.Str, Constraint: yyDollar[3].typeexpr} } - case 232: + case 233: yyDollar = yyS[yypt-1 : yypt+1] -//line parser.go.y:1235 +//line parser.go.y:1239 { yyVAL.typednames = []typedNameEntry{yyDollar[1].typedname} } - case 233: + case 234: yyDollar = yyS[yypt-3 : yypt+1] -//line parser.go.y:1238 +//line parser.go.y:1242 { yyVAL.typednames = append(yyDollar[1].typednames, yyDollar[3].typedname) } - case 234: + case 235: yyDollar = yyS[yypt-1 : yypt+1] -//line parser.go.y:1243 +//line parser.go.y:1247 { yyVAL.typedname = typedNameEntry{Name: yyDollar[1].token.Str, Pos: yyDollar[1].token.Pos, Type: nil} } - case 235: + case 236: yyDollar = yyS[yypt-3 : yypt+1] -//line parser.go.y:1246 +//line parser.go.y:1250 { yyVAL.typedname = typedNameEntry{Name: yyDollar[1].token.Str, Pos: yyDollar[1].token.Pos, Type: yyDollar[3].typeexpr} } - case 236: + case 237: yyDollar = yyS[yypt-0 : yypt+1] -//line parser.go.y:1251 +//line parser.go.y:1255 { yyVAL.typereflist = nil } - case 237: + case 238: yyDollar = yyS[yypt-2 : yypt+1] -//line parser.go.y:1254 +//line parser.go.y:1258 { yyVAL.typereflist = []*ast.TypeRefExpr{{Path: []string{yyDollar[2].token.Str}}} } - case 238: + case 239: yyDollar = yyS[yypt-3 : yypt+1] -//line parser.go.y:1257 +//line parser.go.y:1261 { yyVAL.typereflist = append(yyDollar[1].typereflist, &ast.TypeRefExpr{Path: []string{yyDollar[3].token.Str}}) } - case 239: + case 240: yyDollar = yyS[yypt-0 : yypt+1] -//line parser.go.y:1262 +//line parser.go.y:1266 { yyVAL.ifacemethods = nil } - case 240: + case 241: yyDollar = yyS[yypt-2 : yypt+1] -//line parser.go.y:1265 +//line parser.go.y:1269 { yyVAL.ifacemethods = append(yyDollar[1].ifacemethods, yyDollar[2].ifacemethod) } - case 241: + case 242: yyDollar = yyS[yypt-5 : yypt+1] -//line parser.go.y:1270 +//line parser.go.y:1274 { yyVAL.ifacemethod = ast.InterfaceMethodExpr{ Name: yyDollar[2].token.Str, Type: &ast.FunctionTypeExpr{Params: []ast.FunctionParamExpr{}, Returns: yyDollar[5].typeexprlist}, } } - case 242: + case 243: yyDollar = yyS[yypt-6 : yypt+1] -//line parser.go.y:1276 +//line parser.go.y:1280 { yyVAL.ifacemethod = ast.InterfaceMethodExpr{ Name: yyDollar[2].token.Str, diff --git a/compiler/parse/parser.go.y b/compiler/parse/parser.go.y index a35cc920..47c86bc8 100644 --- a/compiler/parse/parser.go.y +++ b/compiler/parse/parser.go.y @@ -998,6 +998,10 @@ primarytypeexpr: $$ = &ast.FunctionTypeExpr{Params: $2, Returns: $6} $$.SetPosFromToken($1.Pos) } | + '(' funcparamlist ')' TArrow '(' ')' { + $$ = &ast.FunctionTypeExpr{Params: $2, Returns: []ast.TypeExpr{}} + $$.SetPosFromToken($1.Pos) + } | '(' funcparamlist ')' TArrow typeexpr { $$ = &ast.FunctionTypeExpr{Params: $2, Returns: []ast.TypeExpr{$5}} $$.SetPosFromToken($1.Pos) diff --git a/compiler/parse/parser_test.go b/compiler/parse/parser_test.go index 57c37605..9065e988 100644 --- a/compiler/parse/parser_test.go +++ b/compiler/parse/parser_test.go @@ -1942,3 +1942,41 @@ func TestParseGenericFunctionExpr(t *testing.T) { t.Errorf("TypeParams[0].Name = %q, want 'T'", fn.TypeParams[0].Name) } } + +func TestParseVoidReturnInRecordField(t *testing.T) { + tests := []struct { + name string + input string + }{ + { + name: "named params void return with comma", + input: `type C = {f: (self: C) -> (),}`, + }, + { + name: "named params void return no comma", + input: `type C = {f: (self: C) -> ()}`, + }, + { + name: "named params void return multiline", + input: "type C = {\n f: (self: C) -> (),\n g: (self: C, x: number) -> ()\n}", + }, + { + name: "multiple named params void return", + input: `type C = {f: (a: number, b: string) -> ()}`, + }, + { + name: "no params void return", + input: `type C = {f: () -> ()}`, + }, + // Parenthesized single return like (number) is ambiguous with grouping + // and handled separately via the typeexprlist2 rule for 2+ returns. + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + _, err := ParseString(tt.input, "test") + if err != nil { + t.Errorf("expected no parse error, got: %v", err) + } + }) + } +} diff --git a/compiler/parse/y.output b/compiler/parse/y.output new file mode 100644 index 00000000..326d05a6 --- /dev/null +++ b/compiler/parse/y.output @@ -0,0 +1,7641 @@ + +state 0 + $accept: .chunk $end + chunk1: . (4) + + . reduce 4 (src line 185) + + chunk goto 1 + chunk1 goto 2 + +state 1 + $accept: chunk.$end + + $end accept + . error + + +state 2 + chunk: chunk1. (1) + chunk: chunk1.laststat + chunk: chunk1.laststat ';' + chunk1: chunk1.stat + chunk1: chunk1.';' + + TBreak shift 7 + TDo shift 10 + TFor shift 14 + TFunction shift 15 + TIf shift 13 + TLocal shift 16 + TReturn shift 6 + TRepeat shift 12 + TWhile shift 11 + TGoto shift 18 + TInterface shift 20 + TLabel shift 17 + TIdent shift 19 + '(' shift 24 + ';' shift 5 + . reduce 1 (src line 165) + + stat goto 4 + laststat goto 3 + varlist goto 8 + var goto 21 + prefixexp goto 9 + functioncall goto 23 + afunctioncall goto 22 + +state 3 + chunk: chunk1 laststat. (2) + chunk: chunk1 laststat.';' + + ';' shift 25 + . reduce 2 (src line 171) + + +state 4 + chunk1: chunk1 stat. (5) + + . reduce 5 (src line 188) + + +state 5 + chunk1: chunk1 ';'. (6) + + . reduce 6 (src line 191) + + +state 6 + laststat: TReturn. (29) + laststat: TReturn.exprlist + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . reduce 29 (src line 324) + + var goto 42 + exprlist goto 26 + expr goto 27 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 7 + laststat: TBreak. (31) + + . reduce 31 (src line 332) + + +state 8 + stat: varlist.'=' exprlist + varlist: varlist.',' var + + '=' shift 46 + ',' shift 47 + . error + + +9: shift/reduce conflict (shift 52(0), red'n 9(0)) on '(' +state 9 + stat: prefixexp. (9) + var: prefixexp.'[' expr ']' + var: prefixexp.'.' TIdent + var: prefixexp.'.' TType + var: prefixexp.'.' TInterface + var: prefixexp.'.' TReadonly + var: prefixexp.'.' TAs + var: prefixexp.'.' TAsserts + var: prefixexp.'.' TIs + functioncall: prefixexp.args + functioncall: prefixexp.':' TIdent args + functioncall: prefixexp.':' TType args + functioncall: prefixexp.':' TInterface args + functioncall: prefixexp.':' TReadonly args + functioncall: prefixexp.':' TAs args + functioncall: prefixexp.':' TAsserts args + functioncall: prefixexp.':' TIs args + + TString shift 43 + '{' shift 44 + '(' shift 52 + ':' shift 51 + '.' shift 49 + '[' shift 48 + . reduce 9 (src line 205) + + string goto 54 + args goto 50 + tableconstructor goto 53 + +state 10 + stat: TDo.block TEnd + chunk1: . (4) + + . reduce 4 (src line 185) + + chunk goto 56 + chunk1 goto 2 + block goto 55 + +state 11 + stat: TWhile.expr TDo block TEnd + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 57 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 12 + stat: TRepeat.block TUntil expr + chunk1: . (4) + + . reduce 4 (src line 185) + + chunk goto 56 + chunk1 goto 2 + block goto 58 + +state 13 + stat: TIf.expr TThen block elseifs TEnd + stat: TIf.expr TThen block elseifs TElse block TEnd + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 59 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 14 + stat: TFor.TIdent '=' expr ',' expr TDo block TEnd + stat: TFor.TIdent '=' expr ',' expr ',' expr TDo block TEnd + stat: TFor.namelist TIn exprlist TDo block TEnd + + TIdent shift 60 + . error + + namelist goto 61 + +state 15 + stat: TFunction.funcname funcbody + + TIdent shift 64 + . error + + funcname goto 62 + funcname1 goto 63 + +state 16 + stat: TLocal.TFunction TIdent funcbody + stat: TLocal.typednamelist '=' exprlist + stat: TLocal.typednamelist + + TFunction shift 65 + TIdent shift 68 + . error + + typednamelist goto 66 + typedname goto 67 + +state 17 + stat: TLabel. (22) + + . reduce 22 (src line 286) + + +state 18 + stat: TGoto.TIdent + + TIdent shift 69 + . error + + +19: shift/reduce conflict (shift 70(0), red'n 44(0)) on TIdent +state 19 + stat: TIdent.TIdent '=' typeexpr + stat: TIdent.TIdent typeparams '=' typeexpr + var: TIdent. (44) + + TIdent shift 70 + . reduce 44 (src line 387) + + +state 20 + stat: TInterface.TIdent interfaceextends interfacebody TEnd + + TIdent shift 71 + . error + + +state 21 + varlist: var. (42) + prefixexp: var. (95) + + '=' reduce 42 (src line 379) + ',' reduce 42 (src line 379) + . reduce 95 (src line 649) + + +state 22 + prefixexp: afunctioncall. (96) + + . reduce 96 (src line 652) + + +state 23 + prefixexp: functioncall. (97) + + . reduce 97 (src line 655) + + +state 24 + prefixexp: '('.expr ')' + afunctioncall: '('.functioncall ')' + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 72 + string goto 35 + prefixexp goto 34 + functioncall goto 73 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 25 + chunk: chunk1 laststat ';'. (3) + + . reduce 3 (src line 177) + + +state 26 + laststat: TReturn exprlist. (30) + exprlist: exprlist.',' expr + + ',' shift 74 + . reduce 30 (src line 328) + + +state 27 + exprlist: expr. (55) + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAnd shift 76 + TOr shift 75 + TAs shift 96 + TEqeq shift 81 + TNeq shift 82 + TLte shift 80 + TGte shift 79 + T2Comma shift 83 + T2Colon shift 97 + TShl shift 93 + TShr shift 94 + TIdiv shift 95 + TBang shift 98 + '>' shift 77 + '<' shift 78 + '|' shift 91 + '~' shift 92 + '&' shift 90 + '+' shift 84 + '-' shift 85 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + . reduce 55 (src line 461) + + +state 28 + expr: TNil. (57) + + . reduce 57 (src line 469) + + +state 29 + expr: TFalse. (58) + + . reduce 58 (src line 473) + + +state 30 + expr: TTrue. (59) + + . reduce 59 (src line 477) + + +state 31 + expr: TNumber. (60) + + . reduce 60 (src line 481) + + +state 32 + expr: T3Comma. (61) + + . reduce 61 (src line 485) + + +state 33 + expr: function. (62) + + . reduce 62 (src line 489) + + +34: shift/reduce conflict (shift 52(0), red'n 63(0)) on '(' +state 34 + var: prefixexp.'[' expr ']' + var: prefixexp.'.' TIdent + var: prefixexp.'.' TType + var: prefixexp.'.' TInterface + var: prefixexp.'.' TReadonly + var: prefixexp.'.' TAs + var: prefixexp.'.' TAsserts + var: prefixexp.'.' TIs + expr: prefixexp. (63) + functioncall: prefixexp.args + functioncall: prefixexp.':' TIdent args + functioncall: prefixexp.':' TType args + functioncall: prefixexp.':' TInterface args + functioncall: prefixexp.':' TReadonly args + functioncall: prefixexp.':' TAs args + functioncall: prefixexp.':' TAsserts args + functioncall: prefixexp.':' TIs args + + TString shift 43 + '{' shift 44 + '(' shift 52 + ':' shift 51 + '.' shift 49 + '[' shift 48 + . reduce 63 (src line 492) + + string goto 54 + args goto 50 + tableconstructor goto 53 + +state 35 + expr: string. (64) + + . reduce 64 (src line 495) + + +state 36 + expr: tableconstructor. (65) + + . reduce 65 (src line 498) + + +state 37 + expr: '-'.expr + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 99 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 38 + expr: TNot.expr + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 100 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 39 + expr: '#'.expr + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 101 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 40 + expr: '~'.expr + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 102 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 41 + function: TFunction.funcbody + + '(' shift 104 + '<' shift 106 + . error + + funcbody goto 103 + typeparams goto 105 + +state 42 + prefixexp: var. (95) + + . reduce 95 (src line 649) + + +state 43 + string: TString. (94) + + . reduce 94 (src line 643) + + +state 44 + tableconstructor: '{'.'}' + tableconstructor: '{'.fieldlist '}' + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + TType shift 114 + TInterface shift 115 + TReadonly shift 116 + TAs shift 117 + TAsserts shift 118 + TIs shift 119 + TKeyof shift 120 + TExtends shift 121 + T3Comma shift 32 + TIdent shift 113 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '}' shift 107 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '[' shift 111 + '#' shift 39 + . error + + var goto 42 + expr goto 112 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + fieldlist goto 108 + field goto 109 + fieldname goto 110 + +state 45 + var: TIdent. (44) + + . reduce 44 (src line 387) + + +state 46 + stat: varlist '='.exprlist + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + exprlist goto 122 + expr goto 27 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 47 + varlist: varlist ','.var + + TIdent shift 45 + '(' shift 24 + . error + + var goto 123 + prefixexp goto 124 + functioncall goto 23 + afunctioncall goto 22 + +state 48 + var: prefixexp '['.expr ']' + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 125 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 49 + var: prefixexp '.'.TIdent + var: prefixexp '.'.TType + var: prefixexp '.'.TInterface + var: prefixexp '.'.TReadonly + var: prefixexp '.'.TAs + var: prefixexp '.'.TAsserts + var: prefixexp '.'.TIs + + TType shift 127 + TInterface shift 128 + TReadonly shift 129 + TAs shift 130 + TAsserts shift 131 + TIs shift 132 + TIdent shift 126 + . error + + +state 50 + functioncall: prefixexp args. (100) + + . reduce 100 (src line 674) + + +state 51 + functioncall: prefixexp ':'.TIdent args + functioncall: prefixexp ':'.TType args + functioncall: prefixexp ':'.TInterface args + functioncall: prefixexp ':'.TReadonly args + functioncall: prefixexp ':'.TAs args + functioncall: prefixexp ':'.TAsserts args + functioncall: prefixexp ':'.TIs args + + TType shift 134 + TInterface shift 135 + TReadonly shift 136 + TAs shift 137 + TAsserts shift 138 + TIs shift 139 + TIdent shift 133 + . error + + +state 52 + args: '('.')' + args: '('.exprlist ')' + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + ')' shift 140 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + exprlist goto 141 + expr goto 27 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 53 + args: tableconstructor. (110) + + . reduce 110 (src line 728) + + +state 54 + args: string. (111) + + . reduce 111 (src line 731) + + +state 55 + stat: TDo block.TEnd + + TEnd shift 142 + . error + + +state 56 + block: chunk. (7) + + . reduce 7 (src line 196) + + +state 57 + stat: TWhile expr.TDo block TEnd + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAnd shift 76 + TDo shift 143 + TOr shift 75 + TAs shift 96 + TEqeq shift 81 + TNeq shift 82 + TLte shift 80 + TGte shift 79 + T2Comma shift 83 + T2Colon shift 97 + TShl shift 93 + TShr shift 94 + TIdiv shift 95 + TBang shift 98 + '>' shift 77 + '<' shift 78 + '|' shift 91 + '~' shift 92 + '&' shift 90 + '+' shift 84 + '-' shift 85 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + . error + + +state 58 + stat: TRepeat block.TUntil expr + + TUntil shift 144 + . error + + +state 59 + stat: TIf expr.TThen block elseifs TEnd + stat: TIf expr.TThen block elseifs TElse block TEnd + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAnd shift 76 + TOr shift 75 + TThen shift 145 + TAs shift 96 + TEqeq shift 81 + TNeq shift 82 + TLte shift 80 + TGte shift 79 + T2Comma shift 83 + T2Colon shift 97 + TShl shift 93 + TShr shift 94 + TIdiv shift 95 + TBang shift 98 + '>' shift 77 + '<' shift 78 + '|' shift 91 + '~' shift 92 + '&' shift 90 + '+' shift 84 + '-' shift 85 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + . error + + +state 60 + stat: TFor TIdent.'=' expr ',' expr TDo block TEnd + stat: TFor TIdent.'=' expr ',' expr ',' expr TDo block TEnd + namelist: TIdent. (53) + + '=' shift 146 + . reduce 53 (src line 453) + + +state 61 + stat: TFor namelist.TIn exprlist TDo block TEnd + namelist: namelist.',' TIdent + + TIn shift 147 + ',' shift 148 + . error + + +state 62 + stat: TFunction funcname.funcbody + + '(' shift 104 + '<' shift 106 + . error + + funcbody goto 149 + typeparams goto 105 + +state 63 + funcname: funcname1. (32) + funcname: funcname1.':' TIdent + funcname: funcname1.':' TType + funcname: funcname1.':' TInterface + funcname: funcname1.':' TReadonly + funcname: funcname1.':' TAs + funcname: funcname1.':' TAsserts + funcname: funcname1.':' TIs + funcname1: funcname1.'.' TIdent + + ':' shift 150 + '.' shift 151 + . reduce 32 (src line 338) + + +state 64 + funcname1: TIdent. (40) + + . reduce 40 (src line 364) + + +state 65 + stat: TLocal TFunction.TIdent funcbody + + TIdent shift 152 + . error + + +state 66 + stat: TLocal typednamelist.'=' exprlist + stat: TLocal typednamelist. (21) + typednamelist: typednamelist.',' typedname + + '=' shift 153 + ',' shift 154 + . reduce 21 (src line 281) + + +state 67 + typednamelist: typedname. (233) + + . reduce 233 (src line 1238) + + +state 68 + typedname: TIdent. (235) + typedname: TIdent.':' typeexpr + + ':' shift 155 + . reduce 235 (src line 1246) + + +state 69 + stat: TGoto TIdent. (23) + + . reduce 23 (src line 290) + + +state 70 + stat: TIdent TIdent.'=' typeexpr + stat: TIdent TIdent.typeparams '=' typeexpr + + '<' shift 106 + '=' shift 156 + . error + + typeparams goto 157 + +state 71 + stat: TInterface TIdent.interfaceextends interfacebody TEnd + interfaceextends: . (237) + + ':' shift 159 + . reduce 237 (src line 1254) + + interfaceextends goto 158 + +state 72 + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + prefixexp: '(' expr.')' + + TAnd shift 76 + TOr shift 75 + TAs shift 96 + TEqeq shift 81 + TNeq shift 82 + TLte shift 80 + TGte shift 79 + T2Comma shift 83 + T2Colon shift 97 + ')' shift 160 + TShl shift 93 + TShr shift 94 + TIdiv shift 95 + TBang shift 98 + '>' shift 77 + '<' shift 78 + '|' shift 91 + '~' shift 92 + '&' shift 90 + '+' shift 84 + '-' shift 85 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + . error + + +73: shift/reduce conflict (shift 161(0), red'n 97(0)) on ')' +state 73 + prefixexp: functioncall. (97) + afunctioncall: '(' functioncall.')' + + ')' shift 161 + . reduce 97 (src line 655) + + +state 74 + exprlist: exprlist ','.expr + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 162 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 75 + expr: expr TOr.expr + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 163 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 76 + expr: expr TAnd.expr + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 164 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 77 + expr: expr '>'.expr + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 165 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 78 + expr: expr '<'.expr + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 166 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 79 + expr: expr TGte.expr + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 167 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 80 + expr: expr TLte.expr + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 168 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 81 + expr: expr TEqeq.expr + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 169 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 82 + expr: expr TNeq.expr + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 170 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 83 + expr: expr T2Comma.expr + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 171 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 84 + expr: expr '+'.expr + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 172 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 85 + expr: expr '-'.expr + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 173 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 86 + expr: expr '*'.expr + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 174 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 87 + expr: expr '/'.expr + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 175 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 88 + expr: expr '%'.expr + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 176 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 89 + expr: expr '^'.expr + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 177 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 90 + expr: expr '&'.expr + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 178 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 91 + expr: expr '|'.expr + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 179 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 92 + expr: expr '~'.expr + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 180 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 93 + expr: expr TShl.expr + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 181 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 94 + expr: expr TShr.expr + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 182 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 95 + expr: expr TIdiv.expr + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 183 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 96 + expr: expr TAs.typeexpr + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + typeexpr goto 184 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 97 + expr: expr T2Colon.typeexpr + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + typeexpr goto 201 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 98 + expr: expr TBang. (93) + + . reduce 93 (src line 636) + + +state 99 + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: '-' expr. (87) + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAs shift 96 + T2Colon shift 97 + TBang shift 98 + '^' shift 89 + . reduce 87 (src line 606) + + +state 100 + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: TNot expr. (88) + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAs shift 96 + T2Colon shift 97 + TBang shift 98 + '^' shift 89 + . reduce 88 (src line 611) + + +state 101 + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: '#' expr. (89) + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAs shift 96 + T2Colon shift 97 + TBang shift 98 + '^' shift 89 + . reduce 89 (src line 616) + + +state 102 + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: '~' expr. (90) + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAs shift 96 + T2Colon shift 97 + TBang shift 98 + '^' shift 89 + . reduce 90 (src line 621) + + +state 103 + function: TFunction funcbody. (112) + + . reduce 112 (src line 736) + + +state 104 + funcbody: '('.parlist ')' returntypeannot block TEnd + funcbody: '('.')' returntypeannot block TEnd + + T3Comma shift 204 + TIdent shift 68 + ')' shift 203 + . error + + parlist goto 202 + typednamelist goto 205 + typedname goto 67 + +state 105 + funcbody: typeparams.'(' parlist ')' returntypeannot block TEnd + funcbody: typeparams.'(' ')' returntypeannot block TEnd + + '(' shift 206 + . error + + +state 106 + typeparams: '<'.typeparamlist '>' + + TIdent shift 209 + . error + + typeparamlist goto 207 + typeparam goto 208 + +state 107 + tableconstructor: '{' '}'. (122) + + . reduce 122 (src line 786) + + +state 108 + tableconstructor: '{' fieldlist.'}' + fieldlist: fieldlist.fieldsep field + fieldlist: fieldlist.fieldsep + + '}' shift 210 + ';' shift 213 + ',' shift 212 + . error + + fieldsep goto 211 + +state 109 + fieldlist: field. (124) + + . reduce 124 (src line 799) + + +state 110 + field: fieldname.'=' expr + + '=' shift 214 + . error + + +state 111 + field: '['.expr ']' '=' expr + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 215 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 112 + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + field: expr. (129) + + TAnd shift 76 + TOr shift 75 + TAs shift 96 + TEqeq shift 81 + TNeq shift 82 + TLte shift 80 + TGte shift 79 + T2Comma shift 83 + T2Colon shift 97 + TShl shift 93 + TShr shift 94 + TIdiv shift 95 + TBang shift 98 + '>' shift 77 + '<' shift 78 + '|' shift 91 + '~' shift 92 + '&' shift 90 + '+' shift 84 + '-' shift 85 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + . reduce 129 (src line 816) + + +state 113 + var: TIdent. (44) + fieldname: TIdent. (130) + + '=' reduce 130 (src line 822) + . reduce 44 (src line 387) + + +state 114 + fieldname: TType. (131) + + . reduce 131 (src line 825) + + +state 115 + fieldname: TInterface. (132) + + . reduce 132 (src line 828) + + +state 116 + fieldname: TReadonly. (133) + + . reduce 133 (src line 831) + + +state 117 + fieldname: TAs. (134) + + . reduce 134 (src line 834) + + +state 118 + fieldname: TAsserts. (135) + + . reduce 135 (src line 837) + + +state 119 + fieldname: TIs. (136) + + . reduce 136 (src line 840) + + +state 120 + fieldname: TKeyof. (137) + + . reduce 137 (src line 843) + + +state 121 + fieldname: TExtends. (138) + + . reduce 138 (src line 846) + + +state 122 + stat: varlist '=' exprlist. (8) + exprlist: exprlist.',' expr + + ',' shift 74 + . reduce 8 (src line 201) + + +state 123 + varlist: varlist ',' var. (43) + prefixexp: var. (95) + + '=' reduce 43 (src line 382) + ',' reduce 43 (src line 382) + . reduce 95 (src line 649) + + +state 124 + var: prefixexp.'[' expr ']' + var: prefixexp.'.' TIdent + var: prefixexp.'.' TType + var: prefixexp.'.' TInterface + var: prefixexp.'.' TReadonly + var: prefixexp.'.' TAs + var: prefixexp.'.' TAsserts + var: prefixexp.'.' TIs + functioncall: prefixexp.args + functioncall: prefixexp.':' TIdent args + functioncall: prefixexp.':' TType args + functioncall: prefixexp.':' TInterface args + functioncall: prefixexp.':' TReadonly args + functioncall: prefixexp.':' TAs args + functioncall: prefixexp.':' TAsserts args + functioncall: prefixexp.':' TIs args + + TString shift 43 + '{' shift 44 + '(' shift 52 + ':' shift 51 + '.' shift 49 + '[' shift 48 + . error + + string goto 54 + args goto 50 + tableconstructor goto 53 + +state 125 + var: prefixexp '[' expr.']' + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAnd shift 76 + TOr shift 75 + TAs shift 96 + TEqeq shift 81 + TNeq shift 82 + TLte shift 80 + TGte shift 79 + T2Comma shift 83 + T2Colon shift 97 + TShl shift 93 + TShr shift 94 + TIdiv shift 95 + TBang shift 98 + '>' shift 77 + '<' shift 78 + '|' shift 91 + '~' shift 92 + '&' shift 90 + '+' shift 84 + '-' shift 85 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + ']' shift 216 + . error + + +state 126 + var: prefixexp '.' TIdent. (46) + + . reduce 46 (src line 395) + + +state 127 + var: prefixexp '.' TType. (47) + + . reduce 47 (src line 403) + + +state 128 + var: prefixexp '.' TInterface. (48) + + . reduce 48 (src line 411) + + +state 129 + var: prefixexp '.' TReadonly. (49) + + . reduce 49 (src line 419) + + +state 130 + var: prefixexp '.' TAs. (50) + + . reduce 50 (src line 427) + + +state 131 + var: prefixexp '.' TAsserts. (51) + + . reduce 51 (src line 435) + + +state 132 + var: prefixexp '.' TIs. (52) + + . reduce 52 (src line 443) + + +state 133 + functioncall: prefixexp ':' TIdent.args + + TString shift 43 + '{' shift 44 + '(' shift 52 + . error + + string goto 54 + args goto 217 + tableconstructor goto 53 + +state 134 + functioncall: prefixexp ':' TType.args + + TString shift 43 + '{' shift 44 + '(' shift 52 + . error + + string goto 54 + args goto 218 + tableconstructor goto 53 + +state 135 + functioncall: prefixexp ':' TInterface.args + + TString shift 43 + '{' shift 44 + '(' shift 52 + . error + + string goto 54 + args goto 219 + tableconstructor goto 53 + +state 136 + functioncall: prefixexp ':' TReadonly.args + + TString shift 43 + '{' shift 44 + '(' shift 52 + . error + + string goto 54 + args goto 220 + tableconstructor goto 53 + +state 137 + functioncall: prefixexp ':' TAs.args + + TString shift 43 + '{' shift 44 + '(' shift 52 + . error + + string goto 54 + args goto 221 + tableconstructor goto 53 + +state 138 + functioncall: prefixexp ':' TAsserts.args + + TString shift 43 + '{' shift 44 + '(' shift 52 + . error + + string goto 54 + args goto 222 + tableconstructor goto 53 + +state 139 + functioncall: prefixexp ':' TIs.args + + TString shift 43 + '{' shift 44 + '(' shift 52 + . error + + string goto 54 + args goto 223 + tableconstructor goto 53 + +state 140 + args: '(' ')'. (108) + + . reduce 108 (src line 716) + + +state 141 + exprlist: exprlist.',' expr + args: '(' exprlist.')' + + ')' shift 224 + ',' shift 74 + . error + + +state 142 + stat: TDo block TEnd. (10) + + . reduce 10 (src line 214) + + +state 143 + stat: TWhile expr TDo.block TEnd + chunk1: . (4) + + . reduce 4 (src line 185) + + chunk goto 56 + chunk1 goto 2 + block goto 225 + +state 144 + stat: TRepeat block TUntil.expr + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 226 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 145 + stat: TIf expr TThen.block elseifs TEnd + stat: TIf expr TThen.block elseifs TElse block TEnd + chunk1: . (4) + + . reduce 4 (src line 185) + + chunk goto 56 + chunk1 goto 2 + block goto 227 + +state 146 + stat: TFor TIdent '='.expr ',' expr TDo block TEnd + stat: TFor TIdent '='.expr ',' expr ',' expr TDo block TEnd + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 228 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 147 + stat: TFor namelist TIn.exprlist TDo block TEnd + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + exprlist goto 229 + expr goto 27 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 148 + namelist: namelist ','.TIdent + + TIdent shift 230 + . error + + +state 149 + stat: TFunction funcname funcbody. (18) + + . reduce 18 (src line 266) + + +state 150 + funcname: funcname1 ':'.TIdent + funcname: funcname1 ':'.TType + funcname: funcname1 ':'.TInterface + funcname: funcname1 ':'.TReadonly + funcname: funcname1 ':'.TAs + funcname: funcname1 ':'.TAsserts + funcname: funcname1 ':'.TIs + + TType shift 232 + TInterface shift 233 + TReadonly shift 234 + TAs shift 235 + TAsserts shift 236 + TIs shift 237 + TIdent shift 231 + . error + + +state 151 + funcname1: funcname1 '.'.TIdent + + TIdent shift 238 + . error + + +state 152 + stat: TLocal TFunction TIdent.funcbody + + '(' shift 104 + '<' shift 106 + . error + + funcbody goto 239 + typeparams goto 105 + +state 153 + stat: TLocal typednamelist '='.exprlist + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + exprlist goto 240 + expr goto 27 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 154 + typednamelist: typednamelist ','.typedname + + TIdent shift 68 + . error + + typedname goto 241 + +state 155 + typedname: TIdent ':'.typeexpr + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + typeexpr goto 242 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 156 + stat: TIdent TIdent '='.typeexpr + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + typeexpr goto 243 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 157 + stat: TIdent TIdent typeparams.'=' typeexpr + + '=' shift 244 + . error + + +state 158 + stat: TInterface TIdent interfaceextends.interfacebody TEnd + interfaceextends: interfaceextends.',' TIdent + interfacebody: . (240) + + ',' shift 246 + . reduce 240 (src line 1265) + + interfacebody goto 245 + +state 159 + interfaceextends: ':'.TIdent + + TIdent shift 247 + . error + + +state 160 + prefixexp: '(' expr ')'. (98) + + . reduce 98 (src line 658) + + +state 161 + afunctioncall: '(' functioncall ')'. (99) + + . reduce 99 (src line 668) + + +state 162 + exprlist: exprlist ',' expr. (56) + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAnd shift 76 + TOr shift 75 + TAs shift 96 + TEqeq shift 81 + TNeq shift 82 + TLte shift 80 + TGte shift 79 + T2Comma shift 83 + T2Colon shift 97 + TShl shift 93 + TShr shift 94 + TIdiv shift 95 + TBang shift 98 + '>' shift 77 + '<' shift 78 + '|' shift 91 + '~' shift 92 + '&' shift 90 + '+' shift 84 + '-' shift 85 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + . reduce 56 (src line 464) + + +state 163 + expr: expr.TOr expr + expr: expr TOr expr. (66) + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAnd shift 76 + TAs shift 96 + TEqeq shift 81 + TNeq shift 82 + TLte shift 80 + TGte shift 79 + T2Comma shift 83 + T2Colon shift 97 + TShl shift 93 + TShr shift 94 + TIdiv shift 95 + TBang shift 98 + '>' shift 77 + '<' shift 78 + '|' shift 91 + '~' shift 92 + '&' shift 90 + '+' shift 84 + '-' shift 85 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + . reduce 66 (src line 501) + + +state 164 + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr TAnd expr. (67) + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAs shift 96 + TEqeq shift 81 + TNeq shift 82 + TLte shift 80 + TGte shift 79 + T2Comma shift 83 + T2Colon shift 97 + TShl shift 93 + TShr shift 94 + TIdiv shift 95 + TBang shift 98 + '>' shift 77 + '<' shift 78 + '|' shift 91 + '~' shift 92 + '&' shift 90 + '+' shift 84 + '-' shift 85 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + . reduce 67 (src line 506) + + +state 165 + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr '>' expr. (68) + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAs shift 96 + T2Comma shift 83 + T2Colon shift 97 + TShl shift 93 + TShr shift 94 + TIdiv shift 95 + TBang shift 98 + '|' shift 91 + '~' shift 92 + '&' shift 90 + '+' shift 84 + '-' shift 85 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + . reduce 68 (src line 511) + + +state 166 + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr '<' expr. (69) + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAs shift 96 + T2Comma shift 83 + T2Colon shift 97 + TShl shift 93 + TShr shift 94 + TIdiv shift 95 + TBang shift 98 + '|' shift 91 + '~' shift 92 + '&' shift 90 + '+' shift 84 + '-' shift 85 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + . reduce 69 (src line 516) + + +state 167 + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr TGte expr. (70) + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAs shift 96 + T2Comma shift 83 + T2Colon shift 97 + TShl shift 93 + TShr shift 94 + TIdiv shift 95 + TBang shift 98 + '|' shift 91 + '~' shift 92 + '&' shift 90 + '+' shift 84 + '-' shift 85 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + . reduce 70 (src line 521) + + +state 168 + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr TLte expr. (71) + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAs shift 96 + T2Comma shift 83 + T2Colon shift 97 + TShl shift 93 + TShr shift 94 + TIdiv shift 95 + TBang shift 98 + '|' shift 91 + '~' shift 92 + '&' shift 90 + '+' shift 84 + '-' shift 85 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + . reduce 71 (src line 526) + + +state 169 + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr TEqeq expr. (72) + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAs shift 96 + T2Comma shift 83 + T2Colon shift 97 + TShl shift 93 + TShr shift 94 + TIdiv shift 95 + TBang shift 98 + '|' shift 91 + '~' shift 92 + '&' shift 90 + '+' shift 84 + '-' shift 85 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + . reduce 72 (src line 531) + + +state 170 + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr TNeq expr. (73) + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAs shift 96 + T2Comma shift 83 + T2Colon shift 97 + TShl shift 93 + TShr shift 94 + TIdiv shift 95 + TBang shift 98 + '|' shift 91 + '~' shift 92 + '&' shift 90 + '+' shift 84 + '-' shift 85 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + . reduce 73 (src line 536) + + +state 171 + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr T2Comma expr. (74) + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAs shift 96 + T2Comma shift 83 + T2Colon shift 97 + TIdiv shift 95 + TBang shift 98 + '+' shift 84 + '-' shift 85 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + . reduce 74 (src line 541) + + +state 172 + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr '+' expr. (75) + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAs shift 96 + T2Colon shift 97 + TIdiv shift 95 + TBang shift 98 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + . reduce 75 (src line 546) + + +state 173 + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr '-' expr. (76) + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAs shift 96 + T2Colon shift 97 + TIdiv shift 95 + TBang shift 98 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + . reduce 76 (src line 551) + + +state 174 + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr '*' expr. (77) + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAs shift 96 + T2Colon shift 97 + TBang shift 98 + '^' shift 89 + . reduce 77 (src line 556) + + +state 175 + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr '/' expr. (78) + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAs shift 96 + T2Colon shift 97 + TBang shift 98 + '^' shift 89 + . reduce 78 (src line 561) + + +state 176 + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr '%' expr. (79) + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAs shift 96 + T2Colon shift 97 + TBang shift 98 + '^' shift 89 + . reduce 79 (src line 566) + + +state 177 + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr '^' expr. (80) + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAs shift 96 + T2Colon shift 97 + TBang shift 98 + '^' shift 89 + . reduce 80 (src line 571) + + +state 178 + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr '&' expr. (81) + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAs shift 96 + T2Comma shift 83 + T2Colon shift 97 + TShl shift 93 + TShr shift 94 + TIdiv shift 95 + TBang shift 98 + '+' shift 84 + '-' shift 85 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + . reduce 81 (src line 576) + + +state 179 + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr '|' expr. (82) + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAs shift 96 + T2Comma shift 83 + T2Colon shift 97 + TShl shift 93 + TShr shift 94 + TIdiv shift 95 + TBang shift 98 + '~' shift 92 + '&' shift 90 + '+' shift 84 + '-' shift 85 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + . reduce 82 (src line 581) + + +state 180 + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr '~' expr. (83) + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAs shift 96 + T2Comma shift 83 + T2Colon shift 97 + TShl shift 93 + TShr shift 94 + TIdiv shift 95 + TBang shift 98 + '&' shift 90 + '+' shift 84 + '-' shift 85 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + . reduce 83 (src line 586) + + +state 181 + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr TShl expr. (84) + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAs shift 96 + T2Comma shift 83 + T2Colon shift 97 + TIdiv shift 95 + TBang shift 98 + '+' shift 84 + '-' shift 85 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + . reduce 84 (src line 591) + + +state 182 + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr TShr expr. (85) + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAs shift 96 + T2Comma shift 83 + T2Colon shift 97 + TIdiv shift 95 + TBang shift 98 + '+' shift 84 + '-' shift 85 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + . reduce 85 (src line 596) + + +state 183 + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr TIdiv expr. (86) + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAs shift 96 + T2Colon shift 97 + TBang shift 98 + '^' shift 89 + . reduce 86 (src line 601) + + +state 184 + expr: expr TAs typeexpr. (91) + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + + . reduce 91 (src line 626) + + +185: shift/reduce conflict (shift 250(0), red'n 154(0)) on TExtends +185: shift/reduce conflict (shift 251(0), red'n 154(0)) on TQuestion +state 185 + typeexpr: simpletypeexpr. (154) + typeexpr: simpletypeexpr.TExtends simpletypeexpr TQuestion typeexpr ':' typeexpr + simpletypeexpr: simpletypeexpr.TQuestion + + TExtends shift 250 + TQuestion shift 251 + . reduce 154 (src line 904) + + +186: shift/reduce conflict (shift 253(0), red'n 158(0)) on '[' +186: shift/reduce conflict (shift 255(0), red'n 158(0)) on '@' +state 186 + simpletypeexpr: primarytypeexpr. (158) + simpletypeexpr: primarytypeexpr.annotations + primarytypeexpr: primarytypeexpr.'[' ']' + primarytypeexpr: primarytypeexpr.'[' typeexpr ']' + + '[' shift 253 + '@' shift 255 + . reduce 158 (src line 929) + + annotation goto 254 + annotations goto 252 + +state 187 + primarytypeexpr: TNil. (161) + + . reduce 161 (src line 948) + + +state 188 + primarytypeexpr: TTrue. (162) + + . reduce 162 (src line 952) + + +state 189 + primarytypeexpr: TFalse. (163) + + . reduce 163 (src line 956) + + +state 190 + primarytypeexpr: TString. (164) + + . reduce 164 (src line 960) + + +state 191 + primarytypeexpr: TNumber. (165) + + . reduce 165 (src line 964) + + +192: shift/reduce conflict (shift 257(3), red'n 166(0)) on '<' +state 192 + primarytypeexpr: TIdent. (166) + primarytypeexpr: TIdent.'.' TIdent + primarytypeexpr: TIdent.'<' typeexprlist closegt + + '<' shift 257 + '.' shift 256 + . reduce 166 (src line 969) + + +state 193 + primarytypeexpr: '{'.typeexpr '}' + primarytypeexpr: '{'.'[' typeexpr ']' ':' typeexpr '}' + primarytypeexpr: '{'.typefieldlist '}' + primarytypeexpr: '{'.'}' + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TType shift 270 + TInterface shift 265 + TReadonly shift 266 + TAs shift 271 + TAsserts shift 267 + TIs shift 272 + TTypeof shift 268 + TKeyof shift 269 + TExtends shift 273 + TFun shift 195 + TIdent shift 263 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '}' shift 261 + '(' shift 194 + '[' shift 259 + . error + + typefieldname goto 264 + typeexpr goto 258 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + typefieldlist goto 260 + typefield goto 262 + +state 194 + primarytypeexpr: '('.funcparamlist ')' TArrow '(' typeexprlist2 ')' + primarytypeexpr: '('.funcparamlist ')' TArrow '(' ')' + primarytypeexpr: '('.funcparamlist ')' TArrow typeexpr + primarytypeexpr: '('.')' TArrow '(' typeexprlist2 ')' + primarytypeexpr: '('.')' TArrow typeexpr + primarytypeexpr: '('.')' TArrow '(' ')' + primarytypeexpr: '('.'(' funcparamlist ')' TArrow typeexpr ')' + primarytypeexpr: '('.'(' ')' TArrow typeexpr ')' + primarytypeexpr: '('.'(' funcparamlist ')' TArrow '(' typeexprlist2 ')' ')' + primarytypeexpr: '('.'(' ')' TArrow '(' typeexprlist2 ')' ')' + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + T3Comma shift 278 + TIdent shift 279 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 276 + ')' shift 275 + . error + + typeexpr goto 280 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + funcparam goto 277 + funcparamlist goto 274 + +state 195 + primarytypeexpr: TFun.'(' funcparamlist ')' ':' typeexpr + primarytypeexpr: TFun.'(' funcparamlist ')' ':' '(' typeexprlist2 ')' + primarytypeexpr: TFun.'(' ')' ':' typeexpr + primarytypeexpr: TFun.'(' ')' ':' '(' typeexprlist2 ')' + primarytypeexpr: TFun.'(' funcparamlist ')' + primarytypeexpr: TFun.'(' ')' + + '(' shift 281 + . error + + +state 196 + primarytypeexpr: TInterface.'{' typefieldlist '}' + primarytypeexpr: TInterface.'{' '}' + + '{' shift 282 + . error + + +state 197 + primarytypeexpr: TReadonly.'{' typeexpr '}' + primarytypeexpr: TReadonly.'{' '[' typeexpr ']' ':' typeexpr '}' + primarytypeexpr: TReadonly.'{' typefieldlist '}' + + '{' shift 283 + . error + + +state 198 + primarytypeexpr: TAsserts.TIdent + primarytypeexpr: TAsserts.TIdent TIs typeexpr + + TIdent shift 284 + . error + + +state 199 + primarytypeexpr: TTypeof.'(' expr ')' + + '(' shift 285 + . error + + +state 200 + primarytypeexpr: TKeyof.'(' typeexpr ')' + + '(' shift 286 + . error + + +state 201 + expr: expr T2Colon typeexpr. (92) + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + + . reduce 92 (src line 631) + + +state 202 + funcbody: '(' parlist.')' returntypeannot block TEnd + + ')' shift 287 + . error + + +state 203 + funcbody: '(' ')'.returntypeannot block TEnd + returntypeannot: . (150) + + ':' shift 289 + . reduce 150 (src line 890) + + returntypeannot goto 288 + +state 204 + parlist: T3Comma. (117) + parlist: T3Comma.':' typeexpr + + ':' shift 290 + . reduce 117 (src line 765) + + +state 205 + parlist: typednamelist. (119) + parlist: typednamelist.',' T3Comma + parlist: typednamelist.',' T3Comma ':' typeexpr + typednamelist: typednamelist.',' typedname + + ',' shift 291 + . reduce 119 (src line 771) + + +state 206 + funcbody: typeparams '('.parlist ')' returntypeannot block TEnd + funcbody: typeparams '('.')' returntypeannot block TEnd + + T3Comma shift 204 + TIdent shift 68 + ')' shift 293 + . error + + parlist goto 292 + typednamelist goto 205 + typedname goto 67 + +state 207 + typeparams: '<' typeparamlist.'>' + typeparamlist: typeparamlist.',' typeparam + + '>' shift 294 + ',' shift 295 + . error + + +state 208 + typeparamlist: typeparam. (229) + + . reduce 229 (src line 1222) + + +state 209 + typeparam: TIdent. (231) + typeparam: TIdent.':' typeexpr + + ':' shift 296 + . reduce 231 (src line 1230) + + +state 210 + tableconstructor: '{' fieldlist '}'. (123) + + . reduce 123 (src line 791) + + +state 211 + fieldlist: fieldlist fieldsep.field + fieldlist: fieldlist fieldsep. (126) + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + TType shift 114 + TInterface shift 115 + TReadonly shift 116 + TAs shift 117 + TAsserts shift 118 + TIs shift 119 + TKeyof shift 120 + TExtends shift 121 + T3Comma shift 32 + TIdent shift 113 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '[' shift 111 + '#' shift 39 + . reduce 126 (src line 805) + + var goto 42 + expr goto 112 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + field goto 297 + fieldname goto 110 + +state 212 + fieldsep: ','. (148) + + . reduce 148 (src line 880) + + +state 213 + fieldsep: ';'. (149) + + . reduce 149 (src line 883) + + +state 214 + field: fieldname '='.expr + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 298 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 215 + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + field: '[' expr.']' '=' expr + + TAnd shift 76 + TOr shift 75 + TAs shift 96 + TEqeq shift 81 + TNeq shift 82 + TLte shift 80 + TGte shift 79 + T2Comma shift 83 + T2Colon shift 97 + TShl shift 93 + TShr shift 94 + TIdiv shift 95 + TBang shift 98 + '>' shift 77 + '<' shift 78 + '|' shift 91 + '~' shift 92 + '&' shift 90 + '+' shift 84 + '-' shift 85 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + ']' shift 299 + . error + + +state 216 + var: prefixexp '[' expr ']'. (45) + + . reduce 45 (src line 391) + + +state 217 + functioncall: prefixexp ':' TIdent args. (101) + + . reduce 101 (src line 679) + + +state 218 + functioncall: prefixexp ':' TType args. (102) + + . reduce 102 (src line 684) + + +state 219 + functioncall: prefixexp ':' TInterface args. (103) + + . reduce 103 (src line 689) + + +state 220 + functioncall: prefixexp ':' TReadonly args. (104) + + . reduce 104 (src line 694) + + +state 221 + functioncall: prefixexp ':' TAs args. (105) + + . reduce 105 (src line 699) + + +state 222 + functioncall: prefixexp ':' TAsserts args. (106) + + . reduce 106 (src line 704) + + +state 223 + functioncall: prefixexp ':' TIs args. (107) + + . reduce 107 (src line 709) + + +state 224 + args: '(' exprlist ')'. (109) + + . reduce 109 (src line 722) + + +state 225 + stat: TWhile expr TDo block.TEnd + + TEnd shift 300 + . error + + +state 226 + stat: TRepeat block TUntil expr. (12) + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAnd shift 76 + TOr shift 75 + TAs shift 96 + TEqeq shift 81 + TNeq shift 82 + TLte shift 80 + TGte shift 79 + T2Comma shift 83 + T2Colon shift 97 + TShl shift 93 + TShr shift 94 + TIdiv shift 95 + TBang shift 98 + '>' shift 77 + '<' shift 78 + '|' shift 91 + '~' shift 92 + '&' shift 90 + '+' shift 84 + '-' shift 85 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + . reduce 12 (src line 224) + + +state 227 + stat: TIf expr TThen block.elseifs TEnd + stat: TIf expr TThen block.elseifs TElse block TEnd + elseifs: . (27) + + . reduce 27 (src line 315) + + elseifs goto 301 + +state 228 + stat: TFor TIdent '=' expr.',' expr TDo block TEnd + stat: TFor TIdent '=' expr.',' expr ',' expr TDo block TEnd + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAnd shift 76 + TOr shift 75 + TAs shift 96 + TEqeq shift 81 + TNeq shift 82 + TLte shift 80 + TGte shift 79 + T2Comma shift 83 + T2Colon shift 97 + TShl shift 93 + TShr shift 94 + TIdiv shift 95 + TBang shift 98 + '>' shift 77 + '<' shift 78 + '|' shift 91 + '~' shift 92 + '&' shift 90 + '+' shift 84 + '-' shift 85 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + ',' shift 302 + . error + + +state 229 + stat: TFor namelist TIn exprlist.TDo block TEnd + exprlist: exprlist.',' expr + + TDo shift 303 + ',' shift 74 + . error + + +state 230 + namelist: namelist ',' TIdent. (54) + + . reduce 54 (src line 456) + + +state 231 + funcname: funcname1 ':' TIdent. (33) + + . reduce 33 (src line 341) + + +state 232 + funcname: funcname1 ':' TType. (34) + + . reduce 34 (src line 344) + + +state 233 + funcname: funcname1 ':' TInterface. (35) + + . reduce 35 (src line 347) + + +state 234 + funcname: funcname1 ':' TReadonly. (36) + + . reduce 36 (src line 350) + + +state 235 + funcname: funcname1 ':' TAs. (37) + + . reduce 37 (src line 353) + + +state 236 + funcname: funcname1 ':' TAsserts. (38) + + . reduce 38 (src line 356) + + +state 237 + funcname: funcname1 ':' TIs. (39) + + . reduce 39 (src line 359) + + +state 238 + funcname1: funcname1 '.' TIdent. (41) + + . reduce 41 (src line 368) + + +state 239 + stat: TLocal TFunction TIdent funcbody. (19) + + . reduce 19 (src line 271) + + +state 240 + stat: TLocal typednamelist '=' exprlist. (20) + exprlist: exprlist.',' expr + + ',' shift 74 + . reduce 20 (src line 276) + + +state 241 + typednamelist: typednamelist ',' typedname. (234) + + . reduce 234 (src line 1241) + + +state 242 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + typedname: TIdent ':' typeexpr. (236) + + '|' shift 248 + '&' shift 249 + . reduce 236 (src line 1249) + + +state 243 + stat: TIdent TIdent '=' typeexpr. (24) + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + + '|' shift 248 + '&' shift 249 + . reduce 24 (src line 294) + + +state 244 + stat: TIdent TIdent typeparams '='.typeexpr + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + typeexpr goto 304 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 245 + stat: TInterface TIdent interfaceextends interfacebody.TEnd + interfacebody: interfacebody.interfacemethod + + TEnd shift 305 + TFunction shift 307 + . error + + interfacemethod goto 306 + +state 246 + interfaceextends: interfaceextends ','.TIdent + + TIdent shift 308 + . error + + +state 247 + interfaceextends: ':' TIdent. (238) + + . reduce 238 (src line 1257) + + +state 248 + typeexpr: typeexpr '|'.simpletypeexpr + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + simpletypeexpr goto 309 + primarytypeexpr goto 186 + +state 249 + typeexpr: typeexpr '&'.simpletypeexpr + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + simpletypeexpr goto 310 + primarytypeexpr goto 186 + +state 250 + typeexpr: simpletypeexpr TExtends.simpletypeexpr TQuestion typeexpr ':' typeexpr + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + simpletypeexpr goto 311 + primarytypeexpr goto 186 + +state 251 + simpletypeexpr: simpletypeexpr TQuestion. (160) + + . reduce 160 (src line 943) + + +252: shift/reduce conflict (shift 255(0), red'n 159(0)) on '@' +state 252 + simpletypeexpr: primarytypeexpr annotations. (159) + annotations: annotations.annotation + + '@' shift 255 + . reduce 159 (src line 932) + + annotation goto 312 + +state 253 + primarytypeexpr: primarytypeexpr '['.']' + primarytypeexpr: primarytypeexpr '['.typeexpr ']' + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + ']' shift 313 + . error + + typeexpr goto 314 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 254 + annotations: annotation. (223) + + . reduce 223 (src line 1198) + + +state 255 + annotation: '@'.TIdent + annotation: '@'.TIdent '(' ')' + annotation: '@'.TIdent '(' exprlist ')' + + TIdent shift 315 + . error + + +state 256 + primarytypeexpr: TIdent '.'.TIdent + + TIdent shift 316 + . error + + +state 257 + primarytypeexpr: TIdent '<'.typeexprlist closegt + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + typeexpr goto 318 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + typeexprlist goto 317 + +state 258 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + primarytypeexpr: '{' typeexpr.'}' + + '}' shift 319 + '|' shift 248 + '&' shift 249 + . error + + +state 259 + primarytypeexpr: '{' '['.typeexpr ']' ':' typeexpr '}' + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + typeexpr goto 320 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 260 + primarytypeexpr: '{' typefieldlist.'}' + typefieldlist: typefieldlist.',' typefield + typefieldlist: typefieldlist.',' + + '}' shift 321 + ',' shift 322 + . error + + +state 261 + primarytypeexpr: '{' '}'. (194) + + . reduce 194 (src line 1086) + + +state 262 + typefieldlist: typefield. (212) + + . reduce 212 (src line 1161) + + +state 263 + primarytypeexpr: TIdent. (166) + primarytypeexpr: TIdent.'.' TIdent + primarytypeexpr: TIdent.'<' typeexprlist closegt + typefield: TIdent.':' typeexpr + typefield: TIdent.':' typeexpr annotations + typefield: TIdent.TQuestionColon typeexpr + typefield: TIdent.TQuestionColon typeexpr annotations + + TQuestionColon shift 324 + '<' shift 257 + ':' shift 323 + '.' shift 256 + . reduce 166 (src line 969) + + +state 264 + typefield: typefieldname.':' typeexpr + typefield: typefieldname.':' typeexpr annotations + typefield: typefieldname.TQuestionColon typeexpr + typefield: typefieldname.TQuestionColon typeexpr annotations + + TQuestionColon shift 326 + ':' shift 325 + . error + + +state 265 + typefieldname: TInterface. (140) + primarytypeexpr: TInterface.'{' typefieldlist '}' + primarytypeexpr: TInterface.'{' '}' + + '{' shift 282 + . reduce 140 (src line 854) + + +state 266 + typefieldname: TReadonly. (141) + primarytypeexpr: TReadonly.'{' typeexpr '}' + primarytypeexpr: TReadonly.'{' '[' typeexpr ']' ':' typeexpr '}' + primarytypeexpr: TReadonly.'{' typefieldlist '}' + + '{' shift 283 + . reduce 141 (src line 857) + + +state 267 + typefieldname: TAsserts. (143) + primarytypeexpr: TAsserts.TIdent + primarytypeexpr: TAsserts.TIdent TIs typeexpr + + TIdent shift 284 + . reduce 143 (src line 863) + + +state 268 + typefieldname: TTypeof. (147) + primarytypeexpr: TTypeof.'(' expr ')' + + '(' shift 285 + . reduce 147 (src line 875) + + +state 269 + typefieldname: TKeyof. (145) + primarytypeexpr: TKeyof.'(' typeexpr ')' + + '(' shift 286 + . reduce 145 (src line 869) + + +state 270 + typefieldname: TType. (139) + + . reduce 139 (src line 851) + + +state 271 + typefieldname: TAs. (142) + + . reduce 142 (src line 860) + + +state 272 + typefieldname: TIs. (144) + + . reduce 144 (src line 866) + + +state 273 + typefieldname: TExtends. (146) + + . reduce 146 (src line 872) + + +state 274 + primarytypeexpr: '(' funcparamlist.')' TArrow '(' typeexprlist2 ')' + primarytypeexpr: '(' funcparamlist.')' TArrow '(' ')' + primarytypeexpr: '(' funcparamlist.')' TArrow typeexpr + funcparamlist: funcparamlist.',' funcparam + funcparamlist: funcparamlist.',' T3Comma typeexpr + + ')' shift 327 + ',' shift 328 + . error + + +state 275 + primarytypeexpr: '(' ')'.TArrow '(' typeexprlist2 ')' + primarytypeexpr: '(' ')'.TArrow typeexpr + primarytypeexpr: '(' ')'.TArrow '(' ')' + + TArrow shift 329 + . error + + +state 276 + primarytypeexpr: '('.funcparamlist ')' TArrow '(' typeexprlist2 ')' + primarytypeexpr: '('.funcparamlist ')' TArrow '(' ')' + primarytypeexpr: '('.funcparamlist ')' TArrow typeexpr + primarytypeexpr: '('.')' TArrow '(' typeexprlist2 ')' + primarytypeexpr: '('.')' TArrow typeexpr + primarytypeexpr: '('.')' TArrow '(' ')' + primarytypeexpr: '('.'(' funcparamlist ')' TArrow typeexpr ')' + primarytypeexpr: '(' '('.funcparamlist ')' TArrow typeexpr ')' + primarytypeexpr: '('.'(' ')' TArrow typeexpr ')' + primarytypeexpr: '(' '('.')' TArrow typeexpr ')' + primarytypeexpr: '('.'(' funcparamlist ')' TArrow '(' typeexprlist2 ')' ')' + primarytypeexpr: '(' '('.funcparamlist ')' TArrow '(' typeexprlist2 ')' ')' + primarytypeexpr: '('.'(' ')' TArrow '(' typeexprlist2 ')' ')' + primarytypeexpr: '(' '('.')' TArrow '(' typeexprlist2 ')' ')' + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + T3Comma shift 278 + TIdent shift 279 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 276 + ')' shift 331 + . error + + typeexpr goto 280 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + funcparam goto 277 + funcparamlist goto 330 + +state 277 + funcparamlist: funcparam. (208) + + . reduce 208 (src line 1147) + + +state 278 + funcparamlist: T3Comma.typeexpr + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + typeexpr goto 332 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 279 + primarytypeexpr: TIdent. (166) + primarytypeexpr: TIdent.'.' TIdent + primarytypeexpr: TIdent.'<' typeexprlist closegt + funcparam: TIdent.':' typeexpr + + '<' shift 257 + ':' shift 333 + '.' shift 256 + . reduce 166 (src line 969) + + +state 280 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + funcparam: typeexpr. (207) + + '|' shift 248 + '&' shift 249 + . reduce 207 (src line 1142) + + +state 281 + primarytypeexpr: TFun '('.funcparamlist ')' ':' typeexpr + primarytypeexpr: TFun '('.funcparamlist ')' ':' '(' typeexprlist2 ')' + primarytypeexpr: TFun '('.')' ':' typeexpr + primarytypeexpr: TFun '('.')' ':' '(' typeexprlist2 ')' + primarytypeexpr: TFun '('.funcparamlist ')' + primarytypeexpr: TFun '('.')' + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + T3Comma shift 278 + TIdent shift 279 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + ')' shift 335 + . error + + typeexpr goto 280 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + funcparam goto 277 + funcparamlist goto 334 + +state 282 + primarytypeexpr: TInterface '{'.typefieldlist '}' + primarytypeexpr: TInterface '{'.'}' + + TType shift 270 + TInterface shift 339 + TReadonly shift 340 + TAs shift 271 + TAsserts shift 341 + TIs shift 272 + TTypeof shift 343 + TKeyof shift 342 + TExtends shift 273 + TIdent shift 338 + '}' shift 337 + . error + + typefieldname goto 264 + typefieldlist goto 336 + typefield goto 262 + +state 283 + primarytypeexpr: TReadonly '{'.typeexpr '}' + primarytypeexpr: TReadonly '{'.'[' typeexpr ']' ':' typeexpr '}' + primarytypeexpr: TReadonly '{'.typefieldlist '}' + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TType shift 270 + TInterface shift 265 + TReadonly shift 266 + TAs shift 271 + TAsserts shift 267 + TIs shift 272 + TTypeof shift 268 + TKeyof shift 269 + TExtends shift 273 + TFun shift 195 + TIdent shift 263 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + '[' shift 345 + . error + + typefieldname goto 264 + typeexpr goto 344 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + typefieldlist goto 346 + typefield goto 262 + +state 284 + primarytypeexpr: TAsserts TIdent. (195) + primarytypeexpr: TAsserts TIdent.TIs typeexpr + + TIs shift 347 + . reduce 195 (src line 1090) + + +state 285 + primarytypeexpr: TTypeof '('.expr ')' + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 348 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 286 + primarytypeexpr: TKeyof '('.typeexpr ')' + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + typeexpr goto 349 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 287 + funcbody: '(' parlist ')'.returntypeannot block TEnd + returntypeannot: . (150) + + ':' shift 289 + . reduce 150 (src line 890) + + returntypeannot goto 350 + +state 288 + funcbody: '(' ')' returntypeannot.block TEnd + chunk1: . (4) + + . reduce 4 (src line 185) + + chunk goto 56 + chunk1 goto 2 + block goto 351 + +state 289 + returntypeannot: ':'.typeexprlist + returntypeannot: ':'.'(' ')' + returntypeannot: ':'.'(' typeexpr ',' typeexprlist ')' + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 353 + . error + + typeexpr goto 318 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + typeexprlist goto 352 + +state 290 + parlist: T3Comma ':'.typeexpr + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + typeexpr goto 354 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 291 + parlist: typednamelist ','.T3Comma + parlist: typednamelist ','.T3Comma ':' typeexpr + typednamelist: typednamelist ','.typedname + + T3Comma shift 355 + TIdent shift 68 + . error + + typedname goto 241 + +state 292 + funcbody: typeparams '(' parlist.')' returntypeannot block TEnd + + ')' shift 356 + . error + + +state 293 + funcbody: typeparams '(' ')'.returntypeannot block TEnd + returntypeannot: . (150) + + ':' shift 289 + . reduce 150 (src line 890) + + returntypeannot goto 357 + +state 294 + typeparams: '<' typeparamlist '>'. (228) + + . reduce 228 (src line 1217) + + +state 295 + typeparamlist: typeparamlist ','.typeparam + + TIdent shift 209 + . error + + typeparam goto 358 + +state 296 + typeparam: TIdent ':'.typeexpr + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + typeexpr goto 359 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 297 + fieldlist: fieldlist fieldsep field. (125) + + . reduce 125 (src line 802) + + +state 298 + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + field: fieldname '=' expr. (127) + + TAnd shift 76 + TOr shift 75 + TAs shift 96 + TEqeq shift 81 + TNeq shift 82 + TLte shift 80 + TGte shift 79 + T2Comma shift 83 + T2Colon shift 97 + TShl shift 93 + TShr shift 94 + TIdiv shift 95 + TBang shift 98 + '>' shift 77 + '<' shift 78 + '|' shift 91 + '~' shift 92 + '&' shift 90 + '+' shift 84 + '-' shift 85 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + . reduce 127 (src line 810) + + +state 299 + field: '[' expr ']'.'=' expr + + '=' shift 360 + . error + + +state 300 + stat: TWhile expr TDo block TEnd. (11) + + . reduce 11 (src line 219) + + +state 301 + stat: TIf expr TThen block elseifs.TEnd + stat: TIf expr TThen block elseifs.TElse block TEnd + elseifs: elseifs.TElseIf expr TThen block + + TElse shift 362 + TElseIf shift 363 + TEnd shift 361 + . error + + +state 302 + stat: TFor TIdent '=' expr ','.expr TDo block TEnd + stat: TFor TIdent '=' expr ','.expr ',' expr TDo block TEnd + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 364 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 303 + stat: TFor namelist TIn exprlist TDo.block TEnd + chunk1: . (4) + + . reduce 4 (src line 185) + + chunk goto 56 + chunk1 goto 2 + block goto 365 + +state 304 + stat: TIdent TIdent typeparams '=' typeexpr. (25) + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + + '|' shift 248 + '&' shift 249 + . reduce 25 (src line 301) + + +state 305 + stat: TInterface TIdent interfaceextends interfacebody TEnd. (26) + + . reduce 26 (src line 308) + + +state 306 + interfacebody: interfacebody interfacemethod. (241) + + . reduce 241 (src line 1268) + + +state 307 + interfacemethod: TFunction.TIdent '(' ')' returntypeannot + interfacemethod: TFunction.TIdent '(' typednamelist ')' returntypeannot + + TIdent shift 366 + . error + + +state 308 + interfaceextends: interfaceextends ',' TIdent. (239) + + . reduce 239 (src line 1260) + + +309: shift/reduce conflict (shift 251(0), red'n 155(4)) on TQuestion +state 309 + typeexpr: typeexpr '|' simpletypeexpr. (155) + simpletypeexpr: simpletypeexpr.TQuestion + + TQuestion shift 251 + . reduce 155 (src line 907) + + +310: shift/reduce conflict (shift 251(0), red'n 156(6)) on TQuestion +state 310 + typeexpr: typeexpr '&' simpletypeexpr. (156) + simpletypeexpr: simpletypeexpr.TQuestion + + TQuestion shift 251 + . reduce 156 (src line 915) + + +state 311 + typeexpr: simpletypeexpr TExtends simpletypeexpr.TQuestion typeexpr ':' typeexpr + simpletypeexpr: simpletypeexpr.TQuestion + + TQuestion shift 367 + . error + + +state 312 + annotations: annotations annotation. (224) + + . reduce 224 (src line 1201) + + +state 313 + primarytypeexpr: primarytypeexpr '[' ']'. (190) + + . reduce 190 (src line 1068) + + +state 314 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + primarytypeexpr: primarytypeexpr '[' typeexpr.']' + + '|' shift 248 + '&' shift 249 + ']' shift 368 + . error + + +315: shift/reduce conflict (shift 369(0), red'n 225(0)) on '(' +state 315 + annotation: '@' TIdent. (225) + annotation: '@' TIdent.'(' ')' + annotation: '@' TIdent.'(' exprlist ')' + + '(' shift 369 + . reduce 225 (src line 1206) + + +state 316 + primarytypeexpr: TIdent '.' TIdent. (167) + + . reduce 167 (src line 973) + + +state 317 + primarytypeexpr: TIdent '<' typeexprlist.closegt + typeexprlist: typeexprlist.',' typeexpr + + TShr shift 373 + '>' shift 372 + ',' shift 371 + . error + + closegt goto 370 + +state 318 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + typeexprlist: typeexpr. (200) + + '|' shift 248 + '&' shift 249 + . reduce 200 (src line 1112) + + +state 319 + primarytypeexpr: '{' typeexpr '}'. (169) + + . reduce 169 (src line 984) + + +state 320 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + primarytypeexpr: '{' '[' typeexpr.']' ':' typeexpr '}' + + '|' shift 248 + '&' shift 249 + ']' shift 374 + . error + + +state 321 + primarytypeexpr: '{' typefieldlist '}'. (171) + + . reduce 171 (src line 992) + + +state 322 + typefieldlist: typefieldlist ','.typefield + typefieldlist: typefieldlist ','. (214) + + TType shift 270 + TInterface shift 339 + TReadonly shift 340 + TAs shift 271 + TAsserts shift 341 + TIs shift 272 + TTypeof shift 343 + TKeyof shift 342 + TExtends shift 273 + TIdent shift 338 + . reduce 214 (src line 1167) + + typefieldname goto 264 + typefield goto 375 + +state 323 + typefield: TIdent ':'.typeexpr + typefield: TIdent ':'.typeexpr annotations + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + typeexpr goto 376 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 324 + typefield: TIdent TQuestionColon.typeexpr + typefield: TIdent TQuestionColon.typeexpr annotations + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + typeexpr goto 377 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 325 + typefield: typefieldname ':'.typeexpr + typefield: typefieldname ':'.typeexpr annotations + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + typeexpr goto 378 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 326 + typefield: typefieldname TQuestionColon.typeexpr + typefield: typefieldname TQuestionColon.typeexpr annotations + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + typeexpr goto 379 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 327 + primarytypeexpr: '(' funcparamlist ')'.TArrow '(' typeexprlist2 ')' + primarytypeexpr: '(' funcparamlist ')'.TArrow '(' ')' + primarytypeexpr: '(' funcparamlist ')'.TArrow typeexpr + + TArrow shift 380 + . error + + +state 328 + funcparamlist: funcparamlist ','.funcparam + funcparamlist: funcparamlist ','.T3Comma typeexpr + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + T3Comma shift 382 + TIdent shift 279 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + typeexpr goto 280 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + funcparam goto 381 + +state 329 + primarytypeexpr: '(' ')' TArrow.'(' typeexprlist2 ')' + primarytypeexpr: '(' ')' TArrow.typeexpr + primarytypeexpr: '(' ')' TArrow.'(' ')' + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 383 + . error + + typeexpr goto 384 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 330 + primarytypeexpr: '(' funcparamlist.')' TArrow '(' typeexprlist2 ')' + primarytypeexpr: '(' funcparamlist.')' TArrow '(' ')' + primarytypeexpr: '(' funcparamlist.')' TArrow typeexpr + primarytypeexpr: '(' '(' funcparamlist.')' TArrow typeexpr ')' + primarytypeexpr: '(' '(' funcparamlist.')' TArrow '(' typeexprlist2 ')' ')' + funcparamlist: funcparamlist.',' funcparam + funcparamlist: funcparamlist.',' T3Comma typeexpr + + ')' shift 385 + ',' shift 328 + . error + + +state 331 + primarytypeexpr: '(' ')'.TArrow '(' typeexprlist2 ')' + primarytypeexpr: '(' ')'.TArrow typeexpr + primarytypeexpr: '(' ')'.TArrow '(' ')' + primarytypeexpr: '(' '(' ')'.TArrow typeexpr ')' + primarytypeexpr: '(' '(' ')'.TArrow '(' typeexprlist2 ')' ')' + + TArrow shift 386 + . error + + +state 332 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + funcparamlist: T3Comma typeexpr. (210) + + '|' shift 248 + '&' shift 249 + . reduce 210 (src line 1153) + + +state 333 + funcparam: TIdent ':'.typeexpr + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + typeexpr goto 387 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 334 + primarytypeexpr: TFun '(' funcparamlist.')' ':' typeexpr + primarytypeexpr: TFun '(' funcparamlist.')' ':' '(' typeexprlist2 ')' + primarytypeexpr: TFun '(' funcparamlist.')' + funcparamlist: funcparamlist.',' funcparam + funcparamlist: funcparamlist.',' T3Comma typeexpr + + ')' shift 388 + ',' shift 328 + . error + + +335: shift/reduce conflict (shift 389(0), red'n 187(0)) on ':' +state 335 + primarytypeexpr: TFun '(' ')'.':' typeexpr + primarytypeexpr: TFun '(' ')'.':' '(' typeexprlist2 ')' + primarytypeexpr: TFun '(' ')'. (187) + + ':' shift 389 + . reduce 187 (src line 1056) + + +state 336 + primarytypeexpr: TInterface '{' typefieldlist.'}' + typefieldlist: typefieldlist.',' typefield + typefieldlist: typefieldlist.',' + + '}' shift 390 + ',' shift 322 + . error + + +state 337 + primarytypeexpr: TInterface '{' '}'. (189) + + . reduce 189 (src line 1064) + + +state 338 + typefield: TIdent.':' typeexpr + typefield: TIdent.':' typeexpr annotations + typefield: TIdent.TQuestionColon typeexpr + typefield: TIdent.TQuestionColon typeexpr annotations + + TQuestionColon shift 324 + ':' shift 323 + . error + + +state 339 + typefieldname: TInterface. (140) + + . reduce 140 (src line 854) + + +state 340 + typefieldname: TReadonly. (141) + + . reduce 141 (src line 857) + + +state 341 + typefieldname: TAsserts. (143) + + . reduce 143 (src line 863) + + +state 342 + typefieldname: TKeyof. (145) + + . reduce 145 (src line 869) + + +state 343 + typefieldname: TTypeof. (147) + + . reduce 147 (src line 875) + + +state 344 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + primarytypeexpr: TReadonly '{' typeexpr.'}' + + '}' shift 391 + '|' shift 248 + '&' shift 249 + . error + + +state 345 + primarytypeexpr: TReadonly '{' '['.typeexpr ']' ':' typeexpr '}' + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + typeexpr goto 392 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 346 + primarytypeexpr: TReadonly '{' typefieldlist.'}' + typefieldlist: typefieldlist.',' typefield + typefieldlist: typefieldlist.',' + + '}' shift 393 + ',' shift 322 + . error + + +state 347 + primarytypeexpr: TAsserts TIdent TIs.typeexpr + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + typeexpr goto 394 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 348 + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + primarytypeexpr: TTypeof '(' expr.')' + + TAnd shift 76 + TOr shift 75 + TAs shift 96 + TEqeq shift 81 + TNeq shift 82 + TLte shift 80 + TGte shift 79 + T2Comma shift 83 + T2Colon shift 97 + ')' shift 395 + TShl shift 93 + TShr shift 94 + TIdiv shift 95 + TBang shift 98 + '>' shift 77 + '<' shift 78 + '|' shift 91 + '~' shift 92 + '&' shift 90 + '+' shift 84 + '-' shift 85 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + . error + + +state 349 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + primarytypeexpr: TKeyof '(' typeexpr.')' + + ')' shift 396 + '|' shift 248 + '&' shift 249 + . error + + +state 350 + funcbody: '(' parlist ')' returntypeannot.block TEnd + chunk1: . (4) + + . reduce 4 (src line 185) + + chunk goto 56 + chunk1 goto 2 + block goto 397 + +state 351 + funcbody: '(' ')' returntypeannot block.TEnd + + TEnd shift 398 + . error + + +state 352 + returntypeannot: ':' typeexprlist. (151) + typeexprlist: typeexprlist.',' typeexpr + + ',' shift 371 + . reduce 151 (src line 893) + + +state 353 + returntypeannot: ':' '('.')' + returntypeannot: ':' '('.typeexpr ',' typeexprlist ')' + primarytypeexpr: '('.funcparamlist ')' TArrow '(' typeexprlist2 ')' + primarytypeexpr: '('.funcparamlist ')' TArrow '(' ')' + primarytypeexpr: '('.funcparamlist ')' TArrow typeexpr + primarytypeexpr: '('.')' TArrow '(' typeexprlist2 ')' + primarytypeexpr: '('.')' TArrow typeexpr + primarytypeexpr: '('.')' TArrow '(' ')' + primarytypeexpr: '('.'(' funcparamlist ')' TArrow typeexpr ')' + primarytypeexpr: '('.'(' ')' TArrow typeexpr ')' + primarytypeexpr: '('.'(' funcparamlist ')' TArrow '(' typeexprlist2 ')' ')' + primarytypeexpr: '('.'(' ')' TArrow '(' typeexprlist2 ')' ')' + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + T3Comma shift 278 + TIdent shift 279 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 276 + ')' shift 399 + . error + + typeexpr goto 400 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + funcparam goto 277 + funcparamlist goto 274 + +state 354 + parlist: T3Comma ':' typeexpr. (118) + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + + '|' shift 248 + '&' shift 249 + . reduce 118 (src line 768) + + +state 355 + parlist: typednamelist ',' T3Comma. (120) + parlist: typednamelist ',' T3Comma.':' typeexpr + + ':' shift 401 + . reduce 120 (src line 775) + + +state 356 + funcbody: typeparams '(' parlist ')'.returntypeannot block TEnd + returntypeannot: . (150) + + ':' shift 289 + . reduce 150 (src line 890) + + returntypeannot goto 402 + +state 357 + funcbody: typeparams '(' ')' returntypeannot.block TEnd + chunk1: . (4) + + . reduce 4 (src line 185) + + chunk goto 56 + chunk1 goto 2 + block goto 403 + +state 358 + typeparamlist: typeparamlist ',' typeparam. (230) + + . reduce 230 (src line 1225) + + +state 359 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + typeparam: TIdent ':' typeexpr. (232) + + '|' shift 248 + '&' shift 249 + . reduce 232 (src line 1233) + + +state 360 + field: '[' expr ']' '='.expr + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 404 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 361 + stat: TIf expr TThen block elseifs TEnd. (13) + + . reduce 13 (src line 229) + + +state 362 + stat: TIf expr TThen block elseifs TElse.block TEnd + chunk1: . (4) + + . reduce 4 (src line 185) + + chunk goto 56 + chunk1 goto 2 + block goto 405 + +state 363 + elseifs: elseifs TElseIf.expr TThen block + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 406 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 364 + stat: TFor TIdent '=' expr ',' expr.TDo block TEnd + stat: TFor TIdent '=' expr ',' expr.',' expr TDo block TEnd + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAnd shift 76 + TDo shift 407 + TOr shift 75 + TAs shift 96 + TEqeq shift 81 + TNeq shift 82 + TLte shift 80 + TGte shift 79 + T2Comma shift 83 + T2Colon shift 97 + TShl shift 93 + TShr shift 94 + TIdiv shift 95 + TBang shift 98 + '>' shift 77 + '<' shift 78 + '|' shift 91 + '~' shift 92 + '&' shift 90 + '+' shift 84 + '-' shift 85 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + ',' shift 408 + . error + + +state 365 + stat: TFor namelist TIn exprlist TDo block.TEnd + + TEnd shift 409 + . error + + +state 366 + interfacemethod: TFunction TIdent.'(' ')' returntypeannot + interfacemethod: TFunction TIdent.'(' typednamelist ')' returntypeannot + + '(' shift 410 + . error + + +state 367 + typeexpr: simpletypeexpr TExtends simpletypeexpr TQuestion.typeexpr ':' typeexpr + simpletypeexpr: simpletypeexpr TQuestion. (160) + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . reduce 160 (src line 943) + + typeexpr goto 411 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 368 + primarytypeexpr: primarytypeexpr '[' typeexpr ']'. (199) + + . reduce 199 (src line 1106) + + +state 369 + annotation: '@' TIdent '('.')' + annotation: '@' TIdent '('.exprlist ')' + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + ')' shift 412 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + exprlist goto 413 + expr goto 27 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 370 + primarytypeexpr: TIdent '<' typeexprlist closegt. (168) + + . reduce 168 (src line 977) + + +state 371 + typeexprlist: typeexprlist ','.typeexpr + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + typeexpr goto 414 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 372 + closegt: '>'. (204) + + . reduce 204 (src line 1128) + + +state 373 + closegt: TShr. (205) + + . reduce 205 (src line 1130) + + +state 374 + primarytypeexpr: '{' '[' typeexpr ']'.':' typeexpr '}' + + ':' shift 415 + . error + + +state 375 + typefieldlist: typefieldlist ',' typefield. (213) + + . reduce 213 (src line 1164) + + +state 376 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + typefield: TIdent ':' typeexpr. (215) + typefield: TIdent ':' typeexpr.annotations + + '|' shift 248 + '&' shift 249 + '@' shift 255 + . reduce 215 (src line 1172) + + annotation goto 254 + annotations goto 416 + +state 377 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + typefield: TIdent TQuestionColon typeexpr. (217) + typefield: TIdent TQuestionColon typeexpr.annotations + + '|' shift 248 + '&' shift 249 + '@' shift 255 + . reduce 217 (src line 1178) + + annotation goto 254 + annotations goto 417 + +state 378 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + typefield: typefieldname ':' typeexpr. (219) + typefield: typefieldname ':' typeexpr.annotations + + '|' shift 248 + '&' shift 249 + '@' shift 255 + . reduce 219 (src line 1184) + + annotation goto 254 + annotations goto 418 + +state 379 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + typefield: typefieldname TQuestionColon typeexpr. (221) + typefield: typefieldname TQuestionColon typeexpr.annotations + + '|' shift 248 + '&' shift 249 + '@' shift 255 + . reduce 221 (src line 1190) + + annotation goto 254 + annotations goto 419 + +state 380 + primarytypeexpr: '(' funcparamlist ')' TArrow.'(' typeexprlist2 ')' + primarytypeexpr: '(' funcparamlist ')' TArrow.'(' ')' + primarytypeexpr: '(' funcparamlist ')' TArrow.typeexpr + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 420 + . error + + typeexpr goto 421 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 381 + funcparamlist: funcparamlist ',' funcparam. (209) + + . reduce 209 (src line 1150) + + +state 382 + funcparamlist: funcparamlist ',' T3Comma.typeexpr + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + typeexpr goto 422 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 383 + primarytypeexpr: '('.funcparamlist ')' TArrow '(' typeexprlist2 ')' + primarytypeexpr: '('.funcparamlist ')' TArrow '(' ')' + primarytypeexpr: '('.funcparamlist ')' TArrow typeexpr + primarytypeexpr: '('.')' TArrow '(' typeexprlist2 ')' + primarytypeexpr: '(' ')' TArrow '('.typeexprlist2 ')' + primarytypeexpr: '('.')' TArrow typeexpr + primarytypeexpr: '('.')' TArrow '(' ')' + primarytypeexpr: '(' ')' TArrow '('.')' + primarytypeexpr: '('.'(' funcparamlist ')' TArrow typeexpr ')' + primarytypeexpr: '('.'(' ')' TArrow typeexpr ')' + primarytypeexpr: '('.'(' funcparamlist ')' TArrow '(' typeexprlist2 ')' ')' + primarytypeexpr: '('.'(' ')' TArrow '(' typeexprlist2 ')' ')' + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + T3Comma shift 278 + TIdent shift 279 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 276 + ')' shift 423 + . error + + typeexpr goto 425 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + typeexprlist2 goto 424 + funcparam goto 277 + funcparamlist goto 274 + +384: shift/reduce conflict (shift 248(4), red'n 176(0)) on '|' +384: shift/reduce conflict (shift 249(6), red'n 176(0)) on '&' +state 384 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + primarytypeexpr: '(' ')' TArrow typeexpr. (176) + + '|' shift 248 + '&' shift 249 + . reduce 176 (src line 1012) + + +state 385 + primarytypeexpr: '(' funcparamlist ')'.TArrow '(' typeexprlist2 ')' + primarytypeexpr: '(' funcparamlist ')'.TArrow '(' ')' + primarytypeexpr: '(' funcparamlist ')'.TArrow typeexpr + primarytypeexpr: '(' '(' funcparamlist ')'.TArrow typeexpr ')' + primarytypeexpr: '(' '(' funcparamlist ')'.TArrow '(' typeexprlist2 ')' ')' + + TArrow shift 426 + . error + + +state 386 + primarytypeexpr: '(' ')' TArrow.'(' typeexprlist2 ')' + primarytypeexpr: '(' ')' TArrow.typeexpr + primarytypeexpr: '(' ')' TArrow.'(' ')' + primarytypeexpr: '(' '(' ')' TArrow.typeexpr ')' + primarytypeexpr: '(' '(' ')' TArrow.'(' typeexprlist2 ')' ')' + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 427 + . error + + typeexpr goto 428 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 387 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + funcparam: TIdent ':' typeexpr. (206) + + '|' shift 248 + '&' shift 249 + . reduce 206 (src line 1139) + + +388: shift/reduce conflict (shift 429(0), red'n 186(0)) on ':' +state 388 + primarytypeexpr: TFun '(' funcparamlist ')'.':' typeexpr + primarytypeexpr: TFun '(' funcparamlist ')'.':' '(' typeexprlist2 ')' + primarytypeexpr: TFun '(' funcparamlist ')'. (186) + + ':' shift 429 + . reduce 186 (src line 1052) + + +state 389 + primarytypeexpr: TFun '(' ')' ':'.typeexpr + primarytypeexpr: TFun '(' ')' ':'.'(' typeexprlist2 ')' + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 431 + . error + + typeexpr goto 430 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 390 + primarytypeexpr: TInterface '{' typefieldlist '}'. (188) + + . reduce 188 (src line 1060) + + +state 391 + primarytypeexpr: TReadonly '{' typeexpr '}'. (191) + + . reduce 191 (src line 1072) + + +state 392 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + primarytypeexpr: TReadonly '{' '[' typeexpr.']' ':' typeexpr '}' + + '|' shift 248 + '&' shift 249 + ']' shift 432 + . error + + +state 393 + primarytypeexpr: TReadonly '{' typefieldlist '}'. (193) + + . reduce 193 (src line 1082) + + +394: shift/reduce conflict (shift 248(4), red'n 196(0)) on '|' +394: shift/reduce conflict (shift 249(6), red'n 196(0)) on '&' +state 394 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + primarytypeexpr: TAsserts TIdent TIs typeexpr. (196) + + '|' shift 248 + '&' shift 249 + . reduce 196 (src line 1094) + + +state 395 + primarytypeexpr: TTypeof '(' expr ')'. (197) + + . reduce 197 (src line 1098) + + +state 396 + primarytypeexpr: TKeyof '(' typeexpr ')'. (198) + + . reduce 198 (src line 1102) + + +state 397 + funcbody: '(' parlist ')' returntypeannot block.TEnd + + TEnd shift 433 + . error + + +state 398 + funcbody: '(' ')' returntypeannot block TEnd. (114) + + . reduce 114 (src line 748) + + +state 399 + returntypeannot: ':' '(' ')'. (152) + primarytypeexpr: '(' ')'.TArrow '(' typeexprlist2 ')' + primarytypeexpr: '(' ')'.TArrow typeexpr + primarytypeexpr: '(' ')'.TArrow '(' ')' + + TArrow shift 329 + . reduce 152 (src line 896) + + +400: shift/reduce conflict (shift 434(0), red'n 207(0)) on ',' +state 400 + returntypeannot: ':' '(' typeexpr.',' typeexprlist ')' + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + funcparam: typeexpr. (207) + + '|' shift 248 + '&' shift 249 + ',' shift 434 + . reduce 207 (src line 1142) + + +state 401 + parlist: typednamelist ',' T3Comma ':'.typeexpr + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + typeexpr goto 435 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 402 + funcbody: typeparams '(' parlist ')' returntypeannot.block TEnd + chunk1: . (4) + + . reduce 4 (src line 185) + + chunk goto 56 + chunk1 goto 2 + block goto 436 + +state 403 + funcbody: typeparams '(' ')' returntypeannot block.TEnd + + TEnd shift 437 + . error + + +state 404 + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + field: '[' expr ']' '=' expr. (128) + + TAnd shift 76 + TOr shift 75 + TAs shift 96 + TEqeq shift 81 + TNeq shift 82 + TLte shift 80 + TGte shift 79 + T2Comma shift 83 + T2Colon shift 97 + TShl shift 93 + TShr shift 94 + TIdiv shift 95 + TBang shift 98 + '>' shift 77 + '<' shift 78 + '|' shift 91 + '~' shift 92 + '&' shift 90 + '+' shift 84 + '-' shift 85 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + . reduce 128 (src line 813) + + +state 405 + stat: TIf expr TThen block elseifs TElse block.TEnd + + TEnd shift 438 + . error + + +state 406 + elseifs: elseifs TElseIf expr.TThen block + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAnd shift 76 + TOr shift 75 + TThen shift 439 + TAs shift 96 + TEqeq shift 81 + TNeq shift 82 + TLte shift 80 + TGte shift 79 + T2Comma shift 83 + T2Colon shift 97 + TShl shift 93 + TShr shift 94 + TIdiv shift 95 + TBang shift 98 + '>' shift 77 + '<' shift 78 + '|' shift 91 + '~' shift 92 + '&' shift 90 + '+' shift 84 + '-' shift 85 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + . error + + +state 407 + stat: TFor TIdent '=' expr ',' expr TDo.block TEnd + chunk1: . (4) + + . reduce 4 (src line 185) + + chunk goto 56 + chunk1 goto 2 + block goto 440 + +state 408 + stat: TFor TIdent '=' expr ',' expr ','.expr TDo block TEnd + + TFalse shift 29 + TFunction shift 41 + TNil shift 28 + TNot shift 38 + TTrue shift 30 + T3Comma shift 32 + TIdent shift 45 + TNumber shift 31 + TString shift 43 + '{' shift 44 + '(' shift 24 + '~' shift 40 + '-' shift 37 + '#' shift 39 + . error + + var goto 42 + expr goto 441 + string goto 35 + prefixexp goto 34 + functioncall goto 23 + afunctioncall goto 22 + function goto 33 + tableconstructor goto 36 + +state 409 + stat: TFor namelist TIn exprlist TDo block TEnd. (17) + + . reduce 17 (src line 260) + + +state 410 + interfacemethod: TFunction TIdent '('.')' returntypeannot + interfacemethod: TFunction TIdent '('.typednamelist ')' returntypeannot + + TIdent shift 68 + ')' shift 442 + . error + + typednamelist goto 443 + typedname goto 67 + +state 411 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + typeexpr: simpletypeexpr TExtends simpletypeexpr TQuestion typeexpr.':' typeexpr + + '|' shift 248 + '&' shift 249 + ':' shift 444 + . error + + +state 412 + annotation: '@' TIdent '(' ')'. (226) + + . reduce 226 (src line 1209) + + +state 413 + exprlist: exprlist.',' expr + annotation: '@' TIdent '(' exprlist.')' + + ')' shift 445 + ',' shift 74 + . error + + +state 414 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + typeexprlist: typeexprlist ',' typeexpr. (201) + + '|' shift 248 + '&' shift 249 + . reduce 201 (src line 1115) + + +state 415 + primarytypeexpr: '{' '[' typeexpr ']' ':'.typeexpr '}' + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + typeexpr goto 446 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 416 + typefield: TIdent ':' typeexpr annotations. (216) + annotations: annotations.annotation + + '@' shift 255 + . reduce 216 (src line 1175) + + annotation goto 312 + +state 417 + typefield: TIdent TQuestionColon typeexpr annotations. (218) + annotations: annotations.annotation + + '@' shift 255 + . reduce 218 (src line 1181) + + annotation goto 312 + +state 418 + typefield: typefieldname ':' typeexpr annotations. (220) + annotations: annotations.annotation + + '@' shift 255 + . reduce 220 (src line 1187) + + annotation goto 312 + +state 419 + typefield: typefieldname TQuestionColon typeexpr annotations. (222) + annotations: annotations.annotation + + '@' shift 255 + . reduce 222 (src line 1193) + + annotation goto 312 + +state 420 + primarytypeexpr: '('.funcparamlist ')' TArrow '(' typeexprlist2 ')' + primarytypeexpr: '(' funcparamlist ')' TArrow '('.typeexprlist2 ')' + primarytypeexpr: '('.funcparamlist ')' TArrow '(' ')' + primarytypeexpr: '(' funcparamlist ')' TArrow '('.')' + primarytypeexpr: '('.funcparamlist ')' TArrow typeexpr + primarytypeexpr: '('.')' TArrow '(' typeexprlist2 ')' + primarytypeexpr: '('.')' TArrow typeexpr + primarytypeexpr: '('.')' TArrow '(' ')' + primarytypeexpr: '('.'(' funcparamlist ')' TArrow typeexpr ')' + primarytypeexpr: '('.'(' ')' TArrow typeexpr ')' + primarytypeexpr: '('.'(' funcparamlist ')' TArrow '(' typeexprlist2 ')' ')' + primarytypeexpr: '('.'(' ')' TArrow '(' typeexprlist2 ')' ')' + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + T3Comma shift 278 + TIdent shift 279 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 276 + ')' shift 448 + . error + + typeexpr goto 425 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + typeexprlist2 goto 447 + funcparam goto 277 + funcparamlist goto 274 + +421: shift/reduce conflict (shift 248(4), red'n 174(0)) on '|' +421: shift/reduce conflict (shift 249(6), red'n 174(0)) on '&' +state 421 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + primarytypeexpr: '(' funcparamlist ')' TArrow typeexpr. (174) + + '|' shift 248 + '&' shift 249 + . reduce 174 (src line 1004) + + +state 422 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + funcparamlist: funcparamlist ',' T3Comma typeexpr. (211) + + '|' shift 248 + '&' shift 249 + . reduce 211 (src line 1156) + + +state 423 + primarytypeexpr: '(' ')'.TArrow '(' typeexprlist2 ')' + primarytypeexpr: '(' ')'.TArrow typeexpr + primarytypeexpr: '(' ')'.TArrow '(' ')' + primarytypeexpr: '(' ')' TArrow '(' ')'. (177) + + TArrow shift 329 + . reduce 177 (src line 1016) + + +state 424 + primarytypeexpr: '(' ')' TArrow '(' typeexprlist2.')' + typeexprlist2: typeexprlist2.',' typeexpr + + ')' shift 449 + ',' shift 450 + . error + + +425: shift/reduce conflict (shift 451(0), red'n 207(0)) on ',' +state 425 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + typeexprlist2: typeexpr.',' typeexpr + funcparam: typeexpr. (207) + + '|' shift 248 + '&' shift 249 + ',' shift 451 + . reduce 207 (src line 1142) + + +state 426 + primarytypeexpr: '(' funcparamlist ')' TArrow.'(' typeexprlist2 ')' + primarytypeexpr: '(' funcparamlist ')' TArrow.'(' ')' + primarytypeexpr: '(' funcparamlist ')' TArrow.typeexpr + primarytypeexpr: '(' '(' funcparamlist ')' TArrow.typeexpr ')' + primarytypeexpr: '(' '(' funcparamlist ')' TArrow.'(' typeexprlist2 ')' ')' + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 452 + . error + + typeexpr goto 453 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 427 + primarytypeexpr: '('.funcparamlist ')' TArrow '(' typeexprlist2 ')' + primarytypeexpr: '('.funcparamlist ')' TArrow '(' ')' + primarytypeexpr: '('.funcparamlist ')' TArrow typeexpr + primarytypeexpr: '('.')' TArrow '(' typeexprlist2 ')' + primarytypeexpr: '(' ')' TArrow '('.typeexprlist2 ')' + primarytypeexpr: '('.')' TArrow typeexpr + primarytypeexpr: '('.')' TArrow '(' ')' + primarytypeexpr: '(' ')' TArrow '('.')' + primarytypeexpr: '('.'(' funcparamlist ')' TArrow typeexpr ')' + primarytypeexpr: '('.'(' ')' TArrow typeexpr ')' + primarytypeexpr: '('.'(' funcparamlist ')' TArrow '(' typeexprlist2 ')' ')' + primarytypeexpr: '('.'(' ')' TArrow '(' typeexprlist2 ')' ')' + primarytypeexpr: '(' '(' ')' TArrow '('.typeexprlist2 ')' ')' + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + T3Comma shift 278 + TIdent shift 279 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 276 + ')' shift 423 + . error + + typeexpr goto 425 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + typeexprlist2 goto 454 + funcparam goto 277 + funcparamlist goto 274 + +428: shift/reduce conflict (shift 455(0), red'n 176(0)) on ')' +428: shift/reduce conflict (shift 248(4), red'n 176(0)) on '|' +428: shift/reduce conflict (shift 249(6), red'n 176(0)) on '&' +state 428 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + primarytypeexpr: '(' ')' TArrow typeexpr. (176) + primarytypeexpr: '(' '(' ')' TArrow typeexpr.')' + + ')' shift 455 + '|' shift 248 + '&' shift 249 + . reduce 176 (src line 1012) + + +state 429 + primarytypeexpr: TFun '(' funcparamlist ')' ':'.typeexpr + primarytypeexpr: TFun '(' funcparamlist ')' ':'.'(' typeexprlist2 ')' + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 457 + . error + + typeexpr goto 456 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +430: shift/reduce conflict (shift 248(4), red'n 184(0)) on '|' +430: shift/reduce conflict (shift 249(6), red'n 184(0)) on '&' +state 430 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + primarytypeexpr: TFun '(' ')' ':' typeexpr. (184) + + '|' shift 248 + '&' shift 249 + . reduce 184 (src line 1044) + + +state 431 + primarytypeexpr: '('.funcparamlist ')' TArrow '(' typeexprlist2 ')' + primarytypeexpr: '('.funcparamlist ')' TArrow '(' ')' + primarytypeexpr: '('.funcparamlist ')' TArrow typeexpr + primarytypeexpr: '('.')' TArrow '(' typeexprlist2 ')' + primarytypeexpr: '('.')' TArrow typeexpr + primarytypeexpr: '('.')' TArrow '(' ')' + primarytypeexpr: '('.'(' funcparamlist ')' TArrow typeexpr ')' + primarytypeexpr: '('.'(' ')' TArrow typeexpr ')' + primarytypeexpr: '('.'(' funcparamlist ')' TArrow '(' typeexprlist2 ')' ')' + primarytypeexpr: '('.'(' ')' TArrow '(' typeexprlist2 ')' ')' + primarytypeexpr: TFun '(' ')' ':' '('.typeexprlist2 ')' + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + T3Comma shift 278 + TIdent shift 279 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 276 + ')' shift 275 + . error + + typeexpr goto 425 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + typeexprlist2 goto 458 + funcparam goto 277 + funcparamlist goto 274 + +state 432 + primarytypeexpr: TReadonly '{' '[' typeexpr ']'.':' typeexpr '}' + + ':' shift 459 + . error + + +state 433 + funcbody: '(' parlist ')' returntypeannot block TEnd. (113) + + . reduce 113 (src line 743) + + +state 434 + returntypeannot: ':' '(' typeexpr ','.typeexprlist ')' + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + typeexpr goto 318 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + typeexprlist goto 460 + +state 435 + parlist: typednamelist ',' T3Comma ':' typeexpr. (121) + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + + '|' shift 248 + '&' shift 249 + . reduce 121 (src line 779) + + +state 436 + funcbody: typeparams '(' parlist ')' returntypeannot block.TEnd + + TEnd shift 461 + . error + + +state 437 + funcbody: typeparams '(' ')' returntypeannot block TEnd. (116) + + . reduce 116 (src line 758) + + +state 438 + stat: TIf expr TThen block elseifs TElse block TEnd. (14) + + . reduce 14 (src line 239) + + +state 439 + elseifs: elseifs TElseIf expr TThen.block + chunk1: . (4) + + . reduce 4 (src line 185) + + chunk goto 56 + chunk1 goto 2 + block goto 462 + +state 440 + stat: TFor TIdent '=' expr ',' expr TDo block.TEnd + + TEnd shift 463 + . error + + +state 441 + stat: TFor TIdent '=' expr ',' expr ',' expr.TDo block TEnd + expr: expr.TOr expr + expr: expr.TAnd expr + expr: expr.'>' expr + expr: expr.'<' expr + expr: expr.TGte expr + expr: expr.TLte expr + expr: expr.TEqeq expr + expr: expr.TNeq expr + expr: expr.T2Comma expr + expr: expr.'+' expr + expr: expr.'-' expr + expr: expr.'*' expr + expr: expr.'/' expr + expr: expr.'%' expr + expr: expr.'^' expr + expr: expr.'&' expr + expr: expr.'|' expr + expr: expr.'~' expr + expr: expr.TShl expr + expr: expr.TShr expr + expr: expr.TIdiv expr + expr: expr.TAs typeexpr + expr: expr.T2Colon typeexpr + expr: expr.TBang + + TAnd shift 76 + TDo shift 464 + TOr shift 75 + TAs shift 96 + TEqeq shift 81 + TNeq shift 82 + TLte shift 80 + TGte shift 79 + T2Comma shift 83 + T2Colon shift 97 + TShl shift 93 + TShr shift 94 + TIdiv shift 95 + TBang shift 98 + '>' shift 77 + '<' shift 78 + '|' shift 91 + '~' shift 92 + '&' shift 90 + '+' shift 84 + '-' shift 85 + '*' shift 86 + '/' shift 87 + '%' shift 88 + '^' shift 89 + . error + + +state 442 + interfacemethod: TFunction TIdent '(' ')'.returntypeannot + returntypeannot: . (150) + + ':' shift 289 + . reduce 150 (src line 890) + + returntypeannot goto 465 + +state 443 + typednamelist: typednamelist.',' typedname + interfacemethod: TFunction TIdent '(' typednamelist.')' returntypeannot + + ')' shift 466 + ',' shift 154 + . error + + +state 444 + typeexpr: simpletypeexpr TExtends simpletypeexpr TQuestion typeexpr ':'.typeexpr + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + typeexpr goto 467 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 445 + annotation: '@' TIdent '(' exprlist ')'. (227) + + . reduce 227 (src line 1212) + + +state 446 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + primarytypeexpr: '{' '[' typeexpr ']' ':' typeexpr.'}' + + '}' shift 468 + '|' shift 248 + '&' shift 249 + . error + + +state 447 + primarytypeexpr: '(' funcparamlist ')' TArrow '(' typeexprlist2.')' + typeexprlist2: typeexprlist2.',' typeexpr + + ')' shift 469 + ',' shift 450 + . error + + +state 448 + primarytypeexpr: '(' funcparamlist ')' TArrow '(' ')'. (173) + primarytypeexpr: '(' ')'.TArrow '(' typeexprlist2 ')' + primarytypeexpr: '(' ')'.TArrow typeexpr + primarytypeexpr: '(' ')'.TArrow '(' ')' + + TArrow shift 329 + . reduce 173 (src line 1000) + + +state 449 + primarytypeexpr: '(' ')' TArrow '(' typeexprlist2 ')'. (175) + + . reduce 175 (src line 1008) + + +state 450 + typeexprlist2: typeexprlist2 ','.typeexpr + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + typeexpr goto 470 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 451 + typeexprlist2: typeexpr ','.typeexpr + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + typeexpr goto 471 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 452 + primarytypeexpr: '('.funcparamlist ')' TArrow '(' typeexprlist2 ')' + primarytypeexpr: '(' funcparamlist ')' TArrow '('.typeexprlist2 ')' + primarytypeexpr: '('.funcparamlist ')' TArrow '(' ')' + primarytypeexpr: '(' funcparamlist ')' TArrow '('.')' + primarytypeexpr: '('.funcparamlist ')' TArrow typeexpr + primarytypeexpr: '('.')' TArrow '(' typeexprlist2 ')' + primarytypeexpr: '('.')' TArrow typeexpr + primarytypeexpr: '('.')' TArrow '(' ')' + primarytypeexpr: '('.'(' funcparamlist ')' TArrow typeexpr ')' + primarytypeexpr: '('.'(' ')' TArrow typeexpr ')' + primarytypeexpr: '('.'(' funcparamlist ')' TArrow '(' typeexprlist2 ')' ')' + primarytypeexpr: '(' '(' funcparamlist ')' TArrow '('.typeexprlist2 ')' ')' + primarytypeexpr: '('.'(' ')' TArrow '(' typeexprlist2 ')' ')' + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + T3Comma shift 278 + TIdent shift 279 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 276 + ')' shift 448 + . error + + typeexpr goto 425 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + typeexprlist2 goto 472 + funcparam goto 277 + funcparamlist goto 274 + +453: shift/reduce conflict (shift 473(0), red'n 174(0)) on ')' +453: shift/reduce conflict (shift 248(4), red'n 174(0)) on '|' +453: shift/reduce conflict (shift 249(6), red'n 174(0)) on '&' +state 453 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + primarytypeexpr: '(' funcparamlist ')' TArrow typeexpr. (174) + primarytypeexpr: '(' '(' funcparamlist ')' TArrow typeexpr.')' + + ')' shift 473 + '|' shift 248 + '&' shift 249 + . reduce 174 (src line 1004) + + +state 454 + primarytypeexpr: '(' ')' TArrow '(' typeexprlist2.')' + primarytypeexpr: '(' '(' ')' TArrow '(' typeexprlist2.')' ')' + typeexprlist2: typeexprlist2.',' typeexpr + + ')' shift 474 + ',' shift 450 + . error + + +state 455 + primarytypeexpr: '(' '(' ')' TArrow typeexpr ')'. (179) + + . reduce 179 (src line 1024) + + +456: shift/reduce conflict (shift 248(4), red'n 182(0)) on '|' +456: shift/reduce conflict (shift 249(6), red'n 182(0)) on '&' +state 456 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + primarytypeexpr: TFun '(' funcparamlist ')' ':' typeexpr. (182) + + '|' shift 248 + '&' shift 249 + . reduce 182 (src line 1036) + + +state 457 + primarytypeexpr: '('.funcparamlist ')' TArrow '(' typeexprlist2 ')' + primarytypeexpr: '('.funcparamlist ')' TArrow '(' ')' + primarytypeexpr: '('.funcparamlist ')' TArrow typeexpr + primarytypeexpr: '('.')' TArrow '(' typeexprlist2 ')' + primarytypeexpr: '('.')' TArrow typeexpr + primarytypeexpr: '('.')' TArrow '(' ')' + primarytypeexpr: '('.'(' funcparamlist ')' TArrow typeexpr ')' + primarytypeexpr: '('.'(' ')' TArrow typeexpr ')' + primarytypeexpr: '('.'(' funcparamlist ')' TArrow '(' typeexprlist2 ')' ')' + primarytypeexpr: '('.'(' ')' TArrow '(' typeexprlist2 ')' ')' + primarytypeexpr: TFun '(' funcparamlist ')' ':' '('.typeexprlist2 ')' + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + T3Comma shift 278 + TIdent shift 279 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 276 + ')' shift 275 + . error + + typeexpr goto 425 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + typeexprlist2 goto 475 + funcparam goto 277 + funcparamlist goto 274 + +state 458 + primarytypeexpr: TFun '(' ')' ':' '(' typeexprlist2.')' + typeexprlist2: typeexprlist2.',' typeexpr + + ')' shift 476 + ',' shift 450 + . error + + +state 459 + primarytypeexpr: TReadonly '{' '[' typeexpr ']' ':'.typeexpr '}' + + TFalse shift 189 + TNil shift 187 + TTrue shift 188 + TInterface shift 196 + TReadonly shift 197 + TAsserts shift 198 + TTypeof shift 199 + TKeyof shift 200 + TFun shift 195 + TIdent shift 192 + TNumber shift 191 + TString shift 190 + '{' shift 193 + '(' shift 194 + . error + + typeexpr goto 477 + simpletypeexpr goto 185 + primarytypeexpr goto 186 + +state 460 + returntypeannot: ':' '(' typeexpr ',' typeexprlist.')' + typeexprlist: typeexprlist.',' typeexpr + + ')' shift 478 + ',' shift 371 + . error + + +state 461 + funcbody: typeparams '(' parlist ')' returntypeannot block TEnd. (115) + + . reduce 115 (src line 753) + + +state 462 + elseifs: elseifs TElseIf expr TThen block. (28) + + . reduce 28 (src line 318) + + +state 463 + stat: TFor TIdent '=' expr ',' expr TDo block TEnd. (15) + + . reduce 15 (src line 250) + + +state 464 + stat: TFor TIdent '=' expr ',' expr ',' expr TDo.block TEnd + chunk1: . (4) + + . reduce 4 (src line 185) + + chunk goto 56 + chunk1 goto 2 + block goto 479 + +state 465 + interfacemethod: TFunction TIdent '(' ')' returntypeannot. (242) + + . reduce 242 (src line 1273) + + +state 466 + interfacemethod: TFunction TIdent '(' typednamelist ')'.returntypeannot + returntypeannot: . (150) + + ':' shift 289 + . reduce 150 (src line 890) + + returntypeannot goto 480 + +467: shift/reduce conflict (shift 248(4), red'n 157(0)) on '|' +467: shift/reduce conflict (shift 249(6), red'n 157(0)) on '&' +state 467 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + typeexpr: simpletypeexpr TExtends simpletypeexpr TQuestion typeexpr ':' typeexpr. (157) + + '|' shift 248 + '&' shift 249 + . reduce 157 (src line 923) + + +state 468 + primarytypeexpr: '{' '[' typeexpr ']' ':' typeexpr '}'. (170) + + . reduce 170 (src line 988) + + +state 469 + primarytypeexpr: '(' funcparamlist ')' TArrow '(' typeexprlist2 ')'. (172) + + . reduce 172 (src line 996) + + +state 470 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + typeexprlist2: typeexprlist2 ',' typeexpr. (203) + + '|' shift 248 + '&' shift 249 + . reduce 203 (src line 1123) + + +state 471 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + typeexprlist2: typeexpr ',' typeexpr. (202) + + '|' shift 248 + '&' shift 249 + . reduce 202 (src line 1120) + + +state 472 + primarytypeexpr: '(' funcparamlist ')' TArrow '(' typeexprlist2.')' + primarytypeexpr: '(' '(' funcparamlist ')' TArrow '(' typeexprlist2.')' ')' + typeexprlist2: typeexprlist2.',' typeexpr + + ')' shift 481 + ',' shift 450 + . error + + +state 473 + primarytypeexpr: '(' '(' funcparamlist ')' TArrow typeexpr ')'. (178) + + . reduce 178 (src line 1020) + + +474: shift/reduce conflict (shift 482(0), red'n 175(0)) on ')' +state 474 + primarytypeexpr: '(' ')' TArrow '(' typeexprlist2 ')'. (175) + primarytypeexpr: '(' '(' ')' TArrow '(' typeexprlist2 ')'.')' + + ')' shift 482 + . reduce 175 (src line 1008) + + +state 475 + primarytypeexpr: TFun '(' funcparamlist ')' ':' '(' typeexprlist2.')' + typeexprlist2: typeexprlist2.',' typeexpr + + ')' shift 483 + ',' shift 450 + . error + + +state 476 + primarytypeexpr: TFun '(' ')' ':' '(' typeexprlist2 ')'. (185) + + . reduce 185 (src line 1048) + + +state 477 + typeexpr: typeexpr.'|' simpletypeexpr + typeexpr: typeexpr.'&' simpletypeexpr + primarytypeexpr: TReadonly '{' '[' typeexpr ']' ':' typeexpr.'}' + + '}' shift 484 + '|' shift 248 + '&' shift 249 + . error + + +state 478 + returntypeannot: ':' '(' typeexpr ',' typeexprlist ')'. (153) + + . reduce 153 (src line 899) + + +state 479 + stat: TFor TIdent '=' expr ',' expr ',' expr TDo block.TEnd + + TEnd shift 485 + . error + + +state 480 + interfacemethod: TFunction TIdent '(' typednamelist ')' returntypeannot. (243) + + . reduce 243 (src line 1279) + + +481: shift/reduce conflict (shift 486(0), red'n 172(0)) on ')' +state 481 + primarytypeexpr: '(' funcparamlist ')' TArrow '(' typeexprlist2 ')'. (172) + primarytypeexpr: '(' '(' funcparamlist ')' TArrow '(' typeexprlist2 ')'.')' + + ')' shift 486 + . reduce 172 (src line 996) + + +state 482 + primarytypeexpr: '(' '(' ')' TArrow '(' typeexprlist2 ')' ')'. (181) + + . reduce 181 (src line 1032) + + +state 483 + primarytypeexpr: TFun '(' funcparamlist ')' ':' '(' typeexprlist2 ')'. (183) + + . reduce 183 (src line 1040) + + +state 484 + primarytypeexpr: TReadonly '{' '[' typeexpr ']' ':' typeexpr '}'. (192) + + . reduce 192 (src line 1077) + + +state 485 + stat: TFor TIdent '=' expr ',' expr ',' expr TDo block TEnd. (16) + + . reduce 16 (src line 255) + + +state 486 + primarytypeexpr: '(' '(' funcparamlist ')' TArrow '(' typeexprlist2 ')' ')'. (180) + + . reduce 180 (src line 1028) + + +78 terminals, 49 nonterminals +244 grammar rules, 487/16000 states +37 shift/reduce, 0 reduce/reduce conflicts reported +98 working sets used +memory: parser 806/240000 +355 extra closures +2472 shift entries, 6 exceptions +222 goto entries +493 entries saved by goto default +Optimizer space used: output 1808/240000 +1808 table entries, 550 zero +maximum spread: 78, maximum offset: 466 diff --git a/testdata/fixtures/realworld/factory-constructor/manifest.json b/testdata/fixtures/realworld/factory-constructor/manifest.json index de77c027..2e1ef186 100644 --- a/testdata/fixtures/realworld/factory-constructor/manifest.json +++ b/testdata/fixtures/realworld/factory-constructor/manifest.json @@ -1,4 +1,3 @@ { - "files": ["counter.lua", "main.lua"], - "check": {"errors": 6} + "files": ["counter.lua", "main.lua"] } diff --git a/testdata/fixtures/realworld/generic-registry/manifest.json b/testdata/fixtures/realworld/generic-registry/manifest.json index fd49e120..c3e10b7b 100644 --- a/testdata/fixtures/realworld/generic-registry/manifest.json +++ b/testdata/fixtures/realworld/generic-registry/manifest.json @@ -1,4 +1,4 @@ { "files": ["registry.lua", "plugins.lua", "main.lua"], - "check": {"errors": 12} + "check": {"errors": 4} } diff --git a/testdata/fixtures/realworld/iterator-pipeline/manifest.json b/testdata/fixtures/realworld/iterator-pipeline/manifest.json index f44e6c83..b40bc5f8 100644 --- a/testdata/fixtures/realworld/iterator-pipeline/manifest.json +++ b/testdata/fixtures/realworld/iterator-pipeline/manifest.json @@ -1 +1 @@ -{"files": ["iter.lua", "main.lua"], "check": {"errors": 11}} +{"files": ["iter.lua", "main.lua"]} diff --git a/testdata/fixtures/realworld/metatable-oop/manifest.json b/testdata/fixtures/realworld/metatable-oop/manifest.json index df028a66..4f567b9e 100644 --- a/testdata/fixtures/realworld/metatable-oop/manifest.json +++ b/testdata/fixtures/realworld/metatable-oop/manifest.json @@ -1,4 +1,4 @@ { "files": ["class.lua", "counter.lua", "main.lua"], - "check": {"errors": 5} + "check": {"errors": 4} } diff --git a/testdata/fixtures/realworld/module-with-generics/manifest.json b/testdata/fixtures/realworld/module-with-generics/manifest.json index ab74a8cf..9ce6c5f9 100644 --- a/testdata/fixtures/realworld/module-with-generics/manifest.json +++ b/testdata/fixtures/realworld/module-with-generics/manifest.json @@ -1,4 +1,3 @@ { - "files": ["collection.lua", "main.lua"], - "check": {"errors": 5} + "files": ["collection.lua", "main.lua"] } diff --git a/testdata/fixtures/realworld/service-locator/manifest.json b/testdata/fixtures/realworld/service-locator/manifest.json index f8903270..d12084a5 100644 --- a/testdata/fixtures/realworld/service-locator/manifest.json +++ b/testdata/fixtures/realworld/service-locator/manifest.json @@ -1 +1 @@ -{"files": ["logger.lua", "cache.lua", "locator.lua", "main.lua"], "check": {"errors": 14}} +{"files": ["logger.lua", "cache.lua", "locator.lua", "main.lua"]}