From f302311c5ae3002bb05a51455e0f1aee50828b12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Kr=C3=BCger?= Date: Sat, 3 Sep 2011 13:55:27 +0200 Subject: [PATCH] Fixed positioning error. --- .../Parser/CSharpParser.cs | 27 +- .../Parser/mcs/cs-parser.cs | 1084 +++++++++-------- .../Parser/mcs/cs-parser.jay | 12 +- 3 files changed, 573 insertions(+), 550 deletions(-) diff --git a/ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs b/ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs index 22bf05f09b..be2e5ac23b 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/CSharpParser.cs @@ -909,8 +909,9 @@ namespace ICSharpCode.NRefactory.CSharp if (location != null) newProperty.AddChild (new CSharpTokenNode (Convert (location[0]), 1), MethodDeclaration.Roles.LBrace); + Accessor getAccessor = null; if (p.Get != null) { - Accessor getAccessor = new Accessor (); + getAccessor = new Accessor (); AddAttributeSection (getAccessor, p.Get); var getLocation = LocationsBag.GetMemberLocation (p.Get); AddModifiers (getAccessor, getLocation); @@ -920,13 +921,13 @@ namespace ICSharpCode.NRefactory.CSharp getAccessor.AddChild ((BlockStatement)p.Get.Block.Accept (this), MethodDeclaration.Roles.Body); } else { if (getLocation != null && getLocation.Count > 0) - newProperty.AddChild (new CSharpTokenNode (Convert (getLocation[0]), 1), MethodDeclaration.Roles.Semicolon); + getAccessor.AddChild (new CSharpTokenNode (Convert (getLocation[0]), 1), MethodDeclaration.Roles.Semicolon); } - newProperty.AddChild (getAccessor, PropertyDeclaration.GetterRole); } + Accessor setAccessor = null; if (p.Set != null) { - Accessor setAccessor = new Accessor (); + setAccessor = new Accessor (); AddAttributeSection (setAccessor, p.Set); var setLocation = LocationsBag.GetMemberLocation (p.Set); AddModifiers (setAccessor, setLocation); @@ -936,10 +937,24 @@ namespace ICSharpCode.NRefactory.CSharp setAccessor.AddChild ((BlockStatement)p.Set.Block.Accept (this), MethodDeclaration.Roles.Body); } else { if (setLocation != null && setLocation.Count > 0) - newProperty.AddChild (new CSharpTokenNode (Convert (setLocation[0]), 1), MethodDeclaration.Roles.Semicolon); + setAccessor.AddChild (new CSharpTokenNode (Convert (setLocation[0]), 1), MethodDeclaration.Roles.Semicolon); } - newProperty.AddChild (setAccessor, PropertyDeclaration.SetterRole); } + if (getAccessor != null && setAccessor != null) { + if (getAccessor.StartLocation < setAccessor.StartLocation) { + newProperty.AddChild (getAccessor, PropertyDeclaration.GetterRole); + newProperty.AddChild (setAccessor, PropertyDeclaration.SetterRole); + } else { + newProperty.AddChild (setAccessor, PropertyDeclaration.SetterRole); + newProperty.AddChild (getAccessor, PropertyDeclaration.GetterRole); + } + } else { + if (getAccessor != null) + newProperty.AddChild (getAccessor, PropertyDeclaration.GetterRole); + if (setAccessor != null) + newProperty.AddChild (setAccessor, PropertyDeclaration.SetterRole); + } + if (location != null && location.Count > 1) { newProperty.AddChild (new CSharpTokenNode (Convert (location[1]), 1), MethodDeclaration.Roles.RBrace); } else { diff --git a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs index f77ba27ac9..b07029d292 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.cs @@ -1936,7 +1936,7 @@ case 220: case_220(); break; case 221: -#line 1933 "cs-parser.jay" +#line 1937 "cs-parser.jay" { lexer.ConstraintsParsing = true; } @@ -1954,43 +1954,43 @@ case 225: case_225(); break; case 226: -#line 1966 "cs-parser.jay" +#line 1970 "cs-parser.jay" { Error_SyntaxError (yyToken); } break; case 231: -#line 1983 "cs-parser.jay" +#line 1987 "cs-parser.jay" { report.Error (525, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain fields or constants"); } break; case 232: -#line 1987 "cs-parser.jay" +#line 1991 "cs-parser.jay" { report.Error (525, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain fields or constants"); } break; case 237: -#line 1995 "cs-parser.jay" +#line 1999 "cs-parser.jay" { report.Error (567, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain operators"); } break; case 238: -#line 1999 "cs-parser.jay" +#line 2003 "cs-parser.jay" { report.Error (526, GetLocation (yyVals[0+yyTop]), "Interfaces cannot contain contructors"); } break; case 239: -#line 2003 "cs-parser.jay" +#line 2007 "cs-parser.jay" { report.Error (524, GetLocation (yyVals[0+yyTop]), "Interfaces cannot declare classes, structs, interfaces, delegates, or enumerations"); } break; case 240: -#line 2009 "cs-parser.jay" +#line 2013 "cs-parser.jay" { } break; @@ -1998,14 +1998,14 @@ case 241: case_241(); break; case 243: -#line 2039 "cs-parser.jay" +#line 2043 "cs-parser.jay" { yyVal = null; } break; case 245: case_245(); break; case 246: -#line 2055 "cs-parser.jay" +#line 2059 "cs-parser.jay" { valid_param_mod = ParameterModifierType.DefaultValue; } @@ -2014,95 +2014,95 @@ case 247: case_247(); break; case 249: -#line 2101 "cs-parser.jay" +#line 2105 "cs-parser.jay" { yyVal = Operator.OpType.LogicalNot; } break; case 250: -#line 2102 "cs-parser.jay" +#line 2106 "cs-parser.jay" { yyVal = Operator.OpType.OnesComplement; } break; case 251: -#line 2103 "cs-parser.jay" +#line 2107 "cs-parser.jay" { yyVal = Operator.OpType.Increment; } break; case 252: -#line 2104 "cs-parser.jay" +#line 2108 "cs-parser.jay" { yyVal = Operator.OpType.Decrement; } break; case 253: -#line 2105 "cs-parser.jay" +#line 2109 "cs-parser.jay" { yyVal = Operator.OpType.True; } break; case 254: -#line 2106 "cs-parser.jay" +#line 2110 "cs-parser.jay" { yyVal = Operator.OpType.False; } break; case 255: -#line 2108 "cs-parser.jay" +#line 2112 "cs-parser.jay" { yyVal = Operator.OpType.Addition; } break; case 256: -#line 2109 "cs-parser.jay" +#line 2113 "cs-parser.jay" { yyVal = Operator.OpType.Subtraction; } break; case 257: -#line 2111 "cs-parser.jay" +#line 2115 "cs-parser.jay" { yyVal = Operator.OpType.Multiply; } break; case 258: -#line 2112 "cs-parser.jay" +#line 2116 "cs-parser.jay" { yyVal = Operator.OpType.Division; } break; case 259: -#line 2113 "cs-parser.jay" +#line 2117 "cs-parser.jay" { yyVal = Operator.OpType.Modulus; } break; case 260: -#line 2114 "cs-parser.jay" +#line 2118 "cs-parser.jay" { yyVal = Operator.OpType.BitwiseAnd; } break; case 261: -#line 2115 "cs-parser.jay" +#line 2119 "cs-parser.jay" { yyVal = Operator.OpType.BitwiseOr; } break; case 262: -#line 2116 "cs-parser.jay" +#line 2120 "cs-parser.jay" { yyVal = Operator.OpType.ExclusiveOr; } break; case 263: -#line 2117 "cs-parser.jay" +#line 2121 "cs-parser.jay" { yyVal = Operator.OpType.LeftShift; } break; case 264: -#line 2118 "cs-parser.jay" +#line 2122 "cs-parser.jay" { yyVal = Operator.OpType.RightShift; } break; case 265: -#line 2119 "cs-parser.jay" +#line 2123 "cs-parser.jay" { yyVal = Operator.OpType.Equality; } break; case 266: -#line 2120 "cs-parser.jay" +#line 2124 "cs-parser.jay" { yyVal = Operator.OpType.Inequality; } break; case 267: -#line 2121 "cs-parser.jay" +#line 2125 "cs-parser.jay" { yyVal = Operator.OpType.GreaterThan; } break; case 268: -#line 2122 "cs-parser.jay" +#line 2126 "cs-parser.jay" { yyVal = Operator.OpType.LessThan; } break; case 269: -#line 2123 "cs-parser.jay" +#line 2127 "cs-parser.jay" { yyVal = Operator.OpType.GreaterThanOrEqual; } break; case 270: -#line 2124 "cs-parser.jay" +#line 2128 "cs-parser.jay" { yyVal = Operator.OpType.LessThanOrEqual; } break; case 271: -#line 2131 "cs-parser.jay" +#line 2135 "cs-parser.jay" { valid_param_mod = ParameterModifierType.DefaultValue; } @@ -2111,7 +2111,7 @@ case 272: case_272(); break; case 273: -#line 2150 "cs-parser.jay" +#line 2154 "cs-parser.jay" { valid_param_mod = ParameterModifierType.DefaultValue; } @@ -2138,11 +2138,11 @@ case 280: case_280(); break; case 282: -#line 2253 "cs-parser.jay" +#line 2257 "cs-parser.jay" { current_block = null; yyVal = null; } break; case 285: -#line 2265 "cs-parser.jay" +#line 2269 "cs-parser.jay" { ++lexer.parsing_block; } @@ -2151,7 +2151,7 @@ case 286: case_286(); break; case 287: -#line 2275 "cs-parser.jay" +#line 2279 "cs-parser.jay" { ++lexer.parsing_block; } @@ -2184,7 +2184,7 @@ case 296: case_296(); break; case 298: -#line 2384 "cs-parser.jay" +#line 2388 "cs-parser.jay" { ++lexer.parsing_block; } @@ -2193,13 +2193,13 @@ case 299: case_299(); break; case 302: -#line 2401 "cs-parser.jay" +#line 2405 "cs-parser.jay" { current_event_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } break; case 303: -#line 2405 "cs-parser.jay" +#line 2409 "cs-parser.jay" { current_event_field.AddDeclarator ((FieldDeclarator) yyVals[0+yyTop]); } @@ -2208,7 +2208,7 @@ case 304: case_304(); break; case 305: -#line 2418 "cs-parser.jay" +#line 2422 "cs-parser.jay" { ++lexer.parsing_block; } @@ -2220,7 +2220,7 @@ case 307: case_307(); break; case 308: -#line 2443 "cs-parser.jay" +#line 2447 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } @@ -2268,7 +2268,7 @@ case 326: case_326(); break; case 329: -#line 2598 "cs-parser.jay" +#line 2602 "cs-parser.jay" { lbag.AddLocation (yyVals[-1+yyTop], GetLocation (yyVals[0+yyTop])); } @@ -2286,7 +2286,7 @@ case 334: case_334(); break; case 335: -#line 2656 "cs-parser.jay" +#line 2660 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out | ParameterModifierType.Params | ParameterModifierType.DefaultValue; } @@ -2295,7 +2295,7 @@ case 336: case_336(); break; case 337: -#line 2678 "cs-parser.jay" +#line 2682 "cs-parser.jay" { lexer.ConstraintsParsing = false; } @@ -2328,7 +2328,7 @@ case 350: case_350(); break; case 351: -#line 2782 "cs-parser.jay" +#line 2786 "cs-parser.jay" { lexer.parsing_generic_declaration = true; } @@ -2373,13 +2373,13 @@ case 366: case_366(); break; case 368: -#line 2900 "cs-parser.jay" +#line 2904 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } break; case 369: -#line 2907 "cs-parser.jay" +#line 2911 "cs-parser.jay" { lexer.parsing_generic_declaration = true; } @@ -2394,7 +2394,7 @@ case 375: case_375(); break; case 377: -#line 2945 "cs-parser.jay" +#line 2949 "cs-parser.jay" { yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } @@ -2403,7 +2403,7 @@ case 378: case_378(); break; case 379: -#line 2965 "cs-parser.jay" +#line 2969 "cs-parser.jay" { yyVal = new ComposedCast (((MemberName) yyVals[-1+yyTop]).GetTypeExpression (), (ComposedTypeSpecifier) yyVals[0+yyTop]); } @@ -2412,13 +2412,13 @@ case 380: case_380(); break; case 381: -#line 2974 "cs-parser.jay" +#line 2978 "cs-parser.jay" { yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } break; case 382: -#line 2978 "cs-parser.jay" +#line 2982 "cs-parser.jay" { yyVal = new ComposedCast (new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[-1+yyTop])), (ComposedTypeSpecifier) yyVals[0+yyTop]); } @@ -2436,63 +2436,63 @@ case 386: case_386(); break; case 387: -#line 3017 "cs-parser.jay" +#line 3021 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Object, GetLocation (yyVals[0+yyTop])); } break; case 388: -#line 3018 "cs-parser.jay" +#line 3022 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.String, GetLocation (yyVals[0+yyTop])); } break; case 389: -#line 3019 "cs-parser.jay" +#line 3023 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Bool, GetLocation (yyVals[0+yyTop])); } break; case 390: -#line 3020 "cs-parser.jay" +#line 3024 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Decimal, GetLocation (yyVals[0+yyTop])); } break; case 391: -#line 3021 "cs-parser.jay" +#line 3025 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Float, GetLocation (yyVals[0+yyTop])); } break; case 392: -#line 3022 "cs-parser.jay" +#line 3026 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Double, GetLocation (yyVals[0+yyTop])); } break; case 394: -#line 3027 "cs-parser.jay" +#line 3031 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.SByte, GetLocation (yyVals[0+yyTop])); } break; case 395: -#line 3028 "cs-parser.jay" +#line 3032 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Byte, GetLocation (yyVals[0+yyTop])); } break; case 396: -#line 3029 "cs-parser.jay" +#line 3033 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Short, GetLocation (yyVals[0+yyTop])); } break; case 397: -#line 3030 "cs-parser.jay" +#line 3034 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.UShort, GetLocation (yyVals[0+yyTop])); } break; case 398: -#line 3031 "cs-parser.jay" +#line 3035 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Int, GetLocation (yyVals[0+yyTop])); } break; case 399: -#line 3032 "cs-parser.jay" +#line 3036 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.UInt, GetLocation (yyVals[0+yyTop])); } break; case 400: -#line 3033 "cs-parser.jay" +#line 3037 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Long, GetLocation (yyVals[0+yyTop])); } break; case 401: -#line 3034 "cs-parser.jay" +#line 3038 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.ULong, GetLocation (yyVals[0+yyTop])); } break; case 402: -#line 3035 "cs-parser.jay" +#line 3039 "cs-parser.jay" { yyVal = new TypeExpression (compiler.BuiltinTypes.Char, GetLocation (yyVals[0+yyTop])); } break; case 423: @@ -2502,22 +2502,22 @@ case 424: case_424(); break; case 428: -#line 3082 "cs-parser.jay" +#line 3086 "cs-parser.jay" { yyVal = new NullLiteral (GetLocation (yyVals[0+yyTop])); } break; case 429: -#line 3086 "cs-parser.jay" +#line 3090 "cs-parser.jay" { yyVal = new BoolLiteral (compiler.BuiltinTypes, true, GetLocation (yyVals[0+yyTop])); } break; case 430: -#line 3087 "cs-parser.jay" +#line 3091 "cs-parser.jay" { yyVal = new BoolLiteral (compiler.BuiltinTypes, false, GetLocation (yyVals[0+yyTop])); } break; case 435: case_435(); break; case 436: -#line 3120 "cs-parser.jay" +#line 3124 "cs-parser.jay" { yyVal = new ParenthesizedExpression ((Expression) yyVals[-1+yyTop]); } @@ -2535,7 +2535,7 @@ case 440: case_440(); break; case 441: -#line 3152 "cs-parser.jay" +#line 3156 "cs-parser.jay" { yyVal = new CompletionMemberAccess ((Expression) yyVals[-2+yyTop], null,GetLocation (yyVals[0+yyTop])); } @@ -2544,7 +2544,7 @@ case 442: case_442(); break; case 443: -#line 3160 "cs-parser.jay" +#line 3164 "cs-parser.jay" { yyVal = new CompletionMemberAccess ((Expression) yyVals[-2+yyTop], null, lexer.Location); } @@ -2556,7 +2556,7 @@ case 445: case_445(); break; case 446: -#line 3176 "cs-parser.jay" +#line 3180 "cs-parser.jay" { yyVal = null; } break; case 448: @@ -2566,11 +2566,11 @@ case 449: case_449(); break; case 450: -#line 3199 "cs-parser.jay" +#line 3203 "cs-parser.jay" { yyVal = null; } break; case 451: -#line 3203 "cs-parser.jay" +#line 3207 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } @@ -2588,7 +2588,7 @@ case 455: case_455(); break; case 456: -#line 3236 "cs-parser.jay" +#line 3240 "cs-parser.jay" { yyVal = new CompletionElementInitializer (null, GetLocation (yyVals[0+yyTop])); } @@ -2603,7 +2603,7 @@ case 459: case_459(); break; case 462: -#line 3264 "cs-parser.jay" +#line 3268 "cs-parser.jay" { yyVal = null; } break; case 464: @@ -2622,7 +2622,7 @@ case 468: case_468(); break; case 469: -#line 3316 "cs-parser.jay" +#line 3320 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop]); } @@ -2658,13 +2658,13 @@ case 483: case_483(); break; case 484: -#line 3403 "cs-parser.jay" +#line 3407 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop]); } break; case 486: -#line 3411 "cs-parser.jay" +#line 3415 "cs-parser.jay" { yyVal = new This (GetLocation (yyVals[0+yyTop])); } @@ -2676,13 +2676,13 @@ case 488: case_488(); break; case 489: -#line 3431 "cs-parser.jay" +#line 3435 "cs-parser.jay" { yyVal = new UnaryMutator (UnaryMutator.Mode.PostIncrement, (Expression) yyVals[-1+yyTop], GetLocation (yyVals[0+yyTop])); } break; case 490: -#line 3438 "cs-parser.jay" +#line 3442 "cs-parser.jay" { yyVal = new UnaryMutator (UnaryMutator.Mode.PostDecrement, (Expression) yyVals[-1+yyTop], GetLocation (yyVals[0+yyTop])); } @@ -2709,7 +2709,7 @@ case 497: case_497(); break; case 498: -#line 3504 "cs-parser.jay" +#line 3508 "cs-parser.jay" { ++lexer.parsing_type; } @@ -2721,7 +2721,7 @@ case 500: case_500(); break; case 503: -#line 3531 "cs-parser.jay" +#line 3535 "cs-parser.jay" { yyVal = null; } break; case 505: @@ -2752,25 +2752,25 @@ case 516: case_516(); break; case 517: -#line 3609 "cs-parser.jay" +#line 3613 "cs-parser.jay" { yyVal = 2; } break; case 518: -#line 3613 "cs-parser.jay" +#line 3617 "cs-parser.jay" { yyVal = ((int) yyVals[-1+yyTop]) + 1; } break; case 519: -#line 3620 "cs-parser.jay" +#line 3624 "cs-parser.jay" { yyVal = null; } break; case 520: -#line 3624 "cs-parser.jay" +#line 3628 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } @@ -2788,7 +2788,7 @@ case 524: case_524(); break; case 525: -#line 3668 "cs-parser.jay" +#line 3672 "cs-parser.jay" { lexer.TypeOfParsing = true; } @@ -2833,7 +2833,7 @@ case 540: case_540(); break; case 541: -#line 3782 "cs-parser.jay" +#line 3786 "cs-parser.jay" { start_anonymous (false, (ParametersCompiled) yyVals[0+yyTop], false, GetLocation (yyVals[-1+yyTop])); } @@ -2842,25 +2842,25 @@ case 542: case_542(); break; case 543: -#line 3795 "cs-parser.jay" +#line 3799 "cs-parser.jay" { start_anonymous (false, (ParametersCompiled) yyVals[0+yyTop], true, GetLocation (yyVals[-2+yyTop])); } break; case 544: -#line 3799 "cs-parser.jay" +#line 3803 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); } break; case 545: -#line 3806 "cs-parser.jay" +#line 3810 "cs-parser.jay" { yyVal = ParametersCompiled.Undefined; } break; case 547: -#line 3814 "cs-parser.jay" +#line 3818 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } @@ -2872,13 +2872,13 @@ case 549: case_549(); break; case 551: -#line 3840 "cs-parser.jay" +#line 3844 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.LogicalNot, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; case 552: -#line 3844 "cs-parser.jay" +#line 3848 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.OnesComplement, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } @@ -2890,37 +2890,37 @@ case 556: case_556(); break; case 558: -#line 3874 "cs-parser.jay" +#line 3878 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.UnaryPlus, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; case 559: -#line 3878 "cs-parser.jay" +#line 3882 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.UnaryNegation, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; case 560: -#line 3882 "cs-parser.jay" +#line 3886 "cs-parser.jay" { yyVal = new UnaryMutator (UnaryMutator.Mode.PreIncrement, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; case 561: -#line 3886 "cs-parser.jay" +#line 3890 "cs-parser.jay" { yyVal = new UnaryMutator (UnaryMutator.Mode.PreDecrement, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; case 562: -#line 3890 "cs-parser.jay" +#line 3894 "cs-parser.jay" { yyVal = new Indirection ((Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; case 563: -#line 3894 "cs-parser.jay" +#line 3898 "cs-parser.jay" { yyVal = new Unary (Unary.Operator.AddressOf, (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } @@ -2938,7 +2938,7 @@ case 569: case_569(); break; case 570: -#line 3926 "cs-parser.jay" +#line 3930 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Subtraction, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } @@ -2947,13 +2947,13 @@ case 571: case_571(); break; case 572: -#line 3935 "cs-parser.jay" +#line 3939 "cs-parser.jay" { yyVal = new As ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; case 573: -#line 3939 "cs-parser.jay" +#line 3943 "cs-parser.jay" { yyVal = new Is ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } @@ -3004,7 +3004,7 @@ case 598: case_598(); break; case 599: -#line 4063 "cs-parser.jay" +#line 4067 "cs-parser.jay" { yyVal = new SimpleAssign ((Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } @@ -3055,14 +3055,14 @@ case 614: case_614(); break; case 615: -#line 4160 "cs-parser.jay" +#line 4164 "cs-parser.jay" { yyVal = ParametersCompiled.EmptyReadOnlyParameters; } break; case 616: case_616(); break; case 619: -#line 4175 "cs-parser.jay" +#line 4179 "cs-parser.jay" { start_block (lexer.Location); } @@ -3086,7 +3086,7 @@ case 626: case_626(); break; case 627: -#line 4220 "cs-parser.jay" +#line 4224 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } @@ -3098,7 +3098,7 @@ case 629: case_629(); break; case 630: -#line 4234 "cs-parser.jay" +#line 4238 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } @@ -3110,7 +3110,7 @@ case 632: case_632(); break; case 638: -#line 4259 "cs-parser.jay" +#line 4263 "cs-parser.jay" { yyVal = new ArglistAccess (GetLocation (yyVals[0+yyTop])); } @@ -3125,13 +3125,13 @@ case 641: case_641(); break; case 643: -#line 4288 "cs-parser.jay" +#line 4292 "cs-parser.jay" { yyVal = new BooleanExpression ((Expression) yyVals[0+yyTop]); } break; case 644: -#line 4301 "cs-parser.jay" +#line 4305 "cs-parser.jay" { lexer.ConstraintsParsing = true; } @@ -3149,11 +3149,11 @@ case 648: case_648(); break; case 649: -#line 4340 "cs-parser.jay" +#line 4344 "cs-parser.jay" { yyVal = null; } break; case 650: -#line 4342 "cs-parser.jay" +#line 4346 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; StoreModifierLocation (Modifiers.PARTIAL, GetLocation (yyVals[0+yyTop])); } break; case 651: @@ -3208,13 +3208,13 @@ case 669: case_669(); break; case 671: -#line 4462 "cs-parser.jay" +#line 4466 "cs-parser.jay" { current_container.AddBasesForPart (current_class, (List) yyVals[0+yyTop]); } break; case 673: -#line 4470 "cs-parser.jay" +#line 4474 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } @@ -3244,19 +3244,19 @@ case 681: case_681(); break; case 682: -#line 4559 "cs-parser.jay" +#line 4563 "cs-parser.jay" { yyVal = new SpecialContraintExpr (SpecialConstraint.Class, GetLocation (yyVals[0+yyTop])); } break; case 683: -#line 4563 "cs-parser.jay" +#line 4567 "cs-parser.jay" { yyVal = new SpecialContraintExpr (SpecialConstraint.Struct, GetLocation (yyVals[0+yyTop])); } break; case 684: -#line 4570 "cs-parser.jay" +#line 4574 "cs-parser.jay" { yyVal = Variance.None; } @@ -3265,13 +3265,13 @@ case 685: case_685(); break; case 686: -#line 4584 "cs-parser.jay" +#line 4588 "cs-parser.jay" { yyVal = Variance.Covariant; } break; case 687: -#line 4588 "cs-parser.jay" +#line 4592 "cs-parser.jay" { yyVal = Variance.Contravariant; } @@ -3280,7 +3280,7 @@ case 688: case_688(); break; case 689: -#line 4613 "cs-parser.jay" +#line 4617 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } @@ -3298,13 +3298,13 @@ case 693: case_693(); break; case 698: -#line 4657 "cs-parser.jay" +#line 4661 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } break; case 699: -#line 4661 "cs-parser.jay" +#line 4665 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } @@ -3313,13 +3313,13 @@ case 701: case_701(); break; case 704: -#line 4685 "cs-parser.jay" +#line 4689 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } break; case 705: -#line 4689 "cs-parser.jay" +#line 4693 "cs-parser.jay" { current_block.AddStatement ((Statement) yyVals[0+yyTop]); } @@ -3352,13 +3352,13 @@ case 744: case_744(); break; case 745: -#line 4833 "cs-parser.jay" +#line 4837 "cs-parser.jay" { yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } break; case 746: -#line 4837 "cs-parser.jay" +#line 4841 "cs-parser.jay" { yyVal = new ComposedCast (new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[-1+yyTop])), (ComposedTypeSpecifier) yyVals[0+yyTop]); } @@ -3370,7 +3370,7 @@ case 749: case_749(); break; case 750: -#line 4858 "cs-parser.jay" +#line 4862 "cs-parser.jay" { yyVal = ComposedTypeSpecifier.CreatePointer (GetLocation (yyVals[0+yyTop])); } @@ -3400,7 +3400,7 @@ case 763: case_763(); break; case 764: -#line 4947 "cs-parser.jay" +#line 4951 "cs-parser.jay" { report.Error (145, lexer.Location, "A const field requires a value to be provided"); } @@ -3421,15 +3421,15 @@ case 774: case_774(); break; case 775: -#line 4997 "cs-parser.jay" +#line 5001 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; } break; case 776: -#line 5001 "cs-parser.jay" +#line 5005 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; } break; case 777: -#line 5002 "cs-parser.jay" +#line 5006 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; } break; case 778: @@ -3448,7 +3448,7 @@ case 784: case_784(); break; case 785: -#line 5070 "cs-parser.jay" +#line 5074 "cs-parser.jay" { start_block (GetLocation (yyVals[0+yyTop])); } @@ -3469,13 +3469,13 @@ case 791: case_791(); break; case 792: -#line 5114 "cs-parser.jay" +#line 5118 "cs-parser.jay" { current_block = current_block.CreateSwitchBlock (lexer.Location); } break; case 793: -#line 5118 "cs-parser.jay" +#line 5122 "cs-parser.jay" { yyVal = new SwitchSection ((List) yyVals[-2+yyTop], current_block); } @@ -3490,7 +3490,7 @@ case 796: case_796(); break; case 797: -#line 5147 "cs-parser.jay" +#line 5151 "cs-parser.jay" { yyVal = new SwitchLabel (null, GetLocation (yyVals[0+yyTop])); } @@ -3505,7 +3505,7 @@ case 804: case_804(); break; case 805: -#line 5186 "cs-parser.jay" +#line 5190 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } @@ -3517,7 +3517,7 @@ case 807: case_807(); break; case 808: -#line 5214 "cs-parser.jay" +#line 5218 "cs-parser.jay" { yyVal = new EmptyStatement (lexer.Location); } break; case 810: @@ -3527,11 +3527,11 @@ case 811: case_811(); break; case 813: -#line 5235 "cs-parser.jay" +#line 5239 "cs-parser.jay" { yyVal = null; } break; case 815: -#line 5240 "cs-parser.jay" +#line 5244 "cs-parser.jay" { yyVal = new EmptyStatement (lexer.Location); } break; case 819: @@ -3574,7 +3574,7 @@ case 837: case_837(); break; case 840: -#line 5395 "cs-parser.jay" +#line 5399 "cs-parser.jay" { yyVal = new TryCatch ((Block) yyVals[-1+yyTop], (List) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop]), false); } @@ -3595,7 +3595,7 @@ case 845: case_845(); break; case 848: -#line 5448 "cs-parser.jay" +#line 5452 "cs-parser.jay" { yyVal = new Catch ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } @@ -3604,7 +3604,7 @@ case 849: case_849(); break; case 850: -#line 5467 "cs-parser.jay" +#line 5471 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; } @@ -3613,13 +3613,13 @@ case 851: case_851(); break; case 852: -#line 5485 "cs-parser.jay" +#line 5489 "cs-parser.jay" { yyVal = new Checked ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } break; case 853: -#line 5492 "cs-parser.jay" +#line 5496 "cs-parser.jay" { yyVal = new Unchecked ((Block) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } @@ -3628,7 +3628,7 @@ case 854: case_854(); break; case 855: -#line 5502 "cs-parser.jay" +#line 5506 "cs-parser.jay" { yyVal = new Unsafe ((Block) yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); } @@ -3658,7 +3658,7 @@ case 863: case_863(); break; case 864: -#line 5585 "cs-parser.jay" +#line 5589 "cs-parser.jay" { report.Error (210, lexer.Location, "You must provide an initializer in a fixed or using statement declaration"); } @@ -3691,7 +3691,7 @@ case 873: case_873(); break; case 874: -#line 5685 "cs-parser.jay" +#line 5689 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); } @@ -3700,7 +3700,7 @@ case 875: case_875(); break; case 876: -#line 5700 "cs-parser.jay" +#line 5704 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); } @@ -3715,7 +3715,7 @@ case 880: case_880(); break; case 881: -#line 5745 "cs-parser.jay" +#line 5749 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); } @@ -3736,7 +3736,7 @@ case 889: case_889(); break; case 895: -#line 5804 "cs-parser.jay" +#line 5808 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); } @@ -3745,7 +3745,7 @@ case 896: case_896(); break; case 897: -#line 5823 "cs-parser.jay" +#line 5827 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); } @@ -3778,13 +3778,13 @@ case 906: case_906(); break; case 908: -#line 5967 "cs-parser.jay" +#line 5971 "cs-parser.jay" { yyVal = yyVals[0+yyTop]; } break; case 909: -#line 5974 "cs-parser.jay" +#line 5978 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); } @@ -3805,7 +3805,7 @@ case 916: case_916(); break; case 917: -#line 6020 "cs-parser.jay" +#line 6024 "cs-parser.jay" { yyVal = new Linq.OrderByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[0+yyTop]); } @@ -3817,7 +3817,7 @@ case 919: case_919(); break; case 920: -#line 6037 "cs-parser.jay" +#line 6041 "cs-parser.jay" { yyVal = new Linq.ThenByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[0+yyTop]); } @@ -3841,13 +3841,13 @@ case 929: case_929(); break; case 937: -#line 6161 "cs-parser.jay" +#line 6165 "cs-parser.jay" { module.DocumentationBuilder.ParsedName = (MemberName) yyVals[0+yyTop]; } break; case 938: -#line 6168 "cs-parser.jay" +#line 6172 "cs-parser.jay" { module.DocumentationBuilder.ParsedParameters = (List)yyVals[0+yyTop]; } @@ -3859,13 +3859,13 @@ case 940: case_940(); break; case 941: -#line 6185 "cs-parser.jay" +#line 6189 "cs-parser.jay" { yyVal = new MemberName ((MemberName) yyVals[-2+yyTop], new MemberName (MemberCache.IndexerNameAlias)); } break; case 942: -#line 6189 "cs-parser.jay" +#line 6193 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } @@ -3883,25 +3883,25 @@ case 946: case_946(); break; case 948: -#line 6225 "cs-parser.jay" +#line 6229 "cs-parser.jay" { yyVal = new MemberName (((MemberName) yyVals[-2+yyTop]), (MemberName) yyVals[0+yyTop]); } break; case 950: -#line 6233 "cs-parser.jay" +#line 6237 "cs-parser.jay" { valid_param_mod = ParameterModifierType.Ref | ParameterModifierType.Out; } break; case 951: -#line 6237 "cs-parser.jay" +#line 6241 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; } break; case 952: -#line 6244 "cs-parser.jay" +#line 6248 "cs-parser.jay" { yyVal = new List (0); } @@ -5084,12 +5084,11 @@ void case_214() } current_local_parameters = current_property.Get.ParameterInfo; - lbag.AddMember (current_property.Get, GetModifierLocations ()); lexer.PropertyParsing = false; } void case_215() -#line 1845 "cs-parser.jay" +#line 1844 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { current_property.Get.Block = (ToplevelBlock) yyVals[0+yyTop]; @@ -5097,7 +5096,10 @@ void case_215() if (current_container.Kind == MemberKind.Interface) { report.Error (531, current_property.Get.Block.StartLocation, "`{0}': interface members cannot have a definition", current_property.Get.GetSignatureForError ()); - } + } + lbag.AddMember (current_property.Get, GetModifierLocations ()); + } else { + lbag.AddMember (current_property.Get, GetModifierLocations (), savedLocation); } current_local_parameters = null; @@ -5109,7 +5111,7 @@ void case_215() } void case_216() -#line 1866 "cs-parser.jay" +#line 1868 "cs-parser.jay" { if (yyVals[-1+yyTop] != ModifierNone && lang_version == LanguageVersion.ISO_1) { FeatureIsNotAvailable (GetLocation (yyVals[-1+yyTop]), "access modifiers on properties"); @@ -5133,12 +5135,11 @@ void case_216() } current_local_parameters = current_property.Set.ParameterInfo; - lbag.AddMember (current_property.Set, GetModifierLocations ()); lexer.PropertyParsing = false; } void case_217() -#line 1893 "cs-parser.jay" +#line 1894 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { current_property.Set.Block = (ToplevelBlock) yyVals[0+yyTop]; @@ -5147,6 +5148,9 @@ void case_217() report.Error (531, current_property.Set.Block.StartLocation, "`{0}': interface members cannot have a definition", current_property.Set.GetSignatureForError ()); } + lbag.AddMember (current_property.Set, GetModifierLocations ()); + } else { + lbag.AddMember (current_property.Set, GetModifierLocations (), savedLocation); } current_local_parameters = null; @@ -5158,21 +5162,21 @@ void case_217() } void case_219() -#line 1915 "cs-parser.jay" +#line 1919 "cs-parser.jay" { - lbag.AppendToMember (lbag.LastMember, GetLocation (yyVals[0+yyTop])); + savedLocation = GetLocation (yyVals[0+yyTop]); yyVal = null; } void case_220() -#line 1920 "cs-parser.jay" +#line 1924 "cs-parser.jay" { Error_SyntaxError (1043, yyToken, "Invalid accessor body"); yyVal = null; } void case_222() -#line 1935 "cs-parser.jay" +#line 1939 "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]); @@ -5180,7 +5184,7 @@ void case_222() } void case_223() -#line 1942 "cs-parser.jay" +#line 1946 "cs-parser.jay" { lexer.ConstraintsParsing = false; @@ -5193,7 +5197,7 @@ void case_223() } void case_224() -#line 1953 "cs-parser.jay" +#line 1957 "cs-parser.jay" { --lexer.parsing_declaration; if (doc_support) @@ -5201,14 +5205,14 @@ void case_224() } void case_225() -#line 1959 "cs-parser.jay" +#line 1963 "cs-parser.jay" { lbag.AppendToMember (current_class, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop])); yyVal = pop_current_class (); } void case_241() -#line 2011 "cs-parser.jay" +#line 2015 "cs-parser.jay" { OperatorDeclaration decl = (OperatorDeclaration) yyVals[-2+yyTop]; if (decl != null) { @@ -5235,14 +5239,14 @@ void case_241() } void case_245() -#line 2045 "cs-parser.jay" +#line 2049 "cs-parser.jay" { report.Error (590, GetLocation (yyVals[0+yyTop]), "User-defined operators cannot return void"); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } void case_247() -#line 2057 "cs-parser.jay" +#line 2061 "cs-parser.jay" { valid_param_mod = 0; @@ -5284,7 +5288,7 @@ void case_247() } void case_272() -#line 2133 "cs-parser.jay" +#line 2137 "cs-parser.jay" { valid_param_mod = 0; @@ -5301,7 +5305,7 @@ void case_272() } void case_274() -#line 2152 "cs-parser.jay" +#line 2156 "cs-parser.jay" { valid_param_mod = 0; @@ -5318,7 +5322,7 @@ void case_274() } void case_275() -#line 2167 "cs-parser.jay" +#line 2171 "cs-parser.jay" { Error_SyntaxError (yyToken); current_local_parameters = ParametersCompiled.EmptyReadOnlyParameters; @@ -5326,7 +5330,7 @@ void case_275() } void case_276() -#line 2173 "cs-parser.jay" +#line 2177 "cs-parser.jay" { Error_SyntaxError (yyToken); current_local_parameters = ParametersCompiled.EmptyReadOnlyParameters; @@ -5334,7 +5338,7 @@ void case_276() } void case_277() -#line 2183 "cs-parser.jay" +#line 2187 "cs-parser.jay" { Constructor c = (Constructor) yyVals[-1+yyTop]; c.Block = (ToplevelBlock) yyVals[0+yyTop]; @@ -5350,7 +5354,7 @@ void case_277() } void case_278() -#line 2202 "cs-parser.jay" +#line 2206 "cs-parser.jay" { if (doc_support) { tmpComment = Lexer.consume_doc_comment (); @@ -5361,7 +5365,7 @@ void case_278() } void case_279() -#line 2211 "cs-parser.jay" +#line 2215 "cs-parser.jay" { valid_param_mod = 0; current_local_parameters = (ParametersCompiled) yyVals[-1+yyTop]; @@ -5374,7 +5378,7 @@ void case_279() } void case_280() -#line 2222 "cs-parser.jay" +#line 2226 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-6+yyTop]; var mods = (Modifiers) yyVals[-7+yyTop]; @@ -5404,7 +5408,7 @@ void case_280() } void case_286() -#line 2267 "cs-parser.jay" +#line 2271 "cs-parser.jay" { --lexer.parsing_block; yyVal = new ConstructorBaseInitializer ((Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-4+yyTop])); @@ -5412,7 +5416,7 @@ void case_286() } void case_288() -#line 2277 "cs-parser.jay" +#line 2281 "cs-parser.jay" { --lexer.parsing_block; yyVal = new ConstructorThisInitializer ((Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-4+yyTop])); @@ -5420,14 +5424,14 @@ void case_288() } void case_289() -#line 2283 "cs-parser.jay" +#line 2287 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } void case_290() -#line 2291 "cs-parser.jay" +#line 2295 "cs-parser.jay" { if (doc_support) { tmpComment = Lexer.consume_doc_comment (); @@ -5438,7 +5442,7 @@ void case_290() } void case_291() -#line 2300 "cs-parser.jay" +#line 2304 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; if (lt.Value != current_container.MemberName.Name){ @@ -5460,7 +5464,7 @@ void case_291() } void case_292() -#line 2325 "cs-parser.jay" +#line 2329 "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); @@ -5474,7 +5478,7 @@ void case_292() } void case_293() -#line 2339 "cs-parser.jay" +#line 2343 "cs-parser.jay" { if (doc_support) { current_event_field.DocComment = Lexer.consume_doc_comment (); @@ -5486,7 +5490,7 @@ void case_293() } void case_294() -#line 2352 "cs-parser.jay" +#line 2356 "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); @@ -5496,7 +5500,7 @@ void case_294() } void case_295() -#line 2360 "cs-parser.jay" +#line 2364 "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"); @@ -5505,7 +5509,7 @@ void case_295() } void case_296() -#line 2367 "cs-parser.jay" +#line 2371 "cs-parser.jay" { if (doc_support) { current_event.DocComment = Lexer.consume_doc_comment (); @@ -5518,14 +5522,14 @@ void case_296() } void case_299() -#line 2386 "cs-parser.jay" +#line 2390 "cs-parser.jay" { --lexer.parsing_block; current_event_field.Initializer = (Expression) yyVals[0+yyTop]; } void case_304() -#line 2410 "cs-parser.jay" +#line 2414 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new FieldDeclarator (new SimpleMemberName (lt.Value, lt.Location), null); @@ -5533,7 +5537,7 @@ void case_304() } void case_306() -#line 2420 "cs-parser.jay" +#line 2424 "cs-parser.jay" { --lexer.parsing_block; var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; @@ -5542,7 +5546,7 @@ void case_306() } void case_307() -#line 2429 "cs-parser.jay" +#line 2433 "cs-parser.jay" { if (current_container.Kind == MemberKind.Interface) { report.Error (68, lexer.Location, "`{0}': event in interface cannot have an initializer", @@ -5556,28 +5560,28 @@ void case_307() } void case_311() -#line 2450 "cs-parser.jay" +#line 2454 "cs-parser.jay" { report.Error (65, lexer.Location, "`{0}': event property must have both add and remove accessors", current_event.GetSignatureForError ()); } void case_312() -#line 2455 "cs-parser.jay" +#line 2459 "cs-parser.jay" { report.Error (65, lexer.Location, "`{0}': event property must have both add and remove accessors", current_event.GetSignatureForError ()); } void case_313() -#line 2460 "cs-parser.jay" +#line 2464 "cs-parser.jay" { report.Error (1055, GetLocation (yyVals[0+yyTop]), "An add or remove accessor expected"); yyVal = null; } void case_314() -#line 2468 "cs-parser.jay" +#line 2472 "cs-parser.jay" { if (yyVals[-1+yyTop] != ModifierNone) { report.Error (1609, GetLocation (yyVals[-1+yyTop]), "Modifiers cannot be placed on event accessor declarations"); @@ -5591,7 +5595,7 @@ void case_314() } void case_315() -#line 2480 "cs-parser.jay" +#line 2484 "cs-parser.jay" { lexer.EventParsing = true; @@ -5606,7 +5610,7 @@ void case_315() } void case_316() -#line 2496 "cs-parser.jay" +#line 2500 "cs-parser.jay" { if (yyVals[-1+yyTop] != ModifierNone) { report.Error (1609, GetLocation (yyVals[-1+yyTop]), "Modifiers cannot be placed on event accessor declarations"); @@ -5620,7 +5624,7 @@ void case_316() } void case_317() -#line 2508 "cs-parser.jay" +#line 2512 "cs-parser.jay" { lexer.EventParsing = true; @@ -5635,21 +5639,21 @@ void case_317() } void case_318() -#line 2524 "cs-parser.jay" +#line 2528 "cs-parser.jay" { report.Error (73, lexer.Location, "An add or remove accessor must have a body"); yyVal = null; } void case_320() -#line 2536 "cs-parser.jay" +#line 2540 "cs-parser.jay" { if (doc_support) enumTypeComment = Lexer.consume_doc_comment (); } void case_321() -#line 2541 "cs-parser.jay" +#line 2545 "cs-parser.jay" { if (doc_support) Lexer.doc_state = XmlCommentState.Allowed; @@ -5663,7 +5667,7 @@ void case_321() } void case_322() -#line 2553 "cs-parser.jay" +#line 2557 "cs-parser.jay" { /* here will be evaluated after CLOSE_BLACE is consumed.*/ if (doc_support) @@ -5671,7 +5675,7 @@ void case_322() } void case_323() -#line 2559 "cs-parser.jay" +#line 2563 "cs-parser.jay" { if (doc_support) current_class.DocComment = enumTypeComment; @@ -5686,7 +5690,7 @@ void case_323() } void case_325() -#line 2576 "cs-parser.jay" +#line 2580 "cs-parser.jay" { var te = yyVals[0+yyTop] as TypeExpression; if (te == null || !EnumSpec.IsValidUnderlyingType (te.Type)) { @@ -5698,21 +5702,21 @@ void case_325() } void case_326() -#line 2586 "cs-parser.jay" +#line 2590 "cs-parser.jay" { Error_TypeExpected (GetLocation (yyVals[-1+yyTop])); yyVal = null; } void case_331() -#line 2604 "cs-parser.jay" +#line 2608 "cs-parser.jay" { lbag.AddLocation (yyVals[-2+yyTop], GetLocation (yyVals[-1+yyTop])); yyVal = yyVals[0+yyTop]; } void case_332() -#line 2612 "cs-parser.jay" +#line 2616 "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]); @@ -5727,7 +5731,7 @@ void case_332() } void case_333() -#line 2625 "cs-parser.jay" +#line 2629 "cs-parser.jay" { ++lexer.parsing_block; if (doc_support) { @@ -5737,7 +5741,7 @@ void case_333() } void case_334() -#line 2633 "cs-parser.jay" +#line 2637 "cs-parser.jay" { --lexer.parsing_block; @@ -5753,7 +5757,7 @@ void case_334() } void case_336() -#line 2658 "cs-parser.jay" +#line 2662 "cs-parser.jay" { valid_param_mod = 0; @@ -5773,7 +5777,7 @@ void case_336() } void case_338() -#line 2680 "cs-parser.jay" +#line 2684 "cs-parser.jay" { if (doc_support) { current_delegate.DocComment = Lexer.consume_doc_comment (); @@ -5789,7 +5793,7 @@ void case_338() } void case_340() -#line 2698 "cs-parser.jay" +#line 2702 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[0+yyTop]), "nullable types"); @@ -5798,7 +5802,7 @@ void case_340() } void case_342() -#line 2709 "cs-parser.jay" +#line 2713 "cs-parser.jay" { var lt1 = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var lt2 = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -5807,7 +5811,7 @@ void case_342() } void case_344() -#line 2720 "cs-parser.jay" +#line 2724 "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); @@ -5815,14 +5819,14 @@ void case_344() } void case_345() -#line 2729 "cs-parser.jay" +#line 2733 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberName (lt.Value, (TypeArguments)yyVals[0+yyTop], lt.Location); } void case_347() -#line 2741 "cs-parser.jay" +#line 2745 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "generics"); @@ -5835,14 +5839,14 @@ void case_347() } void case_348() -#line 2752 "cs-parser.jay" +#line 2756 "cs-parser.jay" { Error_TypeExpected (lexer.Location); yyVal = new TypeArguments (); } void case_349() -#line 2760 "cs-parser.jay" +#line 2764 "cs-parser.jay" { TypeArguments type_args = new TypeArguments (); type_args.Add ((FullNamedExpression) yyVals[0+yyTop]); @@ -5851,7 +5855,7 @@ void case_349() } void case_350() -#line 2767 "cs-parser.jay" +#line 2771 "cs-parser.jay" { TypeArguments type_args = (TypeArguments) yyVals[-2+yyTop]; type_args.Add ((FullNamedExpression) yyVals[0+yyTop]); @@ -5860,7 +5864,7 @@ void case_350() } void case_352() -#line 2784 "cs-parser.jay" +#line 2788 "cs-parser.jay" { lexer.parsing_generic_declaration = false; var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; @@ -5868,7 +5872,7 @@ void case_352() } void case_353() -#line 2793 "cs-parser.jay" +#line 2797 "cs-parser.jay" { MemberName mn = (MemberName)yyVals[0+yyTop]; if (mn.TypeArguments != null) @@ -5877,7 +5881,7 @@ void case_353() } void case_355() -#line 2804 "cs-parser.jay" +#line 2808 "cs-parser.jay" { lexer.parsing_generic_declaration = false; var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -5885,21 +5889,21 @@ void case_355() } void case_356() -#line 2813 "cs-parser.jay" +#line 2817 "cs-parser.jay" { lexer.parsing_generic_declaration = false; yyVal = new MemberName (TypeContainer.DefaultIndexerName, GetLocation (yyVals[0+yyTop])); } void case_357() -#line 2818 "cs-parser.jay" +#line 2822 "cs-parser.jay" { lexer.parsing_generic_declaration = false; yyVal = new MemberName ((MemberName) yyVals[-1+yyTop], TypeContainer.DefaultIndexerName, null, GetLocation (yyVals[-1+yyTop])); } void case_358() -#line 2826 "cs-parser.jay" +#line 2830 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; yyVal = new MemberName (lt.Value, (TypeArguments) yyVals[-1+yyTop], lt.Location); @@ -5907,7 +5911,7 @@ void case_358() } void case_359() -#line 2832 "cs-parser.jay" +#line 2836 "cs-parser.jay" { var lt1 = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; var lt2 = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; @@ -5917,7 +5921,7 @@ void case_359() } void case_360() -#line 2840 "cs-parser.jay" +#line 2844 "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); @@ -5925,7 +5929,7 @@ void case_360() } void case_362() -#line 2850 "cs-parser.jay" +#line 2854 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "generics"); @@ -5935,7 +5939,7 @@ void case_362() } void case_363() -#line 2861 "cs-parser.jay" +#line 2865 "cs-parser.jay" { TypeArguments type_args = new TypeArguments (); type_args.Add ((FullNamedExpression)yyVals[0+yyTop]); @@ -5943,7 +5947,7 @@ void case_363() } void case_364() -#line 2867 "cs-parser.jay" +#line 2871 "cs-parser.jay" { TypeArguments type_args = (TypeArguments) yyVals[-2+yyTop]; type_args.Add ((FullNamedExpression)yyVals[0+yyTop]); @@ -5952,14 +5956,14 @@ void case_364() } void case_365() -#line 2877 "cs-parser.jay" +#line 2881 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken)yyVals[0+yyTop]; yyVal = new TypeParameterName (lt.Value, (Attributes)yyVals[-2+yyTop], (Variance) yyVals[-1+yyTop], lt.Location); } void case_366() -#line 2882 "cs-parser.jay" +#line 2886 "cs-parser.jay" { if (GetTokenName (yyToken) == "type") report.Error (81, GetLocation (yyVals[0+yyTop]), "Type parameter declaration must be an identifier not a type"); @@ -5970,28 +5974,28 @@ void case_366() } void case_371() -#line 2916 "cs-parser.jay" +#line 2920 "cs-parser.jay" { Expression.Error_VoidInvalidInTheContext (GetLocation (yyVals[0+yyTop]), report); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } void case_373() -#line 2925 "cs-parser.jay" +#line 2929 "cs-parser.jay" { Expression.Error_VoidInvalidInTheContext (GetLocation (yyVals[0+yyTop]), report); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } void case_375() -#line 2934 "cs-parser.jay" +#line 2938 "cs-parser.jay" { report.Error (1536, GetLocation (yyVals[0+yyTop]), "Invalid parameter type `void'"); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } void case_378() -#line 2950 "cs-parser.jay" +#line 2954 "cs-parser.jay" { MemberName name = (MemberName) yyVals[-1+yyTop]; @@ -6006,14 +6010,14 @@ void case_378() } void case_380() -#line 2967 "cs-parser.jay" +#line 2971 "cs-parser.jay" { if (yyVals[0+yyTop] != null) yyVal = new ComposedCast ((FullNamedExpression) yyVals[-1+yyTop], (ComposedTypeSpecifier) yyVals[0+yyTop]); } void case_383() -#line 2983 "cs-parser.jay" +#line 2987 "cs-parser.jay" { var types = new List (2); types.Add ((FullNamedExpression) yyVals[0+yyTop]); @@ -6021,7 +6025,7 @@ void case_383() } void case_384() -#line 2989 "cs-parser.jay" +#line 2993 "cs-parser.jay" { var types = (List) yyVals[-2+yyTop]; types.Add ((FullNamedExpression) yyVals[0+yyTop]); @@ -6030,7 +6034,7 @@ void case_384() } void case_385() -#line 2999 "cs-parser.jay" +#line 3003 "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 ()); @@ -6039,35 +6043,35 @@ void case_385() } void case_386() -#line 3006 "cs-parser.jay" +#line 3010 "cs-parser.jay" { Error_TypeExpected (lexer.Location); yyVal = null; } void case_423() -#line 3068 "cs-parser.jay" +#line 3072 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new SimpleName (lt.Value, (TypeArguments)yyVals[0+yyTop], lt.Location); } void case_424() -#line 3072 "cs-parser.jay" +#line 3076 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new CompletionSimpleName (MemberName.MakeName (lt.Value, null), lt.Location); } void case_435() -#line 3113 "cs-parser.jay" +#line 3117 "cs-parser.jay" { yyVal = new ParenthesizedExpression ((Expression) yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_437() -#line 3125 "cs-parser.jay" +#line 3129 "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); @@ -6075,7 +6079,7 @@ void case_437() } void case_438() -#line 3131 "cs-parser.jay" +#line 3135 "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); @@ -6083,7 +6087,7 @@ void case_438() } void case_439() -#line 3137 "cs-parser.jay" +#line 3141 "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); @@ -6091,7 +6095,7 @@ void case_439() } void case_440() -#line 3143 "cs-parser.jay" +#line 3147 "cs-parser.jay" { var lt1 = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var lt2 = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -6101,28 +6105,28 @@ void case_440() } void case_442() -#line 3153 "cs-parser.jay" +#line 3157 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new CompletionMemberAccess ((Expression) yyVals[-3+yyTop], lt.Value, lt.Location); } void case_444() -#line 3161 "cs-parser.jay" +#line 3165 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new CompletionMemberAccess ((Expression) yyVals[-3+yyTop], lt.Value, lt.Location); } void case_445() -#line 3169 "cs-parser.jay" +#line 3173 "cs-parser.jay" { yyVal = new Invocation ((Expression) yyVals[-3+yyTop], (Arguments) yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_448() -#line 3182 "cs-parser.jay" +#line 3186 "cs-parser.jay" { if (yyVals[-1+yyTop] == null) { yyVal = CollectionOrObjectInitializers.Empty; @@ -6134,14 +6138,14 @@ void case_448() } void case_449() -#line 3192 "cs-parser.jay" +#line 3196 "cs-parser.jay" { yyVal = new CollectionOrObjectInitializers ((List) yyVals[-2+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_452() -#line 3208 "cs-parser.jay" +#line 3212 "cs-parser.jay" { var a = new List (); a.Add ((Expression) yyVals[0+yyTop]); @@ -6149,7 +6153,7 @@ void case_452() } void case_453() -#line 3214 "cs-parser.jay" +#line 3218 "cs-parser.jay" { var a = (List)yyVals[-2+yyTop]; a.Add ((Expression) yyVals[0+yyTop]); @@ -6158,14 +6162,14 @@ void case_453() } void case_454() -#line 3220 "cs-parser.jay" +#line 3224 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = yyVals[-1+yyTop]; } void case_455() -#line 3228 "cs-parser.jay" +#line 3232 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; yyVal = new ElementInitializer (lt.Value, (Expression)yyVals[0+yyTop], lt.Location); @@ -6173,7 +6177,7 @@ void case_455() } void case_457() -#line 3237 "cs-parser.jay" +#line 3241 "cs-parser.jay" { CompletionSimpleName csn = yyVals[-1+yyTop] as CompletionSimpleName; if (csn == null) @@ -6183,7 +6187,7 @@ void case_457() } void case_458() -#line 3245 "cs-parser.jay" +#line 3249 "cs-parser.jay" { if (yyVals[-1+yyTop] == null) yyVal = null; @@ -6192,14 +6196,14 @@ void case_458() } void case_459() -#line 3252 "cs-parser.jay" +#line 3256 "cs-parser.jay" { report.Error (1920, GetLocation (yyVals[-1+yyTop]), "An element initializer cannot be empty"); yyVal = null; } void case_464() -#line 3270 "cs-parser.jay" +#line 3274 "cs-parser.jay" { Arguments list = new Arguments (4); list.Add ((Argument) yyVals[0+yyTop]); @@ -6207,7 +6211,7 @@ void case_464() } void case_465() -#line 3276 "cs-parser.jay" +#line 3280 "cs-parser.jay" { Arguments list = (Arguments) yyVals[-2+yyTop]; if (list [list.Count - 1] is NamedArgument) @@ -6219,7 +6223,7 @@ void case_465() } void case_466() -#line 3286 "cs-parser.jay" +#line 3290 "cs-parser.jay" { Arguments list = (Arguments) yyVals[-2+yyTop]; NamedArgument a = (NamedArgument) yyVals[0+yyTop]; @@ -6236,56 +6240,56 @@ void case_466() } void case_467() -#line 3301 "cs-parser.jay" +#line 3305 "cs-parser.jay" { report.Error (839, GetLocation (yyVals[0+yyTop]), "An argument is missing"); yyVal = yyVals[-1+yyTop]; } void case_468() -#line 3306 "cs-parser.jay" +#line 3310 "cs-parser.jay" { report.Error (839, GetLocation (yyVals[-1+yyTop]), "An argument is missing"); yyVal = null; } void case_473() -#line 3327 "cs-parser.jay" +#line 3331 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop], Argument.AType.Ref); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } void case_474() -#line 3332 "cs-parser.jay" +#line 3336 "cs-parser.jay" { yyVal = new Argument ((Expression) yyVals[0+yyTop], Argument.AType.Out); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } void case_475() -#line 3337 "cs-parser.jay" +#line 3341 "cs-parser.jay" { yyVal = new Argument (new Arglist ((Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop]))); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_476() -#line 3342 "cs-parser.jay" +#line 3346 "cs-parser.jay" { yyVal = new Argument (new Arglist (GetLocation (yyVals[-2+yyTop]))); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_478() -#line 3354 "cs-parser.jay" +#line 3358 "cs-parser.jay" { yyVal = new ElementAccess ((Expression) yyVals[-3+yyTop], (Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_479() -#line 3362 "cs-parser.jay" +#line 3366 "cs-parser.jay" { var list = new List (4); list.Add ((Expression) yyVals[0+yyTop]); @@ -6293,7 +6297,7 @@ void case_479() } void case_480() -#line 3368 "cs-parser.jay" +#line 3372 "cs-parser.jay" { var list = (List) yyVals[-2+yyTop]; list.Add ((Expression) yyVals[0+yyTop]); @@ -6302,14 +6306,14 @@ void case_480() } void case_481() -#line 3374 "cs-parser.jay" +#line 3378 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = yyVals[-1+yyTop]; } void case_482() -#line 3382 "cs-parser.jay" +#line 3386 "cs-parser.jay" { Arguments args = new Arguments (4); args.Add ((Argument) yyVals[0+yyTop]); @@ -6317,7 +6321,7 @@ void case_482() } void case_483() -#line 3388 "cs-parser.jay" +#line 3392 "cs-parser.jay" { Arguments args = (Arguments) yyVals[-2+yyTop]; if (args [args.Count - 1] is NamedArgument && !(yyVals[0+yyTop] is NamedArgument)) @@ -6329,21 +6333,21 @@ void case_483() } void case_487() -#line 3416 "cs-parser.jay" +#line 3420 "cs-parser.jay" { yyVal = new ElementAccess (new BaseThis (GetLocation (yyVals[-3+yyTop])), (Arguments) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_488() -#line 3421 "cs-parser.jay" +#line 3425 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new ElementAccess (null, null, GetLocation (yyVals[-1+yyTop])); } void case_491() -#line 3443 "cs-parser.jay" +#line 3447 "cs-parser.jay" { if (yyVals[0+yyTop] != null) { if (lang_version <= LanguageVersion.ISO_2) @@ -6358,7 +6362,7 @@ void case_491() } void case_492() -#line 3456 "cs-parser.jay" +#line 3460 "cs-parser.jay" { if (lang_version <= LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "collection initializers"); @@ -6367,7 +6371,7 @@ void case_492() } void case_493() -#line 3468 "cs-parser.jay" +#line 3472 "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])) { @@ -6377,7 +6381,7 @@ void case_493() } void case_494() -#line 3476 "cs-parser.jay" +#line 3480 "cs-parser.jay" { if (yyVals[0+yyTop] == null) report.Error (1586, GetLocation (yyVals[-3+yyTop]), "Array creation must have array size or array initializer"); @@ -6386,7 +6390,7 @@ void case_494() } void case_495() -#line 3483 "cs-parser.jay" +#line 3487 "cs-parser.jay" { if (lang_version <= LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-2+yyTop]), "implicitly typed arrays"); @@ -6395,28 +6399,28 @@ void case_495() } void case_496() -#line 3490 "cs-parser.jay" +#line 3494 "cs-parser.jay" { report.Error (178, GetLocation (yyVals[-1+yyTop]), "Invalid rank specifier, expecting `,' or `]'"); yyVal = new ArrayCreation ((FullNamedExpression) yyVals[-5+yyTop], null, GetLocation (yyVals[-6+yyTop])); } void case_497() -#line 3495 "cs-parser.jay" +#line 3499 "cs-parser.jay" { Error_SyntaxError (1526, yyToken, "Unexpected symbol"); yyVal = new ArrayCreation ((FullNamedExpression) yyVals[-1+yyTop], null, GetLocation (yyVals[-2+yyTop])); } void case_499() -#line 3506 "cs-parser.jay" +#line 3510 "cs-parser.jay" { --lexer.parsing_type; yyVal = yyVals[0+yyTop]; } void case_500() -#line 3514 "cs-parser.jay" +#line 3518 "cs-parser.jay" { if (lang_version <= LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-3+yyTop]), "anonymous types"); @@ -6428,7 +6432,7 @@ void case_500() } void case_505() -#line 3537 "cs-parser.jay" +#line 3541 "cs-parser.jay" { var a = new List (4); a.Add ((AnonymousTypeParameter) yyVals[0+yyTop]); @@ -6436,7 +6440,7 @@ void case_505() } void case_506() -#line 3543 "cs-parser.jay" +#line 3547 "cs-parser.jay" { var a = (List) yyVals[-2+yyTop]; a.Add ((AnonymousTypeParameter) yyVals[0+yyTop]); @@ -6446,7 +6450,7 @@ void case_506() } void case_507() -#line 3554 "cs-parser.jay" +#line 3558 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken)yyVals[-2+yyTop]; yyVal = new AnonymousTypeParameter ((Expression)yyVals[0+yyTop], lt.Value, lt.Location); @@ -6454,7 +6458,7 @@ void case_507() } void case_508() -#line 3560 "cs-parser.jay" +#line 3564 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken)yyVals[0+yyTop]; yyVal = new AnonymousTypeParameter (new SimpleName (lt.Value, lt.Location), @@ -6462,14 +6466,14 @@ void case_508() } void case_509() -#line 3566 "cs-parser.jay" +#line 3570 "cs-parser.jay" { MemberAccess ma = (MemberAccess) yyVals[0+yyTop]; yyVal = new AnonymousTypeParameter (ma, ma.Name, ma.Location); } void case_510() -#line 3571 "cs-parser.jay" +#line 3575 "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"); @@ -6477,28 +6481,28 @@ void case_510() } void case_514() -#line 3586 "cs-parser.jay" +#line 3590 "cs-parser.jay" { ((ComposedTypeSpecifier) yyVals[-1+yyTop]).Next = (ComposedTypeSpecifier) yyVals[0+yyTop]; yyVal = yyVals[-1+yyTop]; } void case_515() -#line 3594 "cs-parser.jay" +#line 3598 "cs-parser.jay" { yyVal = ComposedTypeSpecifier.CreateArrayDimension (1, GetLocation (yyVals[-1+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_516() -#line 3599 "cs-parser.jay" +#line 3603 "cs-parser.jay" { yyVal = ComposedTypeSpecifier.CreateArrayDimension ((int)yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_521() -#line 3629 "cs-parser.jay" +#line 3633 "cs-parser.jay" { var ai = new ArrayInitializer (0, GetLocation (yyVals[-1+yyTop])); ai.VariableDeclaration = current_variable; @@ -6507,7 +6511,7 @@ void case_521() } void case_522() -#line 3636 "cs-parser.jay" +#line 3640 "cs-parser.jay" { var ai = new ArrayInitializer ((List) yyVals[-2+yyTop], GetLocation (yyVals[-3+yyTop])); ai.VariableDeclaration = current_variable; @@ -6520,7 +6524,7 @@ void case_522() } void case_523() -#line 3650 "cs-parser.jay" +#line 3654 "cs-parser.jay" { var list = new List (4); list.Add ((Expression) yyVals[0+yyTop]); @@ -6528,7 +6532,7 @@ void case_523() } void case_524() -#line 3656 "cs-parser.jay" +#line 3660 "cs-parser.jay" { var list = (List) yyVals[-2+yyTop]; list.Add ((Expression) yyVals[0+yyTop]); @@ -6537,7 +6541,7 @@ void case_524() } void case_526() -#line 3670 "cs-parser.jay" +#line 3674 "cs-parser.jay" { lexer.TypeOfParsing = false; yyVal = new TypeOf ((FullNamedExpression) yyVals[-1+yyTop], GetLocation (yyVals[-4+yyTop])); @@ -6545,14 +6549,14 @@ void case_526() } void case_529() -#line 3681 "cs-parser.jay" +#line 3685 "cs-parser.jay" { Error_TypeExpected (lexer.Location); yyVal = null; } void case_530() -#line 3689 "cs-parser.jay" +#line 3693 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -6560,7 +6564,7 @@ void case_530() } void case_531() -#line 3695 "cs-parser.jay" +#line 3699 "cs-parser.jay" { var lt1 = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var lt2 = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -6570,7 +6574,7 @@ void case_531() } void case_532() -#line 3703 "cs-parser.jay" +#line 3707 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; @@ -6578,7 +6582,7 @@ void case_532() } void case_533() -#line 3709 "cs-parser.jay" +#line 3713 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; @@ -6586,7 +6590,7 @@ void case_533() } void case_534() -#line 3715 "cs-parser.jay" +#line 3719 "cs-parser.jay" { var te = ((MemberName) yyVals[-3+yyTop]).GetTypeExpression (); if (te.HasTypeArguments) @@ -6597,7 +6601,7 @@ void case_534() } void case_535() -#line 3727 "cs-parser.jay" +#line 3731 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[0+yyTop]), "generics"); @@ -6606,7 +6610,7 @@ void case_535() } void case_536() -#line 3737 "cs-parser.jay" +#line 3741 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; if (lang_version == LanguageVersion.ISO_1) @@ -6616,35 +6620,35 @@ void case_536() } void case_537() -#line 3748 "cs-parser.jay" +#line 3752 "cs-parser.jay" { yyVal = new SizeOf ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_538() -#line 3756 "cs-parser.jay" +#line 3760 "cs-parser.jay" { yyVal = new CheckedExpr ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_539() -#line 3764 "cs-parser.jay" +#line 3768 "cs-parser.jay" { yyVal = new UnCheckedExpr ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_540() -#line 3772 "cs-parser.jay" +#line 3776 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new MemberAccess (new Indirection ((Expression) yyVals[-3+yyTop], GetLocation (yyVals[-2+yyTop])), lt.Value, (TypeArguments) yyVals[0+yyTop], lt.Location); } void case_542() -#line 3784 "cs-parser.jay" +#line 3788 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); if ((ParametersCompiled) yyVals[-2+yyTop] != ParametersCompiled.Undefined) { @@ -6655,7 +6659,7 @@ void case_542() } void case_548() -#line 3816 "cs-parser.jay" +#line 3820 "cs-parser.jay" { valid_param_mod = 0; yyVal = yyVals[-1+yyTop]; @@ -6664,7 +6668,7 @@ void case_548() } void case_549() -#line 3826 "cs-parser.jay" +#line 3830 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-3+yyTop]), "default value expression"); @@ -6674,147 +6678,147 @@ void case_549() } void case_555() -#line 3851 "cs-parser.jay" +#line 3855 "cs-parser.jay" { yyVal = new Cast ((FullNamedExpression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } void case_556() -#line 3859 "cs-parser.jay" +#line 3863 "cs-parser.jay" { current_block.ParametersBlock.IsAsync = true; yyVal = new Await ((Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_565() -#line 3900 "cs-parser.jay" +#line 3904 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Multiply, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_566() -#line 3905 "cs-parser.jay" +#line 3909 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Division, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_567() -#line 3910 "cs-parser.jay" +#line 3914 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Modulus, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_569() -#line 3919 "cs-parser.jay" +#line 3923 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Addition, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_571() -#line 3928 "cs-parser.jay" +#line 3932 "cs-parser.jay" { /* Shift/Reduce conflict*/ yyVal = new Binary (Binary.Operator.Subtraction, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_575() -#line 3945 "cs-parser.jay" +#line 3949 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LeftShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_576() -#line 3950 "cs-parser.jay" +#line 3954 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.RightShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_578() -#line 3959 "cs-parser.jay" +#line 3963 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LessThan, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_579() -#line 3964 "cs-parser.jay" +#line 3968 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.GreaterThan, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_580() -#line 3969 "cs-parser.jay" +#line 3973 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LessThanOrEqual, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_581() -#line 3974 "cs-parser.jay" +#line 3978 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.GreaterThanOrEqual, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_583() -#line 3983 "cs-parser.jay" +#line 3987 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Equality, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_584() -#line 3988 "cs-parser.jay" +#line 3992 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.Inequality, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_586() -#line 3997 "cs-parser.jay" +#line 4001 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.BitwiseAnd, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_588() -#line 4006 "cs-parser.jay" +#line 4010 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.ExclusiveOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_590() -#line 4015 "cs-parser.jay" +#line 4019 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.BitwiseOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_592() -#line 4024 "cs-parser.jay" +#line 4028 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LogicalAnd, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_594() -#line 4033 "cs-parser.jay" +#line 4037 "cs-parser.jay" { yyVal = new Binary (Binary.Operator.LogicalOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_596() -#line 4042 "cs-parser.jay" +#line 4046 "cs-parser.jay" { if (lang_version < LanguageVersion.ISO_2) FeatureIsNotAvailable (GetLocation (yyVals[-1+yyTop]), "null coalescing operator"); @@ -6823,84 +6827,84 @@ void case_596() } void case_598() -#line 4053 "cs-parser.jay" +#line 4057 "cs-parser.jay" { yyVal = new Conditional (new BooleanExpression ((Expression) yyVals[-4+yyTop]), (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop])); } void case_600() -#line 4065 "cs-parser.jay" +#line 4069 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Multiply, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_601() -#line 4070 "cs-parser.jay" +#line 4074 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Division, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_602() -#line 4075 "cs-parser.jay" +#line 4079 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Modulus, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_603() -#line 4080 "cs-parser.jay" +#line 4084 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Addition, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_604() -#line 4085 "cs-parser.jay" +#line 4089 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.Subtraction, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_605() -#line 4090 "cs-parser.jay" +#line 4094 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.LeftShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_606() -#line 4095 "cs-parser.jay" +#line 4099 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.RightShift, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_607() -#line 4100 "cs-parser.jay" +#line 4104 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.BitwiseAnd, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_608() -#line 4105 "cs-parser.jay" +#line 4109 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.BitwiseOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_609() -#line 4110 "cs-parser.jay" +#line 4114 "cs-parser.jay" { yyVal = new CompoundAssign ( Binary.Operator.ExclusiveOr, (Expression) yyVals[-2+yyTop], (Expression) yyVals[0+yyTop], GetLocation (yyVals[-1+yyTop])); } void case_610() -#line 4118 "cs-parser.jay" +#line 4122 "cs-parser.jay" { var pars = new List (4); pars.Add ((Parameter) yyVals[0+yyTop]); @@ -6909,7 +6913,7 @@ void case_610() } void case_611() -#line 4125 "cs-parser.jay" +#line 4129 "cs-parser.jay" { var pars = (List) yyVals[-2+yyTop]; Parameter p = (Parameter)yyVals[0+yyTop]; @@ -6924,7 +6928,7 @@ void case_611() } void case_612() -#line 4141 "cs-parser.jay" +#line 4145 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; @@ -6932,7 +6936,7 @@ void case_612() } void case_613() -#line 4147 "cs-parser.jay" +#line 4151 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; @@ -6940,21 +6944,21 @@ void case_613() } void case_614() -#line 4153 "cs-parser.jay" +#line 4157 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; yyVal = new ImplicitLambdaParameter (lt.Value, lt.Location); } void case_616() -#line 4161 "cs-parser.jay" +#line 4165 "cs-parser.jay" { var pars_list = (List) yyVals[0+yyTop]; yyVal = new ParametersCompiled (pars_list.ToArray ()); } void case_620() -#line 4177 "cs-parser.jay" +#line 4181 "cs-parser.jay" { Block b = end_block (lexer.Location); b.IsCompilerGenerated = true; @@ -6963,14 +6967,14 @@ void case_620() } void case_622() -#line 4188 "cs-parser.jay" +#line 4192 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = EmptyExpression.Null; } void case_623() -#line 4196 "cs-parser.jay" +#line 4200 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; Parameter p = new ImplicitLambdaParameter (lt.Value, lt.Location); @@ -6978,14 +6982,14 @@ void case_623() } void case_624() -#line 4202 "cs-parser.jay" +#line 4206 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop])); } void case_625() -#line 4207 "cs-parser.jay" +#line 4211 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; Parameter p = new ImplicitLambdaParameter (lt.Value, lt.Location); @@ -6993,63 +6997,63 @@ void case_625() } void case_626() -#line 4213 "cs-parser.jay" +#line 4217 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop])); } void case_628() -#line 4222 "cs-parser.jay" +#line 4226 "cs-parser.jay" { valid_param_mod = 0; start_anonymous (true, (ParametersCompiled) yyVals[-2+yyTop], false, GetLocation (yyVals[-4+yyTop])); } void case_629() -#line 4227 "cs-parser.jay" +#line 4231 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-2+yyTop])); } void case_631() -#line 4236 "cs-parser.jay" +#line 4240 "cs-parser.jay" { valid_param_mod = 0; start_anonymous (true, (ParametersCompiled) yyVals[-2+yyTop], true, GetLocation (yyVals[-5+yyTop])); } void case_632() -#line 4241 "cs-parser.jay" +#line 4245 "cs-parser.jay" { yyVal = end_anonymous ((ParametersBlock) yyVals[0+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[-7+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-2+yyTop])); } void case_639() -#line 4264 "cs-parser.jay" +#line 4268 "cs-parser.jay" { yyVal = new RefValueExpr ((Expression) yyVals[-3+yyTop], (FullNamedExpression) yyVals[-1+yyTop], GetLocation (yyVals[-5+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_640() -#line 4269 "cs-parser.jay" +#line 4273 "cs-parser.jay" { yyVal = new RefTypeExpr ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_641() -#line 4274 "cs-parser.jay" +#line 4278 "cs-parser.jay" { yyVal = new MakeRefExpr ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_645() -#line 4303 "cs-parser.jay" +#line 4307 "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]); @@ -7061,7 +7065,7 @@ void case_645() } void case_646() -#line 4314 "cs-parser.jay" +#line 4318 "cs-parser.jay" { lexer.ConstraintsParsing = false; @@ -7075,7 +7079,7 @@ void case_646() } void case_647() -#line 4326 "cs-parser.jay" +#line 4330 "cs-parser.jay" { --lexer.parsing_declaration; if (doc_support) @@ -7083,21 +7087,21 @@ void case_647() } void case_648() -#line 4332 "cs-parser.jay" +#line 4336 "cs-parser.jay" { lbag.AppendToMember (current_class, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); yyVal = pop_current_class (); } void case_651() -#line 4347 "cs-parser.jay" +#line 4351 "cs-parser.jay" { mod_locations = null; yyVal = ModifierNone; } void case_654() -#line 4357 "cs-parser.jay" +#line 4361 "cs-parser.jay" { var m1 = (Modifiers) yyVals[-1+yyTop]; var m2 = (Modifiers) yyVals[0+yyTop]; @@ -7115,7 +7119,7 @@ void case_654() } void case_655() -#line 4376 "cs-parser.jay" +#line 4380 "cs-parser.jay" { yyVal = Modifiers.NEW; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); @@ -7125,91 +7129,91 @@ void case_655() } void case_656() -#line 4384 "cs-parser.jay" +#line 4388 "cs-parser.jay" { yyVal = Modifiers.PUBLIC; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_657() -#line 4389 "cs-parser.jay" +#line 4393 "cs-parser.jay" { yyVal = Modifiers.PROTECTED; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_658() -#line 4394 "cs-parser.jay" +#line 4398 "cs-parser.jay" { yyVal = Modifiers.INTERNAL; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_659() -#line 4399 "cs-parser.jay" +#line 4403 "cs-parser.jay" { yyVal = Modifiers.PRIVATE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_660() -#line 4404 "cs-parser.jay" +#line 4408 "cs-parser.jay" { yyVal = Modifiers.ABSTRACT; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_661() -#line 4409 "cs-parser.jay" +#line 4413 "cs-parser.jay" { yyVal = Modifiers.SEALED; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_662() -#line 4414 "cs-parser.jay" +#line 4418 "cs-parser.jay" { yyVal = Modifiers.STATIC; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_663() -#line 4419 "cs-parser.jay" +#line 4423 "cs-parser.jay" { yyVal = Modifiers.READONLY; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_664() -#line 4424 "cs-parser.jay" +#line 4428 "cs-parser.jay" { yyVal = Modifiers.VIRTUAL; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_665() -#line 4429 "cs-parser.jay" +#line 4433 "cs-parser.jay" { yyVal = Modifiers.OVERRIDE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_666() -#line 4434 "cs-parser.jay" +#line 4438 "cs-parser.jay" { yyVal = Modifiers.EXTERN; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_667() -#line 4439 "cs-parser.jay" +#line 4443 "cs-parser.jay" { yyVal = Modifiers.VOLATILE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_668() -#line 4444 "cs-parser.jay" +#line 4448 "cs-parser.jay" { yyVal = Modifiers.UNSAFE; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); @@ -7218,21 +7222,21 @@ void case_668() } void case_669() -#line 4451 "cs-parser.jay" +#line 4455 "cs-parser.jay" { yyVal = Modifiers.ASYNC; StoreModifierLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_674() -#line 4472 "cs-parser.jay" +#line 4476 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } void case_675() -#line 4480 "cs-parser.jay" +#line 4484 "cs-parser.jay" { var constraints = new List (1); constraints.Add ((Constraints) yyVals[0+yyTop]); @@ -7240,7 +7244,7 @@ void case_675() } void case_676() -#line 4486 "cs-parser.jay" +#line 4490 "cs-parser.jay" { var constraints = (List) yyVals[-1+yyTop]; Constraints new_constraint = (Constraints)yyVals[0+yyTop]; @@ -7258,14 +7262,14 @@ void case_676() } void case_677() -#line 4505 "cs-parser.jay" +#line 4509 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; yyVal = new Constraints (new SimpleMemberName (lt.Value, lt.Location), (List) yyVals[0+yyTop], GetLocation (yyVals[-3+yyTop])); } void case_678() -#line 4513 "cs-parser.jay" +#line 4517 "cs-parser.jay" { var constraints = new List (1); constraints.Add ((FullNamedExpression) yyVals[0+yyTop]); @@ -7273,7 +7277,7 @@ void case_678() } void case_679() -#line 4519 "cs-parser.jay" +#line 4523 "cs-parser.jay" { var constraints = (List) yyVals[-2+yyTop]; var prev = constraints [constraints.Count - 1] as SpecialContraintExpr; @@ -7298,7 +7302,7 @@ void case_679() } void case_680() -#line 4545 "cs-parser.jay" +#line 4549 "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 ()); @@ -7307,14 +7311,14 @@ void case_680() } void case_681() -#line 4552 "cs-parser.jay" +#line 4556 "cs-parser.jay" { yyVal = new SpecialContraintExpr (SpecialConstraint.Constructor, GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_685() -#line 4572 "cs-parser.jay" +#line 4576 "cs-parser.jay" { if (lang_version <= LanguageVersion.V_3) FeatureIsNotAvailable (lexer.Location, "generic type variance"); @@ -7323,77 +7327,77 @@ void case_685() } void case_688() -#line 4606 "cs-parser.jay" +#line 4610 "cs-parser.jay" { ++lexer.parsing_block; start_block (GetLocation (yyVals[0+yyTop])); } void case_690() -#line 4618 "cs-parser.jay" +#line 4622 "cs-parser.jay" { --lexer.parsing_block; yyVal = end_block (GetLocation (yyVals[0+yyTop])); } void case_691() -#line 4623 "cs-parser.jay" +#line 4627 "cs-parser.jay" { --lexer.parsing_block; yyVal = end_block (lexer.Location); } void case_692() -#line 4632 "cs-parser.jay" +#line 4636 "cs-parser.jay" { ++lexer.parsing_block; current_block.StartLocation = GetLocation (yyVals[0+yyTop]); } void case_693() -#line 4637 "cs-parser.jay" +#line 4641 "cs-parser.jay" { --lexer.parsing_block; yyVal = end_block (GetLocation (yyVals[0+yyTop])); } void case_701() -#line 4664 "cs-parser.jay" +#line 4668 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } void case_734() -#line 4728 "cs-parser.jay" +#line 4732 "cs-parser.jay" { report.Error (1023, GetLocation (yyVals[0+yyTop]), "An embedded statement may not be a declaration or labeled statement"); yyVal = null; } void case_735() -#line 4733 "cs-parser.jay" +#line 4737 "cs-parser.jay" { report.Error (1023, GetLocation (yyVals[0+yyTop]), "An embedded statement may not be a declaration or labeled statement"); yyVal = null; } void case_736() -#line 4738 "cs-parser.jay" +#line 4742 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new EmptyStatement (GetLocation (yyVals[0+yyTop])); } void case_737() -#line 4746 "cs-parser.jay" +#line 4750 "cs-parser.jay" { /* Uses lexer.Location because semicolon location is not kept in quick mode*/ yyVal = new EmptyStatement (lexer.Location); } void case_738() -#line 4754 "cs-parser.jay" +#line 4758 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; LabeledStatement labeled = new LabeledStatement (lt.Value, current_block, lt.Location); @@ -7403,7 +7407,7 @@ void case_738() } void case_741() -#line 4767 "cs-parser.jay" +#line 4771 "cs-parser.jay" { if (yyVals[-1+yyTop] is VarExpr) yyVals[-1+yyTop] = new SimpleName ("var", ((VarExpr) yyVals[-1+yyTop]).Location); @@ -7412,7 +7416,7 @@ void case_741() } void case_742() -#line 4783 "cs-parser.jay" +#line 4787 "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*/ @@ -7444,7 +7448,7 @@ void case_742() } void case_743() -#line 4813 "cs-parser.jay" +#line 4817 "cs-parser.jay" { ATypeNameExpression expr = yyVals[-1+yyTop] as ATypeNameExpression; @@ -7457,7 +7461,7 @@ void case_743() } void case_744() -#line 4824 "cs-parser.jay" +#line 4828 "cs-parser.jay" { if (yyVals[0+yyTop] == null) yyVal = yyVals[-1+yyTop]; @@ -7466,21 +7470,21 @@ void case_744() } void case_747() -#line 4839 "cs-parser.jay" +#line 4843 "cs-parser.jay" { Expression.Error_VoidInvalidInTheContext (GetLocation (yyVals[0+yyTop]), report); yyVal = new TypeExpression (compiler.BuiltinTypes.Void, GetLocation (yyVals[0+yyTop])); } void case_749() -#line 4848 "cs-parser.jay" +#line 4852 "cs-parser.jay" { ((ComposedTypeSpecifier) yyVals[-1+yyTop]).Next = (ComposedTypeSpecifier) yyVals[0+yyTop]; yyVal = yyVals[-1+yyTop]; } void case_751() -#line 4863 "cs-parser.jay" +#line 4867 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_block, lt.Value, lt.Location); @@ -7489,7 +7493,7 @@ void case_751() } void case_752() -#line 4870 "cs-parser.jay" +#line 4874 "cs-parser.jay" { yyVal = current_variable; current_variable = null; @@ -7497,7 +7501,7 @@ void case_752() } void case_753() -#line 4876 "cs-parser.jay" +#line 4880 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.Constant, lt.Location); @@ -7506,7 +7510,7 @@ void case_753() } void case_754() -#line 4883 "cs-parser.jay" +#line 4887 "cs-parser.jay" { if (current_variable.Initializer != null) { lbag.AddLocation (current_variable, GetLocation (yyVals[-6+yyTop]), savedLocation, GetLocation (yyVals[0+yyTop])); @@ -7518,14 +7522,14 @@ void case_754() } void case_756() -#line 4897 "cs-parser.jay" +#line 4901 "cs-parser.jay" { current_variable.Initializer = (Expression) yyVals[0+yyTop]; lbag.AppendTo (current_variable, GetLocation (yyVals[-1+yyTop])); } void case_757() -#line 4902 "cs-parser.jay" +#line 4906 "cs-parser.jay" { if (yyToken == Token.OPEN_BRACKET_EXPR) { report.Error (650, lexer.Location, @@ -7536,7 +7540,7 @@ void case_757() } void case_762() -#line 4924 "cs-parser.jay" +#line 4928 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_variable.Variable, lt.Value, lt.Location); @@ -7547,7 +7551,7 @@ void case_762() } void case_763() -#line 4933 "cs-parser.jay" +#line 4937 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var li = new LocalVariable (current_variable.Variable, lt.Value, lt.Location); @@ -7558,14 +7562,14 @@ void case_763() } void case_765() -#line 4949 "cs-parser.jay" +#line 4953 "cs-parser.jay" { savedLocation = GetLocation (yyVals[-1+yyTop]); current_variable.Initializer = (Expression) yyVals[0+yyTop]; } void case_770() -#line 4967 "cs-parser.jay" +#line 4971 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; var li = new LocalVariable (current_block, lt.Value, LocalVariable.Flags.Constant, lt.Location); @@ -7576,28 +7580,28 @@ void case_770() } void case_772() -#line 4980 "cs-parser.jay" +#line 4984 "cs-parser.jay" { yyVal = new StackAlloc ((Expression) yyVals[-3+yyTop], (Expression) yyVals[-1+yyTop], GetLocation (yyVals[-4+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_773() -#line 4985 "cs-parser.jay" +#line 4989 "cs-parser.jay" { report.Error (1575, GetLocation (yyVals[-1+yyTop]), "A stackalloc expression requires [] after type"); yyVal = new StackAlloc ((Expression) yyVals[0+yyTop], null, GetLocation (yyVals[-1+yyTop])); } void case_774() -#line 4993 "cs-parser.jay" +#line 4997 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } void case_778() -#line 5011 "cs-parser.jay" +#line 5015 "cs-parser.jay" { ExpressionStatement s = yyVals[0+yyTop] as ExpressionStatement; if (s == null) { @@ -7609,7 +7613,7 @@ void case_778() } void case_779() -#line 5024 "cs-parser.jay" +#line 5028 "cs-parser.jay" { Expression expr = (Expression) yyVals[0+yyTop]; ExpressionStatement s; @@ -7619,14 +7623,14 @@ void case_779() } void case_780() -#line 5032 "cs-parser.jay" +#line 5036 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new EmptyStatement (GetLocation (yyVals[0+yyTop])); } void case_783() -#line 5046 "cs-parser.jay" +#line 5050 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -7636,7 +7640,7 @@ void case_783() } void case_784() -#line 5055 "cs-parser.jay" +#line 5059 "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])); @@ -7648,7 +7652,7 @@ void case_784() } void case_786() -#line 5072 "cs-parser.jay" +#line 5076 "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])); @@ -7656,14 +7660,14 @@ void case_786() } void case_787() -#line 5081 "cs-parser.jay" +#line 5085 "cs-parser.jay" { report.Warning (1522, 1, current_block.StartLocation, "Empty switch block"); yyVal = new List (); } void case_789() -#line 5090 "cs-parser.jay" +#line 5094 "cs-parser.jay" { var sections = new List (4); @@ -7672,7 +7676,7 @@ void case_789() } void case_790() -#line 5097 "cs-parser.jay" +#line 5101 "cs-parser.jay" { var sections = (List) yyVals[-1+yyTop]; @@ -7681,14 +7685,14 @@ void case_790() } void case_791() -#line 5104 "cs-parser.jay" +#line 5108 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = new List (); } void case_794() -#line 5123 "cs-parser.jay" +#line 5127 "cs-parser.jay" { var labels = new List (2); @@ -7697,7 +7701,7 @@ void case_794() } void case_795() -#line 5130 "cs-parser.jay" +#line 5134 "cs-parser.jay" { var labels = (List) (yyVals[-1+yyTop]); labels.Add ((SwitchLabel) yyVals[0+yyTop]); @@ -7706,14 +7710,14 @@ void case_795() } void case_796() -#line 5140 "cs-parser.jay" +#line 5144 "cs-parser.jay" { yyVal = new SwitchLabel ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_802() -#line 5159 "cs-parser.jay" +#line 5163 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -7723,21 +7727,21 @@ void case_802() } void case_803() -#line 5171 "cs-parser.jay" +#line 5175 "cs-parser.jay" { yyVal = new Do ((Statement) yyVals[-5+yyTop], (BooleanExpression) yyVals[-2+yyTop], GetLocation (yyVals[-6+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-4+yyTop]), GetLocation (yyVals[-3+yyTop]), GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_804() -#line 5179 "cs-parser.jay" +#line 5183 "cs-parser.jay" { start_block (GetLocation (yyVals[0+yyTop])); current_block.IsCompilerGenerated = true; } void case_806() -#line 5195 "cs-parser.jay" +#line 5199 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -7751,14 +7755,14 @@ void case_806() } void case_807() -#line 5207 "cs-parser.jay" +#line 5211 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = end_block (current_block.StartLocation); } void case_810() -#line 5220 "cs-parser.jay" +#line 5224 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[0+yyTop]; var li = new LocalVariable (current_block, lt.Value, lt.Location); @@ -7767,14 +7771,14 @@ void case_810() } void case_811() -#line 5227 "cs-parser.jay" +#line 5231 "cs-parser.jay" { yyVal = current_variable; current_variable = null; } void case_819() -#line 5251 "cs-parser.jay" +#line 5255 "cs-parser.jay" { var sl = yyVals[-2+yyTop] as StatementList; if (sl == null) { @@ -7789,14 +7793,14 @@ void case_819() } void case_820() -#line 5267 "cs-parser.jay" +#line 5271 "cs-parser.jay" { report.Error (230, GetLocation (yyVals[-5+yyTop]), "Type and identifier are both required in a foreach statement"); yyVal = null; } void case_821() -#line 5272 "cs-parser.jay" +#line 5276 "cs-parser.jay" { start_block (GetLocation (yyVals[-5+yyTop])); current_block.IsCompilerGenerated = true; @@ -7807,7 +7811,7 @@ void case_821() } void case_822() -#line 5281 "cs-parser.jay" +#line 5285 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -7820,21 +7824,21 @@ void case_822() } void case_829() -#line 5304 "cs-parser.jay" +#line 5308 "cs-parser.jay" { yyVal = new Break (GetLocation (yyVals[-1+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } void case_830() -#line 5312 "cs-parser.jay" +#line 5316 "cs-parser.jay" { yyVal = new Continue (GetLocation (yyVals[-1+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } void case_831() -#line 5320 "cs-parser.jay" +#line 5324 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-1+yyTop]; yyVal = new Goto (lt.Value, GetLocation (yyVals[-2+yyTop])); @@ -7842,35 +7846,35 @@ void case_831() } void case_832() -#line 5326 "cs-parser.jay" +#line 5330 "cs-parser.jay" { yyVal = new GotoCase ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-2+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_833() -#line 5331 "cs-parser.jay" +#line 5335 "cs-parser.jay" { yyVal = new GotoDefault (GetLocation (yyVals[-2+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-1+yyTop]), GetLocation (yyVals[0+yyTop])); } void case_834() -#line 5339 "cs-parser.jay" +#line 5343 "cs-parser.jay" { yyVal = new Return ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } void case_835() -#line 5347 "cs-parser.jay" +#line 5351 "cs-parser.jay" { yyVal = new Throw ((Expression) yyVals[-1+yyTop], GetLocation (yyVals[-2+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[0+yyTop])); } void case_836() -#line 5355 "cs-parser.jay" +#line 5359 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; string s = lt.Value; @@ -7888,7 +7892,7 @@ void case_836() } void case_837() -#line 5371 "cs-parser.jay" +#line 5375 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; string s = lt.Value; @@ -7904,28 +7908,28 @@ void case_837() } void case_841() -#line 5397 "cs-parser.jay" +#line 5401 "cs-parser.jay" { yyVal = new TryFinally ((Statement) yyVals[-2+yyTop], (Block) yyVals[0+yyTop], GetLocation (yyVals[-3+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-1+yyTop])); } void case_842() -#line 5402 "cs-parser.jay" +#line 5406 "cs-parser.jay" { yyVal = new TryFinally (new TryCatch ((Block) yyVals[-3+yyTop], (List) yyVals[-2+yyTop], GetLocation (yyVals[-4+yyTop]), true), (Block) yyVals[0+yyTop], GetLocation (yyVals[-4+yyTop])); lbag.AddStatement (yyVal, GetLocation (yyVals[-1+yyTop])); } void case_843() -#line 5407 "cs-parser.jay" +#line 5411 "cs-parser.jay" { report.Error (1524, GetLocation (yyVals[-2+yyTop]), "Expected catch or finally"); yyVal = null; } void case_844() -#line 5415 "cs-parser.jay" +#line 5419 "cs-parser.jay" { var l = new List (2); @@ -7934,7 +7938,7 @@ void case_844() } void case_845() -#line 5422 "cs-parser.jay" +#line 5426 "cs-parser.jay" { var l = (List) yyVals[-1+yyTop]; @@ -7952,7 +7956,7 @@ void case_845() } void case_849() -#line 5450 "cs-parser.jay" +#line 5454 "cs-parser.jay" { start_block (GetLocation (yyVals[-3+yyTop])); var c = new Catch (current_block, GetLocation (yyVals[-4+yyTop])); @@ -7969,7 +7973,7 @@ void case_849() } void case_851() -#line 5469 "cs-parser.jay" +#line 5473 "cs-parser.jay" { if (yyToken == Token.CLOSE_PARENS) { report.Error (1015, lexer.Location, @@ -7982,14 +7986,14 @@ void case_851() } void case_854() -#line 5497 "cs-parser.jay" +#line 5501 "cs-parser.jay" { if (!settings.Unsafe) Error_UnsafeCodeNotAllowed (GetLocation (yyVals[0+yyTop])); } void case_856() -#line 5507 "cs-parser.jay" +#line 5511 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -7999,7 +8003,7 @@ void case_856() } void case_857() -#line 5518 "cs-parser.jay" +#line 5522 "cs-parser.jay" { start_block (GetLocation (yyVals[-2+yyTop])); @@ -8011,14 +8015,14 @@ void case_857() } void case_858() -#line 5528 "cs-parser.jay" +#line 5532 "cs-parser.jay" { yyVal = current_variable; current_variable = null; } void case_859() -#line 5533 "cs-parser.jay" +#line 5537 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8030,7 +8034,7 @@ void case_859() } void case_860() -#line 5546 "cs-parser.jay" +#line 5550 "cs-parser.jay" { start_block (GetLocation (yyVals[-2+yyTop])); @@ -8042,14 +8046,14 @@ void case_860() } void case_861() -#line 5556 "cs-parser.jay" +#line 5560 "cs-parser.jay" { yyVal = current_variable; current_variable = null; } void case_862() -#line 5561 "cs-parser.jay" +#line 5565 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8061,7 +8065,7 @@ void case_862() } void case_863() -#line 5571 "cs-parser.jay" +#line 5575 "cs-parser.jay" { if (yyVals[0+yyTop] is EmptyStatement && lexer.peek_token () == Token.OPEN_BRACE) Warning_EmptyStatement (GetLocation (yyVals[0+yyTop])); @@ -8072,14 +8076,14 @@ void case_863() } void case_865() -#line 5587 "cs-parser.jay" +#line 5591 "cs-parser.jay" { current_variable.Initializer = (Expression) yyVals[0+yyTop]; yyVal = current_variable; } void case_866() -#line 5598 "cs-parser.jay" +#line 5602 "cs-parser.jay" { lexer.query_parsing = false; @@ -8093,7 +8097,7 @@ void case_866() } void case_867() -#line 5610 "cs-parser.jay" +#line 5614 "cs-parser.jay" { Linq.AQueryClause from = yyVals[-1+yyTop] as Linq.AQueryClause; @@ -8105,7 +8109,7 @@ void case_867() } void case_868() -#line 5621 "cs-parser.jay" +#line 5625 "cs-parser.jay" { lexer.query_parsing = false; yyVal = yyVals[-1+yyTop]; @@ -8115,7 +8119,7 @@ void case_868() } void case_869() -#line 5628 "cs-parser.jay" +#line 5632 "cs-parser.jay" { yyVal = yyVals[-1+yyTop]; current_block.SetEndLocation (lexer.Location); @@ -8123,7 +8127,7 @@ void case_869() } void case_870() -#line 5637 "cs-parser.jay" +#line 5641 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -8133,7 +8137,7 @@ void case_870() } void case_871() -#line 5645 "cs-parser.jay" +#line 5649 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -8147,7 +8151,7 @@ void case_871() } void case_872() -#line 5660 "cs-parser.jay" +#line 5664 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -8157,7 +8161,7 @@ void case_872() } void case_873() -#line 5668 "cs-parser.jay" +#line 5672 "cs-parser.jay" { current_block = new Linq.QueryBlock (current_block, lexer.Location); @@ -8171,7 +8175,7 @@ void case_873() } void case_875() -#line 5687 "cs-parser.jay" +#line 5691 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; var sn = new Linq.RangeVariable (lt.Value, lt.Location); @@ -8184,7 +8188,7 @@ void case_875() } void case_877() -#line 5702 "cs-parser.jay" +#line 5706 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; var sn = new Linq.RangeVariable (lt.Value, lt.Location); @@ -8200,7 +8204,7 @@ void case_877() } void case_878() -#line 5719 "cs-parser.jay" +#line 5723 "cs-parser.jay" { Linq.AQueryClause head = (Linq.AQueryClause)yyVals[-1+yyTop]; @@ -8217,14 +8221,14 @@ void case_878() } void case_880() -#line 5735 "cs-parser.jay" +#line 5739 "cs-parser.jay" { Error_SyntaxError (yyToken); yyVal = null; } void case_882() -#line 5747 "cs-parser.jay" +#line 5751 "cs-parser.jay" { yyVal = new Linq.Select ((Linq.QueryBlock)current_block, (Expression)yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); @@ -8233,7 +8237,7 @@ void case_882() } void case_883() -#line 5754 "cs-parser.jay" +#line 5758 "cs-parser.jay" { if (linq_clause_blocks == null) linq_clause_blocks = new Stack (); @@ -8243,7 +8247,7 @@ void case_883() } void case_884() -#line 5762 "cs-parser.jay" +#line 5766 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8252,7 +8256,7 @@ void case_884() } void case_885() -#line 5769 "cs-parser.jay" +#line 5773 "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])); @@ -8262,14 +8266,14 @@ void case_885() } void case_889() -#line 5786 "cs-parser.jay" +#line 5790 "cs-parser.jay" { ((Linq.AQueryClause)yyVals[-1+yyTop]).Tail.Next = (Linq.AQueryClause)yyVals[0+yyTop]; yyVal = yyVals[-1+yyTop]; } void case_896() -#line 5806 "cs-parser.jay" +#line 5810 "cs-parser.jay" { var lt = (Tokenizer.LocatedToken) yyVals[-3+yyTop]; var sn = new Linq.RangeVariable (lt.Value, lt.Location); @@ -8283,7 +8287,7 @@ void case_896() } void case_898() -#line 5825 "cs-parser.jay" +#line 5829 "cs-parser.jay" { yyVal = new Linq.Where ((Linq.QueryBlock)current_block, (Expression)yyVals[0+yyTop], GetLocation (yyVals[-2+yyTop])); @@ -8292,7 +8296,7 @@ void case_898() } void case_899() -#line 5835 "cs-parser.jay" +#line 5839 "cs-parser.jay" { if (linq_clause_blocks == null) linq_clause_blocks = new Stack (); @@ -8302,7 +8306,7 @@ void case_899() } void case_900() -#line 5843 "cs-parser.jay" +#line 5847 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8312,7 +8316,7 @@ void case_900() } void case_901() -#line 5851 "cs-parser.jay" +#line 5855 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -8322,7 +8326,7 @@ void case_901() } void case_902() -#line 5859 "cs-parser.jay" +#line 5863 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -8362,7 +8366,7 @@ void case_902() } void case_903() -#line 5897 "cs-parser.jay" +#line 5901 "cs-parser.jay" { if (linq_clause_blocks == null) linq_clause_blocks = new Stack (); @@ -8372,7 +8376,7 @@ void case_903() } void case_904() -#line 5905 "cs-parser.jay" +#line 5909 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8382,7 +8386,7 @@ void case_904() } void case_905() -#line 5913 "cs-parser.jay" +#line 5917 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -8392,7 +8396,7 @@ void case_905() } void case_906() -#line 5921 "cs-parser.jay" +#line 5925 "cs-parser.jay" { current_block.AddStatement (new ContextualReturn ((Expression) yyVals[-1+yyTop])); current_block.SetEndLocation (lexer.Location); @@ -8434,7 +8438,7 @@ void case_906() } void case_910() -#line 5976 "cs-parser.jay" +#line 5980 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8443,7 +8447,7 @@ void case_910() } void case_912() -#line 5987 "cs-parser.jay" +#line 5991 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8452,14 +8456,14 @@ void case_912() } void case_913() -#line 5994 "cs-parser.jay" +#line 5998 "cs-parser.jay" { ((Linq.AQueryClause)yyVals[-3+yyTop]).Next = (Linq.AQueryClause)yyVals[0+yyTop]; yyVal = yyVals[-3+yyTop]; } void case_915() -#line 6003 "cs-parser.jay" +#line 6007 "cs-parser.jay" { current_block.SetEndLocation (lexer.Location); current_block = current_block.Parent; @@ -8468,42 +8472,42 @@ void case_915() } void case_916() -#line 6010 "cs-parser.jay" +#line 6014 "cs-parser.jay" { ((Linq.AQueryClause)yyVals[-3+yyTop]).Tail.Next = (Linq.AQueryClause)yyVals[0+yyTop]; yyVal = yyVals[-3+yyTop]; } void case_918() -#line 6022 "cs-parser.jay" +#line 6026 "cs-parser.jay" { yyVal = new Linq.OrderByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_919() -#line 6027 "cs-parser.jay" +#line 6031 "cs-parser.jay" { yyVal = new Linq.OrderByDescending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_921() -#line 6039 "cs-parser.jay" +#line 6043 "cs-parser.jay" { yyVal = new Linq.ThenByAscending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_922() -#line 6044 "cs-parser.jay" +#line 6048 "cs-parser.jay" { yyVal = new Linq.ThenByDescending ((Linq.QueryBlock) current_block, (Expression)yyVals[-1+yyTop]); lbag.AddLocation (yyVal, GetLocation (yyVals[0+yyTop])); } void case_924() -#line 6054 "cs-parser.jay" +#line 6058 "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*/ @@ -8521,7 +8525,7 @@ void case_924() } void case_925() -#line 6070 "cs-parser.jay" +#line 6074 "cs-parser.jay" { var current_block = linq_clause_blocks.Pop (); var lt = (Tokenizer.LocatedToken) yyVals[-2+yyTop]; @@ -8532,7 +8536,7 @@ void case_925() } void case_928() -#line 6097 "cs-parser.jay" +#line 6101 "cs-parser.jay" { current_container = new Class (current_namespace, current_class, new MemberName (""), Modifiers.PUBLIC, null); current_class = current_container; @@ -8564,7 +8568,7 @@ void case_928() } void case_929() -#line 6127 "cs-parser.jay" +#line 6131 "cs-parser.jay" { --lexer.parsing_block; Method method = (Method) oob_stack.Pop (); @@ -8576,7 +8580,7 @@ void case_929() } void case_939() -#line 6170 "cs-parser.jay" +#line 6174 "cs-parser.jay" { module.DocumentationBuilder.ParsedBuiltinType = (TypeExpression)yyVals[-1+yyTop]; module.DocumentationBuilder.ParsedParameters = (List)yyVals[0+yyTop]; @@ -8584,7 +8588,7 @@ void case_939() } void case_940() -#line 6176 "cs-parser.jay" +#line 6180 "cs-parser.jay" { module.DocumentationBuilder.ParsedBuiltinType = (TypeExpression)yyVals[-3+yyTop]; module.DocumentationBuilder.ParsedParameters = (List)yyVals[0+yyTop]; @@ -8593,14 +8597,14 @@ void case_940() } void case_943() -#line 6191 "cs-parser.jay" +#line 6195 "cs-parser.jay" { module.DocumentationBuilder.ParsedParameters = (List)yyVals[-1+yyTop]; yyVal = new MemberName ((MemberName) yyVals[-6+yyTop], new MemberName (MemberCache.IndexerNameAlias)); } void case_944() -#line 6196 "cs-parser.jay" +#line 6200 "cs-parser.jay" { var p = (List)yyVals[0+yyTop] ?? new List (1); p.Add (new DocumentationParameter ((FullNamedExpression) yyVals[-1+yyTop])); @@ -8610,7 +8614,7 @@ void case_944() } void case_945() -#line 6204 "cs-parser.jay" +#line 6208 "cs-parser.jay" { var p = (List)yyVals[0+yyTop] ?? new List (1); p.Add (new DocumentationParameter ((FullNamedExpression) yyVals[-1+yyTop])); @@ -8620,7 +8624,7 @@ void case_945() } void case_946() -#line 6212 "cs-parser.jay" +#line 6216 "cs-parser.jay" { var p = (List)yyVals[0+yyTop] ?? new List (1); module.DocumentationBuilder.ParsedParameters = p; @@ -8629,7 +8633,7 @@ void case_946() } void case_954() -#line 6250 "cs-parser.jay" +#line 6254 "cs-parser.jay" { var parameters = new List (); parameters.Add ((DocumentationParameter) yyVals[0+yyTop]); @@ -8637,7 +8641,7 @@ void case_954() } void case_955() -#line 6256 "cs-parser.jay" +#line 6260 "cs-parser.jay" { var parameters = yyVals[-2+yyTop] as List; parameters.Add ((DocumentationParameter) yyVals[0+yyTop]); @@ -8645,7 +8649,7 @@ void case_955() } void case_956() -#line 6265 "cs-parser.jay" +#line 6269 "cs-parser.jay" { if (yyVals[-1+yyTop] != null) yyVal = new DocumentationParameter ((Parameter.Modifier) yyVals[-1+yyTop], (FullNamedExpression) yyVals[0+yyTop]); @@ -11981,7 +11985,7 @@ void case_956() -1, -1, -1, -1, -1, -1, -1, -1, -1, 362, }; -#line 6274 "cs-parser.jay" +#line 6278 "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 48471ff2a8..5fa45a38ed 100644 --- a/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay +++ b/ICSharpCode.NRefactory.CSharp/Parser/mcs/cs-parser.jay @@ -1838,7 +1838,6 @@ get_accessor_declaration } current_local_parameters = current_property.Get.ParameterInfo; - lbag.AddMember (current_property.Get, GetModifierLocations ()); lexer.PropertyParsing = false; } accessor_body @@ -1849,7 +1848,10 @@ get_accessor_declaration if (current_container.Kind == MemberKind.Interface) { report.Error (531, current_property.Get.Block.StartLocation, "`{0}': interface members cannot have a definition", current_property.Get.GetSignatureForError ()); - } + } + lbag.AddMember (current_property.Get, GetModifierLocations ()); + } else { + lbag.AddMember (current_property.Get, GetModifierLocations (), savedLocation); } current_local_parameters = null; @@ -1886,7 +1888,6 @@ set_accessor_declaration } current_local_parameters = current_property.Set.ParameterInfo; - lbag.AddMember (current_property.Set, GetModifierLocations ()); lexer.PropertyParsing = false; } accessor_body @@ -1898,6 +1899,9 @@ set_accessor_declaration report.Error (531, current_property.Set.Block.StartLocation, "`{0}': interface members cannot have a definition", current_property.Set.GetSignatureForError ()); } + lbag.AddMember (current_property.Set, GetModifierLocations ()); + } else { + lbag.AddMember (current_property.Set, GetModifierLocations (), savedLocation); } current_local_parameters = null; @@ -1913,7 +1917,7 @@ accessor_body : block | SEMICOLON { - lbag.AppendToMember (lbag.LastMember, GetLocation ($1)); + savedLocation = GetLocation ($1); $$ = null; } | error