diff --git a/ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs b/ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs index 76535eee0a..157086f41e 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs @@ -134,10 +134,7 @@ namespace ICSharpCode.NRefactory.CSharp var memberType = new MemberType (); memberType.AddChild (ConvertToType (ma.LeftExpression), MemberType.TargetRole); - - var location = LocationsBag.GetLocations (ma); - if (location != null) - memberType.AddChild (new CSharpTokenNode (Convert (location[0]), 1), MemberType.Roles.Dot); + memberType.AddChild (new CSharpTokenNode (Convert (ma.DotLocation), 1), MemberType.Roles.Dot); memberType.MemberNameToken = Identifier.Create (ma.Name, Convert (ma.Location)); @@ -292,10 +289,8 @@ namespace ICSharpCode.NRefactory.CSharp namespaceDecl.InsertChildBefore (insertPos, newIdent, NamespaceDeclaration.Roles.Identifier); insertPos = newIdent; - var location = LocationsBag.GetLocations (memberName); - - if (location != null) { - var dotToken = new CSharpTokenNode (Convert (location[0]), 1); + if (!memberName.DotLocation.IsNull) { + var dotToken = new CSharpTokenNode (Convert (memberName.DotLocation), 1); namespaceDecl.InsertChildBefore (insertPos, dotToken, NamespaceDeclaration.Roles.Dot); insertPos = dotToken; } @@ -342,9 +337,8 @@ namespace ICSharpCode.NRefactory.CSharp t.IsDoubleColon = memberName.IsDoubleColon; t.AddChild (ConvertImport (memberName.Left), MemberType.TargetRole); - var location = LocationsBag.GetLocations (memberName); - if (location != null) - t.AddChild (new CSharpTokenNode (Convert (location[0]), 1), MemberType.Roles.Dot); + if (!memberName.DotLocation.IsNull) + t.AddChild (new CSharpTokenNode (Convert (memberName.DotLocation), 1), MemberType.Roles.Dot); t.AddChild (Identifier.Create (memberName.Name, Convert(memberName.Location)), MemberType.Roles.Identifier); AddTypeArguments (t, memberName.TypeArguments); @@ -1914,9 +1908,9 @@ namespace ICSharpCode.NRefactory.CSharp var leftExpr = memberAccess.LeftExpression.Accept (this); result.AddChild ((Expression)leftExpr, MemberReferenceExpression.Roles.TargetExpression); } - var location = LocationsBag.GetLocations (memberAccess); - if (location != null) - result.AddChild (new CSharpTokenNode (Convert (location[0]), 1), MemberReferenceExpression.Roles.Dot); + if (!memberAccess.DotLocation.IsNull) { + result.AddChild (new CSharpTokenNode (Convert (memberAccess.DotLocation), 1), MemberReferenceExpression.Roles.Dot); + } } result.AddChild (Identifier.Create (memberAccess.Name, Convert (memberAccess.Location)), MemberReferenceExpression.Roles.Identifier); diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs index 03c561ac43..cfd54b5c56 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs @@ -1459,7 +1459,7 @@ case 41: case_41(); break; case 42: -#line 643 "cs-parser.jay" +#line 644 "cs-parser.jay" { current_namespace.DeclarationFound = true; } @@ -1489,18 +1489,18 @@ case 57: case_57(); break; case 58: -#line 739 "cs-parser.jay" +#line 740 "cs-parser.jay" { yyVal = "event"; } break; case 59: -#line 740 "cs-parser.jay" +#line 741 "cs-parser.jay" { yyVal = "return"; } break; case 60: case_60(); break; case 61: -#line 757 "cs-parser.jay" +#line 758 "cs-parser.jay" { yyVal = new List (4) { (Attribute) yyVals[0+yyTop] }; } @@ -1509,7 +1509,7 @@ case 62: case_62(); break; case 63: -#line 772 "cs-parser.jay" +#line 773 "cs-parser.jay" { ++lexer.parsing_block; } @@ -1518,14 +1518,14 @@ case 64: case_64(); break; case 66: -#line 796 "cs-parser.jay" +#line 797 "cs-parser.jay" { yyVal = null; } break; case 67: case_67(); break; case 68: -#line 807 "cs-parser.jay" +#line 808 "cs-parser.jay" { yyVal = null; } break; case 69: @@ -1541,13 +1541,13 @@ case 72: case_72(); break; case 73: -#line 851 "cs-parser.jay" +#line 852 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop]); } break; case 75: -#line 859 "cs-parser.jay" +#line 860 "cs-parser.jay" { ++lexer.parsing_block; } @@ -1559,29 +1559,29 @@ case 77: case_77(); break; case 78: -#line 884 "cs-parser.jay" +#line 885 "cs-parser.jay" { yyVal = null; } break; case 79: -#line 888 "cs-parser.jay" +#line 889 "cs-parser.jay" { yyVal = Argument.AType.Ref; } break; case 80: -#line 892 "cs-parser.jay" +#line 893 "cs-parser.jay" { yyVal = Argument.AType.Out; } break; case 83: -#line 904 "cs-parser.jay" +#line 905 "cs-parser.jay" { lexer.parsing_modifiers = true; } break; case 84: -#line 908 "cs-parser.jay" +#line 909 "cs-parser.jay" { lexer.parsing_modifiers = true; } @@ -1590,7 +1590,7 @@ case 95: case_95(); break; case 96: -#line 938 "cs-parser.jay" +#line 939 "cs-parser.jay" { lexer.ConstraintsParsing = true; } @@ -1611,7 +1611,7 @@ case 101: case_101(); break; case 102: -#line 979 "cs-parser.jay" +#line 980 "cs-parser.jay" { Error_SyntaxError (yyToken); } @@ -1623,13 +1623,13 @@ case 104: case_104(); break; case 107: -#line 1020 "cs-parser.jay" +#line 1021 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; case 108: -#line 1024 "cs-parser.jay" +#line 1025 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } @@ -1638,7 +1638,7 @@ case 109: case_109(); break; case 110: -#line 1040 "cs-parser.jay" +#line 1041 "cs-parser.jay" { ++lexer.parsing_block; } @@ -1662,7 +1662,7 @@ case 118: case_118(); break; case 119: -#line 1119 "cs-parser.jay" +#line 1120 "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"); } @@ -1674,13 +1674,13 @@ case 122: case_122(); break; case 125: -#line 1149 "cs-parser.jay" +#line 1150 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; case 126: -#line 1153 "cs-parser.jay" +#line 1154 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } @@ -1689,7 +1689,7 @@ case 127: case_127(); break; case 128: -#line 1166 "cs-parser.jay" +#line 1167 "cs-parser.jay" { ++lexer.parsing_block; } @@ -1698,13 +1698,13 @@ case 129: case_129(); break; case 132: -#line 1185 "cs-parser.jay" +#line 1186 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; case 133: -#line 1189 "cs-parser.jay" +#line 1190 "cs-parser.jay" { current_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } @@ -1713,7 +1713,7 @@ case 134: case_134(); break; case 135: -#line 1205 "cs-parser.jay" +#line 1206 "cs-parser.jay" { ++lexer.parsing_block; } @@ -1734,13 +1734,13 @@ case 142: case_142(); break; case 143: -#line 1276 "cs-parser.jay" +#line 1277 "cs-parser.jay" { valid_param_mod = ParameterModifierType.All; } break; case 144: -#line 1280 "cs-parser.jay" +#line 1281 "cs-parser.jay" { lexer.ConstraintsParsing = true; } @@ -1749,7 +1749,7 @@ case 145: case_145(); break; case 146: -#line 1320 "cs-parser.jay" +#line 1321 "cs-parser.jay" { lexer.parsing_generic_declaration = true; } @@ -1758,7 +1758,7 @@ case 147: case_147(); break; case 148: -#line 1330 "cs-parser.jay" +#line 1331 "cs-parser.jay" { lexer.ConstraintsParsing = true; } @@ -1770,11 +1770,11 @@ case 150: case_150(); break; case 152: -#line 1404 "cs-parser.jay" +#line 1405 "cs-parser.jay" { savedLocation = GetLocation (yyVals[0+yyTop]); yyVal = null; } break; case 153: -#line 1408 "cs-parser.jay" +#line 1409 "cs-parser.jay" { yyVal = ParametersCompiled.EmptyReadOnlyParameters; } break; case 155: @@ -1799,13 +1799,13 @@ case 161: case_161(); break; case 162: -#line 1480 "cs-parser.jay" +#line 1481 "cs-parser.jay" { yyVal = new ParametersCompiled (new Parameter[] { (Parameter) yyVals[0+yyTop] } ); } break; case 163: -#line 1484 "cs-parser.jay" +#line 1485 "cs-parser.jay" { yyVal = new ParametersCompiled (new Parameter [] { new ArglistParameter (GetLocation (yyVals[0+yyTop])) }, true); } @@ -1829,7 +1829,7 @@ case 169: case_169(); break; case 170: -#line 1559 "cs-parser.jay" +#line 1560 "cs-parser.jay" { ++lexer.parsing_block; } @@ -1838,11 +1838,11 @@ case 171: case_171(); break; case 172: -#line 1600 "cs-parser.jay" +#line 1601 "cs-parser.jay" { yyVal = Parameter.Modifier.NONE; } break; case 174: -#line 1608 "cs-parser.jay" +#line 1609 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } @@ -1875,7 +1875,7 @@ case 183: case_183(); break; case 184: -#line 1697 "cs-parser.jay" +#line 1698 "cs-parser.jay" { Error_DuplicateParameterModifier (GetLocation (yyVals[-1+yyTop]), Parameter.Modifier.PARAMS); } @@ -1896,7 +1896,7 @@ case 189: case_189(); break; case 190: -#line 1751 "cs-parser.jay" +#line 1752 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Params | ParameterModifierType.DefaultValue; } @@ -1905,7 +1905,7 @@ case 191: case_191(); break; case 192: -#line 1780 "cs-parser.jay" +#line 1781 "cs-parser.jay" { lexer.PropertyParsing = false; } @@ -1935,7 +1935,7 @@ case 205: case_205(); break; case 206: -#line 1929 "cs-parser.jay" +#line 1930 "cs-parser.jay" { lexer.ConstraintsParsing = true; } @@ -1953,55 +1953,55 @@ case 210: case_210(); break; case 211: -#line 1966 "cs-parser.jay" +#line 1967 "cs-parser.jay" { Error_SyntaxError (yyToken); } break; case 214: -#line 1978 "cs-parser.jay" +#line 1979 "cs-parser.jay" { lexer.parsing_modifiers = true; } break; case 215: -#line 1982 "cs-parser.jay" +#line 1983 "cs-parser.jay" { lexer.parsing_modifiers = true; } break; case 216: -#line 1989 "cs-parser.jay" +#line 1990 "cs-parser.jay" { report.Error (525, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain fields or constants"); } break; case 217: -#line 1993 "cs-parser.jay" +#line 1994 "cs-parser.jay" { report.Error (525, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain fields or constants"); } break; case 222: -#line 2001 "cs-parser.jay" +#line 2002 "cs-parser.jay" { report.Error (567, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain operators"); } break; case 223: -#line 2005 "cs-parser.jay" +#line 2006 "cs-parser.jay" { report.Error (526, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain contructors"); } break; case 224: -#line 2009 "cs-parser.jay" +#line 2010 "cs-parser.jay" { report.Error (524, GetLocation (yyVals[0+yyTop]), "Interfaces cannot declare classes, structs, interfaces, delegates, or enumerations"); } break; case 225: -#line 2015 "cs-parser.jay" +#line 2016 "cs-parser.jay" { } break; @@ -2009,14 +2009,14 @@ case 226: case_226(); break; case 228: -#line 2048 "cs-parser.jay" +#line 2049 "cs-parser.jay" { savedLocation = GetLocation (yyVals[0+yyTop]); yyVal = null; } break; case 230: case_230(); break; case 231: -#line 2064 "cs-parser.jay" +#line 2065 "cs-parser.jay" { valid_param_mod = ParameterModifierType.DefaultValue; } @@ -2025,95 +2025,95 @@ case 232: case_232(); break; case 234: -#line 2110 "cs-parser.jay" +#line 2111 "cs-parser.jay" { yyVal = Operator.OpType.LogicalNot; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 235: -#line 2111 "cs-parser.jay" +#line 2112 "cs-parser.jay" { yyVal = Operator.OpType.OnesComplement; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 236: -#line 2112 "cs-parser.jay" +#line 2113 "cs-parser.jay" { yyVal = Operator.OpType.Increment; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 237: -#line 2113 "cs-parser.jay" +#line 2114 "cs-parser.jay" { yyVal = Operator.OpType.Decrement; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 238: -#line 2114 "cs-parser.jay" +#line 2115 "cs-parser.jay" { yyVal = Operator.OpType.True; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 239: -#line 2115 "cs-parser.jay" +#line 2116 "cs-parser.jay" { yyVal = Operator.OpType.False; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 240: -#line 2117 "cs-parser.jay" +#line 2118 "cs-parser.jay" { yyVal = Operator.OpType.Addition; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 241: -#line 2118 "cs-parser.jay" +#line 2119 "cs-parser.jay" { yyVal = Operator.OpType.Subtraction; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 242: -#line 2120 "cs-parser.jay" +#line 2121 "cs-parser.jay" { yyVal = Operator.OpType.Multiply; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 243: -#line 2121 "cs-parser.jay" +#line 2122 "cs-parser.jay" { yyVal = Operator.OpType.Division; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 244: -#line 2122 "cs-parser.jay" +#line 2123 "cs-parser.jay" { yyVal = Operator.OpType.Modulus; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 245: -#line 2123 "cs-parser.jay" +#line 2124 "cs-parser.jay" { yyVal = Operator.OpType.BitwiseAnd; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 246: -#line 2124 "cs-parser.jay" +#line 2125 "cs-parser.jay" { yyVal = Operator.OpType.BitwiseOr; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 247: -#line 2125 "cs-parser.jay" +#line 2126 "cs-parser.jay" { yyVal = Operator.OpType.ExclusiveOr; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 248: -#line 2126 "cs-parser.jay" +#line 2127 "cs-parser.jay" { yyVal = Operator.OpType.LeftShift; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 249: -#line 2127 "cs-parser.jay" +#line 2128 "cs-parser.jay" { yyVal = Operator.OpType.RightShift; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 250: -#line 2128 "cs-parser.jay" +#line 2129 "cs-parser.jay" { yyVal = Operator.OpType.Equality; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 251: -#line 2129 "cs-parser.jay" +#line 2130 "cs-parser.jay" { yyVal = Operator.OpType.Inequality; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 252: -#line 2130 "cs-parser.jay" +#line 2131 "cs-parser.jay" { yyVal = Operator.OpType.GreaterThan; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 253: -#line 2131 "cs-parser.jay" +#line 2132 "cs-parser.jay" { yyVal = Operator.OpType.LessThan; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 254: -#line 2132 "cs-parser.jay" +#line 2133 "cs-parser.jay" { yyVal = Operator.OpType.GreaterThanOrEqual; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 255: -#line 2133 "cs-parser.jay" +#line 2134 "cs-parser.jay" { yyVal = Operator.OpType.LessThanOrEqual; savedOperatorLocation = GetLocation (yyVals[0+yyTop]); } break; case 256: -#line 2140 "cs-parser.jay" +#line 2141 "cs-parser.jay" { valid_param_mod = ParameterModifierType.DefaultValue; } @@ -2122,7 +2122,7 @@ case 257: case_257(); break; case 258: -#line 2159 "cs-parser.jay" +#line 2160 "cs-parser.jay" { valid_param_mod = ParameterModifierType.DefaultValue; } @@ -2149,11 +2149,11 @@ case 265: case_265(); break; case 267: -#line 2262 "cs-parser.jay" +#line 2263 "cs-parser.jay" { current_block = null; yyVal = null; } break; case 270: -#line 2274 "cs-parser.jay" +#line 2275 "cs-parser.jay" { ++lexer.parsing_block; } @@ -2162,7 +2162,7 @@ case 271: case_271(); break; case 272: -#line 2284 "cs-parser.jay" +#line 2285 "cs-parser.jay" { ++lexer.parsing_block; } @@ -2195,7 +2195,7 @@ case 281: case_281(); break; case 283: -#line 2393 "cs-parser.jay" +#line 2394 "cs-parser.jay" { ++lexer.parsing_block; } @@ -2204,13 +2204,13 @@ case 284: case_284(); break; case 287: -#line 2410 "cs-parser.jay" +#line 2411 "cs-parser.jay" { current_event_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; case 288: -#line 2414 "cs-parser.jay" +#line 2415 "cs-parser.jay" { current_event_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } @@ -2219,7 +2219,7 @@ case 289: case_289(); break; case 290: -#line 2427 "cs-parser.jay" +#line 2428 "cs-parser.jay" { ++lexer.parsing_block; } @@ -2231,7 +2231,7 @@ case 292: case_292(); break; case 293: -#line 2452 "cs-parser.jay" +#line 2453 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } @@ -2279,7 +2279,7 @@ case 311: case_311(); break; case 314: -#line 2611 "cs-parser.jay" +#line 2612 "cs-parser.jay" { enumCommas.Add (GetLocation (yyVals[0+yyTop])); } @@ -2297,7 +2297,7 @@ case 319: case_319(); break; case 320: -#line 2669 "cs-parser.jay" +#line 2670 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out | ParameterModifierType.Params | ParameterModifierType.DefaultValue; } @@ -2306,7 +2306,7 @@ case 321: case_321(); break; case 322: -#line 2691 "cs-parser.jay" +#line 2692 "cs-parser.jay" { lexer.ConstraintsParsing = false; } @@ -2339,7 +2339,7 @@ case 335: case_335(); break; case 336: -#line 2795 "cs-parser.jay" +#line 2797 "cs-parser.jay" { lexer.parsing_generic_declaration = true; } @@ -2384,13 +2384,13 @@ case 351: case_351(); break; case 353: -#line 2916 "cs-parser.jay" +#line 2918 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } break; case 354: -#line 2923 "cs-parser.jay" +#line 2925 "cs-parser.jay" { lexer.parsing_generic_declaration = true; } @@ -2405,7 +2405,7 @@ case 360: case_360(); break; case 362: -#line 2961 "cs-parser.jay" +#line 2963 "cs-parser.jay" { yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } @@ -2414,22 +2414,22 @@ case 363: case_363(); break; case 364: -#line 2981 "cs-parser.jay" +#line 2983 "cs-parser.jay" { - yyVal = new ComposedCast (((MemberName) yyVals[-1+yyTop]).GetTypeExpression (lbag), (ComposedTypeSpecifier) yyVals[0+yyTop]); + yyVal = new ComposedCast (((MemberName) yyVals[-1+yyTop]).GetTypeExpression (), (ComposedTypeSpecifier) yyVals[0+yyTop]); } break; case 365: case_365(); break; case 366: -#line 2990 "cs-parser.jay" +#line 2992 "cs-parser.jay" { yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } break; case 367: -#line 2994 "cs-parser.jay" +#line 2996 "cs-parser.jay" { yyVal = new ComposedCast (new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[-1+yyTop])), (ComposedTypeSpecifier) yyVals[0+yyTop]); } @@ -2447,63 +2447,63 @@ case 371: case_371(); break; case 372: -#line 3033 "cs-parser.jay" +#line 3035 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Object, GetLocation (yyVals[0+yyTop])); } break; case 373: -#line 3034 "cs-parser.jay" +#line 3036 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.String, GetLocation (yyVals[0+yyTop])); } break; case 374: -#line 3035 "cs-parser.jay" +#line 3037 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Bool, GetLocation (yyVals[0+yyTop])); } break; case 375: -#line 3036 "cs-parser.jay" +#line 3038 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Decimal, GetLocation (yyVals[0+yyTop])); } break; case 376: -#line 3037 "cs-parser.jay" +#line 3039 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Float, GetLocation (yyVals[0+yyTop])); } break; case 377: -#line 3038 "cs-parser.jay" +#line 3040 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Double, GetLocation (yyVals[0+yyTop])); } break; case 379: -#line 3043 "cs-parser.jay" +#line 3045 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.SByte, GetLocation (yyVals[0+yyTop])); } break; case 380: -#line 3044 "cs-parser.jay" +#line 3046 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Byte, GetLocation (yyVals[0+yyTop])); } break; case 381: -#line 3045 "cs-parser.jay" +#line 3047 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Short, GetLocation (yyVals[0+yyTop])); } break; case 382: -#line 3046 "cs-parser.jay" +#line 3048 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.UShort, GetLocation (yyVals[0+yyTop])); } break; case 383: -#line 3047 "cs-parser.jay" +#line 3049 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Int, GetLocation (yyVals[0+yyTop])); } break; case 384: -#line 3048 "cs-parser.jay" +#line 3050 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.UInt, GetLocation (yyVals[0+yyTop])); } break; case 385: -#line 3049 "cs-parser.jay" +#line 3051 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Long, GetLocation (yyVals[0+yyTop])); } break; case 386: -#line 3050 "cs-parser.jay" +#line 3052 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.ULong, GetLocation (yyVals[0+yyTop])); } break; case 387: -#line 3051 "cs-parser.jay" +#line 3053 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Char, GetLocation (yyVals[0+yyTop])); } break; case 408: @@ -2513,22 +2513,22 @@ case 409: case_409(); break; case 413: -#line 3098 "cs-parser.jay" +#line 3100 "cs-parser.jay" { yyVal = new NullLiteral (GetLocation (yyVals[0+yyTop])); } break; case 414: -#line 3102 "cs-parser.jay" +#line 3104 "cs-parser.jay" { yyVal = new BoolLiteral (compiler.BuiltinTypes, true, GetLocation (yyVals[0+yyTop])); } break; case 415: -#line 3103 "cs-parser.jay" +#line 3105 "cs-parser.jay" { yyVal = new BoolLiteral (compiler.BuiltinTypes, false, GetLocation (yyVals[0+yyTop])); } break; case 420: case_420(); break; case 421: -#line 3136 "cs-parser.jay" +#line 3138 "cs-parser.jay" { yyVal = new ParenthesizedExpression ((Expression) yyVals[-1+yyTop]); } @@ -2546,7 +2546,7 @@ case 425: case_425(); break; case 426: -#line 3168 "cs-parser.jay" +#line 3173 "cs-parser.jay" { yyVal = new CompletionMemberAccess ((Expression) yyVals[-2+yyTop], null,GetLocation (yyVals[0+yyTop])); } @@ -2555,7 +2555,7 @@ case 427: case_427(); break; case 428: -#line 3176 "cs-parser.jay" +#line 3181 "cs-parser.jay" { yyVal = new CompletionMemberAccess ((Expression) yyVals[-2+yyTop], null, lexer.Location); } @@ -2567,7 +2567,7 @@ case 430: case_430(); break; case 431: -#line 3192 "cs-parser.jay" +#line 3197 "cs-parser.jay" { yyVal = null; } break; case 433: @@ -2577,11 +2577,11 @@ case 434: case_434(); break; case 435: -#line 3215 "cs-parser.jay" +#line 3220 "cs-parser.jay" { yyVal = null; } break; case 436: -#line 3219 "cs-parser.jay" +#line 3224 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } @@ -2599,7 +2599,7 @@ case 440: case_440(); break; case 441: -#line 3252 "cs-parser.jay" +#line 3257 "cs-parser.jay" { yyVal = new CompletionElementInitializer (null, GetLocation (yyVals[0+yyTop])); } @@ -2614,7 +2614,7 @@ case 444: case_444(); break; case 447: -#line 3280 "cs-parser.jay" +#line 3285 "cs-parser.jay" { yyVal = null; } break; case 449: @@ -2633,7 +2633,7 @@ case 453: case_453(); break; case 454: -#line 3332 "cs-parser.jay" +#line 3337 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop]); } @@ -2669,13 +2669,13 @@ case 468: case_468(); break; case 469: -#line 3419 "cs-parser.jay" +#line 3424 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop]); } break; case 471: -#line 3427 "cs-parser.jay" +#line 3432 "cs-parser.jay" { yyVal = new This (GetLocation (yyVals[0+yyTop])); } @@ -2687,13 +2687,13 @@ case 473: case_473(); break; case 474: -#line 3447 "cs-parser.jay" +#line 3452 "cs-parser.jay" { yyVal = new UnaryMutator (UnaryMutator.Mode.PostIncrement, (Expression) yyVals[-1+yyTop], GetLocation (yyVals[0+yyTop])); } break; case 475: -#line 3454 "cs-parser.jay" +#line 3459 "cs-parser.jay" { yyVal = new UnaryMutator (UnaryMutator.Mode.PostDecrement, (Expression) yyVals[-1+yyTop], GetLocation (yyVals[0+yyTop])); } @@ -2720,7 +2720,7 @@ case 482: case_482(); break; case 483: -#line 3520 "cs-parser.jay" +#line 3525 "cs-parser.jay" { ++lexer.parsing_type; } @@ -2732,7 +2732,7 @@ case 485: case_485(); break; case 488: -#line 3547 "cs-parser.jay" +#line 3552 "cs-parser.jay" { yyVal = null; } break; case 490: @@ -2763,25 +2763,25 @@ case 501: case_501(); break; case 502: -#line 3625 "cs-parser.jay" +#line 3630 "cs-parser.jay" { yyVal = 2; } break; case 503: -#line 3629 "cs-parser.jay" +#line 3634 "cs-parser.jay" { yyVal = ((int) yyVals[-1+yyTop]) + 1; } break; case 504: -#line 3636 "cs-parser.jay" +#line 3641 "cs-parser.jay" { yyVal = null; } break; case 505: -#line 3640 "cs-parser.jay" +#line 3645 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } @@ -2799,7 +2799,7 @@ case 509: case_509(); break; case 510: -#line 3684 "cs-parser.jay" +#line 3689 "cs-parser.jay" { lexer.TypeOfParsing = true; } @@ -2844,7 +2844,7 @@ case 525: case_525(); break; case 526: -#line 3798 "cs-parser.jay" +#line 3809 "cs-parser.jay" { start_anonymous (false, (ParametersCompiled) yyVals[0+yyTop], false, GetLocation (yyVals[-1+yyTop])); } @@ -2853,25 +2853,25 @@ case 527: case_527(); break; case 528: -#line 3811 "cs-parser.jay" +#line 3822 "cs-parser.jay" { start_anonymous (false, (ParametersCompiled) yyVals[0+yyTop], true, GetLocation (yyVals[-2+yyTop])); } break; case 529: -#line 3815 "cs-parser.jay" +#line 3826 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); } break; case 530: -#line 3822 "cs-parser.jay" +#line 3833 "cs-parser.jay" { yyVal = ParametersCompiled.Undefined; } break; case 532: -#line 3830 "cs-parser.jay" +#line 3841 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } @@ -2883,13 +2883,13 @@ case 534: case_534(); break; case 536: -#line 3856 "cs-parser.jay" +#line 3867 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.LogicalNot, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; case 537: -#line 3860 "cs-parser.jay" +#line 3871 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.OnesComplement, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } @@ -2901,37 +2901,37 @@ case 541: case_541(); break; case 543: -#line 3890 "cs-parser.jay" +#line 3901 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.UnaryPlus, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; case 544: -#line 3894 "cs-parser.jay" +#line 3905 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.UnaryNegation, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; case 545: -#line 3898 "cs-parser.jay" +#line 3909 "cs-parser.jay" { yyVal = new UnaryMutator (UnaryMutator.Mode.PreIncrement, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; case 546: -#line 3902 "cs-parser.jay" +#line 3913 "cs-parser.jay" { yyVal = new UnaryMutator (UnaryMutator.Mode.PreDecrement, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; case 547: -#line 3906 "cs-parser.jay" +#line 3917 "cs-parser.jay" { yyVal = new Indirection ((Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; case 548: -#line 3910 "cs-parser.jay" +#line 3921 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.AddressOf, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } @@ -2949,7 +2949,7 @@ case 554: case_554(); break; case 555: -#line 3942 "cs-parser.jay" +#line 3953 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Subtraction, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } @@ -2958,13 +2958,13 @@ case 556: case_556(); break; case 557: -#line 3951 "cs-parser.jay" +#line 3962 "cs-parser.jay" { yyVal = new As ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; case 558: -#line 3955 "cs-parser.jay" +#line 3966 "cs-parser.jay" { yyVal = new Is ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } @@ -3015,7 +3015,7 @@ case 583: case_583(); break; case 584: -#line 4079 "cs-parser.jay" +#line 4090 "cs-parser.jay" { yyVal = new SimpleAssign ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } @@ -3066,14 +3066,14 @@ case 599: case_599(); break; case 600: -#line 4176 "cs-parser.jay" +#line 4187 "cs-parser.jay" { yyVal = ParametersCompiled.EmptyReadOnlyParameters; } break; case 601: case_601(); break; case 604: -#line 4191 "cs-parser.jay" +#line 4202 "cs-parser.jay" { start_block (lexer.Location); } @@ -3097,7 +3097,7 @@ case 611: case_611(); break; case 612: -#line 4236 "cs-parser.jay" +#line 4247 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } @@ -3109,7 +3109,7 @@ case 614: case_614(); break; case 615: -#line 4250 "cs-parser.jay" +#line 4261 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } @@ -3121,7 +3121,7 @@ case 617: case_617(); break; case 623: -#line 4275 "cs-parser.jay" +#line 4286 "cs-parser.jay" { yyVal = new ArglistAccess (GetLocation (yyVals[0+yyTop])); } @@ -3136,13 +3136,13 @@ case 626: case_626(); break; case 628: -#line 4304 "cs-parser.jay" +#line 4315 "cs-parser.jay" { yyVal = new BooleanExpression ((Expression) yyVals[0+yyTop]); } break; case 629: -#line 4317 "cs-parser.jay" +#line 4328 "cs-parser.jay" { lexer.ConstraintsParsing = true; } @@ -3160,18 +3160,18 @@ case 633: case_633(); break; case 634: -#line 4360 "cs-parser.jay" +#line 4371 "cs-parser.jay" { yyVal = null; } break; case 635: -#line 4362 "cs-parser.jay" +#line 4373 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; StoreModifierLocation (Modifiers.PARTIAL, GetLocation (yyVals[0+yyTop])); } break; case 636: case_636(); break; case 637: -#line 4375 "cs-parser.jay" +#line 4386 "cs-parser.jay" { lexer.parsing_modifiers = false; } @@ -3228,7 +3228,7 @@ case 656: case_656(); break; case 658: -#line 4495 "cs-parser.jay" +#line 4506 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } @@ -3258,19 +3258,19 @@ case 666: case_666(); break; case 667: -#line 4585 "cs-parser.jay" +#line 4596 "cs-parser.jay" { yyVal = new SpecialContraintExpr (SpecialConstraint.Class, GetLocation (yyVals[0+yyTop])); } break; case 668: -#line 4589 "cs-parser.jay" +#line 4600 "cs-parser.jay" { yyVal = new SpecialContraintExpr (SpecialConstraint.Struct, GetLocation (yyVals[0+yyTop])); } break; case 669: -#line 4596 "cs-parser.jay" +#line 4607 "cs-parser.jay" { yyVal = Variance.None; } @@ -3288,7 +3288,7 @@ case 673: case_673(); break; case 674: -#line 4641 "cs-parser.jay" +#line 4652 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } @@ -3306,13 +3306,13 @@ case 678: case_678(); break; case 683: -#line 4685 "cs-parser.jay" +#line 4696 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } break; case 684: -#line 4689 "cs-parser.jay" +#line 4700 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } @@ -3321,13 +3321,13 @@ case 686: case_686(); break; case 689: -#line 4713 "cs-parser.jay" +#line 4724 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } break; case 690: -#line 4717 "cs-parser.jay" +#line 4728 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } @@ -3360,13 +3360,13 @@ case 729: case_729(); break; case 730: -#line 4861 "cs-parser.jay" +#line 4872 "cs-parser.jay" { yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } break; case 731: -#line 4865 "cs-parser.jay" +#line 4876 "cs-parser.jay" { yyVal = new ComposedCast (new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[-1+yyTop])), (ComposedTypeSpecifier) yyVals[0+yyTop]); } @@ -3378,7 +3378,7 @@ case 734: case_734(); break; case 735: -#line 4886 "cs-parser.jay" +#line 4897 "cs-parser.jay" { yyVal = ComposedTypeSpecifier.CreatePointer (GetLocation (yyVals[0+yyTop])); } @@ -3411,7 +3411,7 @@ case 750: case_750(); break; case 751: -#line 4986 "cs-parser.jay" +#line 4997 "cs-parser.jay" { report.Error (145, lexer.Location, "A const field requires a value to be provided"); } @@ -3432,15 +3432,15 @@ case 761: case_761(); break; case 762: -#line 5036 "cs-parser.jay" +#line 5047 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; } break; case 763: -#line 5040 "cs-parser.jay" +#line 5051 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; } break; case 764: -#line 5041 "cs-parser.jay" +#line 5052 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; } break; case 765: @@ -3459,7 +3459,7 @@ case 771: case_771(); break; case 772: -#line 5109 "cs-parser.jay" +#line 5120 "cs-parser.jay" { start_block (GetLocation (yyVals[0+yyTop])); } @@ -3480,13 +3480,13 @@ case 778: case_778(); break; case 779: -#line 5153 "cs-parser.jay" +#line 5164 "cs-parser.jay" { current_block = current_block.CreateSwitchBlock (lexer.Location); } break; case 780: -#line 5157 "cs-parser.jay" +#line 5168 "cs-parser.jay" { yyVal = new SwitchSection ((List) yyVals[-2+yyTop], current_block); } @@ -3501,7 +3501,7 @@ case 783: case_783(); break; case 784: -#line 5186 "cs-parser.jay" +#line 5197 "cs-parser.jay" { yyVal = new SwitchLabel (null, GetLocation (yyVals[0+yyTop])); } @@ -3516,7 +3516,7 @@ case 791: case_791(); break; case 792: -#line 5225 "cs-parser.jay" +#line 5236 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } @@ -3528,7 +3528,7 @@ case 794: case_794(); break; case 795: -#line 5253 "cs-parser.jay" +#line 5264 "cs-parser.jay" { yyVal = new EmptyStatement (lexer.Location); } break; case 797: @@ -3538,11 +3538,11 @@ case 798: case_798(); break; case 800: -#line 5274 "cs-parser.jay" +#line 5285 "cs-parser.jay" { yyVal = null; } break; case 802: -#line 5279 "cs-parser.jay" +#line 5290 "cs-parser.jay" { yyVal = new EmptyStatement (lexer.Location); } break; case 806: @@ -3585,7 +3585,7 @@ case 824: case_824(); break; case 827: -#line 5434 "cs-parser.jay" +#line 5445 "cs-parser.jay" { yyVal = new TryCatch ((Block) yyVals[-1+yyTop], (List) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop]), false); } @@ -3606,7 +3606,7 @@ case 832: case_832(); break; case 835: -#line 5487 "cs-parser.jay" +#line 5498 "cs-parser.jay" { yyVal = new Catch ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } @@ -3615,7 +3615,7 @@ case 836: case_836(); break; case 837: -#line 5506 "cs-parser.jay" +#line 5517 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; } @@ -3624,13 +3624,13 @@ case 838: case_838(); break; case 839: -#line 5524 "cs-parser.jay" +#line 5535 "cs-parser.jay" { yyVal = new Checked ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; case 840: -#line 5531 "cs-parser.jay" +#line 5542 "cs-parser.jay" { yyVal = new Unchecked ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } @@ -3639,7 +3639,7 @@ case 841: case_841(); break; case 842: -#line 5541 "cs-parser.jay" +#line 5552 "cs-parser.jay" { yyVal = new Unsafe ((Block) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); } @@ -3669,7 +3669,7 @@ case 850: case_850(); break; case 851: -#line 5624 "cs-parser.jay" +#line 5635 "cs-parser.jay" { Error_MissingInitializer (lexer.Location); } @@ -3702,7 +3702,7 @@ case 860: case_860(); break; case 861: -#line 5725 "cs-parser.jay" +#line 5736 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); } @@ -3711,7 +3711,7 @@ case 862: case_862(); break; case 863: -#line 5740 "cs-parser.jay" +#line 5751 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); } @@ -3726,7 +3726,7 @@ case 867: case_867(); break; case 868: -#line 5785 "cs-parser.jay" +#line 5796 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); } @@ -3747,7 +3747,7 @@ case 876: case_876(); break; case 882: -#line 5844 "cs-parser.jay" +#line 5855 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); } @@ -3756,7 +3756,7 @@ case 883: case_883(); break; case 884: -#line 5863 "cs-parser.jay" +#line 5874 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); } @@ -3789,13 +3789,13 @@ case 893: case_893(); break; case 895: -#line 6007 "cs-parser.jay" +#line 6018 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } break; case 896: -#line 6014 "cs-parser.jay" +#line 6025 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); } @@ -3816,7 +3816,7 @@ case 903: case_903(); break; case 904: -#line 6060 "cs-parser.jay" +#line 6071 "cs-parser.jay" { yyVal = new Linq.OrderByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[0+yyTop]); } @@ -3828,7 +3828,7 @@ case 906: case_906(); break; case 907: -#line 6077 "cs-parser.jay" +#line 6088 "cs-parser.jay" { yyVal = new Linq.ThenByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[0+yyTop]); } @@ -3852,13 +3852,13 @@ case 916: case_916(); break; case 924: -#line 6201 "cs-parser.jay" +#line 6212 "cs-parser.jay" { module.DocumentationBuilder.ParsedName = (MemberName) yyVals[0+yyTop]; } break; case 925: -#line 6208 "cs-parser.jay" +#line 6219 "cs-parser.jay" { module.DocumentationBuilder.ParsedParameters = (List)yyVals[0+yyTop]; } @@ -3870,13 +3870,13 @@ case 927: case_927(); break; case 928: -#line 6225 "cs-parser.jay" +#line 6236 "cs-parser.jay" { yyVal = new MemberName ((MemberName) yyVals[-2+yyTop], new MemberName (MemberCache.IndexerNameAlias)); } break; case 929: -#line 6229 "cs-parser.jay" +#line 6240 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } @@ -3894,25 +3894,25 @@ case 933: case_933(); break; case 935: -#line 6265 "cs-parser.jay" +#line 6276 "cs-parser.jay" { yyVal = new MemberName (((MemberName) yyVals[-2+yyTop]), (MemberName) yyVals[0+yyTop]); } break; case 937: -#line 6273 "cs-parser.jay" +#line 6284 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } break; case 938: -#line 6277 "cs-parser.jay" +#line 6288 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; } break; case 939: -#line 6284 "cs-parser.jay" +#line 6295 "cs-parser.jay" { yyVal = new List (0); } @@ -4102,19 +4102,20 @@ void case_26() #line 566 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; - yyVal = new MemberName ((MemberName) yyVals[-2+yyTop], lt.Value, lt.Location); - lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); + yyVal = new MemberName ((MemberName) yyVals[-2+yyTop], lt.Value, lt.Location) { + DotLocation = GetLocation (yyVals[-1+yyTop]) + }; } void case_27() -#line 572 "cs-parser.jay" +#line 573 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new MemberName ("", lexer.Location); } void case_32() -#line 590 "cs-parser.jay" +#line 591 "cs-parser.jay" { MemberName name = (MemberName) yyVals[0+yyTop]; @@ -4125,7 +4126,7 @@ void case_32() } void case_41() -#line 622 "cs-parser.jay" +#line 623 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { TypeContainer ds = (TypeContainer)yyVals[0+yyTop]; @@ -4146,7 +4147,7 @@ void case_41() } void case_50() -#line 672 "cs-parser.jay" +#line 673 "cs-parser.jay" { var sect = (List) yyVals[0+yyTop]; yyVal = new Attributes (sect); @@ -4158,7 +4159,7 @@ void case_50() } void case_51() -#line 682 "cs-parser.jay" +#line 683 "cs-parser.jay" { Attributes attrs = yyVals[-1+yyTop] as Attributes; var sect = (List) yyVals[0+yyTop]; @@ -4170,21 +4171,21 @@ void case_51() } void case_52() -#line 695 "cs-parser.jay" +#line 696 "cs-parser.jay" { lexer.parsing_attribute_section = true; savedOpenLocation = GetLocation (yyVals[0+yyTop]); } void case_53() -#line 700 "cs-parser.jay" +#line 701 "cs-parser.jay" { lexer.parsing_attribute_section = false; yyVal = yyVals[0+yyTop]; } void case_54() -#line 708 "cs-parser.jay" +#line 709 "cs-parser.jay" { current_attr_target = (string) yyVals[-1+yyTop]; if (current_attr_target == "assembly" || current_attr_target == "module") { @@ -4193,7 +4194,7 @@ void case_54() } void case_55() -#line 715 "cs-parser.jay" +#line 716 "cs-parser.jay" { /* when attribute target is invalid*/ if (current_attr_target == string.Empty) @@ -4207,21 +4208,21 @@ void case_55() } void case_56() -#line 727 "cs-parser.jay" +#line 728 "cs-parser.jay" { yyVal = yyVals[-2+yyTop]; savedCloseLocation = GetLocation (yyVals[0+yyTop]); } void case_57() -#line 735 "cs-parser.jay" +#line 736 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = CheckAttributeTarget (lt.Value, lt.Location); } void case_60() -#line 742 "cs-parser.jay" +#line 743 "cs-parser.jay" { if (yyToken == Token.IDENTIFIER) { Error_SyntaxError (yyToken); @@ -4233,7 +4234,7 @@ void case_60() } void case_62() -#line 759 "cs-parser.jay" +#line 760 "cs-parser.jay" { var attrs = (List) yyVals[-2+yyTop]; attrs.Add ((Attribute) yyVals[0+yyTop]); @@ -4243,7 +4244,7 @@ void case_62() } void case_64() -#line 774 "cs-parser.jay" +#line 775 "cs-parser.jay" { --lexer.parsing_block; MemberName mname = (MemberName) yyVals[-2+yyTop]; @@ -4253,7 +4254,7 @@ void case_64() } Arguments [] arguments = (Arguments []) yyVals[0+yyTop]; - ATypeNameExpression expr = mname.GetTypeExpression (lbag); + ATypeNameExpression expr = mname.GetTypeExpression (); yyVal = new Attribute (current_attr_target, expr, arguments, mname.Location, lexer.IsEscapedIdentifier (mname)); if (arguments != null) { lbag.AddLocation (yyVal, savedAttrParenOpenLocation, savedAttrParenCloseLocation); @@ -4261,7 +4262,7 @@ void case_64() } void case_67() -#line 798 "cs-parser.jay" +#line 799 "cs-parser.jay" { savedAttrParenOpenLocation = GetLocation (yyVals[-2+yyTop]); savedAttrParenCloseLocation = GetLocation (yyVals[0+yyTop]); @@ -4269,7 +4270,7 @@ void case_67() } void case_69() -#line 809 "cs-parser.jay" +#line 810 "cs-parser.jay" { Arguments a = new Arguments (4); a.Add ((Argument) yyVals[0+yyTop]); @@ -4277,7 +4278,7 @@ void case_69() } void case_70() -#line 815 "cs-parser.jay" +#line 816 "cs-parser.jay" { Arguments a = new Arguments (4); a.Add ((Argument) yyVals[0+yyTop]); @@ -4285,7 +4286,7 @@ void case_70() } void case_71() -#line 821 "cs-parser.jay" +#line 822 "cs-parser.jay" { Arguments[] o = (Arguments[]) yyVals[-2+yyTop]; if (o [1] != null) { @@ -4302,7 +4303,7 @@ void case_71() } void case_72() -#line 836 "cs-parser.jay" +#line 837 "cs-parser.jay" { Arguments[] o = (Arguments[]) yyVals[-2+yyTop]; if (o [1] == null) { @@ -4314,7 +4315,7 @@ void case_72() } void case_76() -#line 861 "cs-parser.jay" +#line 862 "cs-parser.jay" { --lexer.parsing_block; var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; @@ -4323,7 +4324,7 @@ void case_76() } void case_77() -#line 871 "cs-parser.jay" +#line 872 "cs-parser.jay" { if (lang_version <= LanguageVersion.V_3) FeatureIsNotAvailable (GetLocation (yyVals[-3+yyTop]), "named argument"); @@ -4336,7 +4337,7 @@ void case_77() } void case_95() -#line 923 "cs-parser.jay" +#line 924 "cs-parser.jay" { report.Error (1519, lexer.Location, "Unexpected symbol `{0}' in class, struct, or interface member declaration", GetSymbolName (yyToken)); @@ -4345,7 +4346,7 @@ void case_95() } void case_97() -#line 940 "cs-parser.jay" +#line 941 "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]); @@ -4353,7 +4354,7 @@ void case_97() } void case_98() -#line 947 "cs-parser.jay" +#line 948 "cs-parser.jay" { lexer.ConstraintsParsing = false; @@ -4367,14 +4368,14 @@ void case_98() } void case_99() -#line 959 "cs-parser.jay" +#line 960 "cs-parser.jay" { if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; } void case_100() -#line 964 "cs-parser.jay" +#line 965 "cs-parser.jay" { lbag.AppendToMember (current_class, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop])); --lexer.parsing_declaration; @@ -4383,7 +4384,7 @@ void case_100() } void case_101() -#line 971 "cs-parser.jay" +#line 972 "cs-parser.jay" { if (yyVals[-1+yyTop] != null) current_class.OptionalSemicolon = GetLocation (yyVals[-1+yyTop]); @@ -4391,7 +4392,7 @@ void case_101() } void case_103() -#line 986 "cs-parser.jay" +#line 987 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var mod = (Modifiers) yyVals[-3+yyTop]; @@ -4406,7 +4407,7 @@ void case_103() } void case_104() -#line 999 "cs-parser.jay" +#line 1000 "cs-parser.jay" { if (doc_support) { current_field.DocComment = Lexer.consume_doc_comment (); @@ -4419,7 +4420,7 @@ void case_104() } void case_109() -#line 1029 "cs-parser.jay" +#line 1030 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), (ConstInitializer) yyVals[0+yyTop]); @@ -4427,7 +4428,7 @@ void case_109() } void case_111() -#line 1042 "cs-parser.jay" +#line 1043 "cs-parser.jay" { --lexer.parsing_block; yyVal = new ConstInitializer (current_field, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); @@ -4435,14 +4436,14 @@ void case_111() } void case_112() -#line 1048 "cs-parser.jay" +#line 1049 "cs-parser.jay" { report.Error (145, lexer.Location, "A const field requires a value to be provided"); yyVal = null; } void case_115() -#line 1063 "cs-parser.jay" +#line 1064 "cs-parser.jay" { lexer.parsing_generic_declaration = false; @@ -4457,7 +4458,7 @@ void case_115() } void case_116() -#line 1078 "cs-parser.jay" +#line 1079 "cs-parser.jay" { if (doc_support) { current_field.DocComment = Lexer.consume_doc_comment (); @@ -4470,7 +4471,7 @@ void case_116() } void case_117() -#line 1091 "cs-parser.jay" +#line 1092 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "fixed size buffers"); @@ -4483,7 +4484,7 @@ void case_117() } void case_118() -#line 1102 "cs-parser.jay" +#line 1103 "cs-parser.jay" { if (doc_support) { current_field.DocComment = Lexer.consume_doc_comment (); @@ -4497,7 +4498,7 @@ void case_118() } void case_121() -#line 1125 "cs-parser.jay" +#line 1126 "cs-parser.jay" { ++lexer.parsing_block; current_local_parameters = ParametersCompiled.EmptyReadOnlyParameters; @@ -4505,7 +4506,7 @@ void case_121() } void case_122() -#line 1131 "cs-parser.jay" +#line 1132 "cs-parser.jay" { --lexer.parsing_block; current_field.Initializer = (Expression) yyVals[0+yyTop]; @@ -4515,7 +4516,7 @@ void case_122() } void case_127() -#line 1158 "cs-parser.jay" +#line 1159 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), null); @@ -4523,7 +4524,7 @@ void case_127() } void case_129() -#line 1168 "cs-parser.jay" +#line 1169 "cs-parser.jay" { --lexer.parsing_block; var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; @@ -4532,7 +4533,7 @@ void case_129() } void case_134() -#line 1194 "cs-parser.jay" +#line 1195 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), (ConstInitializer) yyVals[0+yyTop]); @@ -4540,7 +4541,7 @@ void case_134() } void case_136() -#line 1207 "cs-parser.jay" +#line 1208 "cs-parser.jay" { --lexer.parsing_block; yyVal = new ConstInitializer (current_field, (Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); @@ -4548,14 +4549,14 @@ void case_136() } void case_137() -#line 1213 "cs-parser.jay" +#line 1214 "cs-parser.jay" { report.Error (443, lexer.Location, "Value or constant expected"); yyVal = null; } void case_140() -#line 1223 "cs-parser.jay" +#line 1224 "cs-parser.jay" { /* It has to be here for the parent to safely restore artificial block*/ Error_SyntaxError (yyToken); @@ -4563,7 +4564,7 @@ void case_140() } void case_141() -#line 1232 "cs-parser.jay" +#line 1233 "cs-parser.jay" { if (doc_support) Lexer.doc_state = XmlCommentState.NotAllowed; @@ -4575,7 +4576,7 @@ void case_141() } void case_142() -#line 1242 "cs-parser.jay" +#line 1243 "cs-parser.jay" { Method method = (Method) yyVals[-2+yyTop]; method.Block = (ToplevelBlock) yyVals[0+yyTop]; @@ -4603,7 +4604,7 @@ void case_142() } void case_145() -#line 1282 "cs-parser.jay" +#line 1283 "cs-parser.jay" { lexer.ConstraintsParsing = false; valid_param_mod = 0; @@ -4638,14 +4639,14 @@ void case_145() } void case_147() -#line 1323 "cs-parser.jay" +#line 1324 "cs-parser.jay" { lexer.parsing_generic_declaration = false; valid_param_mod = ParameterModifierType.All; } void case_149() -#line 1332 "cs-parser.jay" +#line 1333 "cs-parser.jay" { lexer.ConstraintsParsing = false; valid_param_mod = 0; @@ -4697,7 +4698,7 @@ void case_149() } void case_150() -#line 1385 "cs-parser.jay" +#line 1386 "cs-parser.jay" { MemberName name = (MemberName) yyVals[-3+yyTop]; report.Error (1585, name.Location, @@ -4715,7 +4716,7 @@ void case_150() } void case_155() -#line 1414 "cs-parser.jay" +#line 1415 "cs-parser.jay" { var pars_list = (List) yyVals[0+yyTop]; yyVal = new ParametersCompiled (pars_list.ToArray ()); @@ -4723,7 +4724,7 @@ void case_155() } void case_156() -#line 1420 "cs-parser.jay" +#line 1421 "cs-parser.jay" { var pars_list = (List) yyVals[-2+yyTop]; pars_list.Add ((Parameter) yyVals[0+yyTop]); @@ -4734,7 +4735,7 @@ void case_156() } void case_157() -#line 1429 "cs-parser.jay" +#line 1430 "cs-parser.jay" { var pars_list = (List) yyVals[-2+yyTop]; pars_list.Add (new ArglistParameter (GetLocation (yyVals[0+yyTop]))); @@ -4745,7 +4746,7 @@ void case_157() } void case_158() -#line 1438 "cs-parser.jay" +#line 1439 "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"); @@ -4755,7 +4756,7 @@ void case_158() } void case_159() -#line 1446 "cs-parser.jay" +#line 1447 "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"); @@ -4770,7 +4771,7 @@ void case_159() } void case_160() -#line 1459 "cs-parser.jay" +#line 1460 "cs-parser.jay" { report.Error (257, GetLocation (yyVals[-2+yyTop]), "An __arglist parameter must be the last parameter in a formal parameter list"); @@ -4779,7 +4780,7 @@ void case_160() } void case_161() -#line 1466 "cs-parser.jay" +#line 1467 "cs-parser.jay" { report.Error (257, GetLocation (yyVals[-2+yyTop]), "An __arglist parameter must be the last parameter in a formal parameter list"); @@ -4793,14 +4794,14 @@ void case_161() } void case_164() -#line 1486 "cs-parser.jay" +#line 1487 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = ParametersCompiled.EmptyReadOnlyParameters; } void case_165() -#line 1494 "cs-parser.jay" +#line 1495 "cs-parser.jay" { parameters_bucket.Clear (); Parameter p = (Parameter) yyVals[0+yyTop]; @@ -4811,7 +4812,7 @@ void case_165() } void case_166() -#line 1503 "cs-parser.jay" +#line 1504 "cs-parser.jay" { var pars = (List) yyVals[-2+yyTop]; Parameter p = (Parameter) yyVals[0+yyTop]; @@ -4831,7 +4832,7 @@ void case_166() } void case_167() -#line 1527 "cs-parser.jay" +#line 1528 "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); @@ -4839,7 +4840,7 @@ void case_167() } void case_168() -#line 1536 "cs-parser.jay" +#line 1537 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; report.Error (1552, lt.Location, "Array type specifier, [], must appear before parameter name"); @@ -4848,7 +4849,7 @@ void case_168() } void case_169() -#line 1546 "cs-parser.jay" +#line 1547 "cs-parser.jay" { Error_SyntaxError (yyToken); Location l = GetLocation (yyVals[0+yyTop]); @@ -4857,7 +4858,7 @@ void case_169() } void case_171() -#line 1561 "cs-parser.jay" +#line 1562 "cs-parser.jay" { --lexer.parsing_block; if (lang_version <= LanguageVersion.V_3) { @@ -4896,7 +4897,7 @@ void case_171() } void case_175() -#line 1610 "cs-parser.jay" +#line 1611 "cs-parser.jay" { Parameter.Modifier p2 = (Parameter.Modifier)yyVals[0+yyTop]; Parameter.Modifier mod = (Parameter.Modifier)yyVals[-1+yyTop] | p2; @@ -4919,7 +4920,7 @@ void case_175() } void case_176() -#line 1634 "cs-parser.jay" +#line 1635 "cs-parser.jay" { if ((valid_param_mod & ParameterModifierType.Ref) == 0) Error_ParameterModifierNotValid ("ref", GetLocation (yyVals[0+yyTop])); @@ -4928,7 +4929,7 @@ void case_176() } void case_177() -#line 1641 "cs-parser.jay" +#line 1642 "cs-parser.jay" { if ((valid_param_mod & ParameterModifierType.Out) == 0) Error_ParameterModifierNotValid ("out", GetLocation (yyVals[0+yyTop])); @@ -4937,7 +4938,7 @@ void case_177() } void case_178() -#line 1648 "cs-parser.jay" +#line 1649 "cs-parser.jay" { if ((valid_param_mod & ParameterModifierType.This) == 0) Error_ParameterModifierNotValid ("this", GetLocation (yyVals[0+yyTop])); @@ -4949,14 +4950,14 @@ void case_178() } void case_179() -#line 1661 "cs-parser.jay" +#line 1662 "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_180() -#line 1666 "cs-parser.jay" +#line 1667 "cs-parser.jay" { report.Error (1751, GetLocation (yyVals[-4+yyTop]), "Cannot specify a default value for a parameter array"); @@ -4965,21 +4966,21 @@ void case_180() } void case_181() -#line 1673 "cs-parser.jay" +#line 1674 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } void case_182() -#line 1681 "cs-parser.jay" +#line 1682 "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_183() -#line 1686 "cs-parser.jay" +#line 1687 "cs-parser.jay" { Parameter.Modifier mod = (Parameter.Modifier)yyVals[0+yyTop]; if ((mod & Parameter.Modifier.This) != 0) { @@ -4990,21 +4991,21 @@ void case_183() } void case_185() -#line 1702 "cs-parser.jay" +#line 1703 "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_186() -#line 1713 "cs-parser.jay" +#line 1714 "cs-parser.jay" { if (doc_support) tmpComment = Lexer.consume_doc_comment (); } void case_187() -#line 1718 "cs-parser.jay" +#line 1719 "cs-parser.jay" { var type = (FullNamedExpression) yyVals[-3+yyTop]; current_property = new Property (current_class, type, (Modifiers) yyVals[-4+yyTop], @@ -5020,7 +5021,7 @@ void case_187() } void case_188() -#line 1732 "cs-parser.jay" +#line 1733 "cs-parser.jay" { lexer.PropertyParsing = false; @@ -5029,14 +5030,14 @@ void case_188() } void case_189() -#line 1739 "cs-parser.jay" +#line 1740 "cs-parser.jay" { lbag.AppendToMember (current_property, GetLocation (yyVals[0+yyTop])); current_property = null; } void case_191() -#line 1753 "cs-parser.jay" +#line 1754 "cs-parser.jay" { valid_param_mod = 0; var type = (FullNamedExpression) yyVals[-6+yyTop]; @@ -5063,7 +5064,7 @@ void case_191() } void case_193() -#line 1782 "cs-parser.jay" +#line 1783 "cs-parser.jay" { if (current_property.AccessorFirst != null && current_property.AccessorFirst.Block == null) ((Indexer) current_property).ParameterInfo.CheckParameters (current_property); @@ -5076,7 +5077,7 @@ void case_193() } void case_198() -#line 1801 "cs-parser.jay" +#line 1802 "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 ()); @@ -5089,7 +5090,7 @@ void case_198() } void case_199() -#line 1815 "cs-parser.jay" +#line 1816 "cs-parser.jay" { if (yyVals[-1+yyTop] != ModifierNone && lang_version == LanguageVersion.ISO_1) { FeatureIsNotAvailable (GetLocation (yyVals[-1+yyTop]), "access modifiers on properties"); @@ -5112,7 +5113,7 @@ void case_199() } void case_200() -#line 1836 "cs-parser.jay" +#line 1837 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { current_property.Get.Block = (ToplevelBlock) yyVals[0+yyTop]; @@ -5135,7 +5136,7 @@ void case_200() } void case_201() -#line 1860 "cs-parser.jay" +#line 1861 "cs-parser.jay" { if (yyVals[-1+yyTop] != ModifierNone && lang_version == LanguageVersion.ISO_1) { FeatureIsNotAvailable (GetLocation (yyVals[-1+yyTop]), "access modifiers on properties"); @@ -5163,7 +5164,7 @@ void case_201() } void case_202() -#line 1886 "cs-parser.jay" +#line 1887 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { current_property.Set.Block = (ToplevelBlock) yyVals[0+yyTop]; @@ -5186,21 +5187,21 @@ void case_202() } void case_204() -#line 1911 "cs-parser.jay" +#line 1912 "cs-parser.jay" { savedLocation = GetLocation (yyVals[0+yyTop]); yyVal = null; } void case_205() -#line 1916 "cs-parser.jay" +#line 1917 "cs-parser.jay" { Error_SyntaxError (1043, yyToken, "Invalid accessor body"); yyVal = null; } void case_207() -#line 1931 "cs-parser.jay" +#line 1932 "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]); @@ -5208,7 +5209,7 @@ void case_207() } void case_208() -#line 1938 "cs-parser.jay" +#line 1939 "cs-parser.jay" { lexer.ConstraintsParsing = false; @@ -5223,7 +5224,7 @@ void case_208() } void case_209() -#line 1951 "cs-parser.jay" +#line 1952 "cs-parser.jay" { --lexer.parsing_declaration; if (doc_support) @@ -5231,7 +5232,7 @@ void case_209() } void case_210() -#line 1957 "cs-parser.jay" +#line 1958 "cs-parser.jay" { if (yyVals[0+yyTop] != null) current_class.OptionalSemicolon = GetLocation (yyVals[0+yyTop]); @@ -5240,7 +5241,7 @@ void case_210() } void case_226() -#line 2017 "cs-parser.jay" +#line 2018 "cs-parser.jay" { OperatorDeclaration decl = (OperatorDeclaration) yyVals[-2+yyTop]; if (decl != null) { @@ -5270,14 +5271,14 @@ void case_226() } void case_230() -#line 2054 "cs-parser.jay" +#line 2055 "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_232() -#line 2066 "cs-parser.jay" +#line 2067 "cs-parser.jay" { valid_param_mod = 0; @@ -5319,7 +5320,7 @@ void case_232() } void case_257() -#line 2142 "cs-parser.jay" +#line 2143 "cs-parser.jay" { valid_param_mod = 0; @@ -5336,7 +5337,7 @@ void case_257() } void case_259() -#line 2161 "cs-parser.jay" +#line 2162 "cs-parser.jay" { valid_param_mod = 0; @@ -5353,7 +5354,7 @@ void case_259() } void case_260() -#line 2176 "cs-parser.jay" +#line 2177 "cs-parser.jay" { Error_SyntaxError (yyToken); current_local_parameters = ParametersCompiled.EmptyReadOnlyParameters; @@ -5361,7 +5362,7 @@ void case_260() } void case_261() -#line 2182 "cs-parser.jay" +#line 2183 "cs-parser.jay" { Error_SyntaxError (yyToken); current_local_parameters = ParametersCompiled.EmptyReadOnlyParameters; @@ -5369,7 +5370,7 @@ void case_261() } void case_262() -#line 2192 "cs-parser.jay" +#line 2193 "cs-parser.jay" { Constructor c = (Constructor) yyVals[-1+yyTop]; c.Block = (ToplevelBlock) yyVals[0+yyTop]; @@ -5385,7 +5386,7 @@ void case_262() } void case_263() -#line 2211 "cs-parser.jay" +#line 2212 "cs-parser.jay" { if (doc_support) { tmpComment = Lexer.consume_doc_comment (); @@ -5396,7 +5397,7 @@ void case_263() } void case_264() -#line 2220 "cs-parser.jay" +#line 2221 "cs-parser.jay" { valid_param_mod = 0; current_local_parameters = (ParametersCompiled) yyVals[-1+yyTop]; @@ -5409,7 +5410,7 @@ void case_264() } void case_265() -#line 2231 "cs-parser.jay" +#line 2232 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-6+yyTop]; var mods = (Modifiers) yyVals[-7+yyTop]; @@ -5439,7 +5440,7 @@ void case_265() } void case_271() -#line 2276 "cs-parser.jay" +#line 2277 "cs-parser.jay" { --lexer.parsing_block; yyVal = new ConstructorBaseInitializer ((Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-4+yyTop])); @@ -5447,7 +5448,7 @@ void case_271() } void case_273() -#line 2286 "cs-parser.jay" +#line 2287 "cs-parser.jay" { --lexer.parsing_block; yyVal = new ConstructorThisInitializer ((Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-4+yyTop])); @@ -5455,14 +5456,14 @@ void case_273() } void case_274() -#line 2292 "cs-parser.jay" +#line 2293 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } void case_275() -#line 2300 "cs-parser.jay" +#line 2301 "cs-parser.jay" { if (doc_support) { tmpComment = Lexer.consume_doc_comment (); @@ -5473,7 +5474,7 @@ void case_275() } void case_276() -#line 2309 "cs-parser.jay" +#line 2310 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; if (lt.Value != current_container.MemberName.Name){ @@ -5495,7 +5496,7 @@ void case_276() } void case_277() -#line 2334 "cs-parser.jay" +#line 2335 "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); @@ -5509,7 +5510,7 @@ void case_277() } void case_278() -#line 2348 "cs-parser.jay" +#line 2349 "cs-parser.jay" { if (doc_support) { current_event_field.DocComment = Lexer.consume_doc_comment (); @@ -5521,7 +5522,7 @@ void case_278() } void case_279() -#line 2361 "cs-parser.jay" +#line 2362 "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); @@ -5531,7 +5532,7 @@ void case_279() } void case_280() -#line 2369 "cs-parser.jay" +#line 2370 "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"); @@ -5540,7 +5541,7 @@ void case_280() } void case_281() -#line 2376 "cs-parser.jay" +#line 2377 "cs-parser.jay" { if (doc_support) { current_event.DocComment = Lexer.consume_doc_comment (); @@ -5553,14 +5554,14 @@ void case_281() } void case_284() -#line 2395 "cs-parser.jay" +#line 2396 "cs-parser.jay" { --lexer.parsing_block; current_event_field.Initializer = (Expression) yyVals[0+yyTop]; } void case_289() -#line 2419 "cs-parser.jay" +#line 2420 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), null); @@ -5568,7 +5569,7 @@ void case_289() } void case_291() -#line 2429 "cs-parser.jay" +#line 2430 "cs-parser.jay" { --lexer.parsing_block; var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; @@ -5577,7 +5578,7 @@ void case_291() } void case_292() -#line 2438 "cs-parser.jay" +#line 2439 "cs-parser.jay" { if (current_container.Kind == MemberKind.Interface) { report.Error (68, lexer.Location, "`{0}': event in interface cannot have an initializer", @@ -5591,28 +5592,28 @@ void case_292() } void case_296() -#line 2459 "cs-parser.jay" +#line 2460 "cs-parser.jay" { report.Error (65, lexer.Location, "`{0}': event property must have both add and remove accessors", current_event.GetSignatureForError ()); } void case_297() -#line 2464 "cs-parser.jay" +#line 2465 "cs-parser.jay" { report.Error (65, lexer.Location, "`{0}': event property must have both add and remove accessors", current_event.GetSignatureForError ()); } void case_298() -#line 2469 "cs-parser.jay" +#line 2470 "cs-parser.jay" { report.Error (1055, GetLocation (yyVals[0+yyTop]), "An add or remove accessor expected"); yyVal = null; } void case_299() -#line 2477 "cs-parser.jay" +#line 2478 "cs-parser.jay" { if (yyVals[-1+yyTop] != ModifierNone) { report.Error (1609, GetLocation (yyVals[-1+yyTop]), "Modifiers cannot be placed on event accessor declarations"); @@ -5626,7 +5627,7 @@ void case_299() } void case_300() -#line 2489 "cs-parser.jay" +#line 2490 "cs-parser.jay" { lexer.EventParsing = true; @@ -5641,7 +5642,7 @@ void case_300() } void case_301() -#line 2505 "cs-parser.jay" +#line 2506 "cs-parser.jay" { if (yyVals[-1+yyTop] != ModifierNone) { report.Error (1609, GetLocation (yyVals[-1+yyTop]), "Modifiers cannot be placed on event accessor declarations"); @@ -5655,7 +5656,7 @@ void case_301() } void case_302() -#line 2517 "cs-parser.jay" +#line 2518 "cs-parser.jay" { lexer.EventParsing = true; @@ -5670,14 +5671,14 @@ void case_302() } void case_303() -#line 2533 "cs-parser.jay" +#line 2534 "cs-parser.jay" { report.Error (73, lexer.Location, "An add or remove accessor must have a body"); yyVal = null; } void case_305() -#line 2545 "cs-parser.jay" +#line 2546 "cs-parser.jay" { enumCommas.Add (GetLocation (yyVals[-2+yyTop])); if (doc_support) @@ -5685,7 +5686,7 @@ void case_305() } void case_306() -#line 2551 "cs-parser.jay" +#line 2552 "cs-parser.jay" { if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; @@ -5700,7 +5701,7 @@ void case_306() } void case_307() -#line 2564 "cs-parser.jay" +#line 2565 "cs-parser.jay" { /* here will be evaluated after CLOSE_BLACE is consumed.*/ if (doc_support) @@ -5708,7 +5709,7 @@ void case_307() } void case_308() -#line 2570 "cs-parser.jay" +#line 2571 "cs-parser.jay" { enumCommas.Add (GetLocation (yyVals[-1+yyTop])); if (yyVals[0+yyTop] != null) @@ -5724,7 +5725,7 @@ void case_308() } void case_310() -#line 2588 "cs-parser.jay" +#line 2589 "cs-parser.jay" { var te = yyVals[0+yyTop] as TypeExpression; if (te == null || !EnumSpec.IsValidUnderlyingType (te.Type)) { @@ -5737,21 +5738,21 @@ void case_310() } void case_311() -#line 2599 "cs-parser.jay" +#line 2600 "cs-parser.jay" { Error_TypeExpected (GetLocation (yyVals[-1+yyTop])); yyVal = null; } void case_316() -#line 2617 "cs-parser.jay" +#line 2618 "cs-parser.jay" { enumCommas.Add (GetLocation (yyVals[-1+yyTop])); yyVal = yyVals[0+yyTop]; } void case_317() -#line 2625 "cs-parser.jay" +#line 2626 "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]); @@ -5766,7 +5767,7 @@ void case_317() } void case_318() -#line 2638 "cs-parser.jay" +#line 2639 "cs-parser.jay" { ++lexer.parsing_block; if (doc_support) { @@ -5776,7 +5777,7 @@ void case_318() } void case_319() -#line 2646 "cs-parser.jay" +#line 2647 "cs-parser.jay" { --lexer.parsing_block; @@ -5792,7 +5793,7 @@ void case_319() } void case_321() -#line 2671 "cs-parser.jay" +#line 2672 "cs-parser.jay" { valid_param_mod = 0; @@ -5812,7 +5813,7 @@ void case_321() } void case_323() -#line 2693 "cs-parser.jay" +#line 2694 "cs-parser.jay" { if (doc_support) { current_delegate.DocComment = Lexer.consume_doc_comment (); @@ -5828,7 +5829,7 @@ void case_323() } void case_325() -#line 2711 "cs-parser.jay" +#line 2712 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[0+yyTop]), "nullable types"); @@ -5837,7 +5838,7 @@ void case_325() } void case_327() -#line 2722 "cs-parser.jay" +#line 2723 "cs-parser.jay" { var lt1 = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var lt2 = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -5846,22 +5847,23 @@ void case_327() } void case_329() -#line 2733 "cs-parser.jay" +#line 2734 "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); - lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop])); + yyVal = new MemberName ((MemberName) yyVals[-3+yyTop], lt.Value, (TypeArguments) yyVals[0+yyTop], lt.Location) { + DotLocation = GetLocation (yyVals[-2+yyTop]) + }; } void case_330() -#line 2742 "cs-parser.jay" +#line 2744 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberName (lt.Value, (TypeArguments)yyVals[0+yyTop], lt.Location); } void case_332() -#line 2754 "cs-parser.jay" +#line 2756 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "generics"); @@ -5874,14 +5876,14 @@ void case_332() } void case_333() -#line 2765 "cs-parser.jay" +#line 2767 "cs-parser.jay" { Error_TypeExpected (lexer.Location); yyVal = new TypeArguments (); } void case_334() -#line 2773 "cs-parser.jay" +#line 2775 "cs-parser.jay" { TypeArguments type_args = new TypeArguments (); type_args.Add ((FullNamedExpression) yyVals[0+yyTop]); @@ -5890,7 +5892,7 @@ void case_334() } void case_335() -#line 2780 "cs-parser.jay" +#line 2782 "cs-parser.jay" { TypeArguments type_args = (TypeArguments) yyVals[-2+yyTop]; type_args.Add ((FullNamedExpression) yyVals[0+yyTop]); @@ -5899,7 +5901,7 @@ void case_335() } void case_337() -#line 2797 "cs-parser.jay" +#line 2799 "cs-parser.jay" { lexer.parsing_generic_declaration = false; var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; @@ -5907,7 +5909,7 @@ void case_337() } void case_338() -#line 2806 "cs-parser.jay" +#line 2808 "cs-parser.jay" { MemberName mn = (MemberName)yyVals[0+yyTop]; if (mn.TypeArguments != null) @@ -5916,7 +5918,7 @@ void case_338() } void case_340() -#line 2817 "cs-parser.jay" +#line 2819 "cs-parser.jay" { lexer.parsing_generic_declaration = false; var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -5924,21 +5926,21 @@ void case_340() } void case_341() -#line 2826 "cs-parser.jay" +#line 2828 "cs-parser.jay" { lexer.parsing_generic_declaration = false; yyVal = new MemberName (TypeContainer.DefaultIndexerName, GetLocation (yyVals[0+yyTop])); } void case_342() -#line 2831 "cs-parser.jay" +#line 2833 "cs-parser.jay" { lexer.parsing_generic_declaration = false; yyVal = new MemberName ((MemberName) yyVals[-1+yyTop], TypeContainer.DefaultIndexerName, null, GetLocation (yyVals[-1+yyTop])); } void case_343() -#line 2839 "cs-parser.jay" +#line 2841 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; yyVal = new MemberName (lt.Value, (TypeArguments) yyVals[-1+yyTop], lt.Location); @@ -5946,7 +5948,7 @@ void case_343() } void case_344() -#line 2845 "cs-parser.jay" +#line 2847 "cs-parser.jay" { var lt1 = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; var lt2 = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; @@ -5956,7 +5958,7 @@ void case_344() } void case_345() -#line 2853 "cs-parser.jay" +#line 2855 "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); @@ -5964,7 +5966,7 @@ void case_345() } void case_347() -#line 2863 "cs-parser.jay" +#line 2865 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "generics"); @@ -5974,7 +5976,7 @@ void case_347() } void case_348() -#line 2874 "cs-parser.jay" +#line 2876 "cs-parser.jay" { TypeArguments type_args = new TypeArguments (); type_args.Add ((FullNamedExpression)yyVals[0+yyTop]); @@ -5982,7 +5984,7 @@ void case_348() } void case_349() -#line 2880 "cs-parser.jay" +#line 2882 "cs-parser.jay" { TypeArguments type_args = (TypeArguments) yyVals[-2+yyTop]; type_args.Add ((FullNamedExpression)yyVals[0+yyTop]); @@ -5991,7 +5993,7 @@ void case_349() } void case_350() -#line 2890 "cs-parser.jay" +#line 2892 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken)yyVals[0+yyTop]; var variance = (Variance) yyVals[-1+yyTop]; @@ -6001,7 +6003,7 @@ void case_350() } void case_351() -#line 2898 "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"); @@ -6012,50 +6014,50 @@ void case_351() } void case_356() -#line 2932 "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_358() -#line 2941 "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_360() -#line 2950 "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_363() -#line 2966 "cs-parser.jay" +#line 2968 "cs-parser.jay" { MemberName name = (MemberName) yyVals[-1+yyTop]; if (yyVals[0+yyTop] != null) { - yyVal = new ComposedCast (name.GetTypeExpression (lbag), (ComposedTypeSpecifier) yyVals[0+yyTop]); + yyVal = new ComposedCast (name.GetTypeExpression (), (ComposedTypeSpecifier) yyVals[0+yyTop]); } else { if (name.Left == null && name.Name == "var") yyVal = new VarExpr (name.Location); else - yyVal = name.GetTypeExpression (lbag); + yyVal = name.GetTypeExpression (); } } void case_365() -#line 2983 "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_368() -#line 2999 "cs-parser.jay" +#line 3001 "cs-parser.jay" { var types = new List (2); types.Add ((FullNamedExpression) yyVals[0+yyTop]); @@ -6063,7 +6065,7 @@ void case_368() } void case_369() -#line 3005 "cs-parser.jay" +#line 3007 "cs-parser.jay" { var types = (List) yyVals[-2+yyTop]; types.Add ((FullNamedExpression) yyVals[0+yyTop]); @@ -6072,7 +6074,7 @@ void case_369() } void case_370() -#line 3015 "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 ()); @@ -6081,59 +6083,62 @@ void case_370() } void case_371() -#line 3022 "cs-parser.jay" +#line 3024 "cs-parser.jay" { Error_TypeExpected (lexer.Location); yyVal = null; } void case_408() -#line 3084 "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_409() -#line 3088 "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_420() -#line 3129 "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_422() -#line 3141 "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); - lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop])); + yyVal = new MemberAccess ((Expression) yyVals[-3+yyTop], lt.Value, (TypeArguments) yyVals[0+yyTop], lt.Location) { + DotLocation = GetLocation (yyVals[-2+yyTop]) + }; } void case_423() -#line 3147 "cs-parser.jay" +#line 3150 "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); - lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop])); + yyVal = new MemberAccess ((Expression) yyVals[-3+yyTop], lt.Value, (TypeArguments) yyVals[0+yyTop], lt.Location) { + DotLocation = GetLocation (yyVals[-2+yyTop]) + }; } void case_424() -#line 3153 "cs-parser.jay" +#line 3157 "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); - lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop])); + yyVal = new MemberAccess (new BaseThis (GetLocation (yyVals[-3+yyTop])), lt.Value, (TypeArguments) yyVals[0+yyTop], lt.Location) { + DotLocation = GetLocation (yyVals[-2+yyTop]) + }; } void case_425() -#line 3159 "cs-parser.jay" +#line 3164 "cs-parser.jay" { var lt1 = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var lt2 = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -6143,28 +6148,28 @@ void case_425() } void case_427() -#line 3169 "cs-parser.jay" +#line 3174 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new CompletionMemberAccess ((Expression) yyVals[-3+yyTop], lt.Value, lt.Location); } void case_429() -#line 3177 "cs-parser.jay" +#line 3182 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new CompletionMemberAccess ((Expression) yyVals[-3+yyTop], lt.Value, lt.Location); } void case_430() -#line 3185 "cs-parser.jay" +#line 3190 "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_433() -#line 3198 "cs-parser.jay" +#line 3203 "cs-parser.jay" { if (yyVals[-1+yyTop] == null) { yyVal = CollectionOrObjectInitializers.Empty; @@ -6176,14 +6181,14 @@ void case_433() } void case_434() -#line 3208 "cs-parser.jay" +#line 3213 "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_437() -#line 3224 "cs-parser.jay" +#line 3229 "cs-parser.jay" { var a = new List (); a.Add ((Expression) yyVals[0+yyTop]); @@ -6191,7 +6196,7 @@ void case_437() } void case_438() -#line 3230 "cs-parser.jay" +#line 3235 "cs-parser.jay" { var a = (List)yyVals[-2+yyTop]; a.Add ((Expression) yyVals[0+yyTop]); @@ -6200,14 +6205,14 @@ void case_438() } void case_439() -#line 3236 "cs-parser.jay" +#line 3241 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = yyVals[-1+yyTop]; } void case_440() -#line 3244 "cs-parser.jay" +#line 3249 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; yyVal = new ElementInitializer (lt.Value, (Expression)yyVals[0+yyTop], lt.Location); @@ -6215,7 +6220,7 @@ void case_440() } void case_442() -#line 3253 "cs-parser.jay" +#line 3258 "cs-parser.jay" { CompletionSimpleName csn = yyVals[-1+yyTop] as CompletionSimpleName; if (csn == null) @@ -6225,7 +6230,7 @@ void case_442() } void case_443() -#line 3261 "cs-parser.jay" +#line 3266 "cs-parser.jay" { if (yyVals[-1+yyTop] == null) yyVal = null; @@ -6234,14 +6239,14 @@ void case_443() } void case_444() -#line 3268 "cs-parser.jay" +#line 3273 "cs-parser.jay" { report.Error (1920, GetLocation (yyVals[-1+yyTop]), "An element initializer cannot be empty"); yyVal = null; } void case_449() -#line 3286 "cs-parser.jay" +#line 3291 "cs-parser.jay" { Arguments list = new Arguments (4); list.Add ((Argument) yyVals[0+yyTop]); @@ -6249,7 +6254,7 @@ void case_449() } void case_450() -#line 3292 "cs-parser.jay" +#line 3297 "cs-parser.jay" { Arguments list = (Arguments) yyVals[-2+yyTop]; if (list [list.Count - 1] is NamedArgument) @@ -6261,7 +6266,7 @@ void case_450() } void case_451() -#line 3302 "cs-parser.jay" +#line 3307 "cs-parser.jay" { Arguments list = (Arguments) yyVals[-2+yyTop]; NamedArgument a = (NamedArgument) yyVals[0+yyTop]; @@ -6278,56 +6283,56 @@ void case_451() } void case_452() -#line 3317 "cs-parser.jay" +#line 3322 "cs-parser.jay" { report.Error (839, GetLocation (yyVals[0+yyTop]), "An argument is missing"); yyVal = yyVals[-1+yyTop]; } void case_453() -#line 3322 "cs-parser.jay" +#line 3327 "cs-parser.jay" { report.Error (839, GetLocation (yyVals[-1+yyTop]), "An argument is missing"); yyVal = null; } void case_458() -#line 3343 "cs-parser.jay" +#line 3348 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop], Argument.AType.Ref); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } void case_459() -#line 3348 "cs-parser.jay" +#line 3353 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop], Argument.AType.Out); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } void case_460() -#line 3353 "cs-parser.jay" +#line 3358 "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_461() -#line 3358 "cs-parser.jay" +#line 3363 "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_463() -#line 3370 "cs-parser.jay" +#line 3375 "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_464() -#line 3378 "cs-parser.jay" +#line 3383 "cs-parser.jay" { var list = new List (4); list.Add ((Expression) yyVals[0+yyTop]); @@ -6335,7 +6340,7 @@ void case_464() } void case_465() -#line 3384 "cs-parser.jay" +#line 3389 "cs-parser.jay" { var list = (List) yyVals[-2+yyTop]; list.Add ((Expression) yyVals[0+yyTop]); @@ -6344,14 +6349,14 @@ void case_465() } void case_466() -#line 3390 "cs-parser.jay" +#line 3395 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = yyVals[-1+yyTop]; } void case_467() -#line 3398 "cs-parser.jay" +#line 3403 "cs-parser.jay" { Arguments args = new Arguments (4); args.Add ((Argument) yyVals[0+yyTop]); @@ -6359,7 +6364,7 @@ void case_467() } void case_468() -#line 3404 "cs-parser.jay" +#line 3409 "cs-parser.jay" { Arguments args = (Arguments) yyVals[-2+yyTop]; if (args [args.Count - 1] is NamedArgument && !(yyVals[0+yyTop] is NamedArgument)) @@ -6371,21 +6376,21 @@ void case_468() } void case_472() -#line 3432 "cs-parser.jay" +#line 3437 "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_473() -#line 3437 "cs-parser.jay" +#line 3442 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new ElementAccess (null, null, GetLocation (yyVals[-1+yyTop])); } void case_476() -#line 3459 "cs-parser.jay" +#line 3464 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { if (lang_version <= LanguageVersion.ISO_2) @@ -6400,7 +6405,7 @@ void case_476() } void case_477() -#line 3472 "cs-parser.jay" +#line 3477 "cs-parser.jay" { if (lang_version <= LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "collection initializers"); @@ -6409,7 +6414,7 @@ void case_477() } void case_478() -#line 3484 "cs-parser.jay" +#line 3489 "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])) { @@ -6419,7 +6424,7 @@ void case_478() } void case_479() -#line 3492 "cs-parser.jay" +#line 3497 "cs-parser.jay" { if (yyVals[0+yyTop] == null) report.Error (1586, GetLocation (yyVals[-3+yyTop]), "Array creation must have array size or array initializer"); @@ -6428,7 +6433,7 @@ void case_479() } void case_480() -#line 3499 "cs-parser.jay" +#line 3504 "cs-parser.jay" { if (lang_version <= LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "implicitly typed arrays"); @@ -6437,28 +6442,28 @@ void case_480() } void case_481() -#line 3506 "cs-parser.jay" +#line 3511 "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_482() -#line 3511 "cs-parser.jay" +#line 3516 "cs-parser.jay" { Error_SyntaxError (1526, yyToken, "Unexpected symbol"); yyVal = new ArrayCreation ((FullNamedExpression) yyVals[-1+yyTop], null, GetLocation (yyVals[-2+yyTop])); } void case_484() -#line 3522 "cs-parser.jay" +#line 3527 "cs-parser.jay" { --lexer.parsing_type; yyVal = yyVals[0+yyTop]; } void case_485() -#line 3530 "cs-parser.jay" +#line 3535 "cs-parser.jay" { if (lang_version <= LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-3+yyTop]), "anonymous types"); @@ -6470,7 +6475,7 @@ void case_485() } void case_490() -#line 3553 "cs-parser.jay" +#line 3558 "cs-parser.jay" { var a = new List (4); a.Add ((AnonymousTypeParameter) yyVals[0+yyTop]); @@ -6478,7 +6483,7 @@ void case_490() } void case_491() -#line 3559 "cs-parser.jay" +#line 3564 "cs-parser.jay" { var a = (List) yyVals[-2+yyTop]; a.Add ((AnonymousTypeParameter) yyVals[0+yyTop]); @@ -6488,7 +6493,7 @@ void case_491() } void case_492() -#line 3570 "cs-parser.jay" +#line 3575 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken)yyVals[-2+yyTop]; yyVal = new AnonymousTypeParameter ((Expression)yyVals[0+yyTop], lt.Value, lt.Location); @@ -6496,7 +6501,7 @@ void case_492() } void case_493() -#line 3576 "cs-parser.jay" +#line 3581 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken)yyVals[0+yyTop]; yyVal = new AnonymousTypeParameter (new SimpleName (lt.Value, lt.Location), @@ -6504,14 +6509,14 @@ void case_493() } void case_494() -#line 3582 "cs-parser.jay" +#line 3587 "cs-parser.jay" { MemberAccess ma = (MemberAccess) yyVals[0+yyTop]; yyVal = new AnonymousTypeParameter (ma, ma.Name, ma.Location); } void case_495() -#line 3587 "cs-parser.jay" +#line 3592 "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"); @@ -6519,28 +6524,28 @@ void case_495() } void case_499() -#line 3602 "cs-parser.jay" +#line 3607 "cs-parser.jay" { ((ComposedTypeSpecifier) yyVals[-1+yyTop]).Next = (ComposedTypeSpecifier) yyVals[0+yyTop]; yyVal = yyVals[-1+yyTop]; } void case_500() -#line 3610 "cs-parser.jay" +#line 3615 "cs-parser.jay" { yyVal = ComposedTypeSpecifier.CreateArrayDimension (1, GetLocation (yyVals[-1+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_501() -#line 3615 "cs-parser.jay" +#line 3620 "cs-parser.jay" { yyVal = ComposedTypeSpecifier.CreateArrayDimension ((int)yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_506() -#line 3645 "cs-parser.jay" +#line 3650 "cs-parser.jay" { var ai = new ArrayInitializer (0, GetLocation (yyVals[-1+yyTop])); ai.VariableDeclaration = current_variable; @@ -6549,7 +6554,7 @@ void case_506() } void case_507() -#line 3652 "cs-parser.jay" +#line 3657 "cs-parser.jay" { var ai = new ArrayInitializer ((List) yyVals[-2+yyTop], GetLocation (yyVals[-3+yyTop])); ai.VariableDeclaration = current_variable; @@ -6562,7 +6567,7 @@ void case_507() } void case_508() -#line 3666 "cs-parser.jay" +#line 3671 "cs-parser.jay" { var list = new List (4); list.Add ((Expression) yyVals[0+yyTop]); @@ -6570,7 +6575,7 @@ void case_508() } void case_509() -#line 3672 "cs-parser.jay" +#line 3677 "cs-parser.jay" { var list = (List) yyVals[-2+yyTop]; list.Add ((Expression) yyVals[0+yyTop]); @@ -6579,7 +6584,7 @@ void case_509() } void case_511() -#line 3686 "cs-parser.jay" +#line 3691 "cs-parser.jay" { lexer.TypeOfParsing = false; yyVal = new TypeOf ((FullNamedExpression) yyVals[-1+yyTop], GetLocation (yyVals[-4+yyTop])); @@ -6587,14 +6592,14 @@ void case_511() } void case_514() -#line 3697 "cs-parser.jay" +#line 3702 "cs-parser.jay" { Error_TypeExpected (lexer.Location); yyVal = null; } void case_515() -#line 3705 "cs-parser.jay" +#line 3710 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -6602,7 +6607,7 @@ void case_515() } void case_516() -#line 3711 "cs-parser.jay" +#line 3716 "cs-parser.jay" { var lt1 = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var lt2 = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -6612,34 +6617,40 @@ void case_516() } void case_517() -#line 3719 "cs-parser.jay" +#line 3724 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; - yyVal = new MemberAccess ((Expression) yyVals[-2+yyTop], lt.Value, lt.Location); + yyVal = new MemberAccess ((Expression) yyVals[-2+yyTop], lt.Value, lt.Location) { + DotLocation = GetLocation (yyVals[-1+yyTop]) + }; } void case_518() -#line 3725 "cs-parser.jay" +#line 3732 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; - yyVal = new MemberAccess ((Expression) yyVals[-3+yyTop], lt.Value, (int) yyVals[0+yyTop], lt.Location); + yyVal = new MemberAccess ((Expression) yyVals[-3+yyTop], lt.Value, (int) yyVals[0+yyTop], lt.Location) { + DotLocation = GetLocation (yyVals[-2+yyTop]) + }; } void case_519() -#line 3731 "cs-parser.jay" +#line 3740 "cs-parser.jay" { - var te = ((MemberName) yyVals[-3+yyTop]).GetTypeExpression (lbag); + var te = ((MemberName) yyVals[-3+yyTop]).GetTypeExpression (); if (te.HasTypeArguments) Error_TypeExpected (GetLocation (yyVals[0+yyTop])); var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; - yyVal = new MemberAccess (te, lt.Value, (int) yyVals[0+yyTop], lt.Location); + yyVal = new MemberAccess (te, lt.Value, (int) yyVals[0+yyTop], lt.Location) { + DotLocation = GetLocation (yyVals[-2+yyTop]) + }; } void case_520() -#line 3743 "cs-parser.jay" +#line 3754 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[0+yyTop]), "generics"); @@ -6648,7 +6659,7 @@ void case_520() } void case_521() -#line 3753 "cs-parser.jay" +#line 3764 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; if (lang_version == LanguageVersion.ISO_1) @@ -6658,35 +6669,35 @@ void case_521() } void case_522() -#line 3764 "cs-parser.jay" +#line 3775 "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_523() -#line 3772 "cs-parser.jay" +#line 3783 "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_524() -#line 3780 "cs-parser.jay" +#line 3791 "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_525() -#line 3788 "cs-parser.jay" +#line 3799 "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_527() -#line 3800 "cs-parser.jay" +#line 3811 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); if ((ParametersCompiled) yyVals[-2+yyTop] != ParametersCompiled.Undefined) { @@ -6697,7 +6708,7 @@ void case_527() } void case_533() -#line 3832 "cs-parser.jay" +#line 3843 "cs-parser.jay" { valid_param_mod = 0; yyVal = yyVals[-1+yyTop]; @@ -6706,7 +6717,7 @@ void case_533() } void case_534() -#line 3842 "cs-parser.jay" +#line 3853 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-3+yyTop]), "default value expression"); @@ -6716,147 +6727,147 @@ void case_534() } void case_540() -#line 3867 "cs-parser.jay" +#line 3878 "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_541() -#line 3875 "cs-parser.jay" +#line 3886 "cs-parser.jay" { current_block.ParametersBlock.IsAsync = true; yyVal = new Await ((Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_550() -#line 3916 "cs-parser.jay" +#line 3927 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Multiply, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_551() -#line 3921 "cs-parser.jay" +#line 3932 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Division, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_552() -#line 3926 "cs-parser.jay" +#line 3937 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Modulus, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_554() -#line 3935 "cs-parser.jay" +#line 3946 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Addition, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_556() -#line 3944 "cs-parser.jay" +#line 3955 "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_560() -#line 3961 "cs-parser.jay" +#line 3972 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LeftShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_561() -#line 3966 "cs-parser.jay" +#line 3977 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.RightShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_563() -#line 3975 "cs-parser.jay" +#line 3986 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LessThan, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_564() -#line 3980 "cs-parser.jay" +#line 3991 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.GreaterThan, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_565() -#line 3985 "cs-parser.jay" +#line 3996 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LessThanOrEqual, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_566() -#line 3990 "cs-parser.jay" +#line 4001 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.GreaterThanOrEqual, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_568() -#line 3999 "cs-parser.jay" +#line 4010 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Equality, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_569() -#line 4004 "cs-parser.jay" +#line 4015 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Inequality, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_571() -#line 4013 "cs-parser.jay" +#line 4024 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.BitwiseAnd, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_573() -#line 4022 "cs-parser.jay" +#line 4033 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.ExclusiveOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_575() -#line 4031 "cs-parser.jay" +#line 4042 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.BitwiseOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_577() -#line 4040 "cs-parser.jay" +#line 4051 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LogicalAnd, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_579() -#line 4049 "cs-parser.jay" +#line 4060 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LogicalOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_581() -#line 4058 "cs-parser.jay" +#line 4069 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-1+yyTop]), "null coalescing operator"); @@ -6865,84 +6876,84 @@ void case_581() } void case_583() -#line 4069 "cs-parser.jay" +#line 4080 "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_585() -#line 4081 "cs-parser.jay" +#line 4092 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Multiply, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_586() -#line 4086 "cs-parser.jay" +#line 4097 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Division, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_587() -#line 4091 "cs-parser.jay" +#line 4102 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Modulus, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_588() -#line 4096 "cs-parser.jay" +#line 4107 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Addition, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_589() -#line 4101 "cs-parser.jay" +#line 4112 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Subtraction, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_590() -#line 4106 "cs-parser.jay" +#line 4117 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.LeftShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_591() -#line 4111 "cs-parser.jay" +#line 4122 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.RightShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_592() -#line 4116 "cs-parser.jay" +#line 4127 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.BitwiseAnd, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_593() -#line 4121 "cs-parser.jay" +#line 4132 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.BitwiseOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_594() -#line 4126 "cs-parser.jay" +#line 4137 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.ExclusiveOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_595() -#line 4134 "cs-parser.jay" +#line 4145 "cs-parser.jay" { var pars = new List (4); pars.Add ((Parameter) yyVals[0+yyTop]); @@ -6951,7 +6962,7 @@ void case_595() } void case_596() -#line 4141 "cs-parser.jay" +#line 4152 "cs-parser.jay" { var pars = (List) yyVals[-2+yyTop]; Parameter p = (Parameter)yyVals[0+yyTop]; @@ -6966,7 +6977,7 @@ void case_596() } void case_597() -#line 4157 "cs-parser.jay" +#line 4168 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; @@ -6974,7 +6985,7 @@ void case_597() } void case_598() -#line 4163 "cs-parser.jay" +#line 4174 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; @@ -6982,21 +6993,21 @@ void case_598() } void case_599() -#line 4169 "cs-parser.jay" +#line 4180 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new ImplicitLambdaParameter (lt.Value, lt.Location); } void case_601() -#line 4177 "cs-parser.jay" +#line 4188 "cs-parser.jay" { var pars_list = (List) yyVals[0+yyTop]; yyVal = new ParametersCompiled (pars_list.ToArray ()); } void case_605() -#line 4193 "cs-parser.jay" +#line 4204 "cs-parser.jay" { Block b = end_block (lexer.Location); b.IsCompilerGenerated = true; @@ -7005,14 +7016,14 @@ void case_605() } void case_607() -#line 4204 "cs-parser.jay" +#line 4215 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = EmptyExpression.Null; } void case_608() -#line 4212 "cs-parser.jay" +#line 4223 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; Parameter p = new ImplicitLambdaParameter (lt.Value, lt.Location); @@ -7020,14 +7031,14 @@ void case_608() } void case_609() -#line 4218 "cs-parser.jay" +#line 4229 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop])); } void case_610() -#line 4223 "cs-parser.jay" +#line 4234 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; Parameter p = new ImplicitLambdaParameter (lt.Value, lt.Location); @@ -7035,63 +7046,63 @@ void case_610() } void case_611() -#line 4229 "cs-parser.jay" +#line 4240 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop])); } void case_613() -#line 4238 "cs-parser.jay" +#line 4249 "cs-parser.jay" { valid_param_mod = 0; start_anonymous (true, (ParametersCompiled) yyVals[-2+yyTop], false, GetLocation (yyVals[-4+yyTop])); } void case_614() -#line 4243 "cs-parser.jay" +#line 4254 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-2+yyTop])); } void case_616() -#line 4252 "cs-parser.jay" +#line 4263 "cs-parser.jay" { valid_param_mod = 0; start_anonymous (true, (ParametersCompiled) yyVals[-2+yyTop], true, GetLocation (yyVals[-5+yyTop])); } void case_617() -#line 4257 "cs-parser.jay" +#line 4268 "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_624() -#line 4280 "cs-parser.jay" +#line 4291 "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_625() -#line 4285 "cs-parser.jay" +#line 4296 "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_626() -#line 4290 "cs-parser.jay" +#line 4301 "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_630() -#line 4319 "cs-parser.jay" +#line 4330 "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]); @@ -7104,7 +7115,7 @@ void case_630() } void case_631() -#line 4331 "cs-parser.jay" +#line 4342 "cs-parser.jay" { lexer.ConstraintsParsing = false; @@ -7119,7 +7130,7 @@ void case_631() } void case_632() -#line 4344 "cs-parser.jay" +#line 4355 "cs-parser.jay" { --lexer.parsing_declaration; if (doc_support) @@ -7127,7 +7138,7 @@ void case_632() } void case_633() -#line 4350 "cs-parser.jay" +#line 4361 "cs-parser.jay" { lbag.AppendToMember (current_class, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop])); if (yyVals[0+yyTop] != null) @@ -7136,7 +7147,7 @@ void case_633() } void case_636() -#line 4367 "cs-parser.jay" +#line 4378 "cs-parser.jay" { mod_locations = null; yyVal = ModifierNone; @@ -7144,7 +7155,7 @@ void case_636() } void case_639() -#line 4381 "cs-parser.jay" +#line 4392 "cs-parser.jay" { var m1 = (Modifiers) yyVals[-1+yyTop]; var m2 = (Modifiers) yyVals[0+yyTop]; @@ -7162,7 +7173,7 @@ void case_639() } void case_640() -#line 4400 "cs-parser.jay" +#line 4411 "cs-parser.jay" { yyVal = Modifiers.NEW; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); @@ -7172,91 +7183,91 @@ void case_640() } void case_641() -#line 4408 "cs-parser.jay" +#line 4419 "cs-parser.jay" { yyVal = Modifiers.PUBLIC; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_642() -#line 4413 "cs-parser.jay" +#line 4424 "cs-parser.jay" { yyVal = Modifiers.PROTECTED; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_643() -#line 4418 "cs-parser.jay" +#line 4429 "cs-parser.jay" { yyVal = Modifiers.INTERNAL; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_644() -#line 4423 "cs-parser.jay" +#line 4434 "cs-parser.jay" { yyVal = Modifiers.PRIVATE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_645() -#line 4428 "cs-parser.jay" +#line 4439 "cs-parser.jay" { yyVal = Modifiers.ABSTRACT; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_646() -#line 4433 "cs-parser.jay" +#line 4444 "cs-parser.jay" { yyVal = Modifiers.SEALED; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_647() -#line 4438 "cs-parser.jay" +#line 4449 "cs-parser.jay" { yyVal = Modifiers.STATIC; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_648() -#line 4443 "cs-parser.jay" +#line 4454 "cs-parser.jay" { yyVal = Modifiers.READONLY; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_649() -#line 4448 "cs-parser.jay" +#line 4459 "cs-parser.jay" { yyVal = Modifiers.VIRTUAL; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_650() -#line 4453 "cs-parser.jay" +#line 4464 "cs-parser.jay" { yyVal = Modifiers.OVERRIDE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_651() -#line 4458 "cs-parser.jay" +#line 4469 "cs-parser.jay" { yyVal = Modifiers.EXTERN; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_652() -#line 4463 "cs-parser.jay" +#line 4474 "cs-parser.jay" { yyVal = Modifiers.VOLATILE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_653() -#line 4468 "cs-parser.jay" +#line 4479 "cs-parser.jay" { yyVal = Modifiers.UNSAFE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); @@ -7265,28 +7276,28 @@ void case_653() } void case_654() -#line 4475 "cs-parser.jay" +#line 4486 "cs-parser.jay" { yyVal = Modifiers.ASYNC; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_656() -#line 4484 "cs-parser.jay" +#line 4495 "cs-parser.jay" { lbag.AppendToMember (current_class, GetLocation (yyVals[-1+yyTop])); current_container.AddBasesForPart (current_class, (List) yyVals[0+yyTop]); } void case_659() -#line 4497 "cs-parser.jay" +#line 4508 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } void case_660() -#line 4505 "cs-parser.jay" +#line 4516 "cs-parser.jay" { var constraints = new List (1); constraints.Add ((Constraints) yyVals[0+yyTop]); @@ -7294,7 +7305,7 @@ void case_660() } void case_661() -#line 4511 "cs-parser.jay" +#line 4522 "cs-parser.jay" { var constraints = (List) yyVals[-1+yyTop]; Constraints new_constraint = (Constraints)yyVals[0+yyTop]; @@ -7312,7 +7323,7 @@ void case_661() } void case_662() -#line 4530 "cs-parser.jay" +#line 4541 "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])); @@ -7320,7 +7331,7 @@ void case_662() } void case_663() -#line 4539 "cs-parser.jay" +#line 4550 "cs-parser.jay" { var constraints = new List (1); constraints.Add ((FullNamedExpression) yyVals[0+yyTop]); @@ -7328,7 +7339,7 @@ void case_663() } void case_664() -#line 4545 "cs-parser.jay" +#line 4556 "cs-parser.jay" { var constraints = (List) yyVals[-2+yyTop]; var prev = constraints [constraints.Count - 1] as SpecialContraintExpr; @@ -7353,7 +7364,7 @@ void case_664() } void case_665() -#line 4571 "cs-parser.jay" +#line 4582 "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 ()); @@ -7362,14 +7373,14 @@ void case_665() } void case_666() -#line 4578 "cs-parser.jay" +#line 4589 "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_670() -#line 4598 "cs-parser.jay" +#line 4609 "cs-parser.jay" { if (lang_version <= LanguageVersion.V_3) FeatureIsNotAvailable (lexer.Location, "generic type variance"); @@ -7378,91 +7389,91 @@ void case_670() } void case_671() -#line 4608 "cs-parser.jay" +#line 4619 "cs-parser.jay" { yyVal = Variance.Covariant; savedLocation = GetLocation (yyVals[0+yyTop]); } void case_672() -#line 4613 "cs-parser.jay" +#line 4624 "cs-parser.jay" { yyVal = Variance.Contravariant; savedLocation = GetLocation (yyVals[0+yyTop]); } void case_673() -#line 4634 "cs-parser.jay" +#line 4645 "cs-parser.jay" { ++lexer.parsing_block; start_block (GetLocation (yyVals[0+yyTop])); } void case_675() -#line 4646 "cs-parser.jay" +#line 4657 "cs-parser.jay" { --lexer.parsing_block; yyVal = end_block (GetLocation (yyVals[0+yyTop])); } void case_676() -#line 4651 "cs-parser.jay" +#line 4662 "cs-parser.jay" { --lexer.parsing_block; yyVal = end_block (lexer.Location); } void case_677() -#line 4660 "cs-parser.jay" +#line 4671 "cs-parser.jay" { ++lexer.parsing_block; current_block.StartLocation = GetLocation (yyVals[0+yyTop]); } void case_678() -#line 4665 "cs-parser.jay" +#line 4676 "cs-parser.jay" { --lexer.parsing_block; yyVal = end_block (GetLocation (yyVals[0+yyTop])); } void case_686() -#line 4692 "cs-parser.jay" +#line 4703 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } void case_719() -#line 4756 "cs-parser.jay" +#line 4767 "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_720() -#line 4761 "cs-parser.jay" +#line 4772 "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_721() -#line 4766 "cs-parser.jay" +#line 4777 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new EmptyStatement (GetLocation (yyVals[0+yyTop])); } void case_722() -#line 4774 "cs-parser.jay" +#line 4785 "cs-parser.jay" { /* Uses lexer.Location because semicolon location is not kept in quick mode*/ yyVal = new EmptyStatement (lexer.Location); } void case_723() -#line 4782 "cs-parser.jay" +#line 4793 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; LabeledStatement labeled = new LabeledStatement (lt.Value, current_block, lt.Location); @@ -7472,7 +7483,7 @@ void case_723() } void case_726() -#line 4795 "cs-parser.jay" +#line 4806 "cs-parser.jay" { if (yyVals[-1+yyTop] is VarExpr) yyVals[-1+yyTop] = new SimpleName ("var", ((VarExpr) yyVals[-1+yyTop]).Location); @@ -7481,7 +7492,7 @@ void case_726() } void case_727() -#line 4811 "cs-parser.jay" +#line 4822 "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*/ @@ -7513,7 +7524,7 @@ void case_727() } void case_728() -#line 4841 "cs-parser.jay" +#line 4852 "cs-parser.jay" { ATypeNameExpression expr = yyVals[-1+yyTop] as ATypeNameExpression; @@ -7526,7 +7537,7 @@ void case_728() } void case_729() -#line 4852 "cs-parser.jay" +#line 4863 "cs-parser.jay" { if (yyVals[0+yyTop] == null) yyVal = yyVals[-1+yyTop]; @@ -7535,21 +7546,21 @@ void case_729() } void case_732() -#line 4867 "cs-parser.jay" +#line 4878 "cs-parser.jay" { Expression.Error_VoidInvalidInTheContext (GetLocation (yyVals[0+yyTop]), report); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } void case_734() -#line 4876 "cs-parser.jay" +#line 4887 "cs-parser.jay" { ((ComposedTypeSpecifier) yyVals[-1+yyTop]).Next = (ComposedTypeSpecifier) yyVals[0+yyTop]; yyVal = yyVals[-1+yyTop]; } void case_736() -#line 4891 "cs-parser.jay" +#line 4902 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_block, lt.Value, lt.Location); @@ -7558,7 +7569,7 @@ void case_736() } void case_737() -#line 4898 "cs-parser.jay" +#line 4909 "cs-parser.jay" { yyVal = current_variable; current_variable = null; @@ -7566,7 +7577,7 @@ void case_737() } void case_738() -#line 4904 "cs-parser.jay" +#line 4915 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.Constant, lt.Location); @@ -7575,7 +7586,7 @@ void case_738() } void case_739() -#line 4911 "cs-parser.jay" +#line 4922 "cs-parser.jay" { if (current_variable.Initializer != null) { lbag.AddLocation (current_variable, GetLocation (yyVals[-6+yyTop]), savedLocation, GetLocation (yyVals[0+yyTop])); @@ -7587,14 +7598,14 @@ void case_739() } void case_741() -#line 4925 "cs-parser.jay" +#line 4936 "cs-parser.jay" { current_variable.Initializer = (Expression) yyVals[0+yyTop]; lbag.AppendTo (current_variable, GetLocation (yyVals[-1+yyTop])); } void case_742() -#line 4930 "cs-parser.jay" +#line 4941 "cs-parser.jay" { if (yyToken == Token.OPEN_BRACKET_EXPR) { report.Error (650, lexer.Location, @@ -7605,7 +7616,7 @@ void case_742() } void case_746() -#line 4948 "cs-parser.jay" +#line 4959 "cs-parser.jay" { foreach (var d in current_variable.Declarators) { if (d.Initializer == null) @@ -7614,7 +7625,7 @@ void case_746() } void case_749() -#line 4963 "cs-parser.jay" +#line 4974 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_variable.Variable, lt.Value, lt.Location); @@ -7625,7 +7636,7 @@ void case_749() } void case_750() -#line 4972 "cs-parser.jay" +#line 4983 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var li = new LocalVariable (current_variable.Variable, lt.Value, lt.Location); @@ -7636,14 +7647,14 @@ void case_750() } void case_752() -#line 4988 "cs-parser.jay" +#line 4999 "cs-parser.jay" { savedLocation = GetLocation (yyVals[-1+yyTop]); current_variable.Initializer = (Expression) yyVals[0+yyTop]; } void case_757() -#line 5006 "cs-parser.jay" +#line 5017 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.Constant, lt.Location); @@ -7654,28 +7665,28 @@ void case_757() } void case_759() -#line 5019 "cs-parser.jay" +#line 5030 "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_760() -#line 5024 "cs-parser.jay" +#line 5035 "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_761() -#line 5032 "cs-parser.jay" +#line 5043 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } void case_765() -#line 5050 "cs-parser.jay" +#line 5061 "cs-parser.jay" { ExpressionStatement s = yyVals[0+yyTop] as ExpressionStatement; if (s == null) { @@ -7687,7 +7698,7 @@ void case_765() } void case_766() -#line 5063 "cs-parser.jay" +#line 5074 "cs-parser.jay" { Expression expr = (Expression) yyVals[0+yyTop]; ExpressionStatement s; @@ -7697,14 +7708,14 @@ void case_766() } void case_767() -#line 5071 "cs-parser.jay" +#line 5082 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new EmptyStatement (GetLocation (yyVals[0+yyTop])); } void case_770() -#line 5085 "cs-parser.jay" +#line 5096 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -7714,7 +7725,7 @@ void case_770() } void case_771() -#line 5094 "cs-parser.jay" +#line 5105 "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])); @@ -7726,7 +7737,7 @@ void case_771() } void case_773() -#line 5111 "cs-parser.jay" +#line 5122 "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])); @@ -7734,14 +7745,14 @@ void case_773() } void case_774() -#line 5120 "cs-parser.jay" +#line 5131 "cs-parser.jay" { report.Warning (1522, 1, current_block.StartLocation, "Empty switch block"); yyVal = new List (); } void case_776() -#line 5129 "cs-parser.jay" +#line 5140 "cs-parser.jay" { var sections = new List (4); @@ -7750,7 +7761,7 @@ void case_776() } void case_777() -#line 5136 "cs-parser.jay" +#line 5147 "cs-parser.jay" { var sections = (List) yyVals[-1+yyTop]; @@ -7759,14 +7770,14 @@ void case_777() } void case_778() -#line 5143 "cs-parser.jay" +#line 5154 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new List (); } void case_781() -#line 5162 "cs-parser.jay" +#line 5173 "cs-parser.jay" { var labels = new List (2); @@ -7775,7 +7786,7 @@ void case_781() } void case_782() -#line 5169 "cs-parser.jay" +#line 5180 "cs-parser.jay" { var labels = (List) (yyVals[-1+yyTop]); labels.Add ((SwitchLabel) yyVals[0+yyTop]); @@ -7784,14 +7795,14 @@ void case_782() } void case_783() -#line 5179 "cs-parser.jay" +#line 5190 "cs-parser.jay" { yyVal = new SwitchLabel ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_789() -#line 5198 "cs-parser.jay" +#line 5209 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -7801,21 +7812,21 @@ void case_789() } void case_790() -#line 5210 "cs-parser.jay" +#line 5221 "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_791() -#line 5218 "cs-parser.jay" +#line 5229 "cs-parser.jay" { start_block (GetLocation (yyVals[0+yyTop])); current_block.IsCompilerGenerated = true; } void case_793() -#line 5234 "cs-parser.jay" +#line 5245 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -7829,14 +7840,14 @@ void case_793() } void case_794() -#line 5246 "cs-parser.jay" +#line 5257 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = end_block (current_block.StartLocation); } void case_797() -#line 5259 "cs-parser.jay" +#line 5270 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_block, lt.Value, lt.Location); @@ -7845,14 +7856,14 @@ void case_797() } void case_798() -#line 5266 "cs-parser.jay" +#line 5277 "cs-parser.jay" { yyVal = current_variable; current_variable = null; } void case_806() -#line 5290 "cs-parser.jay" +#line 5301 "cs-parser.jay" { var sl = yyVals[-2+yyTop] as StatementList; if (sl == null) { @@ -7867,14 +7878,14 @@ void case_806() } void case_807() -#line 5306 "cs-parser.jay" +#line 5317 "cs-parser.jay" { report.Error (230, GetLocation (yyVals[-5+yyTop]), "Type and identifier are both required in a foreach statement"); yyVal = null; } void case_808() -#line 5311 "cs-parser.jay" +#line 5322 "cs-parser.jay" { start_block (GetLocation (yyVals[-5+yyTop])); current_block.IsCompilerGenerated = true; @@ -7885,7 +7896,7 @@ void case_808() } void case_809() -#line 5320 "cs-parser.jay" +#line 5331 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -7898,21 +7909,21 @@ void case_809() } void case_816() -#line 5343 "cs-parser.jay" +#line 5354 "cs-parser.jay" { yyVal = new Break (GetLocation (yyVals[-1+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } void case_817() -#line 5351 "cs-parser.jay" +#line 5362 "cs-parser.jay" { yyVal = new Continue (GetLocation (yyVals[-1+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } void case_818() -#line 5359 "cs-parser.jay" +#line 5370 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new Goto (lt.Value, GetLocation (yyVals[-2+yyTop])); @@ -7920,35 +7931,35 @@ void case_818() } void case_819() -#line 5365 "cs-parser.jay" +#line 5376 "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_820() -#line 5370 "cs-parser.jay" +#line 5381 "cs-parser.jay" { yyVal = new GotoDefault (GetLocation (yyVals[-2+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_821() -#line 5378 "cs-parser.jay" +#line 5389 "cs-parser.jay" { yyVal = new Return ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } void case_822() -#line 5386 "cs-parser.jay" +#line 5397 "cs-parser.jay" { yyVal = new Throw ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } void case_823() -#line 5394 "cs-parser.jay" +#line 5405 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; string s = lt.Value; @@ -7966,7 +7977,7 @@ void case_823() } void case_824() -#line 5410 "cs-parser.jay" +#line 5421 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; string s = lt.Value; @@ -7982,28 +7993,28 @@ void case_824() } void case_828() -#line 5436 "cs-parser.jay" +#line 5447 "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_829() -#line 5441 "cs-parser.jay" +#line 5452 "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_830() -#line 5446 "cs-parser.jay" +#line 5457 "cs-parser.jay" { report.Error (1524, GetLocation (yyVals[-2+yyTop]), "Expected catch or finally"); yyVal = null; } void case_831() -#line 5454 "cs-parser.jay" +#line 5465 "cs-parser.jay" { var l = new List (2); @@ -8012,7 +8023,7 @@ void case_831() } void case_832() -#line 5461 "cs-parser.jay" +#line 5472 "cs-parser.jay" { var l = (List) yyVals[-1+yyTop]; @@ -8030,7 +8041,7 @@ void case_832() } void case_836() -#line 5489 "cs-parser.jay" +#line 5500 "cs-parser.jay" { start_block (GetLocation (yyVals[-3+yyTop])); var c = new Catch (current_block, GetLocation (yyVals[-4+yyTop])); @@ -8047,7 +8058,7 @@ void case_836() } void case_838() -#line 5508 "cs-parser.jay" +#line 5519 "cs-parser.jay" { if (yyToken == Token.CLOSE_PARENS) { report.Error (1015, lexer.Location, @@ -8060,14 +8071,14 @@ void case_838() } void case_841() -#line 5536 "cs-parser.jay" +#line 5547 "cs-parser.jay" { if (!settings.Unsafe) Error_UnsafeCodeNotAllowed (GetLocation (yyVals[0+yyTop])); } void case_843() -#line 5546 "cs-parser.jay" +#line 5557 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8077,7 +8088,7 @@ void case_843() } void case_844() -#line 5557 "cs-parser.jay" +#line 5568 "cs-parser.jay" { start_block (GetLocation (yyVals[-2+yyTop])); @@ -8089,14 +8100,14 @@ void case_844() } void case_845() -#line 5567 "cs-parser.jay" +#line 5578 "cs-parser.jay" { yyVal = current_variable; current_variable = null; } void case_846() -#line 5572 "cs-parser.jay" +#line 5583 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8108,7 +8119,7 @@ void case_846() } void case_847() -#line 5585 "cs-parser.jay" +#line 5596 "cs-parser.jay" { start_block (GetLocation (yyVals[-2+yyTop])); @@ -8120,14 +8131,14 @@ void case_847() } void case_848() -#line 5595 "cs-parser.jay" +#line 5606 "cs-parser.jay" { yyVal = current_variable; current_variable = null; } void case_849() -#line 5600 "cs-parser.jay" +#line 5611 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8139,7 +8150,7 @@ void case_849() } void case_850() -#line 5610 "cs-parser.jay" +#line 5621 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8150,7 +8161,7 @@ void case_850() } void case_852() -#line 5626 "cs-parser.jay" +#line 5637 "cs-parser.jay" { current_variable.Initializer = (Expression) yyVals[0+yyTop]; lbag.AppendTo (current_variable, GetLocation (yyVals[-1+yyTop])); @@ -8158,7 +8169,7 @@ void case_852() } void case_853() -#line 5638 "cs-parser.jay" +#line 5649 "cs-parser.jay" { lexer.query_parsing = false; @@ -8172,7 +8183,7 @@ void case_853() } void case_854() -#line 5650 "cs-parser.jay" +#line 5661 "cs-parser.jay" { Linq.AQueryClause from = yyVals[-1+yyTop] as Linq.AQueryClause; @@ -8184,7 +8195,7 @@ void case_854() } void case_855() -#line 5661 "cs-parser.jay" +#line 5672 "cs-parser.jay" { lexer.query_parsing = false; yyVal = yyVals[-1+yyTop]; @@ -8194,7 +8205,7 @@ void case_855() } void case_856() -#line 5668 "cs-parser.jay" +#line 5679 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; current_block.SetEndLocation (lexer.Location); @@ -8202,7 +8213,7 @@ void case_856() } void case_857() -#line 5677 "cs-parser.jay" +#line 5688 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -8212,7 +8223,7 @@ void case_857() } void case_858() -#line 5685 "cs-parser.jay" +#line 5696 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -8226,7 +8237,7 @@ void case_858() } void case_859() -#line 5700 "cs-parser.jay" +#line 5711 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -8236,7 +8247,7 @@ void case_859() } void case_860() -#line 5708 "cs-parser.jay" +#line 5719 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -8250,7 +8261,7 @@ void case_860() } void case_862() -#line 5727 "cs-parser.jay" +#line 5738 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; var sn = new Linq.RangeVariable (lt.Value, lt.Location); @@ -8263,7 +8274,7 @@ void case_862() } void case_864() -#line 5742 "cs-parser.jay" +#line 5753 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; var sn = new Linq.RangeVariable (lt.Value, lt.Location); @@ -8279,7 +8290,7 @@ void case_864() } void case_865() -#line 5759 "cs-parser.jay" +#line 5770 "cs-parser.jay" { Linq.AQueryClause head = (Linq.AQueryClause)yyVals[-1+yyTop]; @@ -8296,14 +8307,14 @@ void case_865() } void case_867() -#line 5775 "cs-parser.jay" +#line 5786 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } void case_869() -#line 5787 "cs-parser.jay" +#line 5798 "cs-parser.jay" { yyVal = new Linq.Select ((Linq.QueryBlock)current_block, (Expression)yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); @@ -8312,7 +8323,7 @@ void case_869() } void case_870() -#line 5794 "cs-parser.jay" +#line 5805 "cs-parser.jay" { if (linq_clause_blocks == null) linq_clause_blocks = new Stack (); @@ -8322,7 +8333,7 @@ void case_870() } void case_871() -#line 5802 "cs-parser.jay" +#line 5813 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8331,7 +8342,7 @@ void case_871() } void case_872() -#line 5809 "cs-parser.jay" +#line 5820 "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])); @@ -8341,14 +8352,14 @@ void case_872() } void case_876() -#line 5826 "cs-parser.jay" +#line 5837 "cs-parser.jay" { ((Linq.AQueryClause)yyVals[-1+yyTop]).Tail.Next = (Linq.AQueryClause)yyVals[0+yyTop]; yyVal = yyVals[-1+yyTop]; } void case_883() -#line 5846 "cs-parser.jay" +#line 5857 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; var sn = new Linq.RangeVariable (lt.Value, lt.Location); @@ -8362,7 +8373,7 @@ void case_883() } void case_885() -#line 5865 "cs-parser.jay" +#line 5876 "cs-parser.jay" { yyVal = new Linq.Where ((Linq.QueryBlock)current_block, (Expression)yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); @@ -8371,7 +8382,7 @@ void case_885() } void case_886() -#line 5875 "cs-parser.jay" +#line 5886 "cs-parser.jay" { if (linq_clause_blocks == null) linq_clause_blocks = new Stack (); @@ -8381,7 +8392,7 @@ void case_886() } void case_887() -#line 5883 "cs-parser.jay" +#line 5894 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8391,7 +8402,7 @@ void case_887() } void case_888() -#line 5891 "cs-parser.jay" +#line 5902 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -8401,7 +8412,7 @@ void case_888() } void case_889() -#line 5899 "cs-parser.jay" +#line 5910 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -8441,7 +8452,7 @@ void case_889() } void case_890() -#line 5937 "cs-parser.jay" +#line 5948 "cs-parser.jay" { if (linq_clause_blocks == null) linq_clause_blocks = new Stack (); @@ -8451,7 +8462,7 @@ void case_890() } void case_891() -#line 5945 "cs-parser.jay" +#line 5956 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8461,7 +8472,7 @@ void case_891() } void case_892() -#line 5953 "cs-parser.jay" +#line 5964 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -8471,7 +8482,7 @@ void case_892() } void case_893() -#line 5961 "cs-parser.jay" +#line 5972 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -8513,7 +8524,7 @@ void case_893() } void case_897() -#line 6016 "cs-parser.jay" +#line 6027 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8522,7 +8533,7 @@ void case_897() } void case_899() -#line 6027 "cs-parser.jay" +#line 6038 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8531,14 +8542,14 @@ void case_899() } void case_900() -#line 6034 "cs-parser.jay" +#line 6045 "cs-parser.jay" { ((Linq.AQueryClause)yyVals[-3+yyTop]).Next = (Linq.AQueryClause)yyVals[0+yyTop]; yyVal = yyVals[-3+yyTop]; } void case_902() -#line 6043 "cs-parser.jay" +#line 6054 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8547,42 +8558,42 @@ void case_902() } void case_903() -#line 6050 "cs-parser.jay" +#line 6061 "cs-parser.jay" { ((Linq.AQueryClause)yyVals[-3+yyTop]).Tail.Next = (Linq.AQueryClause)yyVals[0+yyTop]; yyVal = yyVals[-3+yyTop]; } void case_905() -#line 6062 "cs-parser.jay" +#line 6073 "cs-parser.jay" { yyVal = new Linq.OrderByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_906() -#line 6067 "cs-parser.jay" +#line 6078 "cs-parser.jay" { yyVal = new Linq.OrderByDescending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_908() -#line 6079 "cs-parser.jay" +#line 6090 "cs-parser.jay" { yyVal = new Linq.ThenByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_909() -#line 6084 "cs-parser.jay" +#line 6095 "cs-parser.jay" { yyVal = new Linq.ThenByDescending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_911() -#line 6094 "cs-parser.jay" +#line 6105 "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*/ @@ -8600,7 +8611,7 @@ void case_911() } void case_912() -#line 6110 "cs-parser.jay" +#line 6121 "cs-parser.jay" { var current_block = linq_clause_blocks.Pop (); var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; @@ -8611,7 +8622,7 @@ void case_912() } void case_915() -#line 6137 "cs-parser.jay" +#line 6148 "cs-parser.jay" { current_container = new Class (current_namespace, current_class, new MemberName (""), Modifiers.PUBLIC, null); current_class = current_container; @@ -8643,7 +8654,7 @@ void case_915() } void case_916() -#line 6167 "cs-parser.jay" +#line 6178 "cs-parser.jay" { --lexer.parsing_block; Method method = (Method) oob_stack.Pop (); @@ -8655,7 +8666,7 @@ void case_916() } void case_926() -#line 6210 "cs-parser.jay" +#line 6221 "cs-parser.jay" { module.DocumentationBuilder.ParsedBuiltinType = (TypeExpression)yyVals[-1+yyTop]; module.DocumentationBuilder.ParsedParameters = (List)yyVals[0+yyTop]; @@ -8663,7 +8674,7 @@ void case_926() } void case_927() -#line 6216 "cs-parser.jay" +#line 6227 "cs-parser.jay" { module.DocumentationBuilder.ParsedBuiltinType = (TypeExpression)yyVals[-3+yyTop]; module.DocumentationBuilder.ParsedParameters = (List)yyVals[0+yyTop]; @@ -8672,14 +8683,14 @@ void case_927() } void case_930() -#line 6231 "cs-parser.jay" +#line 6242 "cs-parser.jay" { module.DocumentationBuilder.ParsedParameters = (List)yyVals[-1+yyTop]; yyVal = new MemberName ((MemberName) yyVals[-6+yyTop], new MemberName (MemberCache.IndexerNameAlias)); } void case_931() -#line 6236 "cs-parser.jay" +#line 6247 "cs-parser.jay" { var p = (List)yyVals[0+yyTop] ?? new List (1); p.Add (new DocumentationParameter ((FullNamedExpression) yyVals[-1+yyTop])); @@ -8689,7 +8700,7 @@ void case_931() } void case_932() -#line 6244 "cs-parser.jay" +#line 6255 "cs-parser.jay" { var p = (List)yyVals[0+yyTop] ?? new List (1); p.Add (new DocumentationParameter ((FullNamedExpression) yyVals[-1+yyTop])); @@ -8699,7 +8710,7 @@ void case_932() } void case_933() -#line 6252 "cs-parser.jay" +#line 6263 "cs-parser.jay" { var p = (List)yyVals[0+yyTop] ?? new List (1); module.DocumentationBuilder.ParsedParameters = p; @@ -8708,7 +8719,7 @@ void case_933() } void case_941() -#line 6290 "cs-parser.jay" +#line 6301 "cs-parser.jay" { var parameters = new List (); parameters.Add ((DocumentationParameter) yyVals[0+yyTop]); @@ -8716,7 +8727,7 @@ void case_941() } void case_942() -#line 6296 "cs-parser.jay" +#line 6307 "cs-parser.jay" { var parameters = yyVals[-2+yyTop] as List; parameters.Add ((DocumentationParameter) yyVals[0+yyTop]); @@ -8724,7 +8735,7 @@ void case_942() } void case_943() -#line 6305 "cs-parser.jay" +#line 6316 "cs-parser.jay" { if (yyVals[-1+yyTop] != null) yyVal = new DocumentationParameter ((Parameter.Modifier) yyVals[-1+yyTop], (FullNamedExpression) yyVals[0+yyTop]); @@ -12057,7 +12068,7 @@ void case_943() -1, -1, -1, -1, -1, -1, -1, -1, 362, }; -#line 6314 "cs-parser.jay" +#line 6325 "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 4704aed3c7..e71e7393b8 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay @@ -565,8 +565,9 @@ qualified_identifier | qualified_identifier DOT IDENTIFIER { var lt = (Tokenizer.LocatedToken) $3; - $$ = new MemberName ((MemberName) $1, lt.Value, lt.Location); - lbag.AddLocation ($$, GetLocation ($2)); + $$ = new MemberName ((MemberName) $1, lt.Value, lt.Location) { + DotLocation = GetLocation ($2) + }; } | error { @@ -780,7 +781,7 @@ attribute } Arguments [] arguments = (Arguments []) $3; - ATypeNameExpression expr = mname.GetTypeExpression (lbag); + ATypeNameExpression expr = mname.GetTypeExpression (); $$ = new Attribute (current_attr_target, expr, arguments, mname.Location, lexer.IsEscapedIdentifier (mname)); if (arguments != null) { lbag.AddLocation ($$, savedAttrParenOpenLocation, savedAttrParenCloseLocation); @@ -2732,8 +2733,9 @@ member_name | namespace_or_type_name DOT IDENTIFIER opt_type_argument_list { var lt = (Tokenizer.LocatedToken) $3; - $$ = new MemberName ((MemberName) $1, lt.Value, (TypeArguments) $4, lt.Location); - lbag.AddLocation ($$, GetLocation ($2)); + $$ = new MemberName ((MemberName) $1, lt.Value, (TypeArguments) $4, lt.Location) { + DotLocation = GetLocation ($2) + }; } ; @@ -2967,17 +2969,17 @@ type_expression MemberName name = (MemberName) $1; if ($2 != null) { - $$ = new ComposedCast (name.GetTypeExpression (lbag), (ComposedTypeSpecifier) $2); + $$ = new ComposedCast (name.GetTypeExpression (), (ComposedTypeSpecifier) $2); } else { if (name.Left == null && name.Name == "var") $$ = new VarExpr (name.Location); else - $$ = name.GetTypeExpression (lbag); + $$ = name.GetTypeExpression (); } } | namespace_or_type_name pointer_stars { - $$ = new ComposedCast (((MemberName) $1).GetTypeExpression (lbag), (ComposedTypeSpecifier) $2); + $$ = new ComposedCast (((MemberName) $1).GetTypeExpression (), (ComposedTypeSpecifier) $2); } | builtin_types opt_nullable { @@ -3140,20 +3142,23 @@ member_access : primary_expression DOT IDENTIFIER opt_type_argument_list { var lt = (Tokenizer.LocatedToken) $3; - $$ = new MemberAccess ((Expression) $1, lt.Value, (TypeArguments) $4, lt.Location); - lbag.AddLocation ($$, GetLocation ($2)); + $$ = new MemberAccess ((Expression) $1, lt.Value, (TypeArguments) $4, lt.Location) { + DotLocation = GetLocation ($2) + }; } | builtin_types DOT IDENTIFIER opt_type_argument_list { var lt = (Tokenizer.LocatedToken) $3; - $$ = new MemberAccess ((Expression) $1, lt.Value, (TypeArguments) $4, lt.Location); - lbag.AddLocation ($$, GetLocation ($2)); + $$ = new MemberAccess ((Expression) $1, lt.Value, (TypeArguments) $4, lt.Location) { + DotLocation = GetLocation ($2) + }; } | BASE DOT IDENTIFIER opt_type_argument_list { var lt = (Tokenizer.LocatedToken) $3; - $$ = new MemberAccess (new BaseThis (GetLocation ($1)), lt.Value, (TypeArguments) $4, lt.Location); - lbag.AddLocation ($$, GetLocation ($2)); + $$ = new MemberAccess (new BaseThis (GetLocation ($1)), lt.Value, (TypeArguments) $4, lt.Location) { + DotLocation = GetLocation ($2) + }; } | qualified_alias_member IDENTIFIER opt_type_argument_list { @@ -3719,22 +3724,28 @@ unbound_type_name { var lt = (Tokenizer.LocatedToken) $3; - $$ = new MemberAccess ((Expression) $1, lt.Value, lt.Location); + $$ = new MemberAccess ((Expression) $1, lt.Value, lt.Location) { + DotLocation = GetLocation ($2) + }; } | unbound_type_name DOT IDENTIFIER generic_dimension { var lt = (Tokenizer.LocatedToken) $3; - $$ = new MemberAccess ((Expression) $1, lt.Value, (int) $4, lt.Location); + $$ = new MemberAccess ((Expression) $1, lt.Value, (int) $4, lt.Location) { + DotLocation = GetLocation ($2) + }; } | namespace_or_type_name DOT IDENTIFIER generic_dimension { - var te = ((MemberName) $1).GetTypeExpression (lbag); + var te = ((MemberName) $1).GetTypeExpression (); if (te.HasTypeArguments) Error_TypeExpected (GetLocation ($4)); var lt = (Tokenizer.LocatedToken) $3; - $$ = new MemberAccess (te, lt.Value, (int) $4, lt.Location); + $$ = new MemberAccess (te, lt.Value, (int) $4, lt.Location) { + DotLocation = GetLocation ($2) + }; } ; diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/decl.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/decl.cs index e161907b44..32c8d071a4 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/decl.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/decl.cs @@ -49,6 +49,12 @@ namespace Mono.CSharp { public bool IsDoubleColon { get { return is_double_colon; } } +#if FULL_AST + public Location DotLocation { + get; + set; + } +#endif private MemberName (MemberName left, string name, bool is_double_colon, Location loc) { @@ -138,7 +144,7 @@ namespace Mono.CSharp { return name; } - public ATypeNameExpression GetTypeExpression (LocationsBag locations = null) + public ATypeNameExpression GetTypeExpression () { if (Left == null) { if (TypeArguments != null) @@ -155,8 +161,9 @@ namespace Mono.CSharp { Expression lexpr = Left.GetTypeExpression (); var result = new MemberAccess (lexpr, Name, TypeArguments, Location); - if (locations != null) - locations.AddLocation (result, locations.GetLocations (this)); +#if FULL_AST + result.DotLocation = DotLocation; +#endif return result; } diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/expression.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/expression.cs index f440ab7c62..e708b6c1c2 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/expression.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/expression.cs @@ -7763,6 +7763,13 @@ namespace Mono.CSharp { protected Expression expr; +#if FULL_AST + public Location DotLocation { + get; + set; + } +#endif + public MemberAccess (Expression expr, string id) : base (id, expr.Location) {