diff --git a/ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs b/ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs index be2e5ac23b..25bfd1c87f 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs @@ -836,7 +836,7 @@ namespace ICSharpCode.NRefactory.CSharp // } else { newMethod.AddChild (bodyBlock, MethodDeclaration.Roles.Body); // } - } else if (location != null && location.Count < 3) { + } else if (location != null && location.Count < 3 && typeStack.Peek ().ClassType != ClassType.Interface) { // parser error, set end node to max value. newMethod.AddChild (new ErrorNode (), AstNode.Roles.Error); } @@ -2136,8 +2136,9 @@ namespace ICSharpCode.NRefactory.CSharp var paramLocation = LocationsBag.GetLocations (parameters); for (int i = 0; i < parameters.Count; i++) { - if (paramLocation != null && i > 0 && i - 1 < paramLocation.Count) + if (paramLocation != null && i > 0 && i - 1 < paramLocation.Count) { parent.AddChild (new CSharpTokenNode (Convert (paramLocation [i - 1]), 1), ParameterDeclaration.Roles.Comma); + } var p = (Parameter)parameters.FixedParameters [i]; var location = LocationsBag.GetLocations (p); diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs index b07029d292..c257a13461 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs @@ -148,6 +148,7 @@ namespace Mono.CSharp Location savedAttrParenOpenLocation, savedAttrParenCloseLocation; Stack> locationListStack = new Stack> (); // used for type parameters List attributeCommas = new List (); + List parameterListCommas = new List (); object lastYYVal; @@ -1399,20 +1400,20 @@ namespace Mono.CSharp yyVal = yyV > yyTop ? null : yyVals[yyV]; // yyVal = yyDefault(yyV > yyTop ? null : yyVals[yyV]); switch (yyN) { case 1: -#line 396 "cs-parser.jay" +#line 397 "cs-parser.jay" { Lexer.check_incorrect_doc_comment (); } break; case 2: -#line 397 "cs-parser.jay" +#line 398 "cs-parser.jay" { Lexer.CompleteOnEOF = false; } break; case 6: case_6(); break; case 7: -#line 414 "cs-parser.jay" +#line 415 "cs-parser.jay" { module.AddAttributes ((Attributes) yyVals[0+yyTop], current_namespace); } @@ -1424,7 +1425,7 @@ case 13: case_13(); break; case 14: -#line 452 "cs-parser.jay" +#line 453 "cs-parser.jay" { syntax_error (GetLocation (yyVals[-1+yyTop]), "`alias' expected"); /* TODO: better*/ } @@ -1469,7 +1470,7 @@ case 41: case_41(); break; case 42: -#line 641 "cs-parser.jay" +#line 642 "cs-parser.jay" { current_namespace.DeclarationFound = true; } @@ -1499,18 +1500,18 @@ case 57: case_57(); break; case 58: -#line 737 "cs-parser.jay" +#line 738 "cs-parser.jay" { yyVal = "event"; } break; case 59: -#line 738 "cs-parser.jay" +#line 739 "cs-parser.jay" { yyVal = "return"; } break; case 60: case_60(); break; case 61: -#line 755 "cs-parser.jay" +#line 756 "cs-parser.jay" { yyVal = new List (4) { (Attribute) yyVals[0+yyTop] }; } @@ -1519,7 +1520,7 @@ case 62: case_62(); break; case 63: -#line 770 "cs-parser.jay" +#line 771 "cs-parser.jay" { ++lexer.parsing_block; } @@ -1528,14 +1529,14 @@ case 64: case_64(); break; case 66: -#line 794 "cs-parser.jay" +#line 795 "cs-parser.jay" { yyVal = null; } break; case 67: case_67(); break; case 68: -#line 805 "cs-parser.jay" +#line 806 "cs-parser.jay" { yyVal = null; } break; case 69: @@ -1551,13 +1552,13 @@ case 72: case_72(); break; case 73: -#line 849 "cs-parser.jay" +#line 850 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop]); } break; case 75: -#line 857 "cs-parser.jay" +#line 858 "cs-parser.jay" { ++lexer.parsing_block; } @@ -1569,17 +1570,17 @@ case 77: case_77(); break; case 78: -#line 882 "cs-parser.jay" +#line 883 "cs-parser.jay" { yyVal = null; } break; case 79: -#line 886 "cs-parser.jay" +#line 887 "cs-parser.jay" { yyVal = Argument.AType.Ref; } break; case 80: -#line 890 "cs-parser.jay" +#line 891 "cs-parser.jay" { yyVal = Argument.AType.Out; } @@ -1588,7 +1589,7 @@ case 95: case_95(); break; case 96: -#line 931 "cs-parser.jay" +#line 932 "cs-parser.jay" { lexer.ConstraintsParsing = true; } @@ -1606,7 +1607,7 @@ case 100: case_100(); break; case 101: -#line 963 "cs-parser.jay" +#line 964 "cs-parser.jay" { Error_SyntaxError (yyToken); } @@ -1615,7 +1616,7 @@ case 102: case_102(); break; case 103: -#line 975 "cs-parser.jay" +#line 976 "cs-parser.jay" { lbag.AppendToMember (current_class, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[0+yyTop])); } @@ -1627,13 +1628,13 @@ case 119: case_119(); break; case 122: -#line 1044 "cs-parser.jay" +#line 1045 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; case 123: -#line 1048 "cs-parser.jay" +#line 1049 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } @@ -1642,7 +1643,7 @@ case 124: case_124(); break; case 125: -#line 1064 "cs-parser.jay" +#line 1065 "cs-parser.jay" { ++lexer.parsing_block; } @@ -1666,7 +1667,7 @@ case 133: case_133(); break; case 134: -#line 1143 "cs-parser.jay" +#line 1144 "cs-parser.jay" { report.Error (1641, GetLocation (yyVals[-1+yyTop]), "A fixed size buffer field must have the array size specifier after the field name"); } @@ -1678,13 +1679,13 @@ case 137: case_137(); break; case 140: -#line 1173 "cs-parser.jay" +#line 1174 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; case 141: -#line 1177 "cs-parser.jay" +#line 1178 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } @@ -1693,7 +1694,7 @@ case 142: case_142(); break; case 143: -#line 1190 "cs-parser.jay" +#line 1191 "cs-parser.jay" { ++lexer.parsing_block; } @@ -1702,13 +1703,13 @@ case 144: case_144(); break; case 147: -#line 1209 "cs-parser.jay" +#line 1210 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; case 148: -#line 1213 "cs-parser.jay" +#line 1214 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } @@ -1717,7 +1718,7 @@ case 149: case_149(); break; case 150: -#line 1229 "cs-parser.jay" +#line 1230 "cs-parser.jay" { ++lexer.parsing_block; } @@ -1738,13 +1739,13 @@ case 157: case_157(); break; case 158: -#line 1296 "cs-parser.jay" +#line 1297 "cs-parser.jay" { valid_param_mod = ParameterModifierType.All; } break; case 159: -#line 1300 "cs-parser.jay" +#line 1301 "cs-parser.jay" { lexer.ConstraintsParsing = true; } @@ -1753,7 +1754,7 @@ case 160: case_160(); break; case 161: -#line 1340 "cs-parser.jay" +#line 1341 "cs-parser.jay" { lexer.parsing_generic_declaration = true; } @@ -1762,7 +1763,7 @@ case 162: case_162(); break; case 163: -#line 1350 "cs-parser.jay" +#line 1351 "cs-parser.jay" { lexer.ConstraintsParsing = true; } @@ -1774,11 +1775,11 @@ case 165: case_165(); break; case 167: -#line 1424 "cs-parser.jay" +#line 1425 "cs-parser.jay" { yyVal = null; } break; case 168: -#line 1428 "cs-parser.jay" +#line 1429 "cs-parser.jay" { yyVal = ParametersCompiled.EmptyReadOnlyParameters; } break; case 170: @@ -1803,13 +1804,13 @@ case 176: case_176(); break; case 177: -#line 1487 "cs-parser.jay" +#line 1501 "cs-parser.jay" { yyVal = new ParametersCompiled (new Parameter[] { (Parameter) yyVals[0+yyTop] } ); } break; case 178: -#line 1491 "cs-parser.jay" +#line 1505 "cs-parser.jay" { yyVal = new ParametersCompiled (new Parameter [] { new ArglistParameter (GetLocation (yyVals[0+yyTop])) }, true); } @@ -1833,7 +1834,7 @@ case 184: case_184(); break; case 185: -#line 1566 "cs-parser.jay" +#line 1580 "cs-parser.jay" { ++lexer.parsing_block; } @@ -1842,7 +1843,7 @@ case 186: case_186(); break; case 187: -#line 1607 "cs-parser.jay" +#line 1621 "cs-parser.jay" { yyVal = Parameter.Modifier.NONE; } break; case 189: @@ -1876,7 +1877,7 @@ case 198: case_198(); break; case 199: -#line 1705 "cs-parser.jay" +#line 1719 "cs-parser.jay" { Error_DuplicateParameterModifier (GetLocation (yyVals[-1+yyTop]), Parameter.Modifier.PARAMS); } @@ -1897,7 +1898,7 @@ case 204: case_204(); break; case 205: -#line 1759 "cs-parser.jay" +#line 1773 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Params | ParameterModifierType.DefaultValue; } @@ -1906,7 +1907,7 @@ case 206: case_206(); break; case 207: -#line 1788 "cs-parser.jay" +#line 1802 "cs-parser.jay" { lexer.PropertyParsing = false; } @@ -1936,7 +1937,7 @@ case 220: case_220(); break; case 221: -#line 1937 "cs-parser.jay" +#line 1951 "cs-parser.jay" { lexer.ConstraintsParsing = true; } @@ -1954,43 +1955,43 @@ case 225: case_225(); break; case 226: -#line 1970 "cs-parser.jay" +#line 1984 "cs-parser.jay" { Error_SyntaxError (yyToken); } break; case 231: -#line 1987 "cs-parser.jay" +#line 2001 "cs-parser.jay" { report.Error (525, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain fields or constants"); } break; case 232: -#line 1991 "cs-parser.jay" +#line 2005 "cs-parser.jay" { report.Error (525, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain fields or constants"); } break; case 237: -#line 1999 "cs-parser.jay" +#line 2013 "cs-parser.jay" { report.Error (567, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain operators"); } break; case 238: -#line 2003 "cs-parser.jay" +#line 2017 "cs-parser.jay" { report.Error (526, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain contructors"); } break; case 239: -#line 2007 "cs-parser.jay" +#line 2021 "cs-parser.jay" { report.Error (524, GetLocation (yyVals[0+yyTop]), "Interfaces cannot declare classes, structs, interfaces, delegates, or enumerations"); } break; case 240: -#line 2013 "cs-parser.jay" +#line 2027 "cs-parser.jay" { } break; @@ -1998,14 +1999,14 @@ case 241: case_241(); break; case 243: -#line 2043 "cs-parser.jay" +#line 2057 "cs-parser.jay" { yyVal = null; } break; case 245: case_245(); break; case 246: -#line 2059 "cs-parser.jay" +#line 2073 "cs-parser.jay" { valid_param_mod = ParameterModifierType.DefaultValue; } @@ -2014,95 +2015,95 @@ case 247: case_247(); break; case 249: -#line 2105 "cs-parser.jay" +#line 2119 "cs-parser.jay" { yyVal = Operator.OpType.LogicalNot; } break; case 250: -#line 2106 "cs-parser.jay" +#line 2120 "cs-parser.jay" { yyVal = Operator.OpType.OnesComplement; } break; case 251: -#line 2107 "cs-parser.jay" +#line 2121 "cs-parser.jay" { yyVal = Operator.OpType.Increment; } break; case 252: -#line 2108 "cs-parser.jay" +#line 2122 "cs-parser.jay" { yyVal = Operator.OpType.Decrement; } break; case 253: -#line 2109 "cs-parser.jay" +#line 2123 "cs-parser.jay" { yyVal = Operator.OpType.True; } break; case 254: -#line 2110 "cs-parser.jay" +#line 2124 "cs-parser.jay" { yyVal = Operator.OpType.False; } break; case 255: -#line 2112 "cs-parser.jay" +#line 2126 "cs-parser.jay" { yyVal = Operator.OpType.Addition; } break; case 256: -#line 2113 "cs-parser.jay" +#line 2127 "cs-parser.jay" { yyVal = Operator.OpType.Subtraction; } break; case 257: -#line 2115 "cs-parser.jay" +#line 2129 "cs-parser.jay" { yyVal = Operator.OpType.Multiply; } break; case 258: -#line 2116 "cs-parser.jay" +#line 2130 "cs-parser.jay" { yyVal = Operator.OpType.Division; } break; case 259: -#line 2117 "cs-parser.jay" +#line 2131 "cs-parser.jay" { yyVal = Operator.OpType.Modulus; } break; case 260: -#line 2118 "cs-parser.jay" +#line 2132 "cs-parser.jay" { yyVal = Operator.OpType.BitwiseAnd; } break; case 261: -#line 2119 "cs-parser.jay" +#line 2133 "cs-parser.jay" { yyVal = Operator.OpType.BitwiseOr; } break; case 262: -#line 2120 "cs-parser.jay" +#line 2134 "cs-parser.jay" { yyVal = Operator.OpType.ExclusiveOr; } break; case 263: -#line 2121 "cs-parser.jay" +#line 2135 "cs-parser.jay" { yyVal = Operator.OpType.LeftShift; } break; case 264: -#line 2122 "cs-parser.jay" +#line 2136 "cs-parser.jay" { yyVal = Operator.OpType.RightShift; } break; case 265: -#line 2123 "cs-parser.jay" +#line 2137 "cs-parser.jay" { yyVal = Operator.OpType.Equality; } break; case 266: -#line 2124 "cs-parser.jay" +#line 2138 "cs-parser.jay" { yyVal = Operator.OpType.Inequality; } break; case 267: -#line 2125 "cs-parser.jay" +#line 2139 "cs-parser.jay" { yyVal = Operator.OpType.GreaterThan; } break; case 268: -#line 2126 "cs-parser.jay" +#line 2140 "cs-parser.jay" { yyVal = Operator.OpType.LessThan; } break; case 269: -#line 2127 "cs-parser.jay" +#line 2141 "cs-parser.jay" { yyVal = Operator.OpType.GreaterThanOrEqual; } break; case 270: -#line 2128 "cs-parser.jay" +#line 2142 "cs-parser.jay" { yyVal = Operator.OpType.LessThanOrEqual; } break; case 271: -#line 2135 "cs-parser.jay" +#line 2149 "cs-parser.jay" { valid_param_mod = ParameterModifierType.DefaultValue; } @@ -2111,7 +2112,7 @@ case 272: case_272(); break; case 273: -#line 2154 "cs-parser.jay" +#line 2168 "cs-parser.jay" { valid_param_mod = ParameterModifierType.DefaultValue; } @@ -2138,11 +2139,11 @@ case 280: case_280(); break; case 282: -#line 2257 "cs-parser.jay" +#line 2271 "cs-parser.jay" { current_block = null; yyVal = null; } break; case 285: -#line 2269 "cs-parser.jay" +#line 2283 "cs-parser.jay" { ++lexer.parsing_block; } @@ -2151,7 +2152,7 @@ case 286: case_286(); break; case 287: -#line 2279 "cs-parser.jay" +#line 2293 "cs-parser.jay" { ++lexer.parsing_block; } @@ -2184,7 +2185,7 @@ case 296: case_296(); break; case 298: -#line 2388 "cs-parser.jay" +#line 2402 "cs-parser.jay" { ++lexer.parsing_block; } @@ -2193,13 +2194,13 @@ case 299: case_299(); break; case 302: -#line 2405 "cs-parser.jay" +#line 2419 "cs-parser.jay" { current_event_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; case 303: -#line 2409 "cs-parser.jay" +#line 2423 "cs-parser.jay" { current_event_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } @@ -2208,7 +2209,7 @@ case 304: case_304(); break; case 305: -#line 2422 "cs-parser.jay" +#line 2436 "cs-parser.jay" { ++lexer.parsing_block; } @@ -2220,7 +2221,7 @@ case 307: case_307(); break; case 308: -#line 2447 "cs-parser.jay" +#line 2461 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } @@ -2268,7 +2269,7 @@ case 326: case_326(); break; case 329: -#line 2602 "cs-parser.jay" +#line 2616 "cs-parser.jay" { lbag.AddLocation (yyVals[-1+yyTop], GetLocation (yyVals[0+yyTop])); } @@ -2286,7 +2287,7 @@ case 334: case_334(); break; case 335: -#line 2660 "cs-parser.jay" +#line 2674 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out | ParameterModifierType.Params | ParameterModifierType.DefaultValue; } @@ -2295,7 +2296,7 @@ case 336: case_336(); break; case 337: -#line 2682 "cs-parser.jay" +#line 2696 "cs-parser.jay" { lexer.ConstraintsParsing = false; } @@ -2328,7 +2329,7 @@ case 350: case_350(); break; case 351: -#line 2786 "cs-parser.jay" +#line 2800 "cs-parser.jay" { lexer.parsing_generic_declaration = true; } @@ -2373,13 +2374,13 @@ case 366: case_366(); break; case 368: -#line 2904 "cs-parser.jay" +#line 2918 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } break; case 369: -#line 2911 "cs-parser.jay" +#line 2925 "cs-parser.jay" { lexer.parsing_generic_declaration = true; } @@ -2394,7 +2395,7 @@ case 375: case_375(); break; case 377: -#line 2949 "cs-parser.jay" +#line 2963 "cs-parser.jay" { yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } @@ -2403,7 +2404,7 @@ case 378: case_378(); break; case 379: -#line 2969 "cs-parser.jay" +#line 2983 "cs-parser.jay" { yyVal = new ComposedCast (((MemberName) yyVals[-1+yyTop]).GetTypeExpression (), (ComposedTypeSpecifier) yyVals[0+yyTop]); } @@ -2412,13 +2413,13 @@ case 380: case_380(); break; case 381: -#line 2978 "cs-parser.jay" +#line 2992 "cs-parser.jay" { yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } break; case 382: -#line 2982 "cs-parser.jay" +#line 2996 "cs-parser.jay" { yyVal = new ComposedCast (new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[-1+yyTop])), (ComposedTypeSpecifier) yyVals[0+yyTop]); } @@ -2436,63 +2437,63 @@ case 386: case_386(); break; case 387: -#line 3021 "cs-parser.jay" +#line 3035 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Object, GetLocation (yyVals[0+yyTop])); } break; case 388: -#line 3022 "cs-parser.jay" +#line 3036 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.String, GetLocation (yyVals[0+yyTop])); } break; case 389: -#line 3023 "cs-parser.jay" +#line 3037 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Bool, GetLocation (yyVals[0+yyTop])); } break; case 390: -#line 3024 "cs-parser.jay" +#line 3038 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Decimal, GetLocation (yyVals[0+yyTop])); } break; case 391: -#line 3025 "cs-parser.jay" +#line 3039 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Float, GetLocation (yyVals[0+yyTop])); } break; case 392: -#line 3026 "cs-parser.jay" +#line 3040 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Double, GetLocation (yyVals[0+yyTop])); } break; case 394: -#line 3031 "cs-parser.jay" +#line 3045 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.SByte, GetLocation (yyVals[0+yyTop])); } break; case 395: -#line 3032 "cs-parser.jay" +#line 3046 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Byte, GetLocation (yyVals[0+yyTop])); } break; case 396: -#line 3033 "cs-parser.jay" +#line 3047 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Short, GetLocation (yyVals[0+yyTop])); } break; case 397: -#line 3034 "cs-parser.jay" +#line 3048 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.UShort, GetLocation (yyVals[0+yyTop])); } break; case 398: -#line 3035 "cs-parser.jay" +#line 3049 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Int, GetLocation (yyVals[0+yyTop])); } break; case 399: -#line 3036 "cs-parser.jay" +#line 3050 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.UInt, GetLocation (yyVals[0+yyTop])); } break; case 400: -#line 3037 "cs-parser.jay" +#line 3051 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Long, GetLocation (yyVals[0+yyTop])); } break; case 401: -#line 3038 "cs-parser.jay" +#line 3052 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.ULong, GetLocation (yyVals[0+yyTop])); } break; case 402: -#line 3039 "cs-parser.jay" +#line 3053 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Char, GetLocation (yyVals[0+yyTop])); } break; case 423: @@ -2502,22 +2503,22 @@ case 424: case_424(); break; case 428: -#line 3086 "cs-parser.jay" +#line 3100 "cs-parser.jay" { yyVal = new NullLiteral (GetLocation (yyVals[0+yyTop])); } break; case 429: -#line 3090 "cs-parser.jay" +#line 3104 "cs-parser.jay" { yyVal = new BoolLiteral (compiler.BuiltinTypes, true, GetLocation (yyVals[0+yyTop])); } break; case 430: -#line 3091 "cs-parser.jay" +#line 3105 "cs-parser.jay" { yyVal = new BoolLiteral (compiler.BuiltinTypes, false, GetLocation (yyVals[0+yyTop])); } break; case 435: case_435(); break; case 436: -#line 3124 "cs-parser.jay" +#line 3138 "cs-parser.jay" { yyVal = new ParenthesizedExpression ((Expression) yyVals[-1+yyTop]); } @@ -2535,7 +2536,7 @@ case 440: case_440(); break; case 441: -#line 3156 "cs-parser.jay" +#line 3170 "cs-parser.jay" { yyVal = new CompletionMemberAccess ((Expression) yyVals[-2+yyTop], null,GetLocation (yyVals[0+yyTop])); } @@ -2544,7 +2545,7 @@ case 442: case_442(); break; case 443: -#line 3164 "cs-parser.jay" +#line 3178 "cs-parser.jay" { yyVal = new CompletionMemberAccess ((Expression) yyVals[-2+yyTop], null, lexer.Location); } @@ -2556,7 +2557,7 @@ case 445: case_445(); break; case 446: -#line 3180 "cs-parser.jay" +#line 3194 "cs-parser.jay" { yyVal = null; } break; case 448: @@ -2566,11 +2567,11 @@ case 449: case_449(); break; case 450: -#line 3203 "cs-parser.jay" +#line 3217 "cs-parser.jay" { yyVal = null; } break; case 451: -#line 3207 "cs-parser.jay" +#line 3221 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } @@ -2588,7 +2589,7 @@ case 455: case_455(); break; case 456: -#line 3240 "cs-parser.jay" +#line 3254 "cs-parser.jay" { yyVal = new CompletionElementInitializer (null, GetLocation (yyVals[0+yyTop])); } @@ -2603,7 +2604,7 @@ case 459: case_459(); break; case 462: -#line 3268 "cs-parser.jay" +#line 3282 "cs-parser.jay" { yyVal = null; } break; case 464: @@ -2622,7 +2623,7 @@ case 468: case_468(); break; case 469: -#line 3320 "cs-parser.jay" +#line 3334 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop]); } @@ -2658,13 +2659,13 @@ case 483: case_483(); break; case 484: -#line 3407 "cs-parser.jay" +#line 3421 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop]); } break; case 486: -#line 3415 "cs-parser.jay" +#line 3429 "cs-parser.jay" { yyVal = new This (GetLocation (yyVals[0+yyTop])); } @@ -2676,13 +2677,13 @@ case 488: case_488(); break; case 489: -#line 3435 "cs-parser.jay" +#line 3449 "cs-parser.jay" { yyVal = new UnaryMutator (UnaryMutator.Mode.PostIncrement, (Expression) yyVals[-1+yyTop], GetLocation (yyVals[0+yyTop])); } break; case 490: -#line 3442 "cs-parser.jay" +#line 3456 "cs-parser.jay" { yyVal = new UnaryMutator (UnaryMutator.Mode.PostDecrement, (Expression) yyVals[-1+yyTop], GetLocation (yyVals[0+yyTop])); } @@ -2709,7 +2710,7 @@ case 497: case_497(); break; case 498: -#line 3508 "cs-parser.jay" +#line 3522 "cs-parser.jay" { ++lexer.parsing_type; } @@ -2721,7 +2722,7 @@ case 500: case_500(); break; case 503: -#line 3535 "cs-parser.jay" +#line 3549 "cs-parser.jay" { yyVal = null; } break; case 505: @@ -2752,25 +2753,25 @@ case 516: case_516(); break; case 517: -#line 3613 "cs-parser.jay" +#line 3627 "cs-parser.jay" { yyVal = 2; } break; case 518: -#line 3617 "cs-parser.jay" +#line 3631 "cs-parser.jay" { yyVal = ((int) yyVals[-1+yyTop]) + 1; } break; case 519: -#line 3624 "cs-parser.jay" +#line 3638 "cs-parser.jay" { yyVal = null; } break; case 520: -#line 3628 "cs-parser.jay" +#line 3642 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } @@ -2788,7 +2789,7 @@ case 524: case_524(); break; case 525: -#line 3672 "cs-parser.jay" +#line 3686 "cs-parser.jay" { lexer.TypeOfParsing = true; } @@ -2833,7 +2834,7 @@ case 540: case_540(); break; case 541: -#line 3786 "cs-parser.jay" +#line 3800 "cs-parser.jay" { start_anonymous (false, (ParametersCompiled) yyVals[0+yyTop], false, GetLocation (yyVals[-1+yyTop])); } @@ -2842,25 +2843,25 @@ case 542: case_542(); break; case 543: -#line 3799 "cs-parser.jay" +#line 3813 "cs-parser.jay" { start_anonymous (false, (ParametersCompiled) yyVals[0+yyTop], true, GetLocation (yyVals[-2+yyTop])); } break; case 544: -#line 3803 "cs-parser.jay" +#line 3817 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); } break; case 545: -#line 3810 "cs-parser.jay" +#line 3824 "cs-parser.jay" { yyVal = ParametersCompiled.Undefined; } break; case 547: -#line 3818 "cs-parser.jay" +#line 3832 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } @@ -2872,13 +2873,13 @@ case 549: case_549(); break; case 551: -#line 3844 "cs-parser.jay" +#line 3858 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.LogicalNot, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; case 552: -#line 3848 "cs-parser.jay" +#line 3862 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.OnesComplement, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } @@ -2890,37 +2891,37 @@ case 556: case_556(); break; case 558: -#line 3878 "cs-parser.jay" +#line 3892 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.UnaryPlus, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; case 559: -#line 3882 "cs-parser.jay" +#line 3896 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.UnaryNegation, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; case 560: -#line 3886 "cs-parser.jay" +#line 3900 "cs-parser.jay" { yyVal = new UnaryMutator (UnaryMutator.Mode.PreIncrement, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; case 561: -#line 3890 "cs-parser.jay" +#line 3904 "cs-parser.jay" { yyVal = new UnaryMutator (UnaryMutator.Mode.PreDecrement, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; case 562: -#line 3894 "cs-parser.jay" +#line 3908 "cs-parser.jay" { yyVal = new Indirection ((Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; case 563: -#line 3898 "cs-parser.jay" +#line 3912 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.AddressOf, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } @@ -2938,7 +2939,7 @@ case 569: case_569(); break; case 570: -#line 3930 "cs-parser.jay" +#line 3944 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Subtraction, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } @@ -2947,13 +2948,13 @@ case 571: case_571(); break; case 572: -#line 3939 "cs-parser.jay" +#line 3953 "cs-parser.jay" { yyVal = new As ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; case 573: -#line 3943 "cs-parser.jay" +#line 3957 "cs-parser.jay" { yyVal = new Is ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } @@ -3004,7 +3005,7 @@ case 598: case_598(); break; case 599: -#line 4067 "cs-parser.jay" +#line 4081 "cs-parser.jay" { yyVal = new SimpleAssign ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } @@ -3055,14 +3056,14 @@ case 614: case_614(); break; case 615: -#line 4164 "cs-parser.jay" +#line 4178 "cs-parser.jay" { yyVal = ParametersCompiled.EmptyReadOnlyParameters; } break; case 616: case_616(); break; case 619: -#line 4179 "cs-parser.jay" +#line 4193 "cs-parser.jay" { start_block (lexer.Location); } @@ -3086,7 +3087,7 @@ case 626: case_626(); break; case 627: -#line 4224 "cs-parser.jay" +#line 4238 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } @@ -3098,7 +3099,7 @@ case 629: case_629(); break; case 630: -#line 4238 "cs-parser.jay" +#line 4252 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } @@ -3110,7 +3111,7 @@ case 632: case_632(); break; case 638: -#line 4263 "cs-parser.jay" +#line 4277 "cs-parser.jay" { yyVal = new ArglistAccess (GetLocation (yyVals[0+yyTop])); } @@ -3125,13 +3126,13 @@ case 641: case_641(); break; case 643: -#line 4292 "cs-parser.jay" +#line 4306 "cs-parser.jay" { yyVal = new BooleanExpression ((Expression) yyVals[0+yyTop]); } break; case 644: -#line 4305 "cs-parser.jay" +#line 4319 "cs-parser.jay" { lexer.ConstraintsParsing = true; } @@ -3149,11 +3150,11 @@ case 648: case_648(); break; case 649: -#line 4344 "cs-parser.jay" +#line 4358 "cs-parser.jay" { yyVal = null; } break; case 650: -#line 4346 "cs-parser.jay" +#line 4360 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; StoreModifierLocation (Modifiers.PARTIAL, GetLocation (yyVals[0+yyTop])); } break; case 651: @@ -3208,13 +3209,13 @@ case 669: case_669(); break; case 671: -#line 4466 "cs-parser.jay" +#line 4480 "cs-parser.jay" { current_container.AddBasesForPart (current_class, (List) yyVals[0+yyTop]); } break; case 673: -#line 4474 "cs-parser.jay" +#line 4488 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } @@ -3244,19 +3245,19 @@ case 681: case_681(); break; case 682: -#line 4563 "cs-parser.jay" +#line 4577 "cs-parser.jay" { yyVal = new SpecialContraintExpr (SpecialConstraint.Class, GetLocation (yyVals[0+yyTop])); } break; case 683: -#line 4567 "cs-parser.jay" +#line 4581 "cs-parser.jay" { yyVal = new SpecialContraintExpr (SpecialConstraint.Struct, GetLocation (yyVals[0+yyTop])); } break; case 684: -#line 4574 "cs-parser.jay" +#line 4588 "cs-parser.jay" { yyVal = Variance.None; } @@ -3265,13 +3266,13 @@ case 685: case_685(); break; case 686: -#line 4588 "cs-parser.jay" +#line 4602 "cs-parser.jay" { yyVal = Variance.Covariant; } break; case 687: -#line 4592 "cs-parser.jay" +#line 4606 "cs-parser.jay" { yyVal = Variance.Contravariant; } @@ -3280,7 +3281,7 @@ case 688: case_688(); break; case 689: -#line 4617 "cs-parser.jay" +#line 4631 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } @@ -3298,13 +3299,13 @@ case 693: case_693(); break; case 698: -#line 4661 "cs-parser.jay" +#line 4675 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } break; case 699: -#line 4665 "cs-parser.jay" +#line 4679 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } @@ -3313,13 +3314,13 @@ case 701: case_701(); break; case 704: -#line 4689 "cs-parser.jay" +#line 4703 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } break; case 705: -#line 4693 "cs-parser.jay" +#line 4707 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } @@ -3352,13 +3353,13 @@ case 744: case_744(); break; case 745: -#line 4837 "cs-parser.jay" +#line 4851 "cs-parser.jay" { yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } break; case 746: -#line 4841 "cs-parser.jay" +#line 4855 "cs-parser.jay" { yyVal = new ComposedCast (new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[-1+yyTop])), (ComposedTypeSpecifier) yyVals[0+yyTop]); } @@ -3370,7 +3371,7 @@ case 749: case_749(); break; case 750: -#line 4862 "cs-parser.jay" +#line 4876 "cs-parser.jay" { yyVal = ComposedTypeSpecifier.CreatePointer (GetLocation (yyVals[0+yyTop])); } @@ -3400,7 +3401,7 @@ case 763: case_763(); break; case 764: -#line 4951 "cs-parser.jay" +#line 4965 "cs-parser.jay" { report.Error (145, lexer.Location, "A const field requires a value to be provided"); } @@ -3421,15 +3422,15 @@ case 774: case_774(); break; case 775: -#line 5001 "cs-parser.jay" +#line 5015 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; } break; case 776: -#line 5005 "cs-parser.jay" +#line 5019 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; } break; case 777: -#line 5006 "cs-parser.jay" +#line 5020 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; } break; case 778: @@ -3448,7 +3449,7 @@ case 784: case_784(); break; case 785: -#line 5074 "cs-parser.jay" +#line 5088 "cs-parser.jay" { start_block (GetLocation (yyVals[0+yyTop])); } @@ -3469,13 +3470,13 @@ case 791: case_791(); break; case 792: -#line 5118 "cs-parser.jay" +#line 5132 "cs-parser.jay" { current_block = current_block.CreateSwitchBlock (lexer.Location); } break; case 793: -#line 5122 "cs-parser.jay" +#line 5136 "cs-parser.jay" { yyVal = new SwitchSection ((List) yyVals[-2+yyTop], current_block); } @@ -3490,7 +3491,7 @@ case 796: case_796(); break; case 797: -#line 5151 "cs-parser.jay" +#line 5165 "cs-parser.jay" { yyVal = new SwitchLabel (null, GetLocation (yyVals[0+yyTop])); } @@ -3505,7 +3506,7 @@ case 804: case_804(); break; case 805: -#line 5190 "cs-parser.jay" +#line 5204 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } @@ -3517,7 +3518,7 @@ case 807: case_807(); break; case 808: -#line 5218 "cs-parser.jay" +#line 5232 "cs-parser.jay" { yyVal = new EmptyStatement (lexer.Location); } break; case 810: @@ -3527,11 +3528,11 @@ case 811: case_811(); break; case 813: -#line 5239 "cs-parser.jay" +#line 5253 "cs-parser.jay" { yyVal = null; } break; case 815: -#line 5244 "cs-parser.jay" +#line 5258 "cs-parser.jay" { yyVal = new EmptyStatement (lexer.Location); } break; case 819: @@ -3574,7 +3575,7 @@ case 837: case_837(); break; case 840: -#line 5399 "cs-parser.jay" +#line 5413 "cs-parser.jay" { yyVal = new TryCatch ((Block) yyVals[-1+yyTop], (List) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop]), false); } @@ -3595,7 +3596,7 @@ case 845: case_845(); break; case 848: -#line 5452 "cs-parser.jay" +#line 5466 "cs-parser.jay" { yyVal = new Catch ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } @@ -3604,7 +3605,7 @@ case 849: case_849(); break; case 850: -#line 5471 "cs-parser.jay" +#line 5485 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; } @@ -3613,13 +3614,13 @@ case 851: case_851(); break; case 852: -#line 5489 "cs-parser.jay" +#line 5503 "cs-parser.jay" { yyVal = new Checked ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; case 853: -#line 5496 "cs-parser.jay" +#line 5510 "cs-parser.jay" { yyVal = new Unchecked ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } @@ -3628,7 +3629,7 @@ case 854: case_854(); break; case 855: -#line 5506 "cs-parser.jay" +#line 5520 "cs-parser.jay" { yyVal = new Unsafe ((Block) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); } @@ -3658,7 +3659,7 @@ case 863: case_863(); break; case 864: -#line 5589 "cs-parser.jay" +#line 5603 "cs-parser.jay" { report.Error (210, lexer.Location, "You must provide an initializer in a fixed or using statement declaration"); } @@ -3691,7 +3692,7 @@ case 873: case_873(); break; case 874: -#line 5689 "cs-parser.jay" +#line 5703 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); } @@ -3700,7 +3701,7 @@ case 875: case_875(); break; case 876: -#line 5704 "cs-parser.jay" +#line 5718 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); } @@ -3715,7 +3716,7 @@ case 880: case_880(); break; case 881: -#line 5749 "cs-parser.jay" +#line 5763 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); } @@ -3736,7 +3737,7 @@ case 889: case_889(); break; case 895: -#line 5808 "cs-parser.jay" +#line 5822 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); } @@ -3745,7 +3746,7 @@ case 896: case_896(); break; case 897: -#line 5827 "cs-parser.jay" +#line 5841 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); } @@ -3778,13 +3779,13 @@ case 906: case_906(); break; case 908: -#line 5971 "cs-parser.jay" +#line 5985 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } break; case 909: -#line 5978 "cs-parser.jay" +#line 5992 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); } @@ -3805,7 +3806,7 @@ case 916: case_916(); break; case 917: -#line 6024 "cs-parser.jay" +#line 6038 "cs-parser.jay" { yyVal = new Linq.OrderByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[0+yyTop]); } @@ -3817,7 +3818,7 @@ case 919: case_919(); break; case 920: -#line 6041 "cs-parser.jay" +#line 6055 "cs-parser.jay" { yyVal = new Linq.ThenByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[0+yyTop]); } @@ -3841,13 +3842,13 @@ case 929: case_929(); break; case 937: -#line 6165 "cs-parser.jay" +#line 6179 "cs-parser.jay" { module.DocumentationBuilder.ParsedName = (MemberName) yyVals[0+yyTop]; } break; case 938: -#line 6172 "cs-parser.jay" +#line 6186 "cs-parser.jay" { module.DocumentationBuilder.ParsedParameters = (List)yyVals[0+yyTop]; } @@ -3859,13 +3860,13 @@ case 940: case_940(); break; case 941: -#line 6189 "cs-parser.jay" +#line 6203 "cs-parser.jay" { yyVal = new MemberName ((MemberName) yyVals[-2+yyTop], new MemberName (MemberCache.IndexerNameAlias)); } break; case 942: -#line 6193 "cs-parser.jay" +#line 6207 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } @@ -3883,25 +3884,25 @@ case 946: case_946(); break; case 948: -#line 6229 "cs-parser.jay" +#line 6243 "cs-parser.jay" { yyVal = new MemberName (((MemberName) yyVals[-2+yyTop]), (MemberName) yyVals[0+yyTop]); } break; case 950: -#line 6237 "cs-parser.jay" +#line 6251 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } break; case 951: -#line 6241 "cs-parser.jay" +#line 6255 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; } break; case 952: -#line 6248 "cs-parser.jay" +#line 6262 "cs-parser.jay" { yyVal = new List (0); } @@ -3951,7 +3952,7 @@ case 956: All more than 3 lines long rules are wrapped into a method */ void case_6() -#line 404 "cs-parser.jay" +#line 405 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { Attributes attrs = (Attributes) yyVals[0+yyTop]; @@ -3961,7 +3962,7 @@ void case_6() } void case_8() -#line 416 "cs-parser.jay" +#line 417 "cs-parser.jay" { if (yyToken == Token.EXTERN_ALIAS) report.Error (439, lexer.Location, "An extern alias declaration must precede all other elements"); @@ -3970,7 +3971,7 @@ void case_8() } void case_13() -#line 436 "cs-parser.jay" +#line 437 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; string s = lt.Value; @@ -3986,21 +3987,21 @@ void case_13() } void case_17() -#line 462 "cs-parser.jay" +#line 463 "cs-parser.jay" { if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; } void case_18() -#line 467 "cs-parser.jay" +#line 468 "cs-parser.jay" { if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; } void case_19() -#line 475 "cs-parser.jay" +#line 476 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; if (lang_version != LanguageVersion.ISO_1 && lt.Value == "global") { @@ -4013,21 +4014,21 @@ void case_19() } void case_20() -#line 486 "cs-parser.jay" +#line 487 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } void case_21() -#line 494 "cs-parser.jay" +#line 495 "cs-parser.jay" { current_namespace.AddUsing ((MemberName) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); ubag.AddUsing (GetLocation (yyVals[-2+yyTop]), (MemberName) yyVals[-1+yyTop], GetLocation (yyVals[0+yyTop])); } void case_22() -#line 507 "cs-parser.jay" +#line 508 "cs-parser.jay" { Attributes attrs = (Attributes) yyVals[-2+yyTop]; MemberName name = (MemberName) yyVals[0+yyTop]; @@ -4060,7 +4061,7 @@ void case_22() } void case_23() -#line 538 "cs-parser.jay" +#line 539 "cs-parser.jay" { if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; @@ -4068,7 +4069,7 @@ void case_23() } void case_24() -#line 544 "cs-parser.jay" +#line 545 "cs-parser.jay" { if (yyVals[0+yyTop] != null) lbag.AddLocation (current_namespace, GetLocation (yyVals[-9+yyTop]), GetLocation (yyVals[-6+yyTop]), GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); @@ -4083,28 +4084,28 @@ void case_24() } void case_25() -#line 560 "cs-parser.jay" +#line 561 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new MemberName (lt.Value, lt.Location); } void case_26() -#line 565 "cs-parser.jay" +#line 566 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new MemberName ((MemberName) yyVals[-2+yyTop], lt.Value, lt.Location); } void case_27() -#line 570 "cs-parser.jay" +#line 571 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new MemberName ("", lexer.Location); } void case_32() -#line 588 "cs-parser.jay" +#line 589 "cs-parser.jay" { MemberName name = (MemberName) yyVals[0+yyTop]; @@ -4115,7 +4116,7 @@ void case_32() } void case_41() -#line 620 "cs-parser.jay" +#line 621 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { TypeContainer ds = (TypeContainer)yyVals[0+yyTop]; @@ -4136,7 +4137,7 @@ void case_41() } void case_50() -#line 670 "cs-parser.jay" +#line 671 "cs-parser.jay" { var sect = (List) yyVals[0+yyTop]; yyVal = new Attributes (sect); @@ -4148,7 +4149,7 @@ void case_50() } void case_51() -#line 680 "cs-parser.jay" +#line 681 "cs-parser.jay" { Attributes attrs = yyVals[-1+yyTop] as Attributes; var sect = (List) yyVals[0+yyTop]; @@ -4160,21 +4161,21 @@ void case_51() } void case_52() -#line 693 "cs-parser.jay" +#line 694 "cs-parser.jay" { lexer.parsing_attribute_section = true; savedOpenLocation = GetLocation (yyVals[0+yyTop]); } void case_53() -#line 698 "cs-parser.jay" +#line 699 "cs-parser.jay" { lexer.parsing_attribute_section = false; yyVal = yyVals[0+yyTop]; } void case_54() -#line 706 "cs-parser.jay" +#line 707 "cs-parser.jay" { current_attr_target = (string) yyVals[-1+yyTop]; if (current_attr_target == "assembly" || current_attr_target == "module") { @@ -4183,7 +4184,7 @@ void case_54() } void case_55() -#line 713 "cs-parser.jay" +#line 714 "cs-parser.jay" { /* when attribute target is invalid*/ if (current_attr_target == string.Empty) @@ -4197,21 +4198,21 @@ void case_55() } void case_56() -#line 725 "cs-parser.jay" +#line 726 "cs-parser.jay" { yyVal = yyVals[-2+yyTop]; savedCloseLocation = GetLocation (yyVals[0+yyTop]); } void case_57() -#line 733 "cs-parser.jay" +#line 734 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = CheckAttributeTarget (lt.Value, lt.Location); } void case_60() -#line 740 "cs-parser.jay" +#line 741 "cs-parser.jay" { if (yyToken == Token.IDENTIFIER) { Error_SyntaxError (yyToken); @@ -4223,7 +4224,7 @@ void case_60() } void case_62() -#line 757 "cs-parser.jay" +#line 758 "cs-parser.jay" { var attrs = (List) yyVals[-2+yyTop]; attrs.Add ((Attribute) yyVals[0+yyTop]); @@ -4233,7 +4234,7 @@ void case_62() } void case_64() -#line 772 "cs-parser.jay" +#line 773 "cs-parser.jay" { --lexer.parsing_block; MemberName mname = (MemberName) yyVals[-2+yyTop]; @@ -4251,7 +4252,7 @@ void case_64() } void case_67() -#line 796 "cs-parser.jay" +#line 797 "cs-parser.jay" { savedAttrParenOpenLocation = GetLocation (yyVals[-2+yyTop]); savedAttrParenCloseLocation = GetLocation (yyVals[0+yyTop]); @@ -4259,7 +4260,7 @@ void case_67() } void case_69() -#line 807 "cs-parser.jay" +#line 808 "cs-parser.jay" { Arguments a = new Arguments (4); a.Add ((Argument) yyVals[0+yyTop]); @@ -4267,7 +4268,7 @@ void case_69() } void case_70() -#line 813 "cs-parser.jay" +#line 814 "cs-parser.jay" { Arguments a = new Arguments (4); a.Add ((Argument) yyVals[0+yyTop]); @@ -4275,7 +4276,7 @@ void case_70() } void case_71() -#line 819 "cs-parser.jay" +#line 820 "cs-parser.jay" { Arguments[] o = (Arguments[]) yyVals[-2+yyTop]; if (o [1] != null) { @@ -4292,7 +4293,7 @@ void case_71() } void case_72() -#line 834 "cs-parser.jay" +#line 835 "cs-parser.jay" { Arguments[] o = (Arguments[]) yyVals[-2+yyTop]; if (o [1] == null) { @@ -4304,7 +4305,7 @@ void case_72() } void case_76() -#line 859 "cs-parser.jay" +#line 860 "cs-parser.jay" { --lexer.parsing_block; var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; @@ -4313,7 +4314,7 @@ void case_76() } void case_77() -#line 869 "cs-parser.jay" +#line 870 "cs-parser.jay" { if (lang_version <= LanguageVersion.V_3) FeatureIsNotAvailable (GetLocation (yyVals[-3+yyTop]), "named argument"); @@ -4326,7 +4327,7 @@ void case_77() } void case_95() -#line 916 "cs-parser.jay" +#line 917 "cs-parser.jay" { report.Error (1519, lexer.Location, "Unexpected symbol `{0}' in class, struct, or interface member declaration", GetSymbolName (yyToken)); @@ -4335,14 +4336,14 @@ void case_95() } void case_97() -#line 933 "cs-parser.jay" +#line 934 "cs-parser.jay" { MemberName name = MakeName ((MemberName) yyVals[0+yyTop]); push_current_class (new Struct (current_namespace, current_class, name, (Modifiers) yyVals[-4+yyTop], (Attributes) yyVals[-5+yyTop]), yyVals[-3+yyTop]); } void case_98() -#line 939 "cs-parser.jay" +#line 940 "cs-parser.jay" { lexer.ConstraintsParsing = false; @@ -4355,7 +4356,7 @@ void case_98() } void case_99() -#line 950 "cs-parser.jay" +#line 951 "cs-parser.jay" { --lexer.parsing_declaration; if (doc_support) @@ -4363,21 +4364,21 @@ void case_99() } void case_100() -#line 956 "cs-parser.jay" +#line 957 "cs-parser.jay" { lbag.AppendToMember (current_class, GetLocation (yyVals[0+yyTop])); yyVal = pop_current_class (); } void case_102() -#line 968 "cs-parser.jay" +#line 969 "cs-parser.jay" { if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; } void case_118() -#line 1010 "cs-parser.jay" +#line 1011 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var mod = (Modifiers) yyVals[-3+yyTop]; @@ -4392,7 +4393,7 @@ void case_118() } void case_119() -#line 1023 "cs-parser.jay" +#line 1024 "cs-parser.jay" { if (doc_support) { current_field.DocComment = Lexer.consume_doc_comment (); @@ -4405,7 +4406,7 @@ void case_119() } void case_124() -#line 1053 "cs-parser.jay" +#line 1054 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), (ConstInitializer) yyVals[0+yyTop]); @@ -4413,7 +4414,7 @@ void case_124() } void case_126() -#line 1066 "cs-parser.jay" +#line 1067 "cs-parser.jay" { --lexer.parsing_block; yyVal = new ConstInitializer (current_field, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); @@ -4421,14 +4422,14 @@ void case_126() } void case_127() -#line 1072 "cs-parser.jay" +#line 1073 "cs-parser.jay" { report.Error (145, lexer.Location, "A const field requires a value to be provided"); yyVal = null; } void case_130() -#line 1087 "cs-parser.jay" +#line 1088 "cs-parser.jay" { lexer.parsing_generic_declaration = false; @@ -4443,7 +4444,7 @@ void case_130() } void case_131() -#line 1102 "cs-parser.jay" +#line 1103 "cs-parser.jay" { if (doc_support) { current_field.DocComment = Lexer.consume_doc_comment (); @@ -4456,7 +4457,7 @@ void case_131() } void case_132() -#line 1115 "cs-parser.jay" +#line 1116 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "fixed size buffers"); @@ -4469,7 +4470,7 @@ void case_132() } void case_133() -#line 1126 "cs-parser.jay" +#line 1127 "cs-parser.jay" { if (doc_support) { current_field.DocComment = Lexer.consume_doc_comment (); @@ -4483,7 +4484,7 @@ void case_133() } void case_136() -#line 1149 "cs-parser.jay" +#line 1150 "cs-parser.jay" { ++lexer.parsing_block; current_local_parameters = ParametersCompiled.EmptyReadOnlyParameters; @@ -4491,7 +4492,7 @@ void case_136() } void case_137() -#line 1155 "cs-parser.jay" +#line 1156 "cs-parser.jay" { --lexer.parsing_block; current_field.Initializer = (Expression) yyVals[0+yyTop]; @@ -4501,7 +4502,7 @@ void case_137() } void case_142() -#line 1182 "cs-parser.jay" +#line 1183 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), null); @@ -4509,7 +4510,7 @@ void case_142() } void case_144() -#line 1192 "cs-parser.jay" +#line 1193 "cs-parser.jay" { --lexer.parsing_block; var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; @@ -4518,7 +4519,7 @@ void case_144() } void case_149() -#line 1218 "cs-parser.jay" +#line 1219 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), (ConstInitializer) yyVals[0+yyTop]); @@ -4526,7 +4527,7 @@ void case_149() } void case_151() -#line 1231 "cs-parser.jay" +#line 1232 "cs-parser.jay" { --lexer.parsing_block; yyVal = new ConstInitializer (current_field, (Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); @@ -4534,14 +4535,14 @@ void case_151() } void case_152() -#line 1237 "cs-parser.jay" +#line 1238 "cs-parser.jay" { report.Error (443, lexer.Location, "Value or constant expected"); yyVal = null; } void case_155() -#line 1247 "cs-parser.jay" +#line 1248 "cs-parser.jay" { /* It has to be here for the parent to safely restore artificial block*/ Error_SyntaxError (yyToken); @@ -4549,7 +4550,7 @@ void case_155() } void case_156() -#line 1256 "cs-parser.jay" +#line 1257 "cs-parser.jay" { if (doc_support) Lexer.doc_state = XmlCommentState.NotAllowed; @@ -4559,7 +4560,7 @@ void case_156() } void case_157() -#line 1264 "cs-parser.jay" +#line 1265 "cs-parser.jay" { Method method = (Method) yyVals[-2+yyTop]; method.Block = (ToplevelBlock) yyVals[0+yyTop]; @@ -4585,7 +4586,7 @@ void case_157() } void case_160() -#line 1302 "cs-parser.jay" +#line 1303 "cs-parser.jay" { lexer.ConstraintsParsing = false; valid_param_mod = 0; @@ -4620,14 +4621,14 @@ void case_160() } void case_162() -#line 1343 "cs-parser.jay" +#line 1344 "cs-parser.jay" { lexer.parsing_generic_declaration = false; valid_param_mod = ParameterModifierType.All; } void case_164() -#line 1352 "cs-parser.jay" +#line 1353 "cs-parser.jay" { lexer.ConstraintsParsing = false; valid_param_mod = 0; @@ -4679,7 +4680,7 @@ void case_164() } void case_165() -#line 1405 "cs-parser.jay" +#line 1406 "cs-parser.jay" { MemberName name = (MemberName) yyVals[-3+yyTop]; report.Error (1585, name.Location, @@ -4697,90 +4698,103 @@ void case_165() } void case_170() -#line 1434 "cs-parser.jay" +#line 1435 "cs-parser.jay" { var pars_list = (List) yyVals[0+yyTop]; yyVal = new ParametersCompiled (pars_list.ToArray ()); - lbag.AddLocation (yyVal, lbag.GetLocations (pars_list)); + lbag.AddLocation (yyVal, parameterListCommas); } void case_171() -#line 1440 "cs-parser.jay" +#line 1441 "cs-parser.jay" { var pars_list = (List) yyVals[-2+yyTop]; pars_list.Add ((Parameter) yyVals[0+yyTop]); - + parameterListCommas.Add (GetLocation (yyVals[-1+yyTop])); + yyVal = new ParametersCompiled (pars_list.ToArray ()); + lbag.AddLocation (yyVal, parameterListCommas); } void case_172() -#line 1447 "cs-parser.jay" +#line 1450 "cs-parser.jay" { var pars_list = (List) yyVals[-2+yyTop]; pars_list.Add (new ArglistParameter (GetLocation (yyVals[0+yyTop]))); + parameterListCommas.Add (GetLocation (yyVals[-1+yyTop])); + yyVal = new ParametersCompiled (pars_list.ToArray (), true); + lbag.AddLocation (yyVal, parameterListCommas); } void case_173() -#line 1453 "cs-parser.jay" +#line 1459 "cs-parser.jay" { if (yyVals[-2+yyTop] != null) report.Error (231, ((Parameter) yyVals[-2+yyTop]).Location, "A params parameter must be the last parameter in a formal parameter list"); yyVal = new ParametersCompiled (new Parameter[] { (Parameter) yyVals[-2+yyTop] } ); + lbag.AddLocation (yyVal, parameterListCommas); } void case_174() -#line 1460 "cs-parser.jay" +#line 1467 "cs-parser.jay" { if (yyVals[-2+yyTop] != null) report.Error (231, ((Parameter) yyVals[-2+yyTop]).Location, "A params parameter must be the last parameter in a formal parameter list"); var pars_list = (List) yyVals[-4+yyTop]; pars_list.Add (new ArglistParameter (GetLocation (yyVals[-2+yyTop]))); - + parameterListCommas.Add (GetLocation (yyVals[-3+yyTop])); + parameterListCommas.Add (GetLocation (yyVals[-1+yyTop])); + yyVal = new ParametersCompiled (pars_list.ToArray (), true); + lbag.AddLocation (yyVal, parameterListCommas); } void case_175() -#line 1470 "cs-parser.jay" +#line 1480 "cs-parser.jay" { report.Error (257, GetLocation (yyVals[-2+yyTop]), "An __arglist parameter must be the last parameter in a formal parameter list"); yyVal = new ParametersCompiled (new Parameter [] { new ArglistParameter (GetLocation (yyVals[-2+yyTop])) }, true); + lbag.AddLocation (yyVal, parameterListCommas); } void case_176() -#line 1476 "cs-parser.jay" +#line 1487 "cs-parser.jay" { report.Error (257, GetLocation (yyVals[-2+yyTop]), "An __arglist parameter must be the last parameter in a formal parameter list"); var pars_list = (List) yyVals[-4+yyTop]; pars_list.Add (new ArglistParameter (GetLocation (yyVals[-2+yyTop]))); + parameterListCommas.Add (GetLocation (yyVals[-3+yyTop])); + parameterListCommas.Add (GetLocation (yyVals[-1+yyTop])); yyVal = new ParametersCompiled (pars_list.ToArray (), true); + lbag.AddLocation (yyVal, parameterListCommas); } void case_179() -#line 1493 "cs-parser.jay" +#line 1507 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = ParametersCompiled.EmptyReadOnlyParameters; } void case_180() -#line 1501 "cs-parser.jay" +#line 1515 "cs-parser.jay" { parameters_bucket.Clear (); Parameter p = (Parameter) yyVals[0+yyTop]; parameters_bucket.Add (p); - + parameterListCommas.Clear (); default_parameter_used = p.HasDefaultValue; yyVal = parameters_bucket; } void case_181() -#line 1510 "cs-parser.jay" +#line 1524 "cs-parser.jay" { var pars = (List) yyVals[-2+yyTop]; Parameter p = (Parameter) yyVals[0+yyTop]; @@ -4793,14 +4807,14 @@ void case_181() default_parameter_used |= p.HasDefaultValue; pars.Add (p); - lbag.AppendTo (pars, GetLocation (yyVals[-1+yyTop])); + parameterListCommas.Add (GetLocation (yyVals[-1+yyTop])); } yyVal = yyVals[-2+yyTop]; } void case_182() -#line 1534 "cs-parser.jay" +#line 1548 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new Parameter ((FullNamedExpression) yyVals[-1+yyTop], lt.Value, (Parameter.Modifier) yyVals[-2+yyTop], (Attributes) yyVals[-3+yyTop], lt.Location); @@ -4808,7 +4822,7 @@ void case_182() } void case_183() -#line 1543 "cs-parser.jay" +#line 1557 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; report.Error (1552, lt.Location, "Array type specifier, [], must appear before parameter name"); @@ -4817,7 +4831,7 @@ void case_183() } void case_184() -#line 1553 "cs-parser.jay" +#line 1567 "cs-parser.jay" { Error_SyntaxError (yyToken); Location l = GetLocation (yyVals[0+yyTop]); @@ -4826,7 +4840,7 @@ void case_184() } void case_186() -#line 1568 "cs-parser.jay" +#line 1582 "cs-parser.jay" { --lexer.parsing_block; if (lang_version <= LanguageVersion.V_3) { @@ -4865,14 +4879,14 @@ void case_186() } void case_189() -#line 1613 "cs-parser.jay" +#line 1627 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; parameterModifierLocation = GetLocation (yyVals[0+yyTop]); } void case_190() -#line 1618 "cs-parser.jay" +#line 1632 "cs-parser.jay" { Parameter.Modifier p2 = (Parameter.Modifier)yyVals[0+yyTop]; Parameter.Modifier mod = (Parameter.Modifier)yyVals[-1+yyTop] | p2; @@ -4895,7 +4909,7 @@ void case_190() } void case_191() -#line 1642 "cs-parser.jay" +#line 1656 "cs-parser.jay" { if ((valid_param_mod & ParameterModifierType.Ref) == 0) Error_ParameterModifierNotValid ("ref", GetLocation (yyVals[0+yyTop])); @@ -4904,7 +4918,7 @@ void case_191() } void case_192() -#line 1649 "cs-parser.jay" +#line 1663 "cs-parser.jay" { if ((valid_param_mod & ParameterModifierType.Out) == 0) Error_ParameterModifierNotValid ("out", GetLocation (yyVals[0+yyTop])); @@ -4913,7 +4927,7 @@ void case_192() } void case_193() -#line 1656 "cs-parser.jay" +#line 1670 "cs-parser.jay" { if ((valid_param_mod & ParameterModifierType.This) == 0) Error_ParameterModifierNotValid ("this", GetLocation (yyVals[0+yyTop])); @@ -4925,14 +4939,14 @@ void case_193() } void case_194() -#line 1669 "cs-parser.jay" +#line 1683 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new ParamsParameter ((FullNamedExpression) yyVals[-1+yyTop], lt.Value, (Attributes) yyVals[-3+yyTop], lt.Location); } void case_195() -#line 1674 "cs-parser.jay" +#line 1688 "cs-parser.jay" { report.Error (1751, GetLocation (yyVals[-4+yyTop]), "Cannot specify a default value for a parameter array"); @@ -4941,21 +4955,21 @@ void case_195() } void case_196() -#line 1681 "cs-parser.jay" +#line 1695 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } void case_197() -#line 1689 "cs-parser.jay" +#line 1703 "cs-parser.jay" { if ((valid_param_mod & ParameterModifierType.Params) == 0) report.Error (1670, (GetLocation (yyVals[0+yyTop])), "The `params' modifier is not allowed in current context"); } void case_198() -#line 1694 "cs-parser.jay" +#line 1708 "cs-parser.jay" { Parameter.Modifier mod = (Parameter.Modifier)yyVals[0+yyTop]; if ((mod & Parameter.Modifier.This) != 0) { @@ -4966,21 +4980,21 @@ void case_198() } void case_200() -#line 1710 "cs-parser.jay" +#line 1724 "cs-parser.jay" { if ((valid_param_mod & ParameterModifierType.Arglist) == 0) report.Error (1669, GetLocation (yyVals[0+yyTop]), "__arglist is not valid in this context"); } void case_201() -#line 1721 "cs-parser.jay" +#line 1735 "cs-parser.jay" { if (doc_support) tmpComment = Lexer.consume_doc_comment (); } void case_202() -#line 1726 "cs-parser.jay" +#line 1740 "cs-parser.jay" { var type = (FullNamedExpression) yyVals[-3+yyTop]; current_property = new Property (current_class, type, (Modifiers) yyVals[-4+yyTop], @@ -4996,7 +5010,7 @@ void case_202() } void case_203() -#line 1740 "cs-parser.jay" +#line 1754 "cs-parser.jay" { lexer.PropertyParsing = false; @@ -5005,14 +5019,14 @@ void case_203() } void case_204() -#line 1747 "cs-parser.jay" +#line 1761 "cs-parser.jay" { lbag.AppendToMember (current_property, GetLocation (yyVals[0+yyTop])); current_property = null; } void case_206() -#line 1761 "cs-parser.jay" +#line 1775 "cs-parser.jay" { valid_param_mod = 0; var type = (FullNamedExpression) yyVals[-6+yyTop]; @@ -5039,7 +5053,7 @@ void case_206() } void case_208() -#line 1790 "cs-parser.jay" +#line 1804 "cs-parser.jay" { if (current_property.AccessorFirst != null && current_property.AccessorFirst.Block == null) ((Indexer) current_property).ParameterInfo.CheckParameters (current_property); @@ -5052,7 +5066,7 @@ void case_208() } void case_213() -#line 1809 "cs-parser.jay" +#line 1823 "cs-parser.jay" { if (yyToken == Token.CLOSE_BRACE) { report.Error (548, lexer.Location, "`{0}': property or indexer must have at least one accessor", current_property.GetSignatureForError ()); @@ -5065,7 +5079,7 @@ void case_213() } void case_214() -#line 1823 "cs-parser.jay" +#line 1837 "cs-parser.jay" { if (yyVals[-1+yyTop] != ModifierNone && lang_version == LanguageVersion.ISO_1) { FeatureIsNotAvailable (GetLocation (yyVals[-1+yyTop]), "access modifiers on properties"); @@ -5088,7 +5102,7 @@ void case_214() } void case_215() -#line 1844 "cs-parser.jay" +#line 1858 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { current_property.Get.Block = (ToplevelBlock) yyVals[0+yyTop]; @@ -5111,7 +5125,7 @@ void case_215() } void case_216() -#line 1868 "cs-parser.jay" +#line 1882 "cs-parser.jay" { if (yyVals[-1+yyTop] != ModifierNone && lang_version == LanguageVersion.ISO_1) { FeatureIsNotAvailable (GetLocation (yyVals[-1+yyTop]), "access modifiers on properties"); @@ -5139,7 +5153,7 @@ void case_216() } void case_217() -#line 1894 "cs-parser.jay" +#line 1908 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { current_property.Set.Block = (ToplevelBlock) yyVals[0+yyTop]; @@ -5162,21 +5176,21 @@ void case_217() } void case_219() -#line 1919 "cs-parser.jay" +#line 1933 "cs-parser.jay" { savedLocation = GetLocation (yyVals[0+yyTop]); yyVal = null; } void case_220() -#line 1924 "cs-parser.jay" +#line 1938 "cs-parser.jay" { Error_SyntaxError (1043, yyToken, "Invalid accessor body"); yyVal = null; } void case_222() -#line 1939 "cs-parser.jay" +#line 1953 "cs-parser.jay" { MemberName name = MakeName ((MemberName) yyVals[0+yyTop]); push_current_class (new Interface (current_namespace, current_class, name, (Modifiers) yyVals[-4+yyTop], (Attributes) yyVals[-5+yyTop]), yyVals[-3+yyTop]); @@ -5184,7 +5198,7 @@ void case_222() } void case_223() -#line 1946 "cs-parser.jay" +#line 1960 "cs-parser.jay" { lexer.ConstraintsParsing = false; @@ -5197,7 +5211,7 @@ void case_223() } void case_224() -#line 1957 "cs-parser.jay" +#line 1971 "cs-parser.jay" { --lexer.parsing_declaration; if (doc_support) @@ -5205,14 +5219,14 @@ void case_224() } void case_225() -#line 1963 "cs-parser.jay" +#line 1977 "cs-parser.jay" { lbag.AppendToMember (current_class, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop])); yyVal = pop_current_class (); } void case_241() -#line 2015 "cs-parser.jay" +#line 2029 "cs-parser.jay" { OperatorDeclaration decl = (OperatorDeclaration) yyVals[-2+yyTop]; if (decl != null) { @@ -5239,14 +5253,14 @@ void case_241() } void case_245() -#line 2049 "cs-parser.jay" +#line 2063 "cs-parser.jay" { report.Error (590, GetLocation (yyVals[0+yyTop]), "User-defined operators cannot return void"); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } void case_247() -#line 2061 "cs-parser.jay" +#line 2075 "cs-parser.jay" { valid_param_mod = 0; @@ -5288,7 +5302,7 @@ void case_247() } void case_272() -#line 2137 "cs-parser.jay" +#line 2151 "cs-parser.jay" { valid_param_mod = 0; @@ -5305,7 +5319,7 @@ void case_272() } void case_274() -#line 2156 "cs-parser.jay" +#line 2170 "cs-parser.jay" { valid_param_mod = 0; @@ -5322,7 +5336,7 @@ void case_274() } void case_275() -#line 2171 "cs-parser.jay" +#line 2185 "cs-parser.jay" { Error_SyntaxError (yyToken); current_local_parameters = ParametersCompiled.EmptyReadOnlyParameters; @@ -5330,7 +5344,7 @@ void case_275() } void case_276() -#line 2177 "cs-parser.jay" +#line 2191 "cs-parser.jay" { Error_SyntaxError (yyToken); current_local_parameters = ParametersCompiled.EmptyReadOnlyParameters; @@ -5338,7 +5352,7 @@ void case_276() } void case_277() -#line 2187 "cs-parser.jay" +#line 2201 "cs-parser.jay" { Constructor c = (Constructor) yyVals[-1+yyTop]; c.Block = (ToplevelBlock) yyVals[0+yyTop]; @@ -5354,7 +5368,7 @@ void case_277() } void case_278() -#line 2206 "cs-parser.jay" +#line 2220 "cs-parser.jay" { if (doc_support) { tmpComment = Lexer.consume_doc_comment (); @@ -5365,7 +5379,7 @@ void case_278() } void case_279() -#line 2215 "cs-parser.jay" +#line 2229 "cs-parser.jay" { valid_param_mod = 0; current_local_parameters = (ParametersCompiled) yyVals[-1+yyTop]; @@ -5378,7 +5392,7 @@ void case_279() } void case_280() -#line 2226 "cs-parser.jay" +#line 2240 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-6+yyTop]; var mods = (Modifiers) yyVals[-7+yyTop]; @@ -5408,7 +5422,7 @@ void case_280() } void case_286() -#line 2271 "cs-parser.jay" +#line 2285 "cs-parser.jay" { --lexer.parsing_block; yyVal = new ConstructorBaseInitializer ((Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-4+yyTop])); @@ -5416,7 +5430,7 @@ void case_286() } void case_288() -#line 2281 "cs-parser.jay" +#line 2295 "cs-parser.jay" { --lexer.parsing_block; yyVal = new ConstructorThisInitializer ((Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-4+yyTop])); @@ -5424,14 +5438,14 @@ void case_288() } void case_289() -#line 2287 "cs-parser.jay" +#line 2301 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } void case_290() -#line 2295 "cs-parser.jay" +#line 2309 "cs-parser.jay" { if (doc_support) { tmpComment = Lexer.consume_doc_comment (); @@ -5442,7 +5456,7 @@ void case_290() } void case_291() -#line 2304 "cs-parser.jay" +#line 2318 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; if (lt.Value != current_container.MemberName.Name){ @@ -5464,7 +5478,7 @@ void case_291() } void case_292() -#line 2329 "cs-parser.jay" +#line 2343 "cs-parser.jay" { current_event_field = new EventField (current_class, (FullNamedExpression) yyVals[-1+yyTop], (Modifiers) yyVals[-3+yyTop], (MemberName) yyVals[0+yyTop], (Attributes) yyVals[-4+yyTop]); current_container.AddEvent (current_event_field); @@ -5478,7 +5492,7 @@ void case_292() } void case_293() -#line 2343 "cs-parser.jay" +#line 2357 "cs-parser.jay" { if (doc_support) { current_event_field.DocComment = Lexer.consume_doc_comment (); @@ -5490,7 +5504,7 @@ void case_293() } void case_294() -#line 2356 "cs-parser.jay" +#line 2370 "cs-parser.jay" { current_event = new EventProperty (current_class, (FullNamedExpression) yyVals[-2+yyTop], (Modifiers) yyVals[-4+yyTop], (MemberName) yyVals[-1+yyTop], (Attributes) yyVals[-5+yyTop]); current_container.AddEvent (current_event); @@ -5500,7 +5514,7 @@ void case_294() } void case_295() -#line 2364 "cs-parser.jay" +#line 2378 "cs-parser.jay" { if (current_container.Kind == MemberKind.Interface) report.Error (69, GetLocation (yyVals[-2+yyTop]), "Event in interface cannot have add or remove accessors"); @@ -5509,7 +5523,7 @@ void case_295() } void case_296() -#line 2371 "cs-parser.jay" +#line 2385 "cs-parser.jay" { if (doc_support) { current_event.DocComment = Lexer.consume_doc_comment (); @@ -5522,14 +5536,14 @@ void case_296() } void case_299() -#line 2390 "cs-parser.jay" +#line 2404 "cs-parser.jay" { --lexer.parsing_block; current_event_field.Initializer = (Expression) yyVals[0+yyTop]; } void case_304() -#line 2414 "cs-parser.jay" +#line 2428 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), null); @@ -5537,7 +5551,7 @@ void case_304() } void case_306() -#line 2424 "cs-parser.jay" +#line 2438 "cs-parser.jay" { --lexer.parsing_block; var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; @@ -5546,7 +5560,7 @@ void case_306() } void case_307() -#line 2433 "cs-parser.jay" +#line 2447 "cs-parser.jay" { if (current_container.Kind == MemberKind.Interface) { report.Error (68, lexer.Location, "`{0}': event in interface cannot have an initializer", @@ -5560,28 +5574,28 @@ void case_307() } void case_311() -#line 2454 "cs-parser.jay" +#line 2468 "cs-parser.jay" { report.Error (65, lexer.Location, "`{0}': event property must have both add and remove accessors", current_event.GetSignatureForError ()); } void case_312() -#line 2459 "cs-parser.jay" +#line 2473 "cs-parser.jay" { report.Error (65, lexer.Location, "`{0}': event property must have both add and remove accessors", current_event.GetSignatureForError ()); } void case_313() -#line 2464 "cs-parser.jay" +#line 2478 "cs-parser.jay" { report.Error (1055, GetLocation (yyVals[0+yyTop]), "An add or remove accessor expected"); yyVal = null; } void case_314() -#line 2472 "cs-parser.jay" +#line 2486 "cs-parser.jay" { if (yyVals[-1+yyTop] != ModifierNone) { report.Error (1609, GetLocation (yyVals[-1+yyTop]), "Modifiers cannot be placed on event accessor declarations"); @@ -5595,7 +5609,7 @@ void case_314() } void case_315() -#line 2484 "cs-parser.jay" +#line 2498 "cs-parser.jay" { lexer.EventParsing = true; @@ -5610,7 +5624,7 @@ void case_315() } void case_316() -#line 2500 "cs-parser.jay" +#line 2514 "cs-parser.jay" { if (yyVals[-1+yyTop] != ModifierNone) { report.Error (1609, GetLocation (yyVals[-1+yyTop]), "Modifiers cannot be placed on event accessor declarations"); @@ -5624,7 +5638,7 @@ void case_316() } void case_317() -#line 2512 "cs-parser.jay" +#line 2526 "cs-parser.jay" { lexer.EventParsing = true; @@ -5639,21 +5653,21 @@ void case_317() } void case_318() -#line 2528 "cs-parser.jay" +#line 2542 "cs-parser.jay" { report.Error (73, lexer.Location, "An add or remove accessor must have a body"); yyVal = null; } void case_320() -#line 2540 "cs-parser.jay" +#line 2554 "cs-parser.jay" { if (doc_support) enumTypeComment = Lexer.consume_doc_comment (); } void case_321() -#line 2545 "cs-parser.jay" +#line 2559 "cs-parser.jay" { if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; @@ -5667,7 +5681,7 @@ void case_321() } void case_322() -#line 2557 "cs-parser.jay" +#line 2571 "cs-parser.jay" { /* here will be evaluated after CLOSE_BLACE is consumed.*/ if (doc_support) @@ -5675,7 +5689,7 @@ void case_322() } void case_323() -#line 2563 "cs-parser.jay" +#line 2577 "cs-parser.jay" { if (doc_support) current_class.DocComment = enumTypeComment; @@ -5690,7 +5704,7 @@ void case_323() } void case_325() -#line 2580 "cs-parser.jay" +#line 2594 "cs-parser.jay" { var te = yyVals[0+yyTop] as TypeExpression; if (te == null || !EnumSpec.IsValidUnderlyingType (te.Type)) { @@ -5702,21 +5716,21 @@ void case_325() } void case_326() -#line 2590 "cs-parser.jay" +#line 2604 "cs-parser.jay" { Error_TypeExpected (GetLocation (yyVals[-1+yyTop])); yyVal = null; } void case_331() -#line 2608 "cs-parser.jay" +#line 2622 "cs-parser.jay" { lbag.AddLocation (yyVals[-2+yyTop], GetLocation (yyVals[-1+yyTop])); yyVal = yyVals[0+yyTop]; } void case_332() -#line 2616 "cs-parser.jay" +#line 2630 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var em = new EnumMember ((Enum) current_class, new MemberName (lt.Value, lt.Location), (Attributes) yyVals[-1+yyTop]); @@ -5731,7 +5745,7 @@ void case_332() } void case_333() -#line 2629 "cs-parser.jay" +#line 2643 "cs-parser.jay" { ++lexer.parsing_block; if (doc_support) { @@ -5741,7 +5755,7 @@ void case_333() } void case_334() -#line 2637 "cs-parser.jay" +#line 2651 "cs-parser.jay" { --lexer.parsing_block; @@ -5757,7 +5771,7 @@ void case_334() } void case_336() -#line 2662 "cs-parser.jay" +#line 2676 "cs-parser.jay" { valid_param_mod = 0; @@ -5777,7 +5791,7 @@ void case_336() } void case_338() -#line 2684 "cs-parser.jay" +#line 2698 "cs-parser.jay" { if (doc_support) { current_delegate.DocComment = Lexer.consume_doc_comment (); @@ -5793,7 +5807,7 @@ void case_338() } void case_340() -#line 2702 "cs-parser.jay" +#line 2716 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[0+yyTop]), "nullable types"); @@ -5802,7 +5816,7 @@ void case_340() } void case_342() -#line 2713 "cs-parser.jay" +#line 2727 "cs-parser.jay" { var lt1 = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var lt2 = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -5811,7 +5825,7 @@ void case_342() } void case_344() -#line 2724 "cs-parser.jay" +#line 2738 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberName ((MemberName) yyVals[-3+yyTop], lt.Value, (TypeArguments) yyVals[0+yyTop], lt.Location); @@ -5819,14 +5833,14 @@ void case_344() } void case_345() -#line 2733 "cs-parser.jay" +#line 2747 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberName (lt.Value, (TypeArguments)yyVals[0+yyTop], lt.Location); } void case_347() -#line 2745 "cs-parser.jay" +#line 2759 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "generics"); @@ -5839,14 +5853,14 @@ void case_347() } void case_348() -#line 2756 "cs-parser.jay" +#line 2770 "cs-parser.jay" { Error_TypeExpected (lexer.Location); yyVal = new TypeArguments (); } void case_349() -#line 2764 "cs-parser.jay" +#line 2778 "cs-parser.jay" { TypeArguments type_args = new TypeArguments (); type_args.Add ((FullNamedExpression) yyVals[0+yyTop]); @@ -5855,7 +5869,7 @@ void case_349() } void case_350() -#line 2771 "cs-parser.jay" +#line 2785 "cs-parser.jay" { TypeArguments type_args = (TypeArguments) yyVals[-2+yyTop]; type_args.Add ((FullNamedExpression) yyVals[0+yyTop]); @@ -5864,7 +5878,7 @@ void case_350() } void case_352() -#line 2788 "cs-parser.jay" +#line 2802 "cs-parser.jay" { lexer.parsing_generic_declaration = false; var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; @@ -5872,7 +5886,7 @@ void case_352() } void case_353() -#line 2797 "cs-parser.jay" +#line 2811 "cs-parser.jay" { MemberName mn = (MemberName)yyVals[0+yyTop]; if (mn.TypeArguments != null) @@ -5881,7 +5895,7 @@ void case_353() } void case_355() -#line 2808 "cs-parser.jay" +#line 2822 "cs-parser.jay" { lexer.parsing_generic_declaration = false; var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -5889,21 +5903,21 @@ void case_355() } void case_356() -#line 2817 "cs-parser.jay" +#line 2831 "cs-parser.jay" { lexer.parsing_generic_declaration = false; yyVal = new MemberName (TypeContainer.DefaultIndexerName, GetLocation (yyVals[0+yyTop])); } void case_357() -#line 2822 "cs-parser.jay" +#line 2836 "cs-parser.jay" { lexer.parsing_generic_declaration = false; yyVal = new MemberName ((MemberName) yyVals[-1+yyTop], TypeContainer.DefaultIndexerName, null, GetLocation (yyVals[-1+yyTop])); } void case_358() -#line 2830 "cs-parser.jay" +#line 2844 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; yyVal = new MemberName (lt.Value, (TypeArguments) yyVals[-1+yyTop], lt.Location); @@ -5911,7 +5925,7 @@ void case_358() } void case_359() -#line 2836 "cs-parser.jay" +#line 2850 "cs-parser.jay" { var lt1 = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; var lt2 = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; @@ -5921,7 +5935,7 @@ void case_359() } void case_360() -#line 2844 "cs-parser.jay" +#line 2858 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; yyVal = new MemberName ((MemberName) yyVals[-3+yyTop], lt.Value, (TypeArguments) yyVals[-1+yyTop], lt.Location); @@ -5929,7 +5943,7 @@ void case_360() } void case_362() -#line 2854 "cs-parser.jay" +#line 2868 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "generics"); @@ -5939,7 +5953,7 @@ void case_362() } void case_363() -#line 2865 "cs-parser.jay" +#line 2879 "cs-parser.jay" { TypeArguments type_args = new TypeArguments (); type_args.Add ((FullNamedExpression)yyVals[0+yyTop]); @@ -5947,7 +5961,7 @@ void case_363() } void case_364() -#line 2871 "cs-parser.jay" +#line 2885 "cs-parser.jay" { TypeArguments type_args = (TypeArguments) yyVals[-2+yyTop]; type_args.Add ((FullNamedExpression)yyVals[0+yyTop]); @@ -5956,14 +5970,14 @@ void case_364() } void case_365() -#line 2881 "cs-parser.jay" +#line 2895 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken)yyVals[0+yyTop]; yyVal = new TypeParameterName (lt.Value, (Attributes)yyVals[-2+yyTop], (Variance) yyVals[-1+yyTop], lt.Location); } void case_366() -#line 2886 "cs-parser.jay" +#line 2900 "cs-parser.jay" { if (GetTokenName (yyToken) == "type") report.Error (81, GetLocation (yyVals[0+yyTop]), "Type parameter declaration must be an identifier not a type"); @@ -5974,28 +5988,28 @@ void case_366() } void case_371() -#line 2920 "cs-parser.jay" +#line 2934 "cs-parser.jay" { Expression.Error_VoidInvalidInTheContext (GetLocation (yyVals[0+yyTop]), report); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } void case_373() -#line 2929 "cs-parser.jay" +#line 2943 "cs-parser.jay" { Expression.Error_VoidInvalidInTheContext (GetLocation (yyVals[0+yyTop]), report); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } void case_375() -#line 2938 "cs-parser.jay" +#line 2952 "cs-parser.jay" { report.Error (1536, GetLocation (yyVals[0+yyTop]), "Invalid parameter type `void'"); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } void case_378() -#line 2954 "cs-parser.jay" +#line 2968 "cs-parser.jay" { MemberName name = (MemberName) yyVals[-1+yyTop]; @@ -6010,14 +6024,14 @@ void case_378() } void case_380() -#line 2971 "cs-parser.jay" +#line 2985 "cs-parser.jay" { if (yyVals[0+yyTop] != null) yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } void case_383() -#line 2987 "cs-parser.jay" +#line 3001 "cs-parser.jay" { var types = new List (2); types.Add ((FullNamedExpression) yyVals[0+yyTop]); @@ -6025,7 +6039,7 @@ void case_383() } void case_384() -#line 2993 "cs-parser.jay" +#line 3007 "cs-parser.jay" { var types = (List) yyVals[-2+yyTop]; types.Add ((FullNamedExpression) yyVals[0+yyTop]); @@ -6034,7 +6048,7 @@ void case_384() } void case_385() -#line 3003 "cs-parser.jay" +#line 3017 "cs-parser.jay" { if (yyVals[0+yyTop] is ComposedCast) { report.Error (1521, GetLocation (yyVals[0+yyTop]), "Invalid base type `{0}'", ((ComposedCast)yyVals[0+yyTop]).GetSignatureForError ()); @@ -6043,35 +6057,35 @@ void case_385() } void case_386() -#line 3010 "cs-parser.jay" +#line 3024 "cs-parser.jay" { Error_TypeExpected (lexer.Location); yyVal = null; } void case_423() -#line 3072 "cs-parser.jay" +#line 3086 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new SimpleName (lt.Value, (TypeArguments)yyVals[0+yyTop], lt.Location); } void case_424() -#line 3076 "cs-parser.jay" +#line 3090 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new CompletionSimpleName (MemberName.MakeName (lt.Value, null), lt.Location); } void case_435() -#line 3117 "cs-parser.jay" +#line 3131 "cs-parser.jay" { yyVal = new ParenthesizedExpression ((Expression) yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_437() -#line 3129 "cs-parser.jay" +#line 3143 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberAccess ((Expression) yyVals[-3+yyTop], lt.Value, (TypeArguments) yyVals[0+yyTop], lt.Location); @@ -6079,7 +6093,7 @@ void case_437() } void case_438() -#line 3135 "cs-parser.jay" +#line 3149 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberAccess ((Expression) yyVals[-3+yyTop], lt.Value, (TypeArguments) yyVals[0+yyTop], lt.Location); @@ -6087,7 +6101,7 @@ void case_438() } void case_439() -#line 3141 "cs-parser.jay" +#line 3155 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberAccess (new BaseThis (GetLocation (yyVals[-3+yyTop])), lt.Value, (TypeArguments) yyVals[0+yyTop], lt.Location); @@ -6095,7 +6109,7 @@ void case_439() } void case_440() -#line 3147 "cs-parser.jay" +#line 3161 "cs-parser.jay" { var lt1 = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var lt2 = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -6105,28 +6119,28 @@ void case_440() } void case_442() -#line 3157 "cs-parser.jay" +#line 3171 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new CompletionMemberAccess ((Expression) yyVals[-3+yyTop], lt.Value, lt.Location); } void case_444() -#line 3165 "cs-parser.jay" +#line 3179 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new CompletionMemberAccess ((Expression) yyVals[-3+yyTop], lt.Value, lt.Location); } void case_445() -#line 3173 "cs-parser.jay" +#line 3187 "cs-parser.jay" { yyVal = new Invocation ((Expression) yyVals[-3+yyTop], (Arguments) yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_448() -#line 3186 "cs-parser.jay" +#line 3200 "cs-parser.jay" { if (yyVals[-1+yyTop] == null) { yyVal = CollectionOrObjectInitializers.Empty; @@ -6138,14 +6152,14 @@ void case_448() } void case_449() -#line 3196 "cs-parser.jay" +#line 3210 "cs-parser.jay" { yyVal = new CollectionOrObjectInitializers ((List) yyVals[-2+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_452() -#line 3212 "cs-parser.jay" +#line 3226 "cs-parser.jay" { var a = new List (); a.Add ((Expression) yyVals[0+yyTop]); @@ -6153,7 +6167,7 @@ void case_452() } void case_453() -#line 3218 "cs-parser.jay" +#line 3232 "cs-parser.jay" { var a = (List)yyVals[-2+yyTop]; a.Add ((Expression) yyVals[0+yyTop]); @@ -6162,14 +6176,14 @@ void case_453() } void case_454() -#line 3224 "cs-parser.jay" +#line 3238 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = yyVals[-1+yyTop]; } void case_455() -#line 3232 "cs-parser.jay" +#line 3246 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; yyVal = new ElementInitializer (lt.Value, (Expression)yyVals[0+yyTop], lt.Location); @@ -6177,7 +6191,7 @@ void case_455() } void case_457() -#line 3241 "cs-parser.jay" +#line 3255 "cs-parser.jay" { CompletionSimpleName csn = yyVals[-1+yyTop] as CompletionSimpleName; if (csn == null) @@ -6187,7 +6201,7 @@ void case_457() } void case_458() -#line 3249 "cs-parser.jay" +#line 3263 "cs-parser.jay" { if (yyVals[-1+yyTop] == null) yyVal = null; @@ -6196,14 +6210,14 @@ void case_458() } void case_459() -#line 3256 "cs-parser.jay" +#line 3270 "cs-parser.jay" { report.Error (1920, GetLocation (yyVals[-1+yyTop]), "An element initializer cannot be empty"); yyVal = null; } void case_464() -#line 3274 "cs-parser.jay" +#line 3288 "cs-parser.jay" { Arguments list = new Arguments (4); list.Add ((Argument) yyVals[0+yyTop]); @@ -6211,7 +6225,7 @@ void case_464() } void case_465() -#line 3280 "cs-parser.jay" +#line 3294 "cs-parser.jay" { Arguments list = (Arguments) yyVals[-2+yyTop]; if (list [list.Count - 1] is NamedArgument) @@ -6223,7 +6237,7 @@ void case_465() } void case_466() -#line 3290 "cs-parser.jay" +#line 3304 "cs-parser.jay" { Arguments list = (Arguments) yyVals[-2+yyTop]; NamedArgument a = (NamedArgument) yyVals[0+yyTop]; @@ -6240,56 +6254,56 @@ void case_466() } void case_467() -#line 3305 "cs-parser.jay" +#line 3319 "cs-parser.jay" { report.Error (839, GetLocation (yyVals[0+yyTop]), "An argument is missing"); yyVal = yyVals[-1+yyTop]; } void case_468() -#line 3310 "cs-parser.jay" +#line 3324 "cs-parser.jay" { report.Error (839, GetLocation (yyVals[-1+yyTop]), "An argument is missing"); yyVal = null; } void case_473() -#line 3331 "cs-parser.jay" +#line 3345 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop], Argument.AType.Ref); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } void case_474() -#line 3336 "cs-parser.jay" +#line 3350 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop], Argument.AType.Out); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } void case_475() -#line 3341 "cs-parser.jay" +#line 3355 "cs-parser.jay" { yyVal = new Argument (new Arglist ((Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop]))); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_476() -#line 3346 "cs-parser.jay" +#line 3360 "cs-parser.jay" { yyVal = new Argument (new Arglist (GetLocation (yyVals[-2+yyTop]))); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_478() -#line 3358 "cs-parser.jay" +#line 3372 "cs-parser.jay" { yyVal = new ElementAccess ((Expression) yyVals[-3+yyTop], (Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_479() -#line 3366 "cs-parser.jay" +#line 3380 "cs-parser.jay" { var list = new List (4); list.Add ((Expression) yyVals[0+yyTop]); @@ -6297,7 +6311,7 @@ void case_479() } void case_480() -#line 3372 "cs-parser.jay" +#line 3386 "cs-parser.jay" { var list = (List) yyVals[-2+yyTop]; list.Add ((Expression) yyVals[0+yyTop]); @@ -6306,14 +6320,14 @@ void case_480() } void case_481() -#line 3378 "cs-parser.jay" +#line 3392 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = yyVals[-1+yyTop]; } void case_482() -#line 3386 "cs-parser.jay" +#line 3400 "cs-parser.jay" { Arguments args = new Arguments (4); args.Add ((Argument) yyVals[0+yyTop]); @@ -6321,7 +6335,7 @@ void case_482() } void case_483() -#line 3392 "cs-parser.jay" +#line 3406 "cs-parser.jay" { Arguments args = (Arguments) yyVals[-2+yyTop]; if (args [args.Count - 1] is NamedArgument && !(yyVals[0+yyTop] is NamedArgument)) @@ -6333,21 +6347,21 @@ void case_483() } void case_487() -#line 3420 "cs-parser.jay" +#line 3434 "cs-parser.jay" { yyVal = new ElementAccess (new BaseThis (GetLocation (yyVals[-3+yyTop])), (Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_488() -#line 3425 "cs-parser.jay" +#line 3439 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new ElementAccess (null, null, GetLocation (yyVals[-1+yyTop])); } void case_491() -#line 3447 "cs-parser.jay" +#line 3461 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { if (lang_version <= LanguageVersion.ISO_2) @@ -6362,7 +6376,7 @@ void case_491() } void case_492() -#line 3460 "cs-parser.jay" +#line 3474 "cs-parser.jay" { if (lang_version <= LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "collection initializers"); @@ -6371,7 +6385,7 @@ void case_492() } void case_493() -#line 3472 "cs-parser.jay" +#line 3486 "cs-parser.jay" { yyVal = new ArrayCreation ((FullNamedExpression) yyVals[-5+yyTop], (List) yyVals[-3+yyTop], new ComposedTypeSpecifier (((List) yyVals[-3+yyTop]).Count, GetLocation (yyVals[-4+yyTop])) { @@ -6381,7 +6395,7 @@ void case_493() } void case_494() -#line 3480 "cs-parser.jay" +#line 3494 "cs-parser.jay" { if (yyVals[0+yyTop] == null) report.Error (1586, GetLocation (yyVals[-3+yyTop]), "Array creation must have array size or array initializer"); @@ -6390,7 +6404,7 @@ void case_494() } void case_495() -#line 3487 "cs-parser.jay" +#line 3501 "cs-parser.jay" { if (lang_version <= LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "implicitly typed arrays"); @@ -6399,28 +6413,28 @@ void case_495() } void case_496() -#line 3494 "cs-parser.jay" +#line 3508 "cs-parser.jay" { report.Error (178, GetLocation (yyVals[-1+yyTop]), "Invalid rank specifier, expecting `,' or `]'"); yyVal = new ArrayCreation ((FullNamedExpression) yyVals[-5+yyTop], null, GetLocation (yyVals[-6+yyTop])); } void case_497() -#line 3499 "cs-parser.jay" +#line 3513 "cs-parser.jay" { Error_SyntaxError (1526, yyToken, "Unexpected symbol"); yyVal = new ArrayCreation ((FullNamedExpression) yyVals[-1+yyTop], null, GetLocation (yyVals[-2+yyTop])); } void case_499() -#line 3510 "cs-parser.jay" +#line 3524 "cs-parser.jay" { --lexer.parsing_type; yyVal = yyVals[0+yyTop]; } void case_500() -#line 3518 "cs-parser.jay" +#line 3532 "cs-parser.jay" { if (lang_version <= LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-3+yyTop]), "anonymous types"); @@ -6432,7 +6446,7 @@ void case_500() } void case_505() -#line 3541 "cs-parser.jay" +#line 3555 "cs-parser.jay" { var a = new List (4); a.Add ((AnonymousTypeParameter) yyVals[0+yyTop]); @@ -6440,7 +6454,7 @@ void case_505() } void case_506() -#line 3547 "cs-parser.jay" +#line 3561 "cs-parser.jay" { var a = (List) yyVals[-2+yyTop]; a.Add ((AnonymousTypeParameter) yyVals[0+yyTop]); @@ -6450,7 +6464,7 @@ void case_506() } void case_507() -#line 3558 "cs-parser.jay" +#line 3572 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken)yyVals[-2+yyTop]; yyVal = new AnonymousTypeParameter ((Expression)yyVals[0+yyTop], lt.Value, lt.Location); @@ -6458,7 +6472,7 @@ void case_507() } void case_508() -#line 3564 "cs-parser.jay" +#line 3578 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken)yyVals[0+yyTop]; yyVal = new AnonymousTypeParameter (new SimpleName (lt.Value, lt.Location), @@ -6466,14 +6480,14 @@ void case_508() } void case_509() -#line 3570 "cs-parser.jay" +#line 3584 "cs-parser.jay" { MemberAccess ma = (MemberAccess) yyVals[0+yyTop]; yyVal = new AnonymousTypeParameter (ma, ma.Name, ma.Location); } void case_510() -#line 3575 "cs-parser.jay" +#line 3589 "cs-parser.jay" { report.Error (746, lexer.Location, "Invalid anonymous type member declarator. Anonymous type members must be a member assignment, simple name or member access expression"); @@ -6481,28 +6495,28 @@ void case_510() } void case_514() -#line 3590 "cs-parser.jay" +#line 3604 "cs-parser.jay" { ((ComposedTypeSpecifier) yyVals[-1+yyTop]).Next = (ComposedTypeSpecifier) yyVals[0+yyTop]; yyVal = yyVals[-1+yyTop]; } void case_515() -#line 3598 "cs-parser.jay" +#line 3612 "cs-parser.jay" { yyVal = ComposedTypeSpecifier.CreateArrayDimension (1, GetLocation (yyVals[-1+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_516() -#line 3603 "cs-parser.jay" +#line 3617 "cs-parser.jay" { yyVal = ComposedTypeSpecifier.CreateArrayDimension ((int)yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_521() -#line 3633 "cs-parser.jay" +#line 3647 "cs-parser.jay" { var ai = new ArrayInitializer (0, GetLocation (yyVals[-1+yyTop])); ai.VariableDeclaration = current_variable; @@ -6511,7 +6525,7 @@ void case_521() } void case_522() -#line 3640 "cs-parser.jay" +#line 3654 "cs-parser.jay" { var ai = new ArrayInitializer ((List) yyVals[-2+yyTop], GetLocation (yyVals[-3+yyTop])); ai.VariableDeclaration = current_variable; @@ -6524,7 +6538,7 @@ void case_522() } void case_523() -#line 3654 "cs-parser.jay" +#line 3668 "cs-parser.jay" { var list = new List (4); list.Add ((Expression) yyVals[0+yyTop]); @@ -6532,7 +6546,7 @@ void case_523() } void case_524() -#line 3660 "cs-parser.jay" +#line 3674 "cs-parser.jay" { var list = (List) yyVals[-2+yyTop]; list.Add ((Expression) yyVals[0+yyTop]); @@ -6541,7 +6555,7 @@ void case_524() } void case_526() -#line 3674 "cs-parser.jay" +#line 3688 "cs-parser.jay" { lexer.TypeOfParsing = false; yyVal = new TypeOf ((FullNamedExpression) yyVals[-1+yyTop], GetLocation (yyVals[-4+yyTop])); @@ -6549,14 +6563,14 @@ void case_526() } void case_529() -#line 3685 "cs-parser.jay" +#line 3699 "cs-parser.jay" { Error_TypeExpected (lexer.Location); yyVal = null; } void case_530() -#line 3693 "cs-parser.jay" +#line 3707 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -6564,7 +6578,7 @@ void case_530() } void case_531() -#line 3699 "cs-parser.jay" +#line 3713 "cs-parser.jay" { var lt1 = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var lt2 = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -6574,7 +6588,7 @@ void case_531() } void case_532() -#line 3707 "cs-parser.jay" +#line 3721 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; @@ -6582,7 +6596,7 @@ void case_532() } void case_533() -#line 3713 "cs-parser.jay" +#line 3727 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -6590,7 +6604,7 @@ void case_533() } void case_534() -#line 3719 "cs-parser.jay" +#line 3733 "cs-parser.jay" { var te = ((MemberName) yyVals[-3+yyTop]).GetTypeExpression (); if (te.HasTypeArguments) @@ -6601,7 +6615,7 @@ void case_534() } void case_535() -#line 3731 "cs-parser.jay" +#line 3745 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[0+yyTop]), "generics"); @@ -6610,7 +6624,7 @@ void case_535() } void case_536() -#line 3741 "cs-parser.jay" +#line 3755 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; if (lang_version == LanguageVersion.ISO_1) @@ -6620,35 +6634,35 @@ void case_536() } void case_537() -#line 3752 "cs-parser.jay" +#line 3766 "cs-parser.jay" { yyVal = new SizeOf ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_538() -#line 3760 "cs-parser.jay" +#line 3774 "cs-parser.jay" { yyVal = new CheckedExpr ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_539() -#line 3768 "cs-parser.jay" +#line 3782 "cs-parser.jay" { yyVal = new UnCheckedExpr ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_540() -#line 3776 "cs-parser.jay" +#line 3790 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberAccess (new Indirection ((Expression) yyVals[-3+yyTop], GetLocation (yyVals[-2+yyTop])), lt.Value, (TypeArguments) yyVals[0+yyTop], lt.Location); } void case_542() -#line 3788 "cs-parser.jay" +#line 3802 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); if ((ParametersCompiled) yyVals[-2+yyTop] != ParametersCompiled.Undefined) { @@ -6659,7 +6673,7 @@ void case_542() } void case_548() -#line 3820 "cs-parser.jay" +#line 3834 "cs-parser.jay" { valid_param_mod = 0; yyVal = yyVals[-1+yyTop]; @@ -6668,7 +6682,7 @@ void case_548() } void case_549() -#line 3830 "cs-parser.jay" +#line 3844 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-3+yyTop]), "default value expression"); @@ -6678,147 +6692,147 @@ void case_549() } void case_555() -#line 3855 "cs-parser.jay" +#line 3869 "cs-parser.jay" { yyVal = new Cast ((FullNamedExpression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } void case_556() -#line 3863 "cs-parser.jay" +#line 3877 "cs-parser.jay" { current_block.ParametersBlock.IsAsync = true; yyVal = new Await ((Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_565() -#line 3904 "cs-parser.jay" +#line 3918 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Multiply, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_566() -#line 3909 "cs-parser.jay" +#line 3923 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Division, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_567() -#line 3914 "cs-parser.jay" +#line 3928 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Modulus, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_569() -#line 3923 "cs-parser.jay" +#line 3937 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Addition, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_571() -#line 3932 "cs-parser.jay" +#line 3946 "cs-parser.jay" { /* Shift/Reduce conflict*/ yyVal = new Binary (Binary.Operator.Subtraction, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_575() -#line 3949 "cs-parser.jay" +#line 3963 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LeftShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_576() -#line 3954 "cs-parser.jay" +#line 3968 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.RightShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_578() -#line 3963 "cs-parser.jay" +#line 3977 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LessThan, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_579() -#line 3968 "cs-parser.jay" +#line 3982 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.GreaterThan, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_580() -#line 3973 "cs-parser.jay" +#line 3987 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LessThanOrEqual, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_581() -#line 3978 "cs-parser.jay" +#line 3992 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.GreaterThanOrEqual, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_583() -#line 3987 "cs-parser.jay" +#line 4001 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Equality, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_584() -#line 3992 "cs-parser.jay" +#line 4006 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Inequality, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_586() -#line 4001 "cs-parser.jay" +#line 4015 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.BitwiseAnd, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_588() -#line 4010 "cs-parser.jay" +#line 4024 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.ExclusiveOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_590() -#line 4019 "cs-parser.jay" +#line 4033 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.BitwiseOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_592() -#line 4028 "cs-parser.jay" +#line 4042 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LogicalAnd, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_594() -#line 4037 "cs-parser.jay" +#line 4051 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LogicalOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_596() -#line 4046 "cs-parser.jay" +#line 4060 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-1+yyTop]), "null coalescing operator"); @@ -6827,84 +6841,84 @@ void case_596() } void case_598() -#line 4057 "cs-parser.jay" +#line 4071 "cs-parser.jay" { yyVal = new Conditional (new BooleanExpression ((Expression) yyVals[-4+yyTop]), (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } void case_600() -#line 4069 "cs-parser.jay" +#line 4083 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Multiply, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_601() -#line 4074 "cs-parser.jay" +#line 4088 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Division, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_602() -#line 4079 "cs-parser.jay" +#line 4093 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Modulus, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_603() -#line 4084 "cs-parser.jay" +#line 4098 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Addition, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_604() -#line 4089 "cs-parser.jay" +#line 4103 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Subtraction, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_605() -#line 4094 "cs-parser.jay" +#line 4108 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.LeftShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_606() -#line 4099 "cs-parser.jay" +#line 4113 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.RightShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_607() -#line 4104 "cs-parser.jay" +#line 4118 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.BitwiseAnd, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_608() -#line 4109 "cs-parser.jay" +#line 4123 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.BitwiseOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_609() -#line 4114 "cs-parser.jay" +#line 4128 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.ExclusiveOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_610() -#line 4122 "cs-parser.jay" +#line 4136 "cs-parser.jay" { var pars = new List (4); pars.Add ((Parameter) yyVals[0+yyTop]); @@ -6913,7 +6927,7 @@ void case_610() } void case_611() -#line 4129 "cs-parser.jay" +#line 4143 "cs-parser.jay" { var pars = (List) yyVals[-2+yyTop]; Parameter p = (Parameter)yyVals[0+yyTop]; @@ -6928,7 +6942,7 @@ void case_611() } void case_612() -#line 4145 "cs-parser.jay" +#line 4159 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; @@ -6936,7 +6950,7 @@ void case_612() } void case_613() -#line 4151 "cs-parser.jay" +#line 4165 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; @@ -6944,21 +6958,21 @@ void case_613() } void case_614() -#line 4157 "cs-parser.jay" +#line 4171 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new ImplicitLambdaParameter (lt.Value, lt.Location); } void case_616() -#line 4165 "cs-parser.jay" +#line 4179 "cs-parser.jay" { var pars_list = (List) yyVals[0+yyTop]; yyVal = new ParametersCompiled (pars_list.ToArray ()); } void case_620() -#line 4181 "cs-parser.jay" +#line 4195 "cs-parser.jay" { Block b = end_block (lexer.Location); b.IsCompilerGenerated = true; @@ -6967,14 +6981,14 @@ void case_620() } void case_622() -#line 4192 "cs-parser.jay" +#line 4206 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = EmptyExpression.Null; } void case_623() -#line 4200 "cs-parser.jay" +#line 4214 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; Parameter p = new ImplicitLambdaParameter (lt.Value, lt.Location); @@ -6982,14 +6996,14 @@ void case_623() } void case_624() -#line 4206 "cs-parser.jay" +#line 4220 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop])); } void case_625() -#line 4211 "cs-parser.jay" +#line 4225 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; Parameter p = new ImplicitLambdaParameter (lt.Value, lt.Location); @@ -6997,63 +7011,63 @@ void case_625() } void case_626() -#line 4217 "cs-parser.jay" +#line 4231 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop])); } void case_628() -#line 4226 "cs-parser.jay" +#line 4240 "cs-parser.jay" { valid_param_mod = 0; start_anonymous (true, (ParametersCompiled) yyVals[-2+yyTop], false, GetLocation (yyVals[-4+yyTop])); } void case_629() -#line 4231 "cs-parser.jay" +#line 4245 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-2+yyTop])); } void case_631() -#line 4240 "cs-parser.jay" +#line 4254 "cs-parser.jay" { valid_param_mod = 0; start_anonymous (true, (ParametersCompiled) yyVals[-2+yyTop], true, GetLocation (yyVals[-5+yyTop])); } void case_632() -#line 4245 "cs-parser.jay" +#line 4259 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-7+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-2+yyTop])); } void case_639() -#line 4268 "cs-parser.jay" +#line 4282 "cs-parser.jay" { yyVal = new RefValueExpr ((Expression) yyVals[-3+yyTop], (FullNamedExpression) yyVals[-1+yyTop], GetLocation (yyVals[-5+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_640() -#line 4273 "cs-parser.jay" +#line 4287 "cs-parser.jay" { yyVal = new RefTypeExpr ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_641() -#line 4278 "cs-parser.jay" +#line 4292 "cs-parser.jay" { yyVal = new MakeRefExpr ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_645() -#line 4307 "cs-parser.jay" +#line 4321 "cs-parser.jay" { MemberName name = MakeName ((MemberName) yyVals[0+yyTop]); Class c = new Class (current_namespace, current_class, name, (Modifiers) yyVals[-4+yyTop], (Attributes) yyVals[-5+yyTop]); @@ -7065,7 +7079,7 @@ void case_645() } void case_646() -#line 4318 "cs-parser.jay" +#line 4332 "cs-parser.jay" { lexer.ConstraintsParsing = false; @@ -7079,7 +7093,7 @@ void case_646() } void case_647() -#line 4330 "cs-parser.jay" +#line 4344 "cs-parser.jay" { --lexer.parsing_declaration; if (doc_support) @@ -7087,21 +7101,21 @@ void case_647() } void case_648() -#line 4336 "cs-parser.jay" +#line 4350 "cs-parser.jay" { lbag.AppendToMember (current_class, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); yyVal = pop_current_class (); } void case_651() -#line 4351 "cs-parser.jay" +#line 4365 "cs-parser.jay" { mod_locations = null; yyVal = ModifierNone; } void case_654() -#line 4361 "cs-parser.jay" +#line 4375 "cs-parser.jay" { var m1 = (Modifiers) yyVals[-1+yyTop]; var m2 = (Modifiers) yyVals[0+yyTop]; @@ -7119,7 +7133,7 @@ void case_654() } void case_655() -#line 4380 "cs-parser.jay" +#line 4394 "cs-parser.jay" { yyVal = Modifiers.NEW; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); @@ -7129,91 +7143,91 @@ void case_655() } void case_656() -#line 4388 "cs-parser.jay" +#line 4402 "cs-parser.jay" { yyVal = Modifiers.PUBLIC; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_657() -#line 4393 "cs-parser.jay" +#line 4407 "cs-parser.jay" { yyVal = Modifiers.PROTECTED; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_658() -#line 4398 "cs-parser.jay" +#line 4412 "cs-parser.jay" { yyVal = Modifiers.INTERNAL; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_659() -#line 4403 "cs-parser.jay" +#line 4417 "cs-parser.jay" { yyVal = Modifiers.PRIVATE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_660() -#line 4408 "cs-parser.jay" +#line 4422 "cs-parser.jay" { yyVal = Modifiers.ABSTRACT; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_661() -#line 4413 "cs-parser.jay" +#line 4427 "cs-parser.jay" { yyVal = Modifiers.SEALED; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_662() -#line 4418 "cs-parser.jay" +#line 4432 "cs-parser.jay" { yyVal = Modifiers.STATIC; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_663() -#line 4423 "cs-parser.jay" +#line 4437 "cs-parser.jay" { yyVal = Modifiers.READONLY; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_664() -#line 4428 "cs-parser.jay" +#line 4442 "cs-parser.jay" { yyVal = Modifiers.VIRTUAL; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_665() -#line 4433 "cs-parser.jay" +#line 4447 "cs-parser.jay" { yyVal = Modifiers.OVERRIDE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_666() -#line 4438 "cs-parser.jay" +#line 4452 "cs-parser.jay" { yyVal = Modifiers.EXTERN; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_667() -#line 4443 "cs-parser.jay" +#line 4457 "cs-parser.jay" { yyVal = Modifiers.VOLATILE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_668() -#line 4448 "cs-parser.jay" +#line 4462 "cs-parser.jay" { yyVal = Modifiers.UNSAFE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); @@ -7222,21 +7236,21 @@ void case_668() } void case_669() -#line 4455 "cs-parser.jay" +#line 4469 "cs-parser.jay" { yyVal = Modifiers.ASYNC; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_674() -#line 4476 "cs-parser.jay" +#line 4490 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } void case_675() -#line 4484 "cs-parser.jay" +#line 4498 "cs-parser.jay" { var constraints = new List (1); constraints.Add ((Constraints) yyVals[0+yyTop]); @@ -7244,7 +7258,7 @@ void case_675() } void case_676() -#line 4490 "cs-parser.jay" +#line 4504 "cs-parser.jay" { var constraints = (List) yyVals[-1+yyTop]; Constraints new_constraint = (Constraints)yyVals[0+yyTop]; @@ -7262,14 +7276,14 @@ void case_676() } void case_677() -#line 4509 "cs-parser.jay" +#line 4523 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; yyVal = new Constraints (new SimpleMemberName (lt.Value, lt.Location), (List) yyVals[0+yyTop], GetLocation (yyVals[-3+yyTop])); } void case_678() -#line 4517 "cs-parser.jay" +#line 4531 "cs-parser.jay" { var constraints = new List (1); constraints.Add ((FullNamedExpression) yyVals[0+yyTop]); @@ -7277,7 +7291,7 @@ void case_678() } void case_679() -#line 4523 "cs-parser.jay" +#line 4537 "cs-parser.jay" { var constraints = (List) yyVals[-2+yyTop]; var prev = constraints [constraints.Count - 1] as SpecialContraintExpr; @@ -7302,7 +7316,7 @@ void case_679() } void case_680() -#line 4549 "cs-parser.jay" +#line 4563 "cs-parser.jay" { if (yyVals[0+yyTop] is ComposedCast) report.Error (706, GetLocation (yyVals[0+yyTop]), "Invalid constraint type `{0}'", ((ComposedCast)yyVals[0+yyTop]).GetSignatureForError ()); @@ -7311,14 +7325,14 @@ void case_680() } void case_681() -#line 4556 "cs-parser.jay" +#line 4570 "cs-parser.jay" { yyVal = new SpecialContraintExpr (SpecialConstraint.Constructor, GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_685() -#line 4576 "cs-parser.jay" +#line 4590 "cs-parser.jay" { if (lang_version <= LanguageVersion.V_3) FeatureIsNotAvailable (lexer.Location, "generic type variance"); @@ -7327,77 +7341,77 @@ void case_685() } void case_688() -#line 4610 "cs-parser.jay" +#line 4624 "cs-parser.jay" { ++lexer.parsing_block; start_block (GetLocation (yyVals[0+yyTop])); } void case_690() -#line 4622 "cs-parser.jay" +#line 4636 "cs-parser.jay" { --lexer.parsing_block; yyVal = end_block (GetLocation (yyVals[0+yyTop])); } void case_691() -#line 4627 "cs-parser.jay" +#line 4641 "cs-parser.jay" { --lexer.parsing_block; yyVal = end_block (lexer.Location); } void case_692() -#line 4636 "cs-parser.jay" +#line 4650 "cs-parser.jay" { ++lexer.parsing_block; current_block.StartLocation = GetLocation (yyVals[0+yyTop]); } void case_693() -#line 4641 "cs-parser.jay" +#line 4655 "cs-parser.jay" { --lexer.parsing_block; yyVal = end_block (GetLocation (yyVals[0+yyTop])); } void case_701() -#line 4668 "cs-parser.jay" +#line 4682 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } void case_734() -#line 4732 "cs-parser.jay" +#line 4746 "cs-parser.jay" { report.Error (1023, GetLocation (yyVals[0+yyTop]), "An embedded statement may not be a declaration or labeled statement"); yyVal = null; } void case_735() -#line 4737 "cs-parser.jay" +#line 4751 "cs-parser.jay" { report.Error (1023, GetLocation (yyVals[0+yyTop]), "An embedded statement may not be a declaration or labeled statement"); yyVal = null; } void case_736() -#line 4742 "cs-parser.jay" +#line 4756 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new EmptyStatement (GetLocation (yyVals[0+yyTop])); } void case_737() -#line 4750 "cs-parser.jay" +#line 4764 "cs-parser.jay" { /* Uses lexer.Location because semicolon location is not kept in quick mode*/ yyVal = new EmptyStatement (lexer.Location); } void case_738() -#line 4758 "cs-parser.jay" +#line 4772 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; LabeledStatement labeled = new LabeledStatement (lt.Value, current_block, lt.Location); @@ -7407,7 +7421,7 @@ void case_738() } void case_741() -#line 4771 "cs-parser.jay" +#line 4785 "cs-parser.jay" { if (yyVals[-1+yyTop] is VarExpr) yyVals[-1+yyTop] = new SimpleName ("var", ((VarExpr) yyVals[-1+yyTop]).Location); @@ -7416,7 +7430,7 @@ void case_741() } void case_742() -#line 4787 "cs-parser.jay" +#line 4801 "cs-parser.jay" { /* Ok, the above "primary_expression" is there to get rid of*/ /* both reduce/reduce and shift/reduces in the grammar, it should*/ @@ -7448,7 +7462,7 @@ void case_742() } void case_743() -#line 4817 "cs-parser.jay" +#line 4831 "cs-parser.jay" { ATypeNameExpression expr = yyVals[-1+yyTop] as ATypeNameExpression; @@ -7461,7 +7475,7 @@ void case_743() } void case_744() -#line 4828 "cs-parser.jay" +#line 4842 "cs-parser.jay" { if (yyVals[0+yyTop] == null) yyVal = yyVals[-1+yyTop]; @@ -7470,21 +7484,21 @@ void case_744() } void case_747() -#line 4843 "cs-parser.jay" +#line 4857 "cs-parser.jay" { Expression.Error_VoidInvalidInTheContext (GetLocation (yyVals[0+yyTop]), report); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } void case_749() -#line 4852 "cs-parser.jay" +#line 4866 "cs-parser.jay" { ((ComposedTypeSpecifier) yyVals[-1+yyTop]).Next = (ComposedTypeSpecifier) yyVals[0+yyTop]; yyVal = yyVals[-1+yyTop]; } void case_751() -#line 4867 "cs-parser.jay" +#line 4881 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_block, lt.Value, lt.Location); @@ -7493,7 +7507,7 @@ void case_751() } void case_752() -#line 4874 "cs-parser.jay" +#line 4888 "cs-parser.jay" { yyVal = current_variable; current_variable = null; @@ -7501,7 +7515,7 @@ void case_752() } void case_753() -#line 4880 "cs-parser.jay" +#line 4894 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.Constant, lt.Location); @@ -7510,7 +7524,7 @@ void case_753() } void case_754() -#line 4887 "cs-parser.jay" +#line 4901 "cs-parser.jay" { if (current_variable.Initializer != null) { lbag.AddLocation (current_variable, GetLocation (yyVals[-6+yyTop]), savedLocation, GetLocation (yyVals[0+yyTop])); @@ -7522,14 +7536,14 @@ void case_754() } void case_756() -#line 4901 "cs-parser.jay" +#line 4915 "cs-parser.jay" { current_variable.Initializer = (Expression) yyVals[0+yyTop]; lbag.AppendTo (current_variable, GetLocation (yyVals[-1+yyTop])); } void case_757() -#line 4906 "cs-parser.jay" +#line 4920 "cs-parser.jay" { if (yyToken == Token.OPEN_BRACKET_EXPR) { report.Error (650, lexer.Location, @@ -7540,7 +7554,7 @@ void case_757() } void case_762() -#line 4928 "cs-parser.jay" +#line 4942 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_variable.Variable, lt.Value, lt.Location); @@ -7551,7 +7565,7 @@ void case_762() } void case_763() -#line 4937 "cs-parser.jay" +#line 4951 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var li = new LocalVariable (current_variable.Variable, lt.Value, lt.Location); @@ -7562,14 +7576,14 @@ void case_763() } void case_765() -#line 4953 "cs-parser.jay" +#line 4967 "cs-parser.jay" { savedLocation = GetLocation (yyVals[-1+yyTop]); current_variable.Initializer = (Expression) yyVals[0+yyTop]; } void case_770() -#line 4971 "cs-parser.jay" +#line 4985 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.Constant, lt.Location); @@ -7580,28 +7594,28 @@ void case_770() } void case_772() -#line 4984 "cs-parser.jay" +#line 4998 "cs-parser.jay" { yyVal = new StackAlloc ((Expression) yyVals[-3+yyTop], (Expression) yyVals[-1+yyTop], GetLocation (yyVals[-4+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_773() -#line 4989 "cs-parser.jay" +#line 5003 "cs-parser.jay" { report.Error (1575, GetLocation (yyVals[-1+yyTop]), "A stackalloc expression requires [] after type"); yyVal = new StackAlloc ((Expression) yyVals[0+yyTop], null, GetLocation (yyVals[-1+yyTop])); } void case_774() -#line 4997 "cs-parser.jay" +#line 5011 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } void case_778() -#line 5015 "cs-parser.jay" +#line 5029 "cs-parser.jay" { ExpressionStatement s = yyVals[0+yyTop] as ExpressionStatement; if (s == null) { @@ -7613,7 +7627,7 @@ void case_778() } void case_779() -#line 5028 "cs-parser.jay" +#line 5042 "cs-parser.jay" { Expression expr = (Expression) yyVals[0+yyTop]; ExpressionStatement s; @@ -7623,14 +7637,14 @@ void case_779() } void case_780() -#line 5036 "cs-parser.jay" +#line 5050 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new EmptyStatement (GetLocation (yyVals[0+yyTop])); } void case_783() -#line 5050 "cs-parser.jay" +#line 5064 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -7640,7 +7654,7 @@ void case_783() } void case_784() -#line 5059 "cs-parser.jay" +#line 5073 "cs-parser.jay" { yyVal = new If ((BooleanExpression) yyVals[-4+yyTop], (Statement) yyVals[-2+yyTop], (Statement) yyVals[0+yyTop], GetLocation (yyVals[-6+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-5+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); @@ -7652,7 +7666,7 @@ void case_784() } void case_786() -#line 5076 "cs-parser.jay" +#line 5090 "cs-parser.jay" { yyVal = new Switch ((Expression) yyVals[-5+yyTop], (ExplicitBlock) current_block.Explicit, (List) yyVals[-1+yyTop], GetLocation (yyVals[-7+yyTop])); end_block (GetLocation (yyVals[0+yyTop])); @@ -7660,14 +7674,14 @@ void case_786() } void case_787() -#line 5085 "cs-parser.jay" +#line 5099 "cs-parser.jay" { report.Warning (1522, 1, current_block.StartLocation, "Empty switch block"); yyVal = new List (); } void case_789() -#line 5094 "cs-parser.jay" +#line 5108 "cs-parser.jay" { var sections = new List (4); @@ -7676,7 +7690,7 @@ void case_789() } void case_790() -#line 5101 "cs-parser.jay" +#line 5115 "cs-parser.jay" { var sections = (List) yyVals[-1+yyTop]; @@ -7685,14 +7699,14 @@ void case_790() } void case_791() -#line 5108 "cs-parser.jay" +#line 5122 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new List (); } void case_794() -#line 5127 "cs-parser.jay" +#line 5141 "cs-parser.jay" { var labels = new List (2); @@ -7701,7 +7715,7 @@ void case_794() } void case_795() -#line 5134 "cs-parser.jay" +#line 5148 "cs-parser.jay" { var labels = (List) (yyVals[-1+yyTop]); labels.Add ((SwitchLabel) yyVals[0+yyTop]); @@ -7710,14 +7724,14 @@ void case_795() } void case_796() -#line 5144 "cs-parser.jay" +#line 5158 "cs-parser.jay" { yyVal = new SwitchLabel ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_802() -#line 5163 "cs-parser.jay" +#line 5177 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -7727,21 +7741,21 @@ void case_802() } void case_803() -#line 5175 "cs-parser.jay" +#line 5189 "cs-parser.jay" { yyVal = new Do ((Statement) yyVals[-5+yyTop], (BooleanExpression) yyVals[-2+yyTop], GetLocation (yyVals[-6+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_804() -#line 5183 "cs-parser.jay" +#line 5197 "cs-parser.jay" { start_block (GetLocation (yyVals[0+yyTop])); current_block.IsCompilerGenerated = true; } void case_806() -#line 5199 "cs-parser.jay" +#line 5213 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -7755,14 +7769,14 @@ void case_806() } void case_807() -#line 5211 "cs-parser.jay" +#line 5225 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = end_block (current_block.StartLocation); } void case_810() -#line 5224 "cs-parser.jay" +#line 5238 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_block, lt.Value, lt.Location); @@ -7771,14 +7785,14 @@ void case_810() } void case_811() -#line 5231 "cs-parser.jay" +#line 5245 "cs-parser.jay" { yyVal = current_variable; current_variable = null; } void case_819() -#line 5255 "cs-parser.jay" +#line 5269 "cs-parser.jay" { var sl = yyVals[-2+yyTop] as StatementList; if (sl == null) { @@ -7793,14 +7807,14 @@ void case_819() } void case_820() -#line 5271 "cs-parser.jay" +#line 5285 "cs-parser.jay" { report.Error (230, GetLocation (yyVals[-5+yyTop]), "Type and identifier are both required in a foreach statement"); yyVal = null; } void case_821() -#line 5276 "cs-parser.jay" +#line 5290 "cs-parser.jay" { start_block (GetLocation (yyVals[-5+yyTop])); current_block.IsCompilerGenerated = true; @@ -7811,7 +7825,7 @@ void case_821() } void case_822() -#line 5285 "cs-parser.jay" +#line 5299 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -7824,21 +7838,21 @@ void case_822() } void case_829() -#line 5308 "cs-parser.jay" +#line 5322 "cs-parser.jay" { yyVal = new Break (GetLocation (yyVals[-1+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } void case_830() -#line 5316 "cs-parser.jay" +#line 5330 "cs-parser.jay" { yyVal = new Continue (GetLocation (yyVals[-1+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } void case_831() -#line 5324 "cs-parser.jay" +#line 5338 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new Goto (lt.Value, GetLocation (yyVals[-2+yyTop])); @@ -7846,35 +7860,35 @@ void case_831() } void case_832() -#line 5330 "cs-parser.jay" +#line 5344 "cs-parser.jay" { yyVal = new GotoCase ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_833() -#line 5335 "cs-parser.jay" +#line 5349 "cs-parser.jay" { yyVal = new GotoDefault (GetLocation (yyVals[-2+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_834() -#line 5343 "cs-parser.jay" +#line 5357 "cs-parser.jay" { yyVal = new Return ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } void case_835() -#line 5351 "cs-parser.jay" +#line 5365 "cs-parser.jay" { yyVal = new Throw ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } void case_836() -#line 5359 "cs-parser.jay" +#line 5373 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; string s = lt.Value; @@ -7892,7 +7906,7 @@ void case_836() } void case_837() -#line 5375 "cs-parser.jay" +#line 5389 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; string s = lt.Value; @@ -7908,28 +7922,28 @@ void case_837() } void case_841() -#line 5401 "cs-parser.jay" +#line 5415 "cs-parser.jay" { yyVal = new TryFinally ((Statement) yyVals[-2+yyTop], (Block) yyVals[0+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-1+yyTop])); } void case_842() -#line 5406 "cs-parser.jay" +#line 5420 "cs-parser.jay" { yyVal = new TryFinally (new TryCatch ((Block) yyVals[-3+yyTop], (List) yyVals[-2+yyTop], GetLocation (yyVals[-4+yyTop]), true), (Block) yyVals[0+yyTop], GetLocation (yyVals[-4+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-1+yyTop])); } void case_843() -#line 5411 "cs-parser.jay" +#line 5425 "cs-parser.jay" { report.Error (1524, GetLocation (yyVals[-2+yyTop]), "Expected catch or finally"); yyVal = null; } void case_844() -#line 5419 "cs-parser.jay" +#line 5433 "cs-parser.jay" { var l = new List (2); @@ -7938,7 +7952,7 @@ void case_844() } void case_845() -#line 5426 "cs-parser.jay" +#line 5440 "cs-parser.jay" { var l = (List) yyVals[-1+yyTop]; @@ -7956,7 +7970,7 @@ void case_845() } void case_849() -#line 5454 "cs-parser.jay" +#line 5468 "cs-parser.jay" { start_block (GetLocation (yyVals[-3+yyTop])); var c = new Catch (current_block, GetLocation (yyVals[-4+yyTop])); @@ -7973,7 +7987,7 @@ void case_849() } void case_851() -#line 5473 "cs-parser.jay" +#line 5487 "cs-parser.jay" { if (yyToken == Token.CLOSE_PARENS) { report.Error (1015, lexer.Location, @@ -7986,14 +8000,14 @@ void case_851() } void case_854() -#line 5501 "cs-parser.jay" +#line 5515 "cs-parser.jay" { if (!settings.Unsafe) Error_UnsafeCodeNotAllowed (GetLocation (yyVals[0+yyTop])); } void case_856() -#line 5511 "cs-parser.jay" +#line 5525 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8003,7 +8017,7 @@ void case_856() } void case_857() -#line 5522 "cs-parser.jay" +#line 5536 "cs-parser.jay" { start_block (GetLocation (yyVals[-2+yyTop])); @@ -8015,14 +8029,14 @@ void case_857() } void case_858() -#line 5532 "cs-parser.jay" +#line 5546 "cs-parser.jay" { yyVal = current_variable; current_variable = null; } void case_859() -#line 5537 "cs-parser.jay" +#line 5551 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8034,7 +8048,7 @@ void case_859() } void case_860() -#line 5550 "cs-parser.jay" +#line 5564 "cs-parser.jay" { start_block (GetLocation (yyVals[-2+yyTop])); @@ -8046,14 +8060,14 @@ void case_860() } void case_861() -#line 5560 "cs-parser.jay" +#line 5574 "cs-parser.jay" { yyVal = current_variable; current_variable = null; } void case_862() -#line 5565 "cs-parser.jay" +#line 5579 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8065,7 +8079,7 @@ void case_862() } void case_863() -#line 5575 "cs-parser.jay" +#line 5589 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8076,14 +8090,14 @@ void case_863() } void case_865() -#line 5591 "cs-parser.jay" +#line 5605 "cs-parser.jay" { current_variable.Initializer = (Expression) yyVals[0+yyTop]; yyVal = current_variable; } void case_866() -#line 5602 "cs-parser.jay" +#line 5616 "cs-parser.jay" { lexer.query_parsing = false; @@ -8097,7 +8111,7 @@ void case_866() } void case_867() -#line 5614 "cs-parser.jay" +#line 5628 "cs-parser.jay" { Linq.AQueryClause from = yyVals[-1+yyTop] as Linq.AQueryClause; @@ -8109,7 +8123,7 @@ void case_867() } void case_868() -#line 5625 "cs-parser.jay" +#line 5639 "cs-parser.jay" { lexer.query_parsing = false; yyVal = yyVals[-1+yyTop]; @@ -8119,7 +8133,7 @@ void case_868() } void case_869() -#line 5632 "cs-parser.jay" +#line 5646 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; current_block.SetEndLocation (lexer.Location); @@ -8127,7 +8141,7 @@ void case_869() } void case_870() -#line 5641 "cs-parser.jay" +#line 5655 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -8137,7 +8151,7 @@ void case_870() } void case_871() -#line 5649 "cs-parser.jay" +#line 5663 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -8151,7 +8165,7 @@ void case_871() } void case_872() -#line 5664 "cs-parser.jay" +#line 5678 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -8161,7 +8175,7 @@ void case_872() } void case_873() -#line 5672 "cs-parser.jay" +#line 5686 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -8175,7 +8189,7 @@ void case_873() } void case_875() -#line 5691 "cs-parser.jay" +#line 5705 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; var sn = new Linq.RangeVariable (lt.Value, lt.Location); @@ -8188,7 +8202,7 @@ void case_875() } void case_877() -#line 5706 "cs-parser.jay" +#line 5720 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; var sn = new Linq.RangeVariable (lt.Value, lt.Location); @@ -8204,7 +8218,7 @@ void case_877() } void case_878() -#line 5723 "cs-parser.jay" +#line 5737 "cs-parser.jay" { Linq.AQueryClause head = (Linq.AQueryClause)yyVals[-1+yyTop]; @@ -8221,14 +8235,14 @@ void case_878() } void case_880() -#line 5739 "cs-parser.jay" +#line 5753 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } void case_882() -#line 5751 "cs-parser.jay" +#line 5765 "cs-parser.jay" { yyVal = new Linq.Select ((Linq.QueryBlock)current_block, (Expression)yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); @@ -8237,7 +8251,7 @@ void case_882() } void case_883() -#line 5758 "cs-parser.jay" +#line 5772 "cs-parser.jay" { if (linq_clause_blocks == null) linq_clause_blocks = new Stack (); @@ -8247,7 +8261,7 @@ void case_883() } void case_884() -#line 5766 "cs-parser.jay" +#line 5780 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8256,7 +8270,7 @@ void case_884() } void case_885() -#line 5773 "cs-parser.jay" +#line 5787 "cs-parser.jay" { yyVal = new Linq.GroupBy ((Linq.QueryBlock)current_block, (Expression)yyVals[-3+yyTop], linq_clause_blocks.Pop (), (Expression)yyVals[0+yyTop], GetLocation (yyVals[-5+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); @@ -8266,14 +8280,14 @@ void case_885() } void case_889() -#line 5790 "cs-parser.jay" +#line 5804 "cs-parser.jay" { ((Linq.AQueryClause)yyVals[-1+yyTop]).Tail.Next = (Linq.AQueryClause)yyVals[0+yyTop]; yyVal = yyVals[-1+yyTop]; } void case_896() -#line 5810 "cs-parser.jay" +#line 5824 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; var sn = new Linq.RangeVariable (lt.Value, lt.Location); @@ -8287,7 +8301,7 @@ void case_896() } void case_898() -#line 5829 "cs-parser.jay" +#line 5843 "cs-parser.jay" { yyVal = new Linq.Where ((Linq.QueryBlock)current_block, (Expression)yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); @@ -8296,7 +8310,7 @@ void case_898() } void case_899() -#line 5839 "cs-parser.jay" +#line 5853 "cs-parser.jay" { if (linq_clause_blocks == null) linq_clause_blocks = new Stack (); @@ -8306,7 +8320,7 @@ void case_899() } void case_900() -#line 5847 "cs-parser.jay" +#line 5861 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8316,7 +8330,7 @@ void case_900() } void case_901() -#line 5855 "cs-parser.jay" +#line 5869 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -8326,7 +8340,7 @@ void case_901() } void case_902() -#line 5863 "cs-parser.jay" +#line 5877 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -8366,7 +8380,7 @@ void case_902() } void case_903() -#line 5901 "cs-parser.jay" +#line 5915 "cs-parser.jay" { if (linq_clause_blocks == null) linq_clause_blocks = new Stack (); @@ -8376,7 +8390,7 @@ void case_903() } void case_904() -#line 5909 "cs-parser.jay" +#line 5923 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8386,7 +8400,7 @@ void case_904() } void case_905() -#line 5917 "cs-parser.jay" +#line 5931 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -8396,7 +8410,7 @@ void case_905() } void case_906() -#line 5925 "cs-parser.jay" +#line 5939 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -8438,7 +8452,7 @@ void case_906() } void case_910() -#line 5980 "cs-parser.jay" +#line 5994 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8447,7 +8461,7 @@ void case_910() } void case_912() -#line 5991 "cs-parser.jay" +#line 6005 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8456,14 +8470,14 @@ void case_912() } void case_913() -#line 5998 "cs-parser.jay" +#line 6012 "cs-parser.jay" { ((Linq.AQueryClause)yyVals[-3+yyTop]).Next = (Linq.AQueryClause)yyVals[0+yyTop]; yyVal = yyVals[-3+yyTop]; } void case_915() -#line 6007 "cs-parser.jay" +#line 6021 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8472,42 +8486,42 @@ void case_915() } void case_916() -#line 6014 "cs-parser.jay" +#line 6028 "cs-parser.jay" { ((Linq.AQueryClause)yyVals[-3+yyTop]).Tail.Next = (Linq.AQueryClause)yyVals[0+yyTop]; yyVal = yyVals[-3+yyTop]; } void case_918() -#line 6026 "cs-parser.jay" +#line 6040 "cs-parser.jay" { yyVal = new Linq.OrderByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_919() -#line 6031 "cs-parser.jay" +#line 6045 "cs-parser.jay" { yyVal = new Linq.OrderByDescending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_921() -#line 6043 "cs-parser.jay" +#line 6057 "cs-parser.jay" { yyVal = new Linq.ThenByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_922() -#line 6048 "cs-parser.jay" +#line 6062 "cs-parser.jay" { yyVal = new Linq.ThenByDescending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_924() -#line 6058 "cs-parser.jay" +#line 6072 "cs-parser.jay" { /* query continuation block is not linked with query block but with block*/ /* before. This means each query can use same range variable names for*/ @@ -8525,7 +8539,7 @@ void case_924() } void case_925() -#line 6074 "cs-parser.jay" +#line 6088 "cs-parser.jay" { var current_block = linq_clause_blocks.Pop (); var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; @@ -8536,7 +8550,7 @@ void case_925() } void case_928() -#line 6101 "cs-parser.jay" +#line 6115 "cs-parser.jay" { current_container = new Class (current_namespace, current_class, new MemberName (""), Modifiers.PUBLIC, null); current_class = current_container; @@ -8568,7 +8582,7 @@ void case_928() } void case_929() -#line 6131 "cs-parser.jay" +#line 6145 "cs-parser.jay" { --lexer.parsing_block; Method method = (Method) oob_stack.Pop (); @@ -8580,7 +8594,7 @@ void case_929() } void case_939() -#line 6174 "cs-parser.jay" +#line 6188 "cs-parser.jay" { module.DocumentationBuilder.ParsedBuiltinType = (TypeExpression)yyVals[-1+yyTop]; module.DocumentationBuilder.ParsedParameters = (List)yyVals[0+yyTop]; @@ -8588,7 +8602,7 @@ void case_939() } void case_940() -#line 6180 "cs-parser.jay" +#line 6194 "cs-parser.jay" { module.DocumentationBuilder.ParsedBuiltinType = (TypeExpression)yyVals[-3+yyTop]; module.DocumentationBuilder.ParsedParameters = (List)yyVals[0+yyTop]; @@ -8597,14 +8611,14 @@ void case_940() } void case_943() -#line 6195 "cs-parser.jay" +#line 6209 "cs-parser.jay" { module.DocumentationBuilder.ParsedParameters = (List)yyVals[-1+yyTop]; yyVal = new MemberName ((MemberName) yyVals[-6+yyTop], new MemberName (MemberCache.IndexerNameAlias)); } void case_944() -#line 6200 "cs-parser.jay" +#line 6214 "cs-parser.jay" { var p = (List)yyVals[0+yyTop] ?? new List (1); p.Add (new DocumentationParameter ((FullNamedExpression) yyVals[-1+yyTop])); @@ -8614,7 +8628,7 @@ void case_944() } void case_945() -#line 6208 "cs-parser.jay" +#line 6222 "cs-parser.jay" { var p = (List)yyVals[0+yyTop] ?? new List (1); p.Add (new DocumentationParameter ((FullNamedExpression) yyVals[-1+yyTop])); @@ -8624,7 +8638,7 @@ void case_945() } void case_946() -#line 6216 "cs-parser.jay" +#line 6230 "cs-parser.jay" { var p = (List)yyVals[0+yyTop] ?? new List (1); module.DocumentationBuilder.ParsedParameters = p; @@ -8633,7 +8647,7 @@ void case_946() } void case_954() -#line 6254 "cs-parser.jay" +#line 6268 "cs-parser.jay" { var parameters = new List (); parameters.Add ((DocumentationParameter) yyVals[0+yyTop]); @@ -8641,7 +8655,7 @@ void case_954() } void case_955() -#line 6260 "cs-parser.jay" +#line 6274 "cs-parser.jay" { var parameters = yyVals[-2+yyTop] as List; parameters.Add ((DocumentationParameter) yyVals[0+yyTop]); @@ -8649,7 +8663,7 @@ void case_955() } void case_956() -#line 6269 "cs-parser.jay" +#line 6283 "cs-parser.jay" { if (yyVals[-1+yyTop] != null) yyVal = new DocumentationParameter ((Parameter.Modifier) yyVals[-1+yyTop], (FullNamedExpression) yyVals[0+yyTop]); @@ -11985,7 +11999,7 @@ void case_956() -1, -1, -1, -1, -1, -1, -1, -1, -1, 362, }; -#line 6278 "cs-parser.jay" +#line 6292 "cs-parser.jay" // // A class used to hold info about an operator declarator diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay index 5fa45a38ed..4c0d6436a6 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay @@ -146,6 +146,7 @@ namespace Mono.CSharp Location savedAttrParenOpenLocation, savedAttrParenCloseLocation; Stack> locationListStack = new Stack> (); // used for type parameters List attributeCommas = new List (); + List parameterListCommas = new List (); object lastYYVal; @@ -1434,20 +1435,25 @@ formal_parameter_list { var pars_list = (List) $1; $$ = new ParametersCompiled (pars_list.ToArray ()); - lbag.AddLocation ($$, lbag.GetLocations (pars_list)); + lbag.AddLocation ($$, parameterListCommas); } | fixed_parameters COMMA parameter_array { var pars_list = (List) $1; pars_list.Add ((Parameter) $3); - + parameterListCommas.Add (GetLocation ($2)); + $$ = new ParametersCompiled (pars_list.ToArray ()); + lbag.AddLocation ($$, parameterListCommas); } | fixed_parameters COMMA arglist_modifier { var pars_list = (List) $1; pars_list.Add (new ArglistParameter (GetLocation ($3))); + parameterListCommas.Add (GetLocation ($2)); + $$ = new ParametersCompiled (pars_list.ToArray (), true); + lbag.AddLocation ($$, parameterListCommas); } | parameter_array COMMA error { @@ -1455,6 +1461,7 @@ formal_parameter_list report.Error (231, ((Parameter) $1).Location, "A params parameter must be the last parameter in a formal parameter list"); $$ = new ParametersCompiled (new Parameter[] { (Parameter) $1 } ); + lbag.AddLocation ($$, parameterListCommas); } | fixed_parameters COMMA parameter_array COMMA error { @@ -1463,14 +1470,18 @@ formal_parameter_list var pars_list = (List) $1; pars_list.Add (new ArglistParameter (GetLocation ($3))); - + parameterListCommas.Add (GetLocation ($2)); + parameterListCommas.Add (GetLocation ($4)); + $$ = new ParametersCompiled (pars_list.ToArray (), true); + lbag.AddLocation ($$, parameterListCommas); } | arglist_modifier COMMA error { report.Error (257, GetLocation ($1), "An __arglist parameter must be the last parameter in a formal parameter list"); $$ = new ParametersCompiled (new Parameter [] { new ArglistParameter (GetLocation ($1)) }, true); + lbag.AddLocation ($$, parameterListCommas); } | fixed_parameters COMMA ARGLIST COMMA error { @@ -1478,8 +1489,11 @@ formal_parameter_list var pars_list = (List) $1; pars_list.Add (new ArglistParameter (GetLocation ($3))); + parameterListCommas.Add (GetLocation ($2)); + parameterListCommas.Add (GetLocation ($4)); $$ = new ParametersCompiled (pars_list.ToArray (), true); + lbag.AddLocation ($$, parameterListCommas); } | parameter_array { @@ -1502,7 +1516,7 @@ fixed_parameters parameters_bucket.Clear (); Parameter p = (Parameter) $1; parameters_bucket.Add (p); - + parameterListCommas.Clear (); default_parameter_used = p.HasDefaultValue; $$ = parameters_bucket; } @@ -1519,7 +1533,7 @@ fixed_parameters default_parameter_used |= p.HasDefaultValue; pars.Add (p); - lbag.AppendTo (pars, GetLocation ($2)); + parameterListCommas.Add (GetLocation ($2)); } $$ = $1;