Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Krüger <mkrueger@novell.com>2009-09-15 15:45:38 +0400
committerMike Krüger <mkrueger@novell.com>2009-09-15 15:45:38 +0400
commit4c656868cfcc5702f356f6776825d23e104ddb27 (patch)
tree690d5b15d081991392e6037949614f8451c31255 /main/contrib
parentf7c7be48cf3b656121ea77e24bf910c5bb586b41 (diff)
* Src/Ast/Generated.cs:
* Src/Parser/CSharp/cs.ATG: * Src/Parser/VBNet/Parser.cs: * Src/Parser/CSharp/Parser.cs: * Src/PrettyPrinter/CSharp/CSharpOutputVisitor.cs: Added support for attributes without braces. svn path=/trunk/monodevelop/; revision=141943
Diffstat (limited to 'main/contrib')
-rw-r--r--main/contrib/NRefactory/Project/ChangeLog9
-rw-r--r--main/contrib/NRefactory/Project/Src/Ast/Generated.cs9
-rw-r--r--main/contrib/NRefactory/Project/Src/Parser/CSharp/Parser.cs2404
-rw-r--r--main/contrib/NRefactory/Project/Src/Parser/CSharp/cs.ATG13
-rw-r--r--main/contrib/NRefactory/Project/Src/Parser/VBNet/Parser.cs107
-rw-r--r--main/contrib/NRefactory/Project/Src/PrettyPrinter/CSharp/CSharpOutputVisitor.cs22
6 files changed, 1291 insertions, 1273 deletions
diff --git a/main/contrib/NRefactory/Project/ChangeLog b/main/contrib/NRefactory/Project/ChangeLog
index addf1662c3..eb4c96964a 100644
--- a/main/contrib/NRefactory/Project/ChangeLog
+++ b/main/contrib/NRefactory/Project/ChangeLog
@@ -1,3 +1,12 @@
+2009-09-15 Mike Krüger <mkrueger@novell.com>
+
+ * Src/Ast/Generated.cs:
+ * Src/Parser/CSharp/cs.ATG:
+ * Src/Parser/VBNet/Parser.cs:
+ * Src/Parser/CSharp/Parser.cs:
+ * Src/PrettyPrinter/CSharp/CSharpOutputVisitor.cs: Added
+ support for attributes without braces.
+
2009-09-10 Mike Krüger <mkrueger@novell.com>
* Src/PrettyPrinter/IOutputAstVisitor.cs: moved property to
diff --git a/main/contrib/NRefactory/Project/Src/Ast/Generated.cs b/main/contrib/NRefactory/Project/Src/Ast/Generated.cs
index e0a5e9f504..411f0b7681 100644
--- a/main/contrib/NRefactory/Project/Src/Ast/Generated.cs
+++ b/main/contrib/NRefactory/Project/Src/Ast/Generated.cs
@@ -259,7 +259,10 @@ namespace ICSharpCode.NRefactory.Ast {
List<Expression> positionalArguments;
List<NamedArgumentExpression> namedArguments;
-
+ public bool IsEmptyCall {
+ get;
+ set;
+ }
public string Name {
get {
return name;
@@ -293,8 +296,10 @@ namespace ICSharpCode.NRefactory.Ast {
namedArguments = new List<NamedArgumentExpression>();
}
- public Attribute(string name, List<Expression> positionalArguments, List<NamedArgumentExpression> namedArguments) {
+ public Attribute (string name, List<Expression> positionalArguments, List<NamedArgumentExpression> namedArguments)
+ {
Name = name;
+ IsEmptyCall = positionalArguments == null && namedArguments == null;
PositionalArguments = positionalArguments;
NamedArguments = namedArguments;
}
diff --git a/main/contrib/NRefactory/Project/Src/Parser/CSharp/Parser.cs b/main/contrib/NRefactory/Project/Src/Parser/CSharp/Parser.cs
index 59627eabb5..53eb1efde4 100644
--- a/main/contrib/NRefactory/Project/Src/Parser/CSharp/Parser.cs
+++ b/main/contrib/NRefactory/Project/Src/Parser/CSharp/Parser.cs
@@ -8,31 +8,31 @@ using ICSharpCode.NRefactory.Parser;
using ICSharpCode.NRefactory.Ast;
using ASTAttribute = ICSharpCode.NRefactory.Ast.Attribute;
using Types = ICSharpCode.NRefactory.Ast.ClassType;
-/*
- Parser.frame file for NRefactory.
- */
-using System;
-using System.Reflection;
-
-namespace ICSharpCode.NRefactory.Parser.CSharp {
-
-
-
-partial class Parser : AbstractParser
-{
+/*
+ Parser.frame file for NRefactory.
+ */
+using System;
+using System.Reflection;
+
+namespace ICSharpCode.NRefactory.Parser.CSharp {
+
+
+
+partial class Parser : AbstractParser
+{
const int maxT = 145;
-
- const bool T = true;
- const bool x = false;
-
+
+ const bool T = true;
+ const bool x = false;
+
#line 18 "cs.ATG"
-
-
-/*
-
-*/
-
+
+
+/*
+
+*/
+
void CS() {
#line 179 "cs.ATG"
@@ -56,23 +56,23 @@ IsGlobalAttrTarget()) {
void ExternAliasDirective() {
-#line 350 "cs.ATG"
+#line 353 "cs.ATG"
ExternAliasDirective ead = new ExternAliasDirective { StartLocation = la.Location };
Expect(71);
Identifier();
-#line 353 "cs.ATG"
+#line 356 "cs.ATG"
if (t.val != "alias") Error("Expected 'extern alias'.");
Identifier();
-#line 354 "cs.ATG"
+#line 357 "cs.ATG"
ead.Name = t.val;
Expect(11);
-#line 355 "cs.ATG"
+#line 358 "cs.ATG"
ead.EndLocation = t.EndLocation;
-#line 356 "cs.ATG"
+#line 359 "cs.ATG"
compilationUnit.AddChild(ead);
}
@@ -160,7 +160,7 @@ out attribute);
void NamespaceMemberDecl() {
-#line 323 "cs.ATG"
+#line 326 "cs.ATG"
AttributeSection section;
List<AttributeSection> attributes = new List<AttributeSection>();
ModifierList m = new ModifierList();
@@ -169,13 +169,13 @@ out attribute);
if (la.kind == 88) {
lexer.NextToken();
-#line 329 "cs.ATG"
+#line 332 "cs.ATG"
Location startPos = t.Location;
Qualident(
-#line 330 "cs.ATG"
+#line 333 "cs.ATG"
out qualident);
-#line 330 "cs.ATG"
+#line 333 "cs.ATG"
INode node = new NamespaceDeclaration(qualident);
node.StartLocation = startPos;
compilationUnit.AddChild(node);
@@ -196,58 +196,58 @@ out qualident);
lexer.NextToken();
}
-#line 340 "cs.ATG"
+#line 343 "cs.ATG"
node.EndLocation = t.EndLocation;
compilationUnit.BlockEnd();
} else if (StartOf(2)) {
while (la.kind == 18) {
AttributeSection(
-#line 344 "cs.ATG"
+#line 347 "cs.ATG"
out section);
-#line 344 "cs.ATG"
+#line 347 "cs.ATG"
attributes.Add(section);
}
while (StartOf(3)) {
TypeModifier(
-#line 345 "cs.ATG"
+#line 348 "cs.ATG"
m);
}
TypeDecl(
-#line 346 "cs.ATG"
+#line 349 "cs.ATG"
m, attributes);
} else SynErr(146);
}
void Qualident(
-#line 480 "cs.ATG"
+#line 483 "cs.ATG"
out string qualident) {
Identifier();
-#line 482 "cs.ATG"
+#line 485 "cs.ATG"
qualidentBuilder.Length = 0; qualidentBuilder.Append(t.val);
while (
-#line 483 "cs.ATG"
+#line 486 "cs.ATG"
DotAndIdent()) {
Expect(15);
Identifier();
-#line 483 "cs.ATG"
+#line 486 "cs.ATG"
qualidentBuilder.Append('.');
qualidentBuilder.Append(t.val);
}
-#line 486 "cs.ATG"
+#line 489 "cs.ATG"
qualident = qualidentBuilder.ToString();
}
void NonArrayType(
-#line 598 "cs.ATG"
+#line 601 "cs.ATG"
out TypeReference type) {
-#line 600 "cs.ATG"
+#line 603 "cs.ATG"
Location startPos = la.Location;
string name;
int pointer = 0;
@@ -255,37 +255,37 @@ out TypeReference type) {
if (StartOf(4)) {
ClassType(
-#line 606 "cs.ATG"
+#line 609 "cs.ATG"
out type, false);
} else if (StartOf(5)) {
SimpleType(
-#line 607 "cs.ATG"
+#line 610 "cs.ATG"
out name);
-#line 607 "cs.ATG"
+#line 610 "cs.ATG"
type = new TypeReference(name, true);
} else if (la.kind == 123) {
lexer.NextToken();
Expect(6);
-#line 608 "cs.ATG"
+#line 611 "cs.ATG"
pointer = 1; type = new TypeReference("System.Void", true);
} else SynErr(147);
if (la.kind == 12) {
NullableQuestionMark(
-#line 611 "cs.ATG"
+#line 614 "cs.ATG"
ref type);
}
while (
-#line 613 "cs.ATG"
+#line 616 "cs.ATG"
IsPointer()) {
Expect(6);
-#line 614 "cs.ATG"
+#line 617 "cs.ATG"
++pointer;
}
-#line 616 "cs.ATG"
+#line 619 "cs.ATG"
if (type != null) {
type.PointerNestingLevel = pointer;
type.EndLocation = t.EndLocation;
@@ -405,14 +405,14 @@ IdentAndDoubleColon()) {
out qualident);
#line 243 "cs.ATG"
- List<Expression> positional = new List<Expression>();
- List<NamedArgumentExpression> named = new List<NamedArgumentExpression>();
+ List<Expression> positional = null;
+ List<NamedArgumentExpression> named = null;
string name = (alias != null && alias != "global") ? alias + "." + qualident : qualident;
if (la.kind == 20) {
AttributeArguments(
#line 247 "cs.ATG"
-positional, named);
+out positional, out named);
}
#line 248 "cs.ATG"
@@ -424,59 +424,62 @@ positional, named);
void AttributeArguments(
#line 254 "cs.ATG"
-List<Expression> positional, List<NamedArgumentExpression> named) {
+out List<Expression> positional, out List<NamedArgumentExpression> named) {
#line 256 "cs.ATG"
bool nameFound = false;
string name = "";
Expression expr;
+ positional = new List<Expression>();
+ named = new List<NamedArgumentExpression> ();
Expect(20);
if (StartOf(6)) {
if (
-#line 264 "cs.ATG"
+#line 266 "cs.ATG"
IsAssignment()) {
-#line 264 "cs.ATG"
+#line 266 "cs.ATG"
nameFound = true;
Identifier();
-#line 265 "cs.ATG"
+#line 267 "cs.ATG"
name = t.val;
Expect(3);
}
Expr(
-#line 267 "cs.ATG"
+#line 269 "cs.ATG"
out expr);
-#line 267 "cs.ATG"
- if (expr != null) {if(name == "") positional.Add(expr);
- else { named.Add(new NamedArgumentExpression(name, expr)); name = ""; }
- }
-
+#line 269 "cs.ATG"
+ if (expr != null) {
+ if(name == "") positional.Add(expr);
+ else { named.Add(new NamedArgumentExpression(name, expr)); name = ""; }
+ }
+
while (la.kind == 14) {
lexer.NextToken();
if (
-#line 275 "cs.ATG"
+#line 278 "cs.ATG"
IsAssignment()) {
-#line 275 "cs.ATG"
+#line 278 "cs.ATG"
nameFound = true;
Identifier();
-#line 276 "cs.ATG"
+#line 279 "cs.ATG"
name = t.val;
Expect(3);
} else if (StartOf(6)) {
-#line 278 "cs.ATG"
+#line 281 "cs.ATG"
if (nameFound) Error("no positional argument after named argument");
} else SynErr(149);
Expr(
-#line 279 "cs.ATG"
+#line 282 "cs.ATG"
out expr);
-#line 279 "cs.ATG"
+#line 282 "cs.ATG"
if (expr != null) { if(name == "") positional.Add(expr);
else { named.Add(new NamedArgumentExpression(name, expr)); name = ""; }
}
@@ -487,68 +490,68 @@ out expr);
}
void Expr(
-#line 1786 "cs.ATG"
+#line 1789 "cs.ATG"
out Expression expr) {
-#line 1787 "cs.ATG"
+#line 1790 "cs.ATG"
expr = null; Expression expr1 = null, expr2 = null; AssignmentOperatorType op;
-#line 1789 "cs.ATG"
+#line 1792 "cs.ATG"
Location startLocation = la.Location;
UnaryExpr(
-#line 1790 "cs.ATG"
+#line 1793 "cs.ATG"
out expr);
if (StartOf(7)) {
AssignmentOperator(
-#line 1793 "cs.ATG"
+#line 1796 "cs.ATG"
out op);
Expr(
-#line 1793 "cs.ATG"
+#line 1796 "cs.ATG"
out expr1);
-#line 1793 "cs.ATG"
+#line 1796 "cs.ATG"
expr = new AssignmentExpression(expr, op, expr1);
} else if (
-#line 1794 "cs.ATG"
+#line 1797 "cs.ATG"
la.kind == Tokens.GreaterThan && Peek(1).kind == Tokens.GreaterEqual) {
AssignmentOperator(
-#line 1795 "cs.ATG"
+#line 1798 "cs.ATG"
out op);
Expr(
-#line 1795 "cs.ATG"
+#line 1798 "cs.ATG"
out expr1);
-#line 1795 "cs.ATG"
+#line 1798 "cs.ATG"
expr = new AssignmentExpression(expr, op, expr1);
} else if (StartOf(8)) {
ConditionalOrExpr(
-#line 1797 "cs.ATG"
+#line 1800 "cs.ATG"
ref expr);
if (la.kind == 13) {
lexer.NextToken();
Expr(
-#line 1798 "cs.ATG"
+#line 1801 "cs.ATG"
out expr1);
-#line 1798 "cs.ATG"
+#line 1801 "cs.ATG"
expr = new BinaryOperatorExpression(expr, BinaryOperatorType.NullCoalescing, expr1);
}
if (la.kind == 12) {
lexer.NextToken();
Expr(
-#line 1799 "cs.ATG"
+#line 1802 "cs.ATG"
out expr1);
Expect(9);
Expr(
-#line 1799 "cs.ATG"
+#line 1802 "cs.ATG"
out expr2);
-#line 1799 "cs.ATG"
+#line 1802 "cs.ATG"
expr = new ConditionalExpression(expr, expr1, expr2);
}
} else SynErr(150);
-#line 1802 "cs.ATG"
+#line 1805 "cs.ATG"
if (expr != null) {
expr.StartLocation = startLocation;
expr.EndLocation = t.EndLocation;
@@ -557,10 +560,10 @@ out expr2);
}
void AttributeSection(
-#line 288 "cs.ATG"
+#line 291 "cs.ATG"
out AttributeSection section) {
-#line 290 "cs.ATG"
+#line 293 "cs.ATG"
string attributeTarget = "";
List<ASTAttribute> attributes = new List<ASTAttribute>();
ASTAttribute attribute;
@@ -568,25 +571,25 @@ out AttributeSection section) {
Expect(18);
-#line 296 "cs.ATG"
+#line 299 "cs.ATG"
Location startPos = t.Location;
if (
-#line 297 "cs.ATG"
+#line 300 "cs.ATG"
IsLocalAttrTarget()) {
if (la.kind == 69) {
lexer.NextToken();
-#line 298 "cs.ATG"
+#line 301 "cs.ATG"
attributeTarget = "event";
} else if (la.kind == 101) {
lexer.NextToken();
-#line 299 "cs.ATG"
+#line 302 "cs.ATG"
attributeTarget = "return";
} else {
Identifier();
-#line 300 "cs.ATG"
+#line 303 "cs.ATG"
if (t.val != "field" && t.val != "method" &&
t.val != "param" &&
t.val != "property" && t.val != "type")
@@ -597,20 +600,20 @@ IsLocalAttrTarget()) {
Expect(9);
}
Attribute(
-#line 309 "cs.ATG"
+#line 312 "cs.ATG"
out attribute);
-#line 309 "cs.ATG"
+#line 312 "cs.ATG"
attributes.Add(attribute);
while (
-#line 310 "cs.ATG"
+#line 313 "cs.ATG"
NotFinalComma()) {
Expect(14);
Attribute(
-#line 310 "cs.ATG"
+#line 313 "cs.ATG"
out attribute);
-#line 310 "cs.ATG"
+#line 313 "cs.ATG"
attributes.Add(attribute);
}
if (la.kind == 14) {
@@ -618,7 +621,7 @@ out attribute);
}
Expect(19);
-#line 312 "cs.ATG"
+#line 315 "cs.ATG"
section = new AttributeSection {
AttributeTarget = attributeTarget,
Attributes = attributes,
@@ -629,76 +632,76 @@ out attribute);
}
void TypeModifier(
-#line 691 "cs.ATG"
+#line 694 "cs.ATG"
ModifierList m) {
switch (la.kind) {
case 89: {
lexer.NextToken();
-#line 693 "cs.ATG"
+#line 696 "cs.ATG"
m.Add(Modifiers.New, t.Location);
break;
}
case 98: {
lexer.NextToken();
-#line 694 "cs.ATG"
+#line 697 "cs.ATG"
m.Add(Modifiers.Public, t.Location);
break;
}
case 97: {
lexer.NextToken();
-#line 695 "cs.ATG"
+#line 698 "cs.ATG"
m.Add(Modifiers.Protected, t.Location);
break;
}
case 84: {
lexer.NextToken();
-#line 696 "cs.ATG"
+#line 699 "cs.ATG"
m.Add(Modifiers.Internal, t.Location);
break;
}
case 96: {
lexer.NextToken();
-#line 697 "cs.ATG"
+#line 700 "cs.ATG"
m.Add(Modifiers.Private, t.Location);
break;
}
case 119: {
lexer.NextToken();
-#line 698 "cs.ATG"
+#line 701 "cs.ATG"
m.Add(Modifiers.Unsafe, t.Location);
break;
}
case 49: {
lexer.NextToken();
-#line 699 "cs.ATG"
+#line 702 "cs.ATG"
m.Add(Modifiers.Abstract, t.Location);
break;
}
case 103: {
lexer.NextToken();
-#line 700 "cs.ATG"
+#line 703 "cs.ATG"
m.Add(Modifiers.Sealed, t.Location);
break;
}
case 107: {
lexer.NextToken();
-#line 701 "cs.ATG"
+#line 704 "cs.ATG"
m.Add(Modifiers.Static, t.Location);
break;
}
case 126: {
lexer.NextToken();
-#line 702 "cs.ATG"
+#line 705 "cs.ATG"
m.Add(Modifiers.Partial, t.Location);
break;
}
@@ -707,10 +710,10 @@ ModifierList m) {
}
void TypeDecl(
-#line 359 "cs.ATG"
+#line 362 "cs.ATG"
ModifierList m, List<AttributeSection> attributes) {
-#line 361 "cs.ATG"
+#line 364 "cs.ATG"
TypeReference type;
List<TypeReference> names;
List<ParameterDeclarationExpression> p = new List<ParameterDeclarationExpression>();
@@ -719,11 +722,11 @@ ModifierList m, List<AttributeSection> attributes) {
if (la.kind == 59) {
-#line 367 "cs.ATG"
+#line 370 "cs.ATG"
m.Check(Modifiers.Classes);
lexer.NextToken();
-#line 368 "cs.ATG"
+#line 371 "cs.ATG"
TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes);
templates = newType.Templates;
compilationUnit.AddChild(newType);
@@ -734,28 +737,28 @@ ModifierList m, List<AttributeSection> attributes) {
Identifier();
-#line 376 "cs.ATG"
+#line 379 "cs.ATG"
newType.Name = t.val;
if (la.kind == 23) {
TypeParameterList(
-#line 379 "cs.ATG"
+#line 382 "cs.ATG"
templates);
}
if (la.kind == 9) {
ClassBase(
-#line 381 "cs.ATG"
+#line 384 "cs.ATG"
out names);
-#line 381 "cs.ATG"
+#line 384 "cs.ATG"
newType.BaseTypes = names;
}
while (la.kind == 127) {
TypeParameterConstraintsClause(
-#line 384 "cs.ATG"
+#line 387 "cs.ATG"
templates);
}
-#line 386 "cs.ATG"
+#line 389 "cs.ATG"
newType.BodyStartLocation = t.EndLocation;
Expect(16);
ClassBody();
@@ -764,18 +767,18 @@ templates);
lexer.NextToken();
}
-#line 390 "cs.ATG"
+#line 393 "cs.ATG"
newType.EndLocation = t.EndLocation;
compilationUnit.BlockEnd();
} else if (StartOf(9)) {
-#line 393 "cs.ATG"
+#line 396 "cs.ATG"
m.Check(Modifiers.StructsInterfacesEnumsDelegates);
if (la.kind == 109) {
lexer.NextToken();
-#line 394 "cs.ATG"
+#line 397 "cs.ATG"
TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes);
templates = newType.Templates;
newType.StartLocation = m.GetDeclarationLocation(t.Location);
@@ -785,42 +788,42 @@ templates);
Identifier();
-#line 401 "cs.ATG"
+#line 404 "cs.ATG"
newType.Name = t.val;
if (la.kind == 23) {
TypeParameterList(
-#line 404 "cs.ATG"
+#line 407 "cs.ATG"
templates);
}
if (la.kind == 9) {
StructInterfaces(
-#line 406 "cs.ATG"
+#line 409 "cs.ATG"
out names);
-#line 406 "cs.ATG"
+#line 409 "cs.ATG"
newType.BaseTypes = names;
}
while (la.kind == 127) {
TypeParameterConstraintsClause(
-#line 409 "cs.ATG"
+#line 412 "cs.ATG"
templates);
}
-#line 412 "cs.ATG"
+#line 415 "cs.ATG"
newType.BodyStartLocation = t.EndLocation;
StructBody();
if (la.kind == 11) {
lexer.NextToken();
}
-#line 414 "cs.ATG"
+#line 417 "cs.ATG"
newType.EndLocation = t.EndLocation;
compilationUnit.BlockEnd();
} else if (la.kind == 83) {
lexer.NextToken();
-#line 418 "cs.ATG"
+#line 421 "cs.ATG"
TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes);
templates = newType.Templates;
compilationUnit.AddChild(newType);
@@ -830,42 +833,42 @@ templates);
Identifier();
-#line 425 "cs.ATG"
+#line 428 "cs.ATG"
newType.Name = t.val;
if (la.kind == 23) {
TypeParameterList(
-#line 428 "cs.ATG"
+#line 431 "cs.ATG"
templates);
}
if (la.kind == 9) {
InterfaceBase(
-#line 430 "cs.ATG"
+#line 433 "cs.ATG"
out names);
-#line 430 "cs.ATG"
+#line 433 "cs.ATG"
newType.BaseTypes = names;
}
while (la.kind == 127) {
TypeParameterConstraintsClause(
-#line 433 "cs.ATG"
+#line 436 "cs.ATG"
templates);
}
-#line 435 "cs.ATG"
+#line 438 "cs.ATG"
newType.BodyStartLocation = t.EndLocation;
InterfaceBody();
if (la.kind == 11) {
lexer.NextToken();
}
-#line 437 "cs.ATG"
+#line 440 "cs.ATG"
newType.EndLocation = t.EndLocation;
compilationUnit.BlockEnd();
} else if (la.kind == 68) {
lexer.NextToken();
-#line 441 "cs.ATG"
+#line 444 "cs.ATG"
TypeDeclaration newType = new TypeDeclaration(m.Modifier, attributes);
compilationUnit.AddChild(newType);
compilationUnit.BlockStart(newType);
@@ -874,79 +877,79 @@ templates);
Identifier();
-#line 447 "cs.ATG"
+#line 450 "cs.ATG"
newType.Name = t.val;
if (la.kind == 9) {
lexer.NextToken();
IntegralType(
-#line 448 "cs.ATG"
+#line 451 "cs.ATG"
out name);
-#line 448 "cs.ATG"
+#line 451 "cs.ATG"
newType.BaseTypes.Add(new TypeReference(name, true));
}
-#line 450 "cs.ATG"
+#line 453 "cs.ATG"
newType.BodyStartLocation = t.EndLocation;
EnumBody();
if (la.kind == 11) {
lexer.NextToken();
}
-#line 452 "cs.ATG"
+#line 455 "cs.ATG"
newType.EndLocation = t.EndLocation;
compilationUnit.BlockEnd();
} else {
lexer.NextToken();
-#line 456 "cs.ATG"
+#line 459 "cs.ATG"
DelegateDeclaration delegateDeclr = new DelegateDeclaration(m.Modifier, attributes);
templates = delegateDeclr.Templates;
delegateDeclr.StartLocation = m.GetDeclarationLocation(t.Location);
if (
-#line 460 "cs.ATG"
+#line 463 "cs.ATG"
NotVoidPointer()) {
Expect(123);
-#line 460 "cs.ATG"
+#line 463 "cs.ATG"
delegateDeclr.ReturnType = new TypeReference("System.Void", true);
} else if (StartOf(10)) {
Type(
-#line 461 "cs.ATG"
+#line 464 "cs.ATG"
out type);
-#line 461 "cs.ATG"
+#line 464 "cs.ATG"
delegateDeclr.ReturnType = type;
} else SynErr(152);
Identifier();
-#line 463 "cs.ATG"
+#line 466 "cs.ATG"
delegateDeclr.Name = t.val;
if (la.kind == 23) {
TypeParameterList(
-#line 466 "cs.ATG"
+#line 469 "cs.ATG"
templates);
}
Expect(20);
if (StartOf(11)) {
FormalParameterList(
-#line 468 "cs.ATG"
+#line 471 "cs.ATG"
p);
-#line 468 "cs.ATG"
+#line 471 "cs.ATG"
delegateDeclr.Parameters = p;
}
Expect(21);
while (la.kind == 127) {
TypeParameterConstraintsClause(
-#line 472 "cs.ATG"
+#line 475 "cs.ATG"
templates);
}
Expect(11);
-#line 474 "cs.ATG"
+#line 477 "cs.ATG"
delegateDeclr.EndLocation = t.EndLocation;
compilationUnit.AddChild(delegateDeclr);
@@ -955,87 +958,87 @@ templates);
}
void TypeParameterList(
-#line 2363 "cs.ATG"
+#line 2366 "cs.ATG"
List<TemplateDefinition> templates) {
-#line 2365 "cs.ATG"
+#line 2368 "cs.ATG"
AttributeSection section;
List<AttributeSection> attributes = new List<AttributeSection>();
Expect(23);
while (la.kind == 18) {
AttributeSection(
-#line 2369 "cs.ATG"
+#line 2372 "cs.ATG"
out section);
-#line 2369 "cs.ATG"
+#line 2372 "cs.ATG"
attributes.Add(section);
}
Identifier();
-#line 2370 "cs.ATG"
+#line 2373 "cs.ATG"
templates.Add(new TemplateDefinition(t.val, attributes));
while (la.kind == 14) {
lexer.NextToken();
while (la.kind == 18) {
AttributeSection(
-#line 2371 "cs.ATG"
+#line 2374 "cs.ATG"
out section);
-#line 2371 "cs.ATG"
+#line 2374 "cs.ATG"
attributes.Add(section);
}
Identifier();
-#line 2372 "cs.ATG"
+#line 2375 "cs.ATG"
templates.Add(new TemplateDefinition(t.val, attributes));
}
Expect(22);
}
void ClassBase(
-#line 489 "cs.ATG"
+#line 492 "cs.ATG"
out List<TypeReference> names) {
-#line 491 "cs.ATG"
+#line 494 "cs.ATG"
TypeReference typeRef;
names = new List<TypeReference>();
Expect(9);
ClassType(
-#line 495 "cs.ATG"
+#line 498 "cs.ATG"
out typeRef, false);
-#line 495 "cs.ATG"
+#line 498 "cs.ATG"
if (typeRef != null) { names.Add(typeRef); }
while (la.kind == 14) {
lexer.NextToken();
TypeName(
-#line 496 "cs.ATG"
+#line 499 "cs.ATG"
out typeRef, false);
-#line 496 "cs.ATG"
+#line 499 "cs.ATG"
if (typeRef != null) { names.Add(typeRef); }
}
}
void TypeParameterConstraintsClause(
-#line 2376 "cs.ATG"
+#line 2379 "cs.ATG"
List<TemplateDefinition> templates) {
-#line 2377 "cs.ATG"
+#line 2380 "cs.ATG"
string name = ""; TypeReference type;
Expect(127);
Identifier();
-#line 2380 "cs.ATG"
+#line 2383 "cs.ATG"
name = t.val;
Expect(9);
TypeParameterConstraintsClauseBase(
-#line 2382 "cs.ATG"
+#line 2385 "cs.ATG"
out type);
-#line 2383 "cs.ATG"
+#line 2386 "cs.ATG"
TemplateDefinition td = null;
foreach (TemplateDefinition d in templates) {
if (d.Name == name) {
@@ -1048,10 +1051,10 @@ out type);
while (la.kind == 14) {
lexer.NextToken();
TypeParameterConstraintsClauseBase(
-#line 2392 "cs.ATG"
+#line 2395 "cs.ATG"
out type);
-#line 2393 "cs.ATG"
+#line 2396 "cs.ATG"
td = null;
foreach (TemplateDefinition d in templates) {
if (d.Name == name) {
@@ -1066,109 +1069,109 @@ out type);
void ClassBody() {
-#line 500 "cs.ATG"
+#line 503 "cs.ATG"
AttributeSection section;
while (StartOf(12)) {
-#line 502 "cs.ATG"
+#line 505 "cs.ATG"
List<AttributeSection> attributes = new List<AttributeSection>();
ModifierList m = new ModifierList();
while (!(StartOf(13))) {SynErr(154); lexer.NextToken(); }
while (la.kind == 18) {
AttributeSection(
-#line 506 "cs.ATG"
+#line 509 "cs.ATG"
out section);
-#line 506 "cs.ATG"
+#line 509 "cs.ATG"
attributes.Add(section);
}
MemberModifiers(
-#line 507 "cs.ATG"
+#line 510 "cs.ATG"
m);
ClassMemberDecl(
-#line 508 "cs.ATG"
+#line 511 "cs.ATG"
m, attributes);
}
}
void StructInterfaces(
-#line 512 "cs.ATG"
+#line 515 "cs.ATG"
out List<TypeReference> names) {
-#line 514 "cs.ATG"
+#line 517 "cs.ATG"
TypeReference typeRef;
names = new List<TypeReference>();
Expect(9);
TypeName(
-#line 518 "cs.ATG"
+#line 521 "cs.ATG"
out typeRef, false);
-#line 518 "cs.ATG"
+#line 521 "cs.ATG"
if (typeRef != null) { names.Add(typeRef); }
while (la.kind == 14) {
lexer.NextToken();
TypeName(
-#line 519 "cs.ATG"
+#line 522 "cs.ATG"
out typeRef, false);
-#line 519 "cs.ATG"
+#line 522 "cs.ATG"
if (typeRef != null) { names.Add(typeRef); }
}
}
void StructBody() {
-#line 523 "cs.ATG"
+#line 526 "cs.ATG"
AttributeSection section;
Expect(16);
while (StartOf(14)) {
-#line 526 "cs.ATG"
+#line 529 "cs.ATG"
List<AttributeSection> attributes = new List<AttributeSection>();
ModifierList m = new ModifierList();
while (la.kind == 18) {
AttributeSection(
-#line 529 "cs.ATG"
+#line 532 "cs.ATG"
out section);
-#line 529 "cs.ATG"
+#line 532 "cs.ATG"
attributes.Add(section);
}
MemberModifiers(
-#line 530 "cs.ATG"
+#line 533 "cs.ATG"
m);
StructMemberDecl(
-#line 531 "cs.ATG"
+#line 534 "cs.ATG"
m, attributes);
}
Expect(17);
}
void InterfaceBase(
-#line 536 "cs.ATG"
+#line 539 "cs.ATG"
out List<TypeReference> names) {
-#line 538 "cs.ATG"
+#line 541 "cs.ATG"
TypeReference typeRef;
names = new List<TypeReference>();
Expect(9);
TypeName(
-#line 542 "cs.ATG"
+#line 545 "cs.ATG"
out typeRef, false);
-#line 542 "cs.ATG"
+#line 545 "cs.ATG"
if (typeRef != null) { names.Add(typeRef); }
while (la.kind == 14) {
lexer.NextToken();
TypeName(
-#line 543 "cs.ATG"
+#line 546 "cs.ATG"
out typeRef, false);
-#line 543 "cs.ATG"
+#line 546 "cs.ATG"
if (typeRef != null) { names.Add(typeRef); }
}
}
@@ -1183,72 +1186,72 @@ out typeRef, false);
}
void IntegralType(
-#line 713 "cs.ATG"
+#line 716 "cs.ATG"
out string name) {
-#line 713 "cs.ATG"
+#line 716 "cs.ATG"
name = "";
switch (la.kind) {
case 102: {
lexer.NextToken();
-#line 715 "cs.ATG"
+#line 718 "cs.ATG"
name = "System.SByte";
break;
}
case 54: {
lexer.NextToken();
-#line 716 "cs.ATG"
+#line 719 "cs.ATG"
name = "System.Byte";
break;
}
case 104: {
lexer.NextToken();
-#line 717 "cs.ATG"
+#line 720 "cs.ATG"
name = "System.Int16";
break;
}
case 120: {
lexer.NextToken();
-#line 718 "cs.ATG"
+#line 721 "cs.ATG"
name = "System.UInt16";
break;
}
case 82: {
lexer.NextToken();
-#line 719 "cs.ATG"
+#line 722 "cs.ATG"
name = "System.Int32";
break;
}
case 116: {
lexer.NextToken();
-#line 720 "cs.ATG"
+#line 723 "cs.ATG"
name = "System.UInt32";
break;
}
case 87: {
lexer.NextToken();
-#line 721 "cs.ATG"
+#line 724 "cs.ATG"
name = "System.Int64";
break;
}
case 117: {
lexer.NextToken();
-#line 722 "cs.ATG"
+#line 725 "cs.ATG"
name = "System.UInt64";
break;
}
case 57: {
lexer.NextToken();
-#line 723 "cs.ATG"
+#line 726 "cs.ATG"
name = "System.Char";
break;
}
@@ -1258,25 +1261,25 @@ out string name) {
void EnumBody() {
-#line 552 "cs.ATG"
+#line 555 "cs.ATG"
FieldDeclaration f;
Expect(16);
if (StartOf(17)) {
EnumMemberDecl(
-#line 555 "cs.ATG"
+#line 558 "cs.ATG"
out f);
-#line 555 "cs.ATG"
+#line 558 "cs.ATG"
compilationUnit.AddChild(f);
while (
-#line 556 "cs.ATG"
+#line 559 "cs.ATG"
NotFinalComma()) {
Expect(14);
EnumMemberDecl(
-#line 557 "cs.ATG"
+#line 560 "cs.ATG"
out f);
-#line 557 "cs.ATG"
+#line 560 "cs.ATG"
compilationUnit.AddChild(f);
}
if (la.kind == 14) {
@@ -1287,36 +1290,36 @@ out f);
}
void Type(
-#line 563 "cs.ATG"
+#line 566 "cs.ATG"
out TypeReference type) {
TypeWithRestriction(
-#line 565 "cs.ATG"
+#line 568 "cs.ATG"
out type, true, false);
}
void FormalParameterList(
-#line 635 "cs.ATG"
+#line 638 "cs.ATG"
List<ParameterDeclarationExpression> parameter) {
-#line 638 "cs.ATG"
+#line 641 "cs.ATG"
ParameterDeclarationExpression p;
AttributeSection section;
List<AttributeSection> attributes = new List<AttributeSection>();
while (la.kind == 18) {
AttributeSection(
-#line 643 "cs.ATG"
+#line 646 "cs.ATG"
out section);
-#line 643 "cs.ATG"
+#line 646 "cs.ATG"
attributes.Add(section);
}
if (StartOf(18)) {
FixedParameter(
-#line 645 "cs.ATG"
+#line 648 "cs.ATG"
out p);
-#line 645 "cs.ATG"
+#line 648 "cs.ATG"
bool paramsFound = false;
p.Attributes = attributes;
parameter.Add(p);
@@ -1324,97 +1327,97 @@ out p);
while (la.kind == 14) {
lexer.NextToken();
-#line 650 "cs.ATG"
+#line 653 "cs.ATG"
attributes = new List<AttributeSection>(); if (paramsFound) Error("params array must be at end of parameter list");
while (la.kind == 18) {
AttributeSection(
-#line 651 "cs.ATG"
+#line 654 "cs.ATG"
out section);
-#line 651 "cs.ATG"
+#line 654 "cs.ATG"
attributes.Add(section);
}
if (StartOf(18)) {
FixedParameter(
-#line 653 "cs.ATG"
+#line 656 "cs.ATG"
out p);
-#line 653 "cs.ATG"
+#line 656 "cs.ATG"
p.Attributes = attributes; parameter.Add(p);
} else if (la.kind == 95) {
ParameterArray(
-#line 654 "cs.ATG"
+#line 657 "cs.ATG"
out p);
-#line 654 "cs.ATG"
+#line 657 "cs.ATG"
paramsFound = true; p.Attributes = attributes; parameter.Add(p);
} else SynErr(157);
}
} else if (la.kind == 95) {
ParameterArray(
-#line 657 "cs.ATG"
+#line 660 "cs.ATG"
out p);
-#line 657 "cs.ATG"
+#line 660 "cs.ATG"
p.Attributes = attributes; parameter.Add(p);
} else SynErr(158);
}
void ClassType(
-#line 705 "cs.ATG"
+#line 708 "cs.ATG"
out TypeReference typeRef, bool canBeUnbound) {
-#line 706 "cs.ATG"
+#line 709 "cs.ATG"
TypeReference r; typeRef = null;
if (StartOf(19)) {
TypeName(
-#line 708 "cs.ATG"
+#line 711 "cs.ATG"
out r, canBeUnbound);
-#line 708 "cs.ATG"
+#line 711 "cs.ATG"
typeRef = r;
} else if (la.kind == 91) {
lexer.NextToken();
-#line 709 "cs.ATG"
+#line 712 "cs.ATG"
typeRef = new TypeReference("System.Object", true); typeRef.StartLocation = t.Location;
} else if (la.kind == 108) {
lexer.NextToken();
-#line 710 "cs.ATG"
+#line 713 "cs.ATG"
typeRef = new TypeReference("System.String", true); typeRef.StartLocation = t.Location;
} else SynErr(159);
}
void TypeName(
-#line 2304 "cs.ATG"
+#line 2307 "cs.ATG"
out TypeReference typeRef, bool canBeUnbound) {
-#line 2305 "cs.ATG"
+#line 2308 "cs.ATG"
List<TypeReference> typeArguments = null;
string alias = null;
string qualident;
Location startLocation = la.Location;
if (
-#line 2311 "cs.ATG"
+#line 2314 "cs.ATG"
IdentAndDoubleColon()) {
Identifier();
-#line 2312 "cs.ATG"
+#line 2315 "cs.ATG"
alias = t.val;
Expect(10);
}
Qualident(
-#line 2315 "cs.ATG"
+#line 2318 "cs.ATG"
out qualident);
if (la.kind == 23) {
TypeArgumentList(
-#line 2316 "cs.ATG"
+#line 2319 "cs.ATG"
out typeArguments, canBeUnbound);
}
-#line 2318 "cs.ATG"
+#line 2321 "cs.ATG"
if (alias == null) {
typeRef = new TypeReference(qualident, typeArguments);
} else if (alias == "global") {
@@ -1425,143 +1428,143 @@ out typeArguments, canBeUnbound);
}
while (
-#line 2327 "cs.ATG"
+#line 2330 "cs.ATG"
DotAndIdent()) {
Expect(15);
-#line 2328 "cs.ATG"
+#line 2331 "cs.ATG"
typeArguments = null;
Qualident(
-#line 2329 "cs.ATG"
+#line 2332 "cs.ATG"
out qualident);
if (la.kind == 23) {
TypeArgumentList(
-#line 2330 "cs.ATG"
+#line 2333 "cs.ATG"
out typeArguments, canBeUnbound);
}
-#line 2331 "cs.ATG"
+#line 2334 "cs.ATG"
typeRef = new InnerClassTypeReference(typeRef, qualident, typeArguments);
}
-#line 2333 "cs.ATG"
+#line 2336 "cs.ATG"
typeRef.StartLocation = startLocation;
}
void MemberModifiers(
-#line 726 "cs.ATG"
+#line 729 "cs.ATG"
ModifierList m) {
while (StartOf(20)) {
switch (la.kind) {
case 49: {
lexer.NextToken();
-#line 729 "cs.ATG"
+#line 732 "cs.ATG"
m.Add(Modifiers.Abstract, t.Location);
break;
}
case 71: {
lexer.NextToken();
-#line 730 "cs.ATG"
+#line 733 "cs.ATG"
m.Add(Modifiers.Extern, t.Location);
break;
}
case 84: {
lexer.NextToken();
-#line 731 "cs.ATG"
+#line 734 "cs.ATG"
m.Add(Modifiers.Internal, t.Location);
break;
}
case 89: {
lexer.NextToken();
-#line 732 "cs.ATG"
+#line 735 "cs.ATG"
m.Add(Modifiers.New, t.Location);
break;
}
case 94: {
lexer.NextToken();
-#line 733 "cs.ATG"
+#line 736 "cs.ATG"
m.Add(Modifiers.Override, t.Location);
break;
}
case 96: {
lexer.NextToken();
-#line 734 "cs.ATG"
+#line 737 "cs.ATG"
m.Add(Modifiers.Private, t.Location);
break;
}
case 97: {
lexer.NextToken();
-#line 735 "cs.ATG"
+#line 738 "cs.ATG"
m.Add(Modifiers.Protected, t.Location);
break;
}
case 98: {
lexer.NextToken();
-#line 736 "cs.ATG"
+#line 739 "cs.ATG"
m.Add(Modifiers.Public, t.Location);
break;
}
case 99: {
lexer.NextToken();
-#line 737 "cs.ATG"
+#line 740 "cs.ATG"
m.Add(Modifiers.ReadOnly, t.Location);
break;
}
case 103: {
lexer.NextToken();
-#line 738 "cs.ATG"
+#line 741 "cs.ATG"
m.Add(Modifiers.Sealed, t.Location);
break;
}
case 107: {
lexer.NextToken();
-#line 739 "cs.ATG"
+#line 742 "cs.ATG"
m.Add(Modifiers.Static, t.Location);
break;
}
case 74: {
lexer.NextToken();
-#line 740 "cs.ATG"
+#line 743 "cs.ATG"
m.Add(Modifiers.Fixed, t.Location);
break;
}
case 119: {
lexer.NextToken();
-#line 741 "cs.ATG"
+#line 744 "cs.ATG"
m.Add(Modifiers.Unsafe, t.Location);
break;
}
case 122: {
lexer.NextToken();
-#line 742 "cs.ATG"
+#line 745 "cs.ATG"
m.Add(Modifiers.Virtual, t.Location);
break;
}
case 124: {
lexer.NextToken();
-#line 743 "cs.ATG"
+#line 746 "cs.ATG"
m.Add(Modifiers.Volatile, t.Location);
break;
}
case 126: {
lexer.NextToken();
-#line 744 "cs.ATG"
+#line 747 "cs.ATG"
m.Add(Modifiers.Partial, t.Location);
break;
}
@@ -1570,23 +1573,23 @@ ModifierList m) {
}
void ClassMemberDecl(
-#line 1060 "cs.ATG"
+#line 1063 "cs.ATG"
ModifierList m, List<AttributeSection> attributes) {
-#line 1061 "cs.ATG"
+#line 1064 "cs.ATG"
Statement stmt = null;
if (StartOf(21)) {
StructMemberDecl(
-#line 1063 "cs.ATG"
+#line 1066 "cs.ATG"
m, attributes);
} else if (la.kind == 27) {
-#line 1064 "cs.ATG"
+#line 1067 "cs.ATG"
m.Check(Modifiers.Destructors); Location startPos = la.Location;
lexer.NextToken();
Identifier();
-#line 1065 "cs.ATG"
+#line 1068 "cs.ATG"
DestructorDeclaration d = new DestructorDeclaration(t.val, m.Modifier, attributes);
d.Modifier = m.Modifier;
d.StartLocation = m.GetDeclarationLocation(startPos);
@@ -1594,17 +1597,17 @@ m, attributes);
Expect(20);
Expect(21);
-#line 1069 "cs.ATG"
+#line 1072 "cs.ATG"
d.EndLocation = t.EndLocation;
if (la.kind == 16) {
Block(
-#line 1069 "cs.ATG"
+#line 1072 "cs.ATG"
out stmt);
} else if (la.kind == 11) {
lexer.NextToken();
} else SynErr(160);
-#line 1070 "cs.ATG"
+#line 1073 "cs.ATG"
d.Body = (BlockStatement)stmt;
compilationUnit.AddChild(d);
@@ -1612,10 +1615,10 @@ out stmt);
}
void StructMemberDecl(
-#line 748 "cs.ATG"
+#line 751 "cs.ATG"
ModifierList m, List<AttributeSection> attributes) {
-#line 750 "cs.ATG"
+#line 753 "cs.ATG"
string qualident = null;
TypeReference type;
Expression expr;
@@ -1627,18 +1630,18 @@ ModifierList m, List<AttributeSection> attributes) {
if (la.kind == 60) {
-#line 760 "cs.ATG"
+#line 763 "cs.ATG"
m.Check(Modifiers.Constants);
lexer.NextToken();
-#line 761 "cs.ATG"
+#line 764 "cs.ATG"
Location startPos = t.Location;
Type(
-#line 762 "cs.ATG"
+#line 765 "cs.ATG"
out type);
Identifier();
-#line 762 "cs.ATG"
+#line 765 "cs.ATG"
FieldDeclaration fd = new FieldDeclaration(attributes, type, m.Modifier | Modifiers.Const);
fd.StartLocation = m.GetDeclarationLocation(startPos);
VariableDeclaration f = new VariableDeclaration(t.val);
@@ -1648,16 +1651,16 @@ out type);
Expect(3);
Expr(
-#line 769 "cs.ATG"
+#line 772 "cs.ATG"
out expr);
-#line 769 "cs.ATG"
+#line 772 "cs.ATG"
f.Initializer = expr;
while (la.kind == 14) {
lexer.NextToken();
Identifier();
-#line 770 "cs.ATG"
+#line 773 "cs.ATG"
f = new VariableDeclaration(t.val);
f.StartLocation = t.Location;
f.TypeReference = type;
@@ -1665,63 +1668,63 @@ out expr);
Expect(3);
Expr(
-#line 775 "cs.ATG"
+#line 778 "cs.ATG"
out expr);
-#line 775 "cs.ATG"
+#line 778 "cs.ATG"
f.EndLocation = t.EndLocation; f.Initializer = expr;
}
Expect(11);
-#line 776 "cs.ATG"
+#line 779 "cs.ATG"
fd.EndLocation = t.EndLocation; compilationUnit.AddChild(fd);
} else if (
-#line 780 "cs.ATG"
+#line 783 "cs.ATG"
NotVoidPointer()) {
-#line 780 "cs.ATG"
+#line 783 "cs.ATG"
m.Check(Modifiers.PropertysEventsMethods);
Expect(123);
-#line 781 "cs.ATG"
+#line 784 "cs.ATG"
Location startPos = t.Location;
if (
-#line 782 "cs.ATG"
+#line 785 "cs.ATG"
IsExplicitInterfaceImplementation()) {
TypeName(
-#line 783 "cs.ATG"
+#line 786 "cs.ATG"
out explicitInterface, false);
-#line 784 "cs.ATG"
+#line 787 "cs.ATG"
if (la.kind != Tokens.Dot || Peek(1).kind != Tokens.This) {
qualident = TypeReference.StripLastIdentifierFromType(ref explicitInterface);
}
} else if (StartOf(19)) {
Identifier();
-#line 787 "cs.ATG"
+#line 790 "cs.ATG"
qualident = t.val;
} else SynErr(162);
if (la.kind == 23) {
TypeParameterList(
-#line 790 "cs.ATG"
+#line 793 "cs.ATG"
templates);
}
Expect(20);
if (la.kind == 111) {
lexer.NextToken();
-#line 793 "cs.ATG"
+#line 796 "cs.ATG"
isExtensionMethod = true; /* C# 3.0 */
}
if (StartOf(11)) {
FormalParameterList(
-#line 794 "cs.ATG"
+#line 797 "cs.ATG"
p);
}
Expect(21);
-#line 795 "cs.ATG"
+#line 798 "cs.ATG"
MethodDeclaration methodDeclaration = new MethodDeclaration {
Name = qualident,
Modifier = m.Modifier,
@@ -1740,28 +1743,28 @@ p);
while (la.kind == 127) {
TypeParameterConstraintsClause(
-#line 813 "cs.ATG"
+#line 816 "cs.ATG"
templates);
}
if (la.kind == 16) {
Block(
-#line 815 "cs.ATG"
+#line 818 "cs.ATG"
out stmt);
} else if (la.kind == 11) {
lexer.NextToken();
} else SynErr(163);
-#line 815 "cs.ATG"
+#line 818 "cs.ATG"
compilationUnit.BlockEnd();
methodDeclaration.Body = (BlockStatement)stmt;
} else if (la.kind == 69) {
-#line 819 "cs.ATG"
+#line 822 "cs.ATG"
m.Check(Modifiers.PropertysEventsMethods);
lexer.NextToken();
-#line 821 "cs.ATG"
+#line 824 "cs.ATG"
EventDeclaration eventDecl = new EventDeclaration {
Modifier = m.Modifier,
Attributes = attributes,
@@ -1773,113 +1776,113 @@ out stmt);
EventRemoveRegion removeBlock = null;
Type(
-#line 831 "cs.ATG"
+#line 834 "cs.ATG"
out type);
-#line 831 "cs.ATG"
+#line 834 "cs.ATG"
eventDecl.TypeReference = type;
if (
-#line 832 "cs.ATG"
+#line 835 "cs.ATG"
IsExplicitInterfaceImplementation()) {
TypeName(
-#line 833 "cs.ATG"
+#line 836 "cs.ATG"
out explicitInterface, false);
-#line 834 "cs.ATG"
+#line 837 "cs.ATG"
qualident = TypeReference.StripLastIdentifierFromType(ref explicitInterface);
-#line 835 "cs.ATG"
+#line 838 "cs.ATG"
eventDecl.InterfaceImplementations.Add(new InterfaceImplementation(explicitInterface, qualident));
} else if (StartOf(19)) {
Identifier();
-#line 837 "cs.ATG"
+#line 840 "cs.ATG"
qualident = t.val;
} else SynErr(164);
-#line 839 "cs.ATG"
+#line 842 "cs.ATG"
eventDecl.Name = qualident; eventDecl.EndLocation = t.EndLocation;
if (la.kind == 3) {
lexer.NextToken();
Expr(
-#line 840 "cs.ATG"
+#line 843 "cs.ATG"
out expr);
-#line 840 "cs.ATG"
+#line 843 "cs.ATG"
eventDecl.Initializer = expr;
}
if (la.kind == 16) {
lexer.NextToken();
-#line 841 "cs.ATG"
+#line 844 "cs.ATG"
eventDecl.BodyStart = t.Location;
EventAccessorDecls(
-#line 842 "cs.ATG"
+#line 845 "cs.ATG"
out addBlock, out removeBlock);
Expect(17);
-#line 843 "cs.ATG"
+#line 846 "cs.ATG"
eventDecl.BodyEnd = t.EndLocation;
}
if (la.kind == 11) {
lexer.NextToken();
}
-#line 846 "cs.ATG"
+#line 849 "cs.ATG"
compilationUnit.BlockEnd();
eventDecl.AddRegion = addBlock;
eventDecl.RemoveRegion = removeBlock;
} else if (
-#line 852 "cs.ATG"
+#line 855 "cs.ATG"
IdentAndLPar()) {
-#line 852 "cs.ATG"
+#line 855 "cs.ATG"
m.Check(Modifiers.Constructors | Modifiers.StaticConstructors);
Identifier();
-#line 853 "cs.ATG"
+#line 856 "cs.ATG"
string name = t.val; Location startPos = t.Location;
Expect(20);
if (StartOf(11)) {
-#line 853 "cs.ATG"
+#line 856 "cs.ATG"
m.Check(Modifiers.Constructors);
FormalParameterList(
-#line 854 "cs.ATG"
+#line 857 "cs.ATG"
p);
}
Expect(21);
-#line 856 "cs.ATG"
+#line 859 "cs.ATG"
ConstructorInitializer init = null;
if (la.kind == 9) {
-#line 857 "cs.ATG"
+#line 860 "cs.ATG"
m.Check(Modifiers.Constructors);
ConstructorInitializer(
-#line 858 "cs.ATG"
+#line 861 "cs.ATG"
out init);
}
-#line 860 "cs.ATG"
+#line 863 "cs.ATG"
ConstructorDeclaration cd = new ConstructorDeclaration(name, m.Modifier, p, init, attributes);
cd.StartLocation = startPos;
cd.EndLocation = t.EndLocation;
if (la.kind == 16) {
Block(
-#line 865 "cs.ATG"
+#line 868 "cs.ATG"
out stmt);
} else if (la.kind == 11) {
lexer.NextToken();
} else SynErr(165);
-#line 865 "cs.ATG"
+#line 868 "cs.ATG"
cd.Body = (BlockStatement)stmt; compilationUnit.AddChild(cd);
} else if (la.kind == 70 || la.kind == 80) {
-#line 868 "cs.ATG"
+#line 871 "cs.ATG"
m.Check(Modifiers.Operators);
if (m.isNone) Error("at least one modifier must be set");
bool isImplicit = true;
@@ -1888,45 +1891,45 @@ out stmt);
if (la.kind == 80) {
lexer.NextToken();
-#line 873 "cs.ATG"
+#line 876 "cs.ATG"
startPos = t.Location;
} else {
lexer.NextToken();
-#line 873 "cs.ATG"
+#line 876 "cs.ATG"
isImplicit = false; startPos = t.Location;
}
Expect(92);
Type(
-#line 874 "cs.ATG"
+#line 877 "cs.ATG"
out type);
-#line 874 "cs.ATG"
+#line 877 "cs.ATG"
TypeReference operatorType = type;
Expect(20);
Type(
-#line 875 "cs.ATG"
+#line 878 "cs.ATG"
out type);
Identifier();
-#line 875 "cs.ATG"
+#line 878 "cs.ATG"
string varName = t.val;
Expect(21);
-#line 876 "cs.ATG"
+#line 879 "cs.ATG"
Location endPos = t.Location;
if (la.kind == 16) {
Block(
-#line 877 "cs.ATG"
+#line 880 "cs.ATG"
out stmt);
} else if (la.kind == 11) {
lexer.NextToken();
-#line 877 "cs.ATG"
+#line 880 "cs.ATG"
stmt = null;
} else SynErr(166);
-#line 880 "cs.ATG"
+#line 883 "cs.ATG"
List<ParameterDeclarationExpression> parameters = new List<ParameterDeclarationExpression>();
parameters.Add(new ParameterDeclarationExpression(type, varName));
OperatorDeclaration operatorDeclaration = new OperatorDeclaration {
@@ -1944,61 +1947,61 @@ out stmt);
} else if (StartOf(22)) {
TypeDecl(
-#line 898 "cs.ATG"
+#line 901 "cs.ATG"
m, attributes);
} else if (StartOf(10)) {
Type(
-#line 900 "cs.ATG"
+#line 903 "cs.ATG"
out type);
-#line 900 "cs.ATG"
+#line 903 "cs.ATG"
Location startPos = t.Location;
if (la.kind == 92) {
-#line 902 "cs.ATG"
+#line 905 "cs.ATG"
OverloadableOperatorType op;
m.Check(Modifiers.Operators);
if (m.isNone) Error("at least one modifier must be set");
lexer.NextToken();
OverloadableOperator(
-#line 906 "cs.ATG"
+#line 909 "cs.ATG"
out op);
-#line 906 "cs.ATG"
+#line 909 "cs.ATG"
TypeReference firstType, secondType = null; string secondName = null;
Expect(20);
Type(
-#line 907 "cs.ATG"
+#line 910 "cs.ATG"
out firstType);
Identifier();
-#line 907 "cs.ATG"
+#line 910 "cs.ATG"
string firstName = t.val;
if (la.kind == 14) {
lexer.NextToken();
Type(
-#line 908 "cs.ATG"
+#line 911 "cs.ATG"
out secondType);
Identifier();
-#line 908 "cs.ATG"
+#line 911 "cs.ATG"
secondName = t.val;
} else if (la.kind == 21) {
} else SynErr(167);
-#line 916 "cs.ATG"
+#line 919 "cs.ATG"
Location endPos = t.Location;
Expect(21);
if (la.kind == 16) {
Block(
-#line 917 "cs.ATG"
+#line 920 "cs.ATG"
out stmt);
} else if (la.kind == 11) {
lexer.NextToken();
} else SynErr(168);
-#line 919 "cs.ATG"
+#line 922 "cs.ATG"
if (op == OverloadableOperatorType.Add && secondType == null)
op = OverloadableOperatorType.UnaryPlus;
if (op == OverloadableOperatorType.Subtract && secondType == null)
@@ -2020,75 +2023,75 @@ out stmt);
compilationUnit.AddChild(operatorDeclaration);
} else if (
-#line 941 "cs.ATG"
+#line 944 "cs.ATG"
IsVarDecl()) {
-#line 942 "cs.ATG"
+#line 945 "cs.ATG"
m.Check(Modifiers.Fields);
FieldDeclaration fd = new FieldDeclaration(attributes, type, m.Modifier);
fd.StartLocation = m.GetDeclarationLocation(startPos);
if (
-#line 946 "cs.ATG"
+#line 949 "cs.ATG"
m.Contains(Modifiers.Fixed)) {
VariableDeclarator(
-#line 947 "cs.ATG"
+#line 950 "cs.ATG"
fd);
Expect(18);
Expr(
-#line 949 "cs.ATG"
+#line 952 "cs.ATG"
out expr);
-#line 949 "cs.ATG"
+#line 952 "cs.ATG"
if (fd.Fields.Count > 0)
fd.Fields[fd.Fields.Count-1].FixedArrayInitialization = expr;
Expect(19);
while (la.kind == 14) {
lexer.NextToken();
VariableDeclarator(
-#line 953 "cs.ATG"
+#line 956 "cs.ATG"
fd);
Expect(18);
Expr(
-#line 955 "cs.ATG"
+#line 958 "cs.ATG"
out expr);
-#line 955 "cs.ATG"
+#line 958 "cs.ATG"
if (fd.Fields.Count > 0)
fd.Fields[fd.Fields.Count-1].FixedArrayInitialization = expr;
Expect(19);
}
} else if (StartOf(19)) {
VariableDeclarator(
-#line 960 "cs.ATG"
+#line 963 "cs.ATG"
fd);
while (la.kind == 14) {
lexer.NextToken();
VariableDeclarator(
-#line 961 "cs.ATG"
+#line 964 "cs.ATG"
fd);
}
} else SynErr(169);
Expect(11);
-#line 963 "cs.ATG"
+#line 966 "cs.ATG"
fd.EndLocation = t.EndLocation; compilationUnit.AddChild(fd);
} else if (la.kind == 111) {
-#line 966 "cs.ATG"
+#line 969 "cs.ATG"
m.Check(Modifiers.Indexers);
lexer.NextToken();
Expect(18);
FormalParameterList(
-#line 967 "cs.ATG"
+#line 970 "cs.ATG"
p);
Expect(19);
-#line 967 "cs.ATG"
+#line 970 "cs.ATG"
Location endLocation = t.EndLocation;
Expect(16);
-#line 968 "cs.ATG"
+#line 971 "cs.ATG"
IndexerDeclaration indexer = new IndexerDeclaration(type, p, m.Modifier, attributes);
indexer.StartLocation = startPos;
indexer.EndLocation = endLocation;
@@ -2097,64 +2100,64 @@ p);
PropertySetRegion setRegion;
AccessorDecls(
-#line 975 "cs.ATG"
+#line 978 "cs.ATG"
out getRegion, out setRegion);
Expect(17);
-#line 976 "cs.ATG"
+#line 979 "cs.ATG"
indexer.BodyEnd = t.EndLocation;
indexer.GetRegion = getRegion;
indexer.SetRegion = setRegion;
compilationUnit.AddChild(indexer);
} else if (
-#line 981 "cs.ATG"
+#line 984 "cs.ATG"
IsIdentifierToken(la)) {
if (
-#line 982 "cs.ATG"
+#line 985 "cs.ATG"
IsExplicitInterfaceImplementation()) {
TypeName(
-#line 983 "cs.ATG"
+#line 986 "cs.ATG"
out explicitInterface, false);
-#line 984 "cs.ATG"
+#line 987 "cs.ATG"
if (la.kind != Tokens.Dot || Peek(1).kind != Tokens.This) {
qualident = TypeReference.StripLastIdentifierFromType(ref explicitInterface);
}
} else if (StartOf(19)) {
Identifier();
-#line 987 "cs.ATG"
+#line 990 "cs.ATG"
qualident = t.val;
} else SynErr(170);
-#line 989 "cs.ATG"
+#line 992 "cs.ATG"
Location qualIdentEndLocation = t.EndLocation;
if (la.kind == 16 || la.kind == 20 || la.kind == 23) {
if (la.kind == 20 || la.kind == 23) {
-#line 993 "cs.ATG"
+#line 996 "cs.ATG"
m.Check(Modifiers.PropertysEventsMethods);
if (la.kind == 23) {
TypeParameterList(
-#line 995 "cs.ATG"
+#line 998 "cs.ATG"
templates);
}
Expect(20);
if (la.kind == 111) {
lexer.NextToken();
-#line 997 "cs.ATG"
+#line 1000 "cs.ATG"
isExtensionMethod = true;
}
if (StartOf(11)) {
FormalParameterList(
-#line 998 "cs.ATG"
+#line 1001 "cs.ATG"
p);
}
Expect(21);
-#line 1000 "cs.ATG"
+#line 1003 "cs.ATG"
MethodDeclaration methodDeclaration = new MethodDeclaration {
Name = qualident,
Modifier = m.Modifier,
@@ -2172,23 +2175,23 @@ p);
while (la.kind == 127) {
TypeParameterConstraintsClause(
-#line 1015 "cs.ATG"
+#line 1018 "cs.ATG"
templates);
}
if (la.kind == 16) {
Block(
-#line 1016 "cs.ATG"
+#line 1019 "cs.ATG"
out stmt);
} else if (la.kind == 11) {
lexer.NextToken();
} else SynErr(171);
-#line 1016 "cs.ATG"
+#line 1019 "cs.ATG"
methodDeclaration.Body = (BlockStatement)stmt;
} else {
lexer.NextToken();
-#line 1019 "cs.ATG"
+#line 1022 "cs.ATG"
PropertyDeclaration pDecl = new PropertyDeclaration(qualident, type, m.Modifier, attributes);
if (explicitInterface != null)
pDecl.InterfaceImplementations.Add(new InterfaceImplementation(explicitInterface, qualident));
@@ -2199,11 +2202,11 @@ out stmt);
PropertySetRegion setRegion;
AccessorDecls(
-#line 1028 "cs.ATG"
+#line 1031 "cs.ATG"
out getRegion, out setRegion);
Expect(17);
-#line 1030 "cs.ATG"
+#line 1033 "cs.ATG"
pDecl.GetRegion = getRegion;
pDecl.SetRegion = setRegion;
pDecl.BodyEnd = t.EndLocation;
@@ -2212,17 +2215,17 @@ out getRegion, out setRegion);
}
} else if (la.kind == 15) {
-#line 1038 "cs.ATG"
+#line 1041 "cs.ATG"
m.Check(Modifiers.Indexers);
lexer.NextToken();
Expect(111);
Expect(18);
FormalParameterList(
-#line 1039 "cs.ATG"
+#line 1042 "cs.ATG"
p);
Expect(19);
-#line 1040 "cs.ATG"
+#line 1043 "cs.ATG"
IndexerDeclaration indexer = new IndexerDeclaration(type, p, m.Modifier, attributes);
indexer.StartLocation = m.GetDeclarationLocation(startPos);
indexer.EndLocation = t.EndLocation;
@@ -2233,14 +2236,14 @@ p);
Expect(16);
-#line 1048 "cs.ATG"
+#line 1051 "cs.ATG"
Location bodyStart = t.Location;
AccessorDecls(
-#line 1049 "cs.ATG"
+#line 1052 "cs.ATG"
out getRegion, out setRegion);
Expect(17);
-#line 1050 "cs.ATG"
+#line 1053 "cs.ATG"
indexer.BodyStart = bodyStart;
indexer.BodyEnd = t.EndLocation;
indexer.GetRegion = getRegion;
@@ -2254,10 +2257,9 @@ out getRegion, out setRegion);
void InterfaceMemberDecl() {
-#line 1077 "cs.ATG"
+#line 1080 "cs.ATG"
TypeReference type;
-
- AttributeSection section;
+ AttributeSection section;
Modifiers mod = Modifiers.None;
List<AttributeSection> attributes = new List<AttributeSection>();
List<ParameterDeclarationExpression> parameters = new List<ParameterDeclarationExpression>();
@@ -2269,49 +2271,49 @@ out getRegion, out setRegion);
while (la.kind == 18) {
AttributeSection(
-#line 1090 "cs.ATG"
+#line 1093 "cs.ATG"
out section);
-#line 1090 "cs.ATG"
+#line 1093 "cs.ATG"
attributes.Add(section);
}
if (la.kind == 89) {
lexer.NextToken();
-#line 1091 "cs.ATG"
+#line 1094 "cs.ATG"
mod = Modifiers.New; startLocation = t.Location;
}
if (
-#line 1094 "cs.ATG"
+#line 1097 "cs.ATG"
NotVoidPointer()) {
Expect(123);
-#line 1094 "cs.ATG"
+#line 1097 "cs.ATG"
if (startLocation.IsEmpty) startLocation = t.Location;
Identifier();
-#line 1095 "cs.ATG"
+#line 1098 "cs.ATG"
name = t.val;
if (la.kind == 23) {
TypeParameterList(
-#line 1096 "cs.ATG"
+#line 1099 "cs.ATG"
templates);
}
Expect(20);
if (StartOf(11)) {
FormalParameterList(
-#line 1097 "cs.ATG"
+#line 1100 "cs.ATG"
parameters);
}
Expect(21);
while (la.kind == 127) {
TypeParameterConstraintsClause(
-#line 1098 "cs.ATG"
+#line 1101 "cs.ATG"
templates);
}
Expect(11);
-#line 1100 "cs.ATG"
+#line 1103 "cs.ATG"
MethodDeclaration md = new MethodDeclaration {
Name = name, Modifier = mod, TypeReference = new TypeReference("System.Void", true),
Parameters = parameters, Attributes = attributes, Templates = templates,
@@ -2322,37 +2324,37 @@ templates);
} else if (StartOf(23)) {
if (StartOf(10)) {
Type(
-#line 1108 "cs.ATG"
+#line 1111 "cs.ATG"
out type);
-#line 1108 "cs.ATG"
+#line 1111 "cs.ATG"
if (startLocation.IsEmpty) startLocation = t.Location;
if (StartOf(19)) {
Identifier();
-#line 1110 "cs.ATG"
+#line 1113 "cs.ATG"
name = t.val; Location qualIdentEndLocation = t.EndLocation;
if (la.kind == 20 || la.kind == 23) {
if (la.kind == 23) {
TypeParameterList(
-#line 1114 "cs.ATG"
+#line 1117 "cs.ATG"
templates);
}
Expect(20);
if (StartOf(11)) {
FormalParameterList(
-#line 1115 "cs.ATG"
+#line 1118 "cs.ATG"
parameters);
}
Expect(21);
while (la.kind == 127) {
TypeParameterConstraintsClause(
-#line 1117 "cs.ATG"
+#line 1120 "cs.ATG"
templates);
}
Expect(11);
-#line 1118 "cs.ATG"
+#line 1121 "cs.ATG"
MethodDeclaration md = new MethodDeclaration {
Name = name, Modifier = mod, TypeReference = type,
Parameters = parameters, Attributes = attributes, Templates = templates,
@@ -2362,58 +2364,58 @@ templates);
} else if (la.kind == 16) {
-#line 1127 "cs.ATG"
+#line 1130 "cs.ATG"
PropertyDeclaration pd = new PropertyDeclaration(name, type, mod, attributes);
compilationUnit.AddChild(pd);
lexer.NextToken();
-#line 1130 "cs.ATG"
+#line 1133 "cs.ATG"
Location bodyStart = t.Location;
InterfaceAccessors(
-#line 1131 "cs.ATG"
+#line 1134 "cs.ATG"
out getBlock, out setBlock);
Expect(17);
-#line 1132 "cs.ATG"
+#line 1135 "cs.ATG"
pd.GetRegion = getBlock; pd.SetRegion = setBlock; pd.StartLocation = startLocation; pd.EndLocation = qualIdentEndLocation; pd.BodyStart = bodyStart; pd.BodyEnd = t.EndLocation;
} else SynErr(175);
} else if (la.kind == 111) {
lexer.NextToken();
Expect(18);
FormalParameterList(
-#line 1135 "cs.ATG"
+#line 1138 "cs.ATG"
parameters);
Expect(19);
-#line 1136 "cs.ATG"
+#line 1139 "cs.ATG"
Location bracketEndLocation = t.EndLocation;
-#line 1137 "cs.ATG"
+#line 1140 "cs.ATG"
IndexerDeclaration id = new IndexerDeclaration(type, parameters, mod, attributes);
compilationUnit.AddChild(id);
Expect(16);
-#line 1139 "cs.ATG"
+#line 1142 "cs.ATG"
Location bodyStart = t.Location;
InterfaceAccessors(
-#line 1140 "cs.ATG"
+#line 1143 "cs.ATG"
out getBlock, out setBlock);
Expect(17);
-#line 1142 "cs.ATG"
+#line 1145 "cs.ATG"
id.GetRegion = getBlock; id.SetRegion = setBlock; id.StartLocation = startLocation; id.EndLocation = bracketEndLocation; id.BodyStart = bodyStart; id.BodyEnd = t.EndLocation;
} else SynErr(176);
} else {
lexer.NextToken();
-#line 1145 "cs.ATG"
+#line 1148 "cs.ATG"
if (startLocation.IsEmpty) startLocation = t.Location;
Type(
-#line 1146 "cs.ATG"
+#line 1149 "cs.ATG"
out type);
Identifier();
-#line 1147 "cs.ATG"
+#line 1150 "cs.ATG"
EventDeclaration ed = new EventDeclaration {
TypeReference = type, Name = t.val, Modifier = mod, Attributes = attributes
};
@@ -2421,17 +2423,17 @@ out type);
Expect(11);
-#line 1153 "cs.ATG"
+#line 1156 "cs.ATG"
ed.StartLocation = startLocation; ed.EndLocation = t.EndLocation;
}
} else SynErr(177);
}
void EnumMemberDecl(
-#line 1158 "cs.ATG"
+#line 1161 "cs.ATG"
out FieldDeclaration f) {
-#line 1160 "cs.ATG"
+#line 1163 "cs.ATG"
Expression expr = null;
List<AttributeSection> attributes = new List<AttributeSection>();
AttributeSection section = null;
@@ -2439,15 +2441,15 @@ out FieldDeclaration f) {
while (la.kind == 18) {
AttributeSection(
-#line 1166 "cs.ATG"
+#line 1169 "cs.ATG"
out section);
-#line 1166 "cs.ATG"
+#line 1169 "cs.ATG"
attributes.Add(section);
}
Identifier();
-#line 1167 "cs.ATG"
+#line 1170 "cs.ATG"
f = new FieldDeclaration(attributes);
varDecl = new VariableDeclaration(t.val);
f.Fields.Add(varDecl);
@@ -2457,19 +2459,19 @@ out section);
if (la.kind == 3) {
lexer.NextToken();
Expr(
-#line 1173 "cs.ATG"
+#line 1176 "cs.ATG"
out expr);
-#line 1173 "cs.ATG"
+#line 1176 "cs.ATG"
varDecl.Initializer = expr;
}
}
void TypeWithRestriction(
-#line 568 "cs.ATG"
+#line 571 "cs.ATG"
out TypeReference type, bool allowNullable, bool canBeUnbound) {
-#line 570 "cs.ATG"
+#line 573 "cs.ATG"
Location startPos = la.Location;
string name;
int pointer = 0;
@@ -2477,59 +2479,59 @@ out TypeReference type, bool allowNullable, bool canBeUnbound) {
if (StartOf(4)) {
ClassType(
-#line 576 "cs.ATG"
+#line 579 "cs.ATG"
out type, canBeUnbound);
} else if (StartOf(5)) {
SimpleType(
-#line 577 "cs.ATG"
+#line 580 "cs.ATG"
out name);
-#line 577 "cs.ATG"
+#line 580 "cs.ATG"
type = new TypeReference(name, true);
} else if (la.kind == 123) {
lexer.NextToken();
Expect(6);
-#line 578 "cs.ATG"
+#line 581 "cs.ATG"
pointer = 1; type = new TypeReference("System.Void", true);
} else SynErr(178);
-#line 579 "cs.ATG"
+#line 582 "cs.ATG"
List<int> r = new List<int>();
if (
-#line 581 "cs.ATG"
+#line 584 "cs.ATG"
allowNullable && la.kind == Tokens.Question) {
NullableQuestionMark(
-#line 581 "cs.ATG"
+#line 584 "cs.ATG"
ref type);
}
while (
-#line 583 "cs.ATG"
+#line 586 "cs.ATG"
IsPointerOrDims()) {
-#line 583 "cs.ATG"
+#line 586 "cs.ATG"
int i = 0;
if (la.kind == 6) {
lexer.NextToken();
-#line 584 "cs.ATG"
+#line 587 "cs.ATG"
++pointer;
} else if (la.kind == 18) {
lexer.NextToken();
while (la.kind == 14) {
lexer.NextToken();
-#line 585 "cs.ATG"
+#line 588 "cs.ATG"
++i;
}
Expect(19);
-#line 585 "cs.ATG"
+#line 588 "cs.ATG"
r.Add(i);
} else SynErr(179);
}
-#line 588 "cs.ATG"
+#line 591 "cs.ATG"
if (type != null) {
type.RankSpecifier = r.ToArray();
type.PointerNestingLevel = pointer;
@@ -2540,57 +2542,57 @@ IsPointerOrDims()) {
}
void SimpleType(
-#line 624 "cs.ATG"
+#line 627 "cs.ATG"
out string name) {
-#line 625 "cs.ATG"
+#line 628 "cs.ATG"
name = String.Empty;
if (StartOf(24)) {
IntegralType(
-#line 627 "cs.ATG"
+#line 630 "cs.ATG"
out name);
} else if (la.kind == 75) {
lexer.NextToken();
-#line 628 "cs.ATG"
+#line 631 "cs.ATG"
name = "System.Single";
} else if (la.kind == 66) {
lexer.NextToken();
-#line 629 "cs.ATG"
+#line 632 "cs.ATG"
name = "System.Double";
} else if (la.kind == 62) {
lexer.NextToken();
-#line 630 "cs.ATG"
+#line 633 "cs.ATG"
name = "System.Decimal";
} else if (la.kind == 52) {
lexer.NextToken();
-#line 631 "cs.ATG"
+#line 634 "cs.ATG"
name = "System.Boolean";
} else SynErr(180);
}
void NullableQuestionMark(
-#line 2337 "cs.ATG"
+#line 2340 "cs.ATG"
ref TypeReference typeRef) {
-#line 2338 "cs.ATG"
+#line 2341 "cs.ATG"
List<TypeReference> typeArguments = new List<TypeReference>(1);
Expect(12);
-#line 2342 "cs.ATG"
+#line 2345 "cs.ATG"
if (typeRef != null) typeArguments.Add(typeRef);
typeRef = new TypeReference("System.Nullable", typeArguments) { IsKeyword = true };
}
void FixedParameter(
-#line 661 "cs.ATG"
+#line 664 "cs.ATG"
out ParameterDeclarationExpression p) {
-#line 663 "cs.ATG"
+#line 666 "cs.ATG"
TypeReference type;
ParameterModifiers mod = ParameterModifiers.In;
Location start = la.Location;
@@ -2599,82 +2601,82 @@ out ParameterDeclarationExpression p) {
if (la.kind == 100) {
lexer.NextToken();
-#line 669 "cs.ATG"
+#line 672 "cs.ATG"
mod = ParameterModifiers.Ref;
} else {
lexer.NextToken();
-#line 670 "cs.ATG"
+#line 673 "cs.ATG"
mod = ParameterModifiers.Out;
}
}
Type(
-#line 672 "cs.ATG"
+#line 675 "cs.ATG"
out type);
Identifier();
-#line 672 "cs.ATG"
+#line 675 "cs.ATG"
p = new ParameterDeclarationExpression(type, t.val, mod); p.StartLocation = start; p.EndLocation = t.Location;
}
void ParameterArray(
-#line 675 "cs.ATG"
+#line 678 "cs.ATG"
out ParameterDeclarationExpression p) {
-#line 676 "cs.ATG"
+#line 679 "cs.ATG"
TypeReference type;
Expect(95);
Type(
-#line 678 "cs.ATG"
+#line 681 "cs.ATG"
out type);
Identifier();
-#line 678 "cs.ATG"
+#line 681 "cs.ATG"
p = new ParameterDeclarationExpression(type, t.val, ParameterModifiers.Params);
}
void AccessorModifiers(
-#line 681 "cs.ATG"
+#line 684 "cs.ATG"
out ModifierList m) {
-#line 682 "cs.ATG"
+#line 685 "cs.ATG"
m = new ModifierList();
if (la.kind == 96) {
lexer.NextToken();
-#line 684 "cs.ATG"
+#line 687 "cs.ATG"
m.Add(Modifiers.Private, t.Location);
} else if (la.kind == 97) {
lexer.NextToken();
-#line 685 "cs.ATG"
+#line 688 "cs.ATG"
m.Add(Modifiers.Protected, t.Location);
if (la.kind == 84) {
lexer.NextToken();
-#line 686 "cs.ATG"
+#line 689 "cs.ATG"
m.Add(Modifiers.Internal, t.Location);
}
} else if (la.kind == 84) {
lexer.NextToken();
-#line 687 "cs.ATG"
+#line 690 "cs.ATG"
m.Add(Modifiers.Internal, t.Location);
if (la.kind == 97) {
lexer.NextToken();
-#line 688 "cs.ATG"
+#line 691 "cs.ATG"
m.Add(Modifiers.Protected, t.Location);
}
} else SynErr(181);
}
void Block(
-#line 1293 "cs.ATG"
+#line 1296 "cs.ATG"
out Statement stmt) {
Expect(16);
-#line 1295 "cs.ATG"
+#line 1298 "cs.ATG"
BlockStatement blockStmt = new BlockStatement();
blockStmt.StartLocation = t.Location;
compilationUnit.BlockStart(blockStmt);
@@ -2686,7 +2688,7 @@ out Statement stmt) {
while (!(la.kind == 0 || la.kind == 17)) {SynErr(182); lexer.NextToken(); }
Expect(17);
-#line 1303 "cs.ATG"
+#line 1306 "cs.ATG"
stmt = blockStmt;
blockStmt.EndLocation = t.EndLocation;
compilationUnit.BlockEnd();
@@ -2694,10 +2696,10 @@ out Statement stmt) {
}
void EventAccessorDecls(
-#line 1230 "cs.ATG"
+#line 1233 "cs.ATG"
out EventAddRegion addBlock, out EventRemoveRegion removeBlock) {
-#line 1231 "cs.ATG"
+#line 1234 "cs.ATG"
AttributeSection section;
List<AttributeSection> attributes = new List<AttributeSection>();
Statement stmt;
@@ -2706,93 +2708,93 @@ out EventAddRegion addBlock, out EventRemoveRegion removeBlock) {
while (la.kind == 18) {
AttributeSection(
-#line 1238 "cs.ATG"
+#line 1241 "cs.ATG"
out section);
-#line 1238 "cs.ATG"
+#line 1241 "cs.ATG"
attributes.Add(section);
}
if (la.kind == 130) {
-#line 1240 "cs.ATG"
+#line 1243 "cs.ATG"
addBlock = new EventAddRegion(attributes);
AddAccessorDecl(
-#line 1241 "cs.ATG"
+#line 1244 "cs.ATG"
out stmt);
-#line 1241 "cs.ATG"
+#line 1244 "cs.ATG"
attributes = new List<AttributeSection>(); addBlock.Block = (BlockStatement)stmt;
while (la.kind == 18) {
AttributeSection(
-#line 1242 "cs.ATG"
+#line 1245 "cs.ATG"
out section);
-#line 1242 "cs.ATG"
+#line 1245 "cs.ATG"
attributes.Add(section);
}
RemoveAccessorDecl(
-#line 1243 "cs.ATG"
+#line 1246 "cs.ATG"
out stmt);
-#line 1243 "cs.ATG"
+#line 1246 "cs.ATG"
removeBlock = new EventRemoveRegion(attributes); removeBlock.Block = (BlockStatement)stmt;
} else if (la.kind == 131) {
RemoveAccessorDecl(
-#line 1245 "cs.ATG"
+#line 1248 "cs.ATG"
out stmt);
-#line 1245 "cs.ATG"
+#line 1248 "cs.ATG"
removeBlock = new EventRemoveRegion(attributes); removeBlock.Block = (BlockStatement)stmt; attributes = new List<AttributeSection>();
while (la.kind == 18) {
AttributeSection(
-#line 1246 "cs.ATG"
+#line 1249 "cs.ATG"
out section);
-#line 1246 "cs.ATG"
+#line 1249 "cs.ATG"
attributes.Add(section);
}
AddAccessorDecl(
-#line 1247 "cs.ATG"
+#line 1250 "cs.ATG"
out stmt);
-#line 1247 "cs.ATG"
+#line 1250 "cs.ATG"
addBlock = new EventAddRegion(attributes); addBlock.Block = (BlockStatement)stmt;
} else SynErr(183);
}
void ConstructorInitializer(
-#line 1323 "cs.ATG"
+#line 1326 "cs.ATG"
out ConstructorInitializer ci) {
-#line 1324 "cs.ATG"
+#line 1327 "cs.ATG"
Expression expr; ci = new ConstructorInitializer();
Expect(9);
if (la.kind == 51) {
lexer.NextToken();
-#line 1328 "cs.ATG"
+#line 1331 "cs.ATG"
ci.ConstructorInitializerType = ConstructorInitializerType.Base;
} else if (la.kind == 111) {
lexer.NextToken();
-#line 1329 "cs.ATG"
+#line 1332 "cs.ATG"
ci.ConstructorInitializerType = ConstructorInitializerType.This;
} else SynErr(184);
Expect(20);
if (StartOf(26)) {
Argument(
-#line 1332 "cs.ATG"
+#line 1335 "cs.ATG"
out expr);
-#line 1332 "cs.ATG"
+#line 1335 "cs.ATG"
SafeAdd(ci, ci.Arguments, expr);
while (la.kind == 14) {
lexer.NextToken();
Argument(
-#line 1333 "cs.ATG"
+#line 1336 "cs.ATG"
out expr);
-#line 1333 "cs.ATG"
+#line 1336 "cs.ATG"
SafeAdd(ci, ci.Arguments, expr);
}
}
@@ -2800,161 +2802,161 @@ out expr);
}
void OverloadableOperator(
-#line 1346 "cs.ATG"
+#line 1349 "cs.ATG"
out OverloadableOperatorType op) {
-#line 1347 "cs.ATG"
+#line 1350 "cs.ATG"
op = OverloadableOperatorType.None;
switch (la.kind) {
case 4: {
lexer.NextToken();
-#line 1349 "cs.ATG"
+#line 1352 "cs.ATG"
op = OverloadableOperatorType.Add;
break;
}
case 5: {
lexer.NextToken();
-#line 1350 "cs.ATG"
+#line 1353 "cs.ATG"
op = OverloadableOperatorType.Subtract;
break;
}
case 24: {
lexer.NextToken();
-#line 1352 "cs.ATG"
+#line 1355 "cs.ATG"
op = OverloadableOperatorType.Not;
break;
}
case 27: {
lexer.NextToken();
-#line 1353 "cs.ATG"
+#line 1356 "cs.ATG"
op = OverloadableOperatorType.BitNot;
break;
}
case 31: {
lexer.NextToken();
-#line 1355 "cs.ATG"
+#line 1358 "cs.ATG"
op = OverloadableOperatorType.Increment;
break;
}
case 32: {
lexer.NextToken();
-#line 1356 "cs.ATG"
+#line 1359 "cs.ATG"
op = OverloadableOperatorType.Decrement;
break;
}
case 113: {
lexer.NextToken();
-#line 1358 "cs.ATG"
+#line 1361 "cs.ATG"
op = OverloadableOperatorType.IsTrue;
break;
}
case 72: {
lexer.NextToken();
-#line 1359 "cs.ATG"
+#line 1362 "cs.ATG"
op = OverloadableOperatorType.IsFalse;
break;
}
case 6: {
lexer.NextToken();
-#line 1361 "cs.ATG"
+#line 1364 "cs.ATG"
op = OverloadableOperatorType.Multiply;
break;
}
case 7: {
lexer.NextToken();
-#line 1362 "cs.ATG"
+#line 1365 "cs.ATG"
op = OverloadableOperatorType.Divide;
break;
}
case 8: {
lexer.NextToken();
-#line 1363 "cs.ATG"
+#line 1366 "cs.ATG"
op = OverloadableOperatorType.Modulus;
break;
}
case 28: {
lexer.NextToken();
-#line 1365 "cs.ATG"
+#line 1368 "cs.ATG"
op = OverloadableOperatorType.BitwiseAnd;
break;
}
case 29: {
lexer.NextToken();
-#line 1366 "cs.ATG"
+#line 1369 "cs.ATG"
op = OverloadableOperatorType.BitwiseOr;
break;
}
case 30: {
lexer.NextToken();
-#line 1367 "cs.ATG"
+#line 1370 "cs.ATG"
op = OverloadableOperatorType.ExclusiveOr;
break;
}
case 37: {
lexer.NextToken();
-#line 1369 "cs.ATG"
+#line 1372 "cs.ATG"
op = OverloadableOperatorType.ShiftLeft;
break;
}
case 33: {
lexer.NextToken();
-#line 1370 "cs.ATG"
+#line 1373 "cs.ATG"
op = OverloadableOperatorType.Equality;
break;
}
case 34: {
lexer.NextToken();
-#line 1371 "cs.ATG"
+#line 1374 "cs.ATG"
op = OverloadableOperatorType.InEquality;
break;
}
case 23: {
lexer.NextToken();
-#line 1372 "cs.ATG"
+#line 1375 "cs.ATG"
op = OverloadableOperatorType.LessThan;
break;
}
case 35: {
lexer.NextToken();
-#line 1373 "cs.ATG"
+#line 1376 "cs.ATG"
op = OverloadableOperatorType.GreaterThanOrEqual;
break;
}
case 36: {
lexer.NextToken();
-#line 1374 "cs.ATG"
+#line 1377 "cs.ATG"
op = OverloadableOperatorType.LessThanOrEqual;
break;
}
case 22: {
lexer.NextToken();
-#line 1375 "cs.ATG"
+#line 1378 "cs.ATG"
op = OverloadableOperatorType.GreaterThan;
if (la.kind == 22) {
lexer.NextToken();
-#line 1375 "cs.ATG"
+#line 1378 "cs.ATG"
op = OverloadableOperatorType.ShiftRight;
}
break;
@@ -2964,34 +2966,34 @@ out OverloadableOperatorType op) {
}
void VariableDeclarator(
-#line 1285 "cs.ATG"
+#line 1288 "cs.ATG"
FieldDeclaration parentFieldDeclaration) {
-#line 1286 "cs.ATG"
+#line 1289 "cs.ATG"
Expression expr = null;
Identifier();
-#line 1288 "cs.ATG"
+#line 1291 "cs.ATG"
VariableDeclaration f = new VariableDeclaration(t.val); f.StartLocation = t.Location;
if (la.kind == 3) {
lexer.NextToken();
VariableInitializer(
-#line 1289 "cs.ATG"
+#line 1292 "cs.ATG"
out expr);
-#line 1289 "cs.ATG"
+#line 1292 "cs.ATG"
f.Initializer = expr;
}
-#line 1290 "cs.ATG"
+#line 1293 "cs.ATG"
f.EndLocation = t.EndLocation; SafeAdd(parentFieldDeclaration, parentFieldDeclaration.Fields, f);
}
void AccessorDecls(
-#line 1177 "cs.ATG"
+#line 1180 "cs.ATG"
out PropertyGetRegion getBlock, out PropertySetRegion setBlock) {
-#line 1179 "cs.ATG"
+#line 1182 "cs.ATG"
List<AttributeSection> attributes = new List<AttributeSection>();
AttributeSection section;
getBlock = null;
@@ -3000,92 +3002,92 @@ out PropertyGetRegion getBlock, out PropertySetRegion setBlock) {
while (la.kind == 18) {
AttributeSection(
-#line 1186 "cs.ATG"
+#line 1189 "cs.ATG"
out section);
-#line 1186 "cs.ATG"
+#line 1189 "cs.ATG"
attributes.Add(section);
}
if (la.kind == 84 || la.kind == 96 || la.kind == 97) {
AccessorModifiers(
-#line 1187 "cs.ATG"
+#line 1190 "cs.ATG"
out modifiers);
}
if (la.kind == 128) {
GetAccessorDecl(
-#line 1189 "cs.ATG"
+#line 1192 "cs.ATG"
out getBlock, attributes);
-#line 1190 "cs.ATG"
+#line 1193 "cs.ATG"
if (modifiers != null) {getBlock.Modifier = modifiers.Modifier; }
if (StartOf(27)) {
-#line 1191 "cs.ATG"
+#line 1194 "cs.ATG"
attributes = new List<AttributeSection>(); modifiers = null;
while (la.kind == 18) {
AttributeSection(
-#line 1192 "cs.ATG"
+#line 1195 "cs.ATG"
out section);
-#line 1192 "cs.ATG"
+#line 1195 "cs.ATG"
attributes.Add(section);
}
if (la.kind == 84 || la.kind == 96 || la.kind == 97) {
AccessorModifiers(
-#line 1193 "cs.ATG"
+#line 1196 "cs.ATG"
out modifiers);
}
SetAccessorDecl(
-#line 1194 "cs.ATG"
+#line 1197 "cs.ATG"
out setBlock, attributes);
-#line 1195 "cs.ATG"
+#line 1198 "cs.ATG"
if (modifiers != null) {setBlock.Modifier = modifiers.Modifier; }
}
} else if (la.kind == 129) {
SetAccessorDecl(
-#line 1198 "cs.ATG"
+#line 1201 "cs.ATG"
out setBlock, attributes);
-#line 1199 "cs.ATG"
+#line 1202 "cs.ATG"
if (modifiers != null) {setBlock.Modifier = modifiers.Modifier; }
if (StartOf(28)) {
-#line 1200 "cs.ATG"
+#line 1203 "cs.ATG"
attributes = new List<AttributeSection>(); modifiers = null;
while (la.kind == 18) {
AttributeSection(
-#line 1201 "cs.ATG"
+#line 1204 "cs.ATG"
out section);
-#line 1201 "cs.ATG"
+#line 1204 "cs.ATG"
attributes.Add(section);
}
if (la.kind == 84 || la.kind == 96 || la.kind == 97) {
AccessorModifiers(
-#line 1202 "cs.ATG"
+#line 1205 "cs.ATG"
out modifiers);
}
GetAccessorDecl(
-#line 1203 "cs.ATG"
+#line 1206 "cs.ATG"
out getBlock, attributes);
-#line 1204 "cs.ATG"
+#line 1207 "cs.ATG"
if (modifiers != null) {getBlock.Modifier = modifiers.Modifier; }
}
} else if (StartOf(19)) {
Identifier();
-#line 1206 "cs.ATG"
+#line 1209 "cs.ATG"
Error("get or set accessor declaration expected");
} else SynErr(186);
}
void InterfaceAccessors(
-#line 1251 "cs.ATG"
+#line 1254 "cs.ATG"
out PropertyGetRegion getBlock, out PropertySetRegion setBlock) {
-#line 1253 "cs.ATG"
+#line 1256 "cs.ATG"
AttributeSection section;
List<AttributeSection> attributes = new List<AttributeSection>();
getBlock = null; setBlock = null;
@@ -3093,173 +3095,173 @@ out PropertyGetRegion getBlock, out PropertySetRegion setBlock) {
while (la.kind == 18) {
AttributeSection(
-#line 1259 "cs.ATG"
+#line 1262 "cs.ATG"
out section);
-#line 1259 "cs.ATG"
+#line 1262 "cs.ATG"
attributes.Add(section);
}
-#line 1260 "cs.ATG"
+#line 1263 "cs.ATG"
Location startLocation = la.Location;
if (la.kind == 128) {
lexer.NextToken();
-#line 1262 "cs.ATG"
+#line 1265 "cs.ATG"
getBlock = new PropertyGetRegion(null, attributes);
} else if (la.kind == 129) {
lexer.NextToken();
-#line 1263 "cs.ATG"
+#line 1266 "cs.ATG"
setBlock = new PropertySetRegion(null, attributes);
} else SynErr(187);
Expect(11);
-#line 1266 "cs.ATG"
+#line 1269 "cs.ATG"
if (getBlock != null) { getBlock.StartLocation = startLocation; getBlock.EndLocation = t.EndLocation; }
if (setBlock != null) { setBlock.StartLocation = startLocation; setBlock.EndLocation = t.EndLocation; }
attributes = new List<AttributeSection>();
if (la.kind == 18 || la.kind == 128 || la.kind == 129) {
while (la.kind == 18) {
AttributeSection(
-#line 1270 "cs.ATG"
+#line 1273 "cs.ATG"
out section);
-#line 1270 "cs.ATG"
+#line 1273 "cs.ATG"
attributes.Add(section);
}
-#line 1271 "cs.ATG"
+#line 1274 "cs.ATG"
startLocation = la.Location;
if (la.kind == 128) {
lexer.NextToken();
-#line 1273 "cs.ATG"
+#line 1276 "cs.ATG"
if (getBlock != null) Error("get already declared");
else { getBlock = new PropertyGetRegion(null, attributes); lastBlock = getBlock; }
} else if (la.kind == 129) {
lexer.NextToken();
-#line 1276 "cs.ATG"
+#line 1279 "cs.ATG"
if (setBlock != null) Error("set already declared");
else { setBlock = new PropertySetRegion(null, attributes); lastBlock = setBlock; }
} else SynErr(188);
Expect(11);
-#line 1281 "cs.ATG"
+#line 1284 "cs.ATG"
if (lastBlock != null) { lastBlock.StartLocation = startLocation; lastBlock.EndLocation = t.EndLocation; }
}
}
void GetAccessorDecl(
-#line 1210 "cs.ATG"
+#line 1213 "cs.ATG"
out PropertyGetRegion getBlock, List<AttributeSection> attributes) {
-#line 1211 "cs.ATG"
+#line 1214 "cs.ATG"
Statement stmt = null;
Expect(128);
-#line 1214 "cs.ATG"
+#line 1217 "cs.ATG"
Location startLocation = t.Location;
if (la.kind == 16) {
Block(
-#line 1215 "cs.ATG"
+#line 1218 "cs.ATG"
out stmt);
} else if (la.kind == 11) {
lexer.NextToken();
} else SynErr(189);
-#line 1216 "cs.ATG"
+#line 1219 "cs.ATG"
getBlock = new PropertyGetRegion((BlockStatement)stmt, attributes);
-#line 1217 "cs.ATG"
+#line 1220 "cs.ATG"
getBlock.StartLocation = startLocation; getBlock.EndLocation = t.EndLocation;
}
void SetAccessorDecl(
-#line 1220 "cs.ATG"
+#line 1223 "cs.ATG"
out PropertySetRegion setBlock, List<AttributeSection> attributes) {
-#line 1221 "cs.ATG"
+#line 1224 "cs.ATG"
Statement stmt = null;
Expect(129);
-#line 1224 "cs.ATG"
+#line 1227 "cs.ATG"
Location startLocation = t.Location;
if (la.kind == 16) {
Block(
-#line 1225 "cs.ATG"
+#line 1228 "cs.ATG"
out stmt);
} else if (la.kind == 11) {
lexer.NextToken();
} else SynErr(190);
-#line 1226 "cs.ATG"
+#line 1229 "cs.ATG"
setBlock = new PropertySetRegion((BlockStatement)stmt, attributes);
-#line 1227 "cs.ATG"
+#line 1230 "cs.ATG"
setBlock.StartLocation = startLocation; setBlock.EndLocation = t.EndLocation;
}
void AddAccessorDecl(
-#line 1309 "cs.ATG"
+#line 1312 "cs.ATG"
out Statement stmt) {
-#line 1310 "cs.ATG"
+#line 1313 "cs.ATG"
stmt = null;
Expect(130);
Block(
-#line 1313 "cs.ATG"
+#line 1316 "cs.ATG"
out stmt);
}
void RemoveAccessorDecl(
-#line 1316 "cs.ATG"
+#line 1319 "cs.ATG"
out Statement stmt) {
-#line 1317 "cs.ATG"
+#line 1320 "cs.ATG"
stmt = null;
Expect(131);
Block(
-#line 1320 "cs.ATG"
+#line 1323 "cs.ATG"
out stmt);
}
void VariableInitializer(
-#line 1338 "cs.ATG"
+#line 1341 "cs.ATG"
out Expression initializerExpression) {
-#line 1339 "cs.ATG"
+#line 1342 "cs.ATG"
TypeReference type = null; Expression expr = null; initializerExpression = null;
if (StartOf(6)) {
Expr(
-#line 1341 "cs.ATG"
+#line 1344 "cs.ATG"
out initializerExpression);
} else if (la.kind == 16) {
CollectionInitializer(
-#line 1342 "cs.ATG"
+#line 1345 "cs.ATG"
out initializerExpression);
} else if (la.kind == 106) {
lexer.NextToken();
Type(
-#line 1343 "cs.ATG"
+#line 1346 "cs.ATG"
out type);
Expect(18);
Expr(
-#line 1343 "cs.ATG"
+#line 1346 "cs.ATG"
out expr);
Expect(19);
-#line 1343 "cs.ATG"
+#line 1346 "cs.ATG"
initializerExpression = new StackAllocExpression(type, expr);
} else SynErr(191);
}
void Statement() {
-#line 1486 "cs.ATG"
+#line 1489 "cs.ATG"
TypeReference type;
Expression expr;
Statement stmt = null;
@@ -3267,32 +3269,32 @@ out expr);
while (!(StartOf(29))) {SynErr(192); lexer.NextToken(); }
if (
-#line 1495 "cs.ATG"
+#line 1498 "cs.ATG"
IsLabel()) {
Identifier();
-#line 1495 "cs.ATG"
+#line 1498 "cs.ATG"
compilationUnit.AddChild(new LabelStatement(t.val));
Expect(9);
Statement();
} else if (la.kind == 60) {
lexer.NextToken();
Type(
-#line 1498 "cs.ATG"
+#line 1501 "cs.ATG"
out type);
-#line 1498 "cs.ATG"
+#line 1501 "cs.ATG"
LocalVariableDeclaration var = new LocalVariableDeclaration(type, Modifiers.Const); string ident = null; var.StartLocation = t.Location;
Identifier();
-#line 1499 "cs.ATG"
+#line 1502 "cs.ATG"
ident = t.val; Location varStart = t.Location;
Expect(3);
Expr(
-#line 1500 "cs.ATG"
+#line 1503 "cs.ATG"
out expr);
-#line 1502 "cs.ATG"
+#line 1505 "cs.ATG"
SafeAdd(var, var.Variables, new VariableDeclaration(ident, expr) {
StartLocation = varStart,
EndLocation = t.EndLocation,
@@ -3303,14 +3305,14 @@ out expr);
lexer.NextToken();
Identifier();
-#line 1508 "cs.ATG"
+#line 1511 "cs.ATG"
ident = t.val;
Expect(3);
Expr(
-#line 1508 "cs.ATG"
+#line 1511 "cs.ATG"
out expr);
-#line 1510 "cs.ATG"
+#line 1513 "cs.ATG"
SafeAdd(var, var.Variables, new VariableDeclaration(ident, expr) {
StartLocation = varStart,
EndLocation = t.EndLocation,
@@ -3320,28 +3322,28 @@ out expr);
}
Expect(11);
-#line 1516 "cs.ATG"
+#line 1519 "cs.ATG"
var.EndLocation = t.EndLocation; compilationUnit.AddChild(var);
} else if (
-#line 1519 "cs.ATG"
+#line 1522 "cs.ATG"
IsLocalVarDecl()) {
LocalVariableDecl(
-#line 1519 "cs.ATG"
+#line 1522 "cs.ATG"
out stmt);
Expect(11);
-#line 1519 "cs.ATG"
+#line 1522 "cs.ATG"
compilationUnit.AddChild(stmt);
} else if (StartOf(30)) {
EmbeddedStatement(
-#line 1521 "cs.ATG"
+#line 1524 "cs.ATG"
out stmt);
-#line 1521 "cs.ATG"
+#line 1524 "cs.ATG"
compilationUnit.AddChild(stmt);
} else SynErr(193);
-#line 1527 "cs.ATG"
+#line 1530 "cs.ATG"
if (stmt != null) {
stmt.StartLocation = startPos;
stmt.EndLocation = t.EndLocation;
@@ -3350,10 +3352,10 @@ out stmt);
}
void Argument(
-#line 1378 "cs.ATG"
+#line 1381 "cs.ATG"
out Expression argumentexpr) {
-#line 1380 "cs.ATG"
+#line 1383 "cs.ATG"
Expression expr;
FieldDirection fd = FieldDirection.None;
@@ -3361,51 +3363,51 @@ out Expression argumentexpr) {
if (la.kind == 100) {
lexer.NextToken();
-#line 1385 "cs.ATG"
+#line 1388 "cs.ATG"
fd = FieldDirection.Ref;
} else {
lexer.NextToken();
-#line 1386 "cs.ATG"
+#line 1389 "cs.ATG"
fd = FieldDirection.Out;
}
}
Expr(
-#line 1388 "cs.ATG"
+#line 1391 "cs.ATG"
out expr);
-#line 1389 "cs.ATG"
+#line 1392 "cs.ATG"
argumentexpr = fd != FieldDirection.None ? argumentexpr = new DirectionExpression(fd, expr) : expr;
}
void CollectionInitializer(
-#line 1409 "cs.ATG"
+#line 1412 "cs.ATG"
out Expression outExpr) {
-#line 1411 "cs.ATG"
+#line 1414 "cs.ATG"
Expression expr = null;
CollectionInitializerExpression initializer = new CollectionInitializerExpression();
Expect(16);
-#line 1415 "cs.ATG"
+#line 1418 "cs.ATG"
initializer.StartLocation = t.Location;
if (StartOf(31)) {
VariableInitializer(
-#line 1416 "cs.ATG"
+#line 1419 "cs.ATG"
out expr);
-#line 1417 "cs.ATG"
+#line 1420 "cs.ATG"
SafeAdd(initializer, initializer.CreateExpressions, expr);
while (
-#line 1418 "cs.ATG"
+#line 1421 "cs.ATG"
NotFinalComma()) {
Expect(14);
VariableInitializer(
-#line 1419 "cs.ATG"
+#line 1422 "cs.ATG"
out expr);
-#line 1420 "cs.ATG"
+#line 1423 "cs.ATG"
SafeAdd(initializer, initializer.CreateExpressions, expr);
}
if (la.kind == 14) {
@@ -3414,105 +3416,105 @@ out expr);
}
Expect(17);
-#line 1424 "cs.ATG"
+#line 1427 "cs.ATG"
initializer.EndLocation = t.Location; outExpr = initializer;
}
void AssignmentOperator(
-#line 1392 "cs.ATG"
+#line 1395 "cs.ATG"
out AssignmentOperatorType op) {
-#line 1393 "cs.ATG"
+#line 1396 "cs.ATG"
op = AssignmentOperatorType.None;
if (la.kind == 3) {
lexer.NextToken();
-#line 1395 "cs.ATG"
+#line 1398 "cs.ATG"
op = AssignmentOperatorType.Assign;
} else if (la.kind == 38) {
lexer.NextToken();
-#line 1396 "cs.ATG"
+#line 1399 "cs.ATG"
op = AssignmentOperatorType.Add;
} else if (la.kind == 39) {
lexer.NextToken();
-#line 1397 "cs.ATG"
+#line 1400 "cs.ATG"
op = AssignmentOperatorType.Subtract;
} else if (la.kind == 40) {
lexer.NextToken();
-#line 1398 "cs.ATG"
+#line 1401 "cs.ATG"
op = AssignmentOperatorType.Multiply;
} else if (la.kind == 41) {
lexer.NextToken();
-#line 1399 "cs.ATG"
+#line 1402 "cs.ATG"
op = AssignmentOperatorType.Divide;
} else if (la.kind == 42) {
lexer.NextToken();
-#line 1400 "cs.ATG"
+#line 1403 "cs.ATG"
op = AssignmentOperatorType.Modulus;
} else if (la.kind == 43) {
lexer.NextToken();
-#line 1401 "cs.ATG"
+#line 1404 "cs.ATG"
op = AssignmentOperatorType.BitwiseAnd;
} else if (la.kind == 44) {
lexer.NextToken();
-#line 1402 "cs.ATG"
+#line 1405 "cs.ATG"
op = AssignmentOperatorType.BitwiseOr;
} else if (la.kind == 45) {
lexer.NextToken();
-#line 1403 "cs.ATG"
+#line 1406 "cs.ATG"
op = AssignmentOperatorType.ExclusiveOr;
} else if (la.kind == 46) {
lexer.NextToken();
-#line 1404 "cs.ATG"
+#line 1407 "cs.ATG"
op = AssignmentOperatorType.ShiftLeft;
} else if (
-#line 1405 "cs.ATG"
+#line 1408 "cs.ATG"
la.kind == Tokens.GreaterThan && Peek(1).kind == Tokens.GreaterEqual) {
Expect(22);
Expect(35);
-#line 1406 "cs.ATG"
+#line 1409 "cs.ATG"
op = AssignmentOperatorType.ShiftRight;
} else SynErr(194);
}
void CollectionOrObjectInitializer(
-#line 1427 "cs.ATG"
+#line 1430 "cs.ATG"
out Expression outExpr) {
-#line 1429 "cs.ATG"
+#line 1432 "cs.ATG"
Expression expr = null;
CollectionInitializerExpression initializer = new CollectionInitializerExpression();
Expect(16);
-#line 1433 "cs.ATG"
+#line 1436 "cs.ATG"
initializer.StartLocation = t.Location;
if (StartOf(31)) {
ObjectPropertyInitializerOrVariableInitializer(
-#line 1434 "cs.ATG"
+#line 1437 "cs.ATG"
out expr);
-#line 1435 "cs.ATG"
+#line 1438 "cs.ATG"
SafeAdd(initializer, initializer.CreateExpressions, expr);
while (
-#line 1436 "cs.ATG"
+#line 1439 "cs.ATG"
NotFinalComma()) {
Expect(14);
ObjectPropertyInitializerOrVariableInitializer(
-#line 1437 "cs.ATG"
+#line 1440 "cs.ATG"
out expr);
-#line 1438 "cs.ATG"
+#line 1441 "cs.ATG"
SafeAdd(initializer, initializer.CreateExpressions, expr);
}
if (la.kind == 14) {
@@ -3521,280 +3523,280 @@ out expr);
}
Expect(17);
-#line 1442 "cs.ATG"
+#line 1445 "cs.ATG"
initializer.EndLocation = t.Location; outExpr = initializer;
}
void ObjectPropertyInitializerOrVariableInitializer(
-#line 1445 "cs.ATG"
+#line 1448 "cs.ATG"
out Expression expr) {
-#line 1446 "cs.ATG"
+#line 1449 "cs.ATG"
expr = null;
if (
-#line 1448 "cs.ATG"
+#line 1451 "cs.ATG"
IdentAndAsgn()) {
Identifier();
-#line 1450 "cs.ATG"
+#line 1453 "cs.ATG"
NamedArgumentExpression nae = new NamedArgumentExpression(t.val, null);
nae.StartLocation = t.Location;
Expression r = null;
Expect(3);
if (la.kind == 16) {
CollectionOrObjectInitializer(
-#line 1454 "cs.ATG"
+#line 1457 "cs.ATG"
out r);
} else if (StartOf(31)) {
VariableInitializer(
-#line 1455 "cs.ATG"
+#line 1458 "cs.ATG"
out r);
} else SynErr(195);
-#line 1456 "cs.ATG"
+#line 1459 "cs.ATG"
nae.Expression = r; nae.EndLocation = t.EndLocation; expr = nae;
} else if (StartOf(31)) {
VariableInitializer(
-#line 1458 "cs.ATG"
+#line 1461 "cs.ATG"
out expr);
} else SynErr(196);
}
void LocalVariableDecl(
-#line 1462 "cs.ATG"
+#line 1465 "cs.ATG"
out Statement stmt) {
-#line 1464 "cs.ATG"
+#line 1467 "cs.ATG"
TypeReference type;
VariableDeclaration var = null;
LocalVariableDeclaration localVariableDeclaration;
Location startPos = la.Location;
Type(
-#line 1470 "cs.ATG"
+#line 1473 "cs.ATG"
out type);
-#line 1470 "cs.ATG"
+#line 1473 "cs.ATG"
localVariableDeclaration = new LocalVariableDeclaration(type); localVariableDeclaration.StartLocation = startPos;
LocalVariableDeclarator(
-#line 1471 "cs.ATG"
+#line 1474 "cs.ATG"
out var);
-#line 1471 "cs.ATG"
+#line 1474 "cs.ATG"
SafeAdd(localVariableDeclaration, localVariableDeclaration.Variables, var);
while (la.kind == 14) {
lexer.NextToken();
LocalVariableDeclarator(
-#line 1472 "cs.ATG"
+#line 1475 "cs.ATG"
out var);
-#line 1472 "cs.ATG"
+#line 1475 "cs.ATG"
SafeAdd(localVariableDeclaration, localVariableDeclaration.Variables, var);
}
-#line 1473 "cs.ATG"
+#line 1476 "cs.ATG"
stmt = localVariableDeclaration; stmt.EndLocation = t.EndLocation;
}
void LocalVariableDeclarator(
-#line 1476 "cs.ATG"
+#line 1479 "cs.ATG"
out VariableDeclaration var) {
-#line 1477 "cs.ATG"
+#line 1480 "cs.ATG"
Expression expr = null;
Identifier();
-#line 1479 "cs.ATG"
+#line 1482 "cs.ATG"
var = new VariableDeclaration(t.val); var.StartLocation = t.Location;
if (la.kind == 3) {
lexer.NextToken();
VariableInitializer(
-#line 1480 "cs.ATG"
+#line 1483 "cs.ATG"
out expr);
-#line 1480 "cs.ATG"
+#line 1483 "cs.ATG"
var.Initializer = expr;
}
-#line 1481 "cs.ATG"
+#line 1484 "cs.ATG"
var.EndLocation = t.EndLocation;
}
void EmbeddedStatement(
-#line 1534 "cs.ATG"
+#line 1537 "cs.ATG"
out Statement statement) {
-#line 1536 "cs.ATG"
+#line 1539 "cs.ATG"
TypeReference type = null;
Expression expr = null;
Statement embeddedStatement = null;
statement = null;
-#line 1542 "cs.ATG"
+#line 1545 "cs.ATG"
Location startLocation = la.Location;
if (la.kind == 16) {
Block(
-#line 1544 "cs.ATG"
+#line 1547 "cs.ATG"
out statement);
} else if (la.kind == 11) {
lexer.NextToken();
-#line 1547 "cs.ATG"
+#line 1550 "cs.ATG"
statement = new EmptyStatement();
} else if (
-#line 1550 "cs.ATG"
+#line 1553 "cs.ATG"
UnCheckedAndLBrace()) {
-#line 1550 "cs.ATG"
+#line 1553 "cs.ATG"
Statement block; bool isChecked = true;
if (la.kind == 58) {
lexer.NextToken();
} else if (la.kind == 118) {
lexer.NextToken();
-#line 1551 "cs.ATG"
+#line 1554 "cs.ATG"
isChecked = false;
} else SynErr(197);
Block(
-#line 1552 "cs.ATG"
+#line 1555 "cs.ATG"
out block);
-#line 1552 "cs.ATG"
+#line 1555 "cs.ATG"
statement = isChecked ? (Statement)new CheckedStatement(block) : (Statement)new UncheckedStatement(block);
} else if (la.kind == 79) {
IfStatement(
-#line 1555 "cs.ATG"
+#line 1558 "cs.ATG"
out statement);
} else if (la.kind == 110) {
lexer.NextToken();
-#line 1557 "cs.ATG"
+#line 1560 "cs.ATG"
List<SwitchSection> switchSections = new List<SwitchSection>();
Expect(20);
Expr(
-#line 1558 "cs.ATG"
+#line 1561 "cs.ATG"
out expr);
Expect(21);
Expect(16);
SwitchSections(
-#line 1559 "cs.ATG"
+#line 1562 "cs.ATG"
switchSections);
Expect(17);
-#line 1561 "cs.ATG"
+#line 1564 "cs.ATG"
statement = new SwitchStatement(expr, switchSections);
} else if (la.kind == 125) {
lexer.NextToken();
Expect(20);
Expr(
-#line 1564 "cs.ATG"
+#line 1567 "cs.ATG"
out expr);
Expect(21);
EmbeddedStatement(
-#line 1565 "cs.ATG"
+#line 1568 "cs.ATG"
out embeddedStatement);
-#line 1566 "cs.ATG"
+#line 1569 "cs.ATG"
statement = new DoLoopStatement(expr, embeddedStatement, ConditionType.While, ConditionPosition.Start);
} else if (la.kind == 65) {
lexer.NextToken();
EmbeddedStatement(
-#line 1568 "cs.ATG"
+#line 1571 "cs.ATG"
out embeddedStatement);
Expect(125);
Expect(20);
Expr(
-#line 1569 "cs.ATG"
+#line 1572 "cs.ATG"
out expr);
Expect(21);
Expect(11);
-#line 1570 "cs.ATG"
+#line 1573 "cs.ATG"
statement = new DoLoopStatement(expr, embeddedStatement, ConditionType.While, ConditionPosition.End);
} else if (la.kind == 76) {
lexer.NextToken();
-#line 1572 "cs.ATG"
+#line 1575 "cs.ATG"
List<Statement> initializer = null; List<Statement> iterator = null;
Expect(20);
if (StartOf(6)) {
ForInitializer(
-#line 1573 "cs.ATG"
+#line 1576 "cs.ATG"
out initializer);
}
Expect(11);
if (StartOf(6)) {
Expr(
-#line 1574 "cs.ATG"
+#line 1577 "cs.ATG"
out expr);
}
Expect(11);
if (StartOf(6)) {
ForIterator(
-#line 1575 "cs.ATG"
+#line 1578 "cs.ATG"
out iterator);
}
Expect(21);
EmbeddedStatement(
-#line 1576 "cs.ATG"
+#line 1579 "cs.ATG"
out embeddedStatement);
-#line 1577 "cs.ATG"
+#line 1580 "cs.ATG"
statement = new ForStatement(initializer, expr, iterator, embeddedStatement);
} else if (la.kind == 77) {
lexer.NextToken();
Expect(20);
Type(
-#line 1579 "cs.ATG"
+#line 1582 "cs.ATG"
out type);
Identifier();
-#line 1579 "cs.ATG"
+#line 1582 "cs.ATG"
string varName = t.val;
Expect(81);
Expr(
-#line 1580 "cs.ATG"
+#line 1583 "cs.ATG"
out expr);
Expect(21);
EmbeddedStatement(
-#line 1581 "cs.ATG"
+#line 1584 "cs.ATG"
out embeddedStatement);
-#line 1582 "cs.ATG"
+#line 1585 "cs.ATG"
statement = new ForeachStatement(type, varName , expr, embeddedStatement);
} else if (la.kind == 53) {
lexer.NextToken();
Expect(11);
-#line 1585 "cs.ATG"
+#line 1588 "cs.ATG"
statement = new BreakStatement();
} else if (la.kind == 61) {
lexer.NextToken();
Expect(11);
-#line 1586 "cs.ATG"
+#line 1589 "cs.ATG"
statement = new ContinueStatement();
} else if (la.kind == 78) {
GotoStatement(
-#line 1587 "cs.ATG"
+#line 1590 "cs.ATG"
out statement);
} else if (
-#line 1589 "cs.ATG"
+#line 1592 "cs.ATG"
IsYieldStatement()) {
Expect(132);
if (la.kind == 101) {
lexer.NextToken();
Expr(
-#line 1590 "cs.ATG"
+#line 1593 "cs.ATG"
out expr);
-#line 1590 "cs.ATG"
+#line 1593 "cs.ATG"
statement = new YieldStatement(new ReturnStatement(expr));
} else if (la.kind == 53) {
lexer.NextToken();
-#line 1591 "cs.ATG"
+#line 1594 "cs.ATG"
statement = new YieldStatement(new BreakStatement());
} else SynErr(198);
Expect(11);
@@ -3802,90 +3804,90 @@ out expr);
lexer.NextToken();
if (StartOf(6)) {
Expr(
-#line 1594 "cs.ATG"
+#line 1597 "cs.ATG"
out expr);
}
Expect(11);
-#line 1594 "cs.ATG"
+#line 1597 "cs.ATG"
statement = new ReturnStatement(expr);
} else if (la.kind == 112) {
lexer.NextToken();
if (StartOf(6)) {
Expr(
-#line 1595 "cs.ATG"
+#line 1598 "cs.ATG"
out expr);
}
Expect(11);
-#line 1595 "cs.ATG"
+#line 1598 "cs.ATG"
statement = new ThrowStatement(expr);
} else if (StartOf(6)) {
StatementExpr(
-#line 1598 "cs.ATG"
+#line 1601 "cs.ATG"
out statement);
while (!(la.kind == 0 || la.kind == 11)) {SynErr(199); lexer.NextToken(); }
Expect(11);
} else if (la.kind == 114) {
TryStatement(
-#line 1601 "cs.ATG"
+#line 1604 "cs.ATG"
out statement);
} else if (la.kind == 86) {
lexer.NextToken();
Expect(20);
Expr(
-#line 1604 "cs.ATG"
+#line 1607 "cs.ATG"
out expr);
Expect(21);
EmbeddedStatement(
-#line 1605 "cs.ATG"
+#line 1608 "cs.ATG"
out embeddedStatement);
-#line 1605 "cs.ATG"
+#line 1608 "cs.ATG"
statement = new LockStatement(expr, embeddedStatement);
} else if (la.kind == 121) {
-#line 1608 "cs.ATG"
+#line 1611 "cs.ATG"
Statement resourceAcquisitionStmt = null;
lexer.NextToken();
Expect(20);
ResourceAcquisition(
-#line 1610 "cs.ATG"
+#line 1613 "cs.ATG"
out resourceAcquisitionStmt);
Expect(21);
EmbeddedStatement(
-#line 1611 "cs.ATG"
+#line 1614 "cs.ATG"
out embeddedStatement);
-#line 1611 "cs.ATG"
+#line 1614 "cs.ATG"
statement = new UsingStatement(resourceAcquisitionStmt, embeddedStatement);
} else if (la.kind == 119) {
lexer.NextToken();
Block(
-#line 1614 "cs.ATG"
+#line 1617 "cs.ATG"
out embeddedStatement);
-#line 1614 "cs.ATG"
+#line 1617 "cs.ATG"
statement = new UnsafeStatement(embeddedStatement);
} else if (la.kind == 74) {
-#line 1616 "cs.ATG"
+#line 1619 "cs.ATG"
Statement pointerDeclarationStmt = null;
lexer.NextToken();
Expect(20);
ResourceAcquisition(
-#line 1618 "cs.ATG"
+#line 1621 "cs.ATG"
out pointerDeclarationStmt);
Expect(21);
EmbeddedStatement(
-#line 1619 "cs.ATG"
+#line 1622 "cs.ATG"
out embeddedStatement);
-#line 1619 "cs.ATG"
+#line 1622 "cs.ATG"
statement = new FixedStatement(pointerDeclarationStmt, embeddedStatement);
} else SynErr(200);
-#line 1621 "cs.ATG"
+#line 1624 "cs.ATG"
if (statement != null) {
statement.StartLocation = startLocation;
statement.EndLocation = t.EndLocation;
@@ -3894,10 +3896,10 @@ out embeddedStatement);
}
void IfStatement(
-#line 1628 "cs.ATG"
+#line 1631 "cs.ATG"
out Statement statement) {
-#line 1630 "cs.ATG"
+#line 1633 "cs.ATG"
Expression expr = null;
Statement embeddedStatement = null;
statement = null;
@@ -3905,26 +3907,26 @@ out Statement statement) {
Expect(79);
Expect(20);
Expr(
-#line 1636 "cs.ATG"
+#line 1639 "cs.ATG"
out expr);
Expect(21);
EmbeddedStatement(
-#line 1637 "cs.ATG"
+#line 1640 "cs.ATG"
out embeddedStatement);
-#line 1638 "cs.ATG"
+#line 1641 "cs.ATG"
Statement elseStatement = null;
if (la.kind == 67) {
lexer.NextToken();
EmbeddedStatement(
-#line 1639 "cs.ATG"
+#line 1642 "cs.ATG"
out elseStatement);
}
-#line 1640 "cs.ATG"
+#line 1643 "cs.ATG"
statement = elseStatement != null ? new IfElseStatement(expr, embeddedStatement, elseStatement) : new IfElseStatement(expr, embeddedStatement);
-#line 1641 "cs.ATG"
+#line 1644 "cs.ATG"
if (elseStatement is IfElseStatement && (elseStatement as IfElseStatement).TrueStatement.Count == 1) {
/* else if-section (otherwise we would have a BlockStatment) */
(statement as IfElseStatement).ElseIfSections.Add(
@@ -3937,29 +3939,29 @@ out elseStatement);
}
void SwitchSections(
-#line 1671 "cs.ATG"
+#line 1674 "cs.ATG"
List<SwitchSection> switchSections) {
-#line 1673 "cs.ATG"
+#line 1676 "cs.ATG"
SwitchSection switchSection = new SwitchSection();
CaseLabel label;
SwitchLabel(
-#line 1677 "cs.ATG"
+#line 1680 "cs.ATG"
out label);
-#line 1677 "cs.ATG"
+#line 1680 "cs.ATG"
SafeAdd(switchSection, switchSection.SwitchLabels, label);
-#line 1678 "cs.ATG"
+#line 1681 "cs.ATG"
compilationUnit.BlockStart(switchSection);
while (StartOf(32)) {
if (la.kind == 55 || la.kind == 63) {
SwitchLabel(
-#line 1680 "cs.ATG"
+#line 1683 "cs.ATG"
out label);
-#line 1681 "cs.ATG"
+#line 1684 "cs.ATG"
if (label != null) {
if (switchSection.Children.Count > 0) {
// open new section
@@ -3975,145 +3977,145 @@ out label);
}
}
-#line 1693 "cs.ATG"
+#line 1696 "cs.ATG"
compilationUnit.BlockEnd(); switchSections.Add(switchSection);
}
void ForInitializer(
-#line 1652 "cs.ATG"
+#line 1655 "cs.ATG"
out List<Statement> initializer) {
-#line 1654 "cs.ATG"
+#line 1657 "cs.ATG"
Statement stmt;
initializer = new List<Statement>();
if (
-#line 1658 "cs.ATG"
+#line 1661 "cs.ATG"
IsLocalVarDecl()) {
LocalVariableDecl(
-#line 1658 "cs.ATG"
+#line 1661 "cs.ATG"
out stmt);
-#line 1658 "cs.ATG"
+#line 1661 "cs.ATG"
initializer.Add(stmt);
} else if (StartOf(6)) {
StatementExpr(
-#line 1659 "cs.ATG"
+#line 1662 "cs.ATG"
out stmt);
-#line 1659 "cs.ATG"
+#line 1662 "cs.ATG"
initializer.Add(stmt);
while (la.kind == 14) {
lexer.NextToken();
StatementExpr(
-#line 1659 "cs.ATG"
+#line 1662 "cs.ATG"
out stmt);
-#line 1659 "cs.ATG"
+#line 1662 "cs.ATG"
initializer.Add(stmt);
}
} else SynErr(201);
}
void ForIterator(
-#line 1662 "cs.ATG"
+#line 1665 "cs.ATG"
out List<Statement> iterator) {
-#line 1664 "cs.ATG"
+#line 1667 "cs.ATG"
Statement stmt;
iterator = new List<Statement>();
StatementExpr(
-#line 1668 "cs.ATG"
+#line 1671 "cs.ATG"
out stmt);
-#line 1668 "cs.ATG"
+#line 1671 "cs.ATG"
iterator.Add(stmt);
while (la.kind == 14) {
lexer.NextToken();
StatementExpr(
-#line 1668 "cs.ATG"
+#line 1671 "cs.ATG"
out stmt);
-#line 1668 "cs.ATG"
+#line 1671 "cs.ATG"
iterator.Add(stmt);
}
}
void GotoStatement(
-#line 1750 "cs.ATG"
+#line 1753 "cs.ATG"
out Statement stmt) {
-#line 1751 "cs.ATG"
+#line 1754 "cs.ATG"
Expression expr; stmt = null;
Expect(78);
if (StartOf(19)) {
Identifier();
-#line 1755 "cs.ATG"
+#line 1758 "cs.ATG"
stmt = new GotoStatement(t.val);
Expect(11);
} else if (la.kind == 55) {
lexer.NextToken();
Expr(
-#line 1756 "cs.ATG"
+#line 1759 "cs.ATG"
out expr);
Expect(11);
-#line 1756 "cs.ATG"
+#line 1759 "cs.ATG"
stmt = new GotoCaseStatement(expr);
} else if (la.kind == 63) {
lexer.NextToken();
Expect(11);
-#line 1757 "cs.ATG"
+#line 1760 "cs.ATG"
stmt = new GotoCaseStatement(null);
} else SynErr(202);
}
void StatementExpr(
-#line 1777 "cs.ATG"
+#line 1780 "cs.ATG"
out Statement stmt) {
-#line 1778 "cs.ATG"
+#line 1781 "cs.ATG"
Expression expr;
Expr(
-#line 1780 "cs.ATG"
+#line 1783 "cs.ATG"
out expr);
-#line 1783 "cs.ATG"
+#line 1786 "cs.ATG"
stmt = new ExpressionStatement(expr);
}
void TryStatement(
-#line 1703 "cs.ATG"
+#line 1706 "cs.ATG"
out Statement tryStatement) {
-#line 1705 "cs.ATG"
+#line 1708 "cs.ATG"
Statement blockStmt = null, finallyStmt = null;
CatchClause catchClause = null;
List<CatchClause> catchClauses = new List<CatchClause>();
Expect(114);
Block(
-#line 1710 "cs.ATG"
+#line 1713 "cs.ATG"
out blockStmt);
while (la.kind == 56) {
CatchClause(
-#line 1712 "cs.ATG"
+#line 1715 "cs.ATG"
out catchClause);
-#line 1713 "cs.ATG"
+#line 1716 "cs.ATG"
if (catchClause != null) catchClauses.Add(catchClause);
}
if (la.kind == 73) {
lexer.NextToken();
Block(
-#line 1715 "cs.ATG"
+#line 1718 "cs.ATG"
out finallyStmt);
}
-#line 1717 "cs.ATG"
+#line 1720 "cs.ATG"
tryStatement = new TryCatchStatement(blockStmt, catchClauses, finallyStmt);
if (catchClauses != null) {
foreach (CatchClause cc in catchClauses) cc.Parent = tryStatement;
@@ -4122,59 +4124,59 @@ out finallyStmt);
}
void ResourceAcquisition(
-#line 1761 "cs.ATG"
+#line 1764 "cs.ATG"
out Statement stmt) {
-#line 1763 "cs.ATG"
+#line 1766 "cs.ATG"
stmt = null;
Expression expr;
if (
-#line 1768 "cs.ATG"
+#line 1771 "cs.ATG"
IsLocalVarDecl()) {
LocalVariableDecl(
-#line 1768 "cs.ATG"
+#line 1771 "cs.ATG"
out stmt);
} else if (StartOf(6)) {
Expr(
-#line 1769 "cs.ATG"
+#line 1772 "cs.ATG"
out expr);
-#line 1773 "cs.ATG"
+#line 1776 "cs.ATG"
stmt = new ExpressionStatement(expr);
} else SynErr(203);
}
void SwitchLabel(
-#line 1696 "cs.ATG"
+#line 1699 "cs.ATG"
out CaseLabel label) {
-#line 1697 "cs.ATG"
+#line 1700 "cs.ATG"
Expression expr = null; label = null;
if (la.kind == 55) {
lexer.NextToken();
Expr(
-#line 1699 "cs.ATG"
+#line 1702 "cs.ATG"
out expr);
Expect(9);
-#line 1699 "cs.ATG"
+#line 1702 "cs.ATG"
label = new CaseLabel(expr);
} else if (la.kind == 63) {
lexer.NextToken();
Expect(9);
-#line 1700 "cs.ATG"
+#line 1703 "cs.ATG"
label = new CaseLabel();
} else SynErr(204);
}
void CatchClause(
-#line 1724 "cs.ATG"
+#line 1727 "cs.ATG"
out CatchClause catchClause) {
Expect(56);
-#line 1726 "cs.ATG"
+#line 1729 "cs.ATG"
string identifier;
Statement stmt;
TypeReference typeRef;
@@ -4183,35 +4185,35 @@ out CatchClause catchClause) {
if (la.kind == 16) {
Block(
-#line 1734 "cs.ATG"
+#line 1737 "cs.ATG"
out stmt);
-#line 1734 "cs.ATG"
+#line 1737 "cs.ATG"
catchClause = new CatchClause(stmt);
} else if (la.kind == 20) {
lexer.NextToken();
ClassType(
-#line 1737 "cs.ATG"
+#line 1740 "cs.ATG"
out typeRef, false);
-#line 1737 "cs.ATG"
+#line 1740 "cs.ATG"
identifier = null;
if (StartOf(19)) {
Identifier();
-#line 1738 "cs.ATG"
+#line 1741 "cs.ATG"
identifier = t.val;
}
Expect(21);
Block(
-#line 1739 "cs.ATG"
+#line 1742 "cs.ATG"
out stmt);
-#line 1740 "cs.ATG"
+#line 1743 "cs.ATG"
catchClause = new CatchClause(typeRef, identifier, stmt);
} else SynErr(205);
-#line 1743 "cs.ATG"
+#line 1746 "cs.ATG"
if (catchClause != null) {
catchClause.StartLocation = startPos;
catchClause.EndLocation = t.Location;
@@ -4220,75 +4222,75 @@ out stmt);
}
void UnaryExpr(
-#line 1810 "cs.ATG"
+#line 1813 "cs.ATG"
out Expression uExpr) {
-#line 1812 "cs.ATG"
+#line 1815 "cs.ATG"
TypeReference type = null;
Expression expr = null;
ArrayList expressions = new ArrayList();
uExpr = null;
while (StartOf(33) ||
-#line 1834 "cs.ATG"
+#line 1837 "cs.ATG"
IsTypeCast()) {
if (la.kind == 4) {
lexer.NextToken();
-#line 1821 "cs.ATG"
+#line 1824 "cs.ATG"
expressions.Add(new UnaryOperatorExpression(UnaryOperatorType.Plus));
} else if (la.kind == 5) {
lexer.NextToken();
-#line 1822 "cs.ATG"
+#line 1825 "cs.ATG"
expressions.Add(new UnaryOperatorExpression(UnaryOperatorType.Minus));
} else if (la.kind == 24) {
lexer.NextToken();
-#line 1823 "cs.ATG"
+#line 1826 "cs.ATG"
expressions.Add(new UnaryOperatorExpression(UnaryOperatorType.Not));
} else if (la.kind == 27) {
lexer.NextToken();
-#line 1824 "cs.ATG"
+#line 1827 "cs.ATG"
expressions.Add(new UnaryOperatorExpression(UnaryOperatorType.BitNot));
} else if (la.kind == 6) {
lexer.NextToken();
-#line 1825 "cs.ATG"
+#line 1828 "cs.ATG"
expressions.Add(new UnaryOperatorExpression(UnaryOperatorType.Dereference));
} else if (la.kind == 31) {
lexer.NextToken();
-#line 1826 "cs.ATG"
+#line 1829 "cs.ATG"
expressions.Add(new UnaryOperatorExpression(UnaryOperatorType.Increment));
} else if (la.kind == 32) {
lexer.NextToken();
-#line 1827 "cs.ATG"
+#line 1830 "cs.ATG"
expressions.Add(new UnaryOperatorExpression(UnaryOperatorType.Decrement));
} else if (la.kind == 28) {
lexer.NextToken();
-#line 1828 "cs.ATG"
+#line 1831 "cs.ATG"
expressions.Add(new UnaryOperatorExpression(UnaryOperatorType.AddressOf));
} else {
Expect(20);
Type(
-#line 1834 "cs.ATG"
+#line 1837 "cs.ATG"
out type);
Expect(21);
-#line 1834 "cs.ATG"
+#line 1837 "cs.ATG"
expressions.Add(new CastExpression(type));
}
}
if (
-#line 1839 "cs.ATG"
+#line 1842 "cs.ATG"
LastExpressionIsUnaryMinus(expressions) && IsMostNegativeIntegerWithoutTypeSuffix()) {
Expect(2);
-#line 1842 "cs.ATG"
+#line 1845 "cs.ATG"
expressions.RemoveAt(expressions.Count - 1);
if (t.literalValue is uint) {
expr = new PrimitiveExpression(int.MinValue, int.MinValue.ToString());
@@ -4300,11 +4302,11 @@ LastExpressionIsUnaryMinus(expressions) && IsMostNegativeIntegerWithoutTypeSuffi
} else if (StartOf(34)) {
PrimaryExpr(
-#line 1851 "cs.ATG"
+#line 1854 "cs.ATG"
out expr);
} else SynErr(206);
-#line 1853 "cs.ATG"
+#line 1856 "cs.ATG"
for (int i = 0; i < expressions.Count; ++i) {
Expression nextExpression = i + 1 < expressions.Count ? (Expression)expressions[i + 1] : expr;
if (expressions[i] is CastExpression) {
@@ -4322,325 +4324,325 @@ out expr);
}
void ConditionalOrExpr(
-#line 2175 "cs.ATG"
+#line 2178 "cs.ATG"
ref Expression outExpr) {
-#line 2176 "cs.ATG"
+#line 2179 "cs.ATG"
Expression expr;
ConditionalAndExpr(
-#line 2178 "cs.ATG"
+#line 2181 "cs.ATG"
ref outExpr);
while (la.kind == 26) {
lexer.NextToken();
UnaryExpr(
-#line 2178 "cs.ATG"
+#line 2181 "cs.ATG"
out expr);
ConditionalAndExpr(
-#line 2178 "cs.ATG"
+#line 2181 "cs.ATG"
ref expr);
-#line 2178 "cs.ATG"
+#line 2181 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr, BinaryOperatorType.LogicalOr, expr);
}
}
void PrimaryExpr(
-#line 1870 "cs.ATG"
+#line 1873 "cs.ATG"
out Expression pexpr) {
-#line 1872 "cs.ATG"
+#line 1875 "cs.ATG"
TypeReference type = null;
Expression expr;
pexpr = null;
-#line 1877 "cs.ATG"
+#line 1880 "cs.ATG"
Location startLocation = la.Location;
if (la.kind == 113) {
lexer.NextToken();
-#line 1879 "cs.ATG"
+#line 1882 "cs.ATG"
pexpr = new PrimitiveExpression(true, "true");
} else if (la.kind == 72) {
lexer.NextToken();
-#line 1880 "cs.ATG"
+#line 1883 "cs.ATG"
pexpr = new PrimitiveExpression(false, "false");
} else if (la.kind == 90) {
lexer.NextToken();
-#line 1881 "cs.ATG"
+#line 1884 "cs.ATG"
pexpr = new PrimitiveExpression(null, "null");
} else if (la.kind == 2) {
lexer.NextToken();
-#line 1882 "cs.ATG"
+#line 1885 "cs.ATG"
pexpr = new PrimitiveExpression(t.literalValue, t.val) { LiteralFormat = t.literalFormat };
} else if (
-#line 1883 "cs.ATG"
+#line 1886 "cs.ATG"
StartOfQueryExpression()) {
QueryExpression(
-#line 1884 "cs.ATG"
+#line 1887 "cs.ATG"
out pexpr);
} else if (
-#line 1885 "cs.ATG"
+#line 1888 "cs.ATG"
IdentAndDoubleColon()) {
Identifier();
-#line 1886 "cs.ATG"
+#line 1889 "cs.ATG"
type = new TypeReference(t.val);
Expect(10);
-#line 1887 "cs.ATG"
+#line 1890 "cs.ATG"
pexpr = new TypeReferenceExpression(type);
Identifier();
-#line 1888 "cs.ATG"
+#line 1891 "cs.ATG"
if (type.Type == "global") { type.IsGlobal = true; type.Type = t.val ?? "?"; } else type.Type += "." + (t.val ?? "?");
} else if (StartOf(19)) {
Identifier();
-#line 1892 "cs.ATG"
+#line 1895 "cs.ATG"
pexpr = new IdentifierExpression(t.val);
if (la.kind == 48 ||
-#line 1895 "cs.ATG"
+#line 1898 "cs.ATG"
IsGenericInSimpleNameOrMemberAccess()) {
if (la.kind == 48) {
ShortedLambdaExpression(
-#line 1894 "cs.ATG"
+#line 1897 "cs.ATG"
(IdentifierExpression)pexpr, out pexpr);
} else {
-#line 1896 "cs.ATG"
+#line 1899 "cs.ATG"
List<TypeReference> typeList;
TypeArgumentList(
-#line 1897 "cs.ATG"
+#line 1900 "cs.ATG"
out typeList, false);
-#line 1898 "cs.ATG"
+#line 1901 "cs.ATG"
((IdentifierExpression)pexpr).TypeArguments = typeList;
}
}
} else if (
-#line 1900 "cs.ATG"
+#line 1903 "cs.ATG"
IsLambdaExpression()) {
LambdaExpression(
-#line 1901 "cs.ATG"
+#line 1904 "cs.ATG"
out pexpr);
} else if (la.kind == 20) {
lexer.NextToken();
Expr(
-#line 1904 "cs.ATG"
+#line 1907 "cs.ATG"
out expr);
Expect(21);
-#line 1904 "cs.ATG"
+#line 1907 "cs.ATG"
pexpr = new ParenthesizedExpression(expr);
} else if (StartOf(35)) {
-#line 1907 "cs.ATG"
+#line 1910 "cs.ATG"
string val = null;
switch (la.kind) {
case 52: {
lexer.NextToken();
-#line 1908 "cs.ATG"
+#line 1911 "cs.ATG"
val = "System.Boolean";
break;
}
case 54: {
lexer.NextToken();
-#line 1909 "cs.ATG"
+#line 1912 "cs.ATG"
val = "System.Byte";
break;
}
case 57: {
lexer.NextToken();
-#line 1910 "cs.ATG"
+#line 1913 "cs.ATG"
val = "System.Char";
break;
}
case 62: {
lexer.NextToken();
-#line 1911 "cs.ATG"
+#line 1914 "cs.ATG"
val = "System.Decimal";
break;
}
case 66: {
lexer.NextToken();
-#line 1912 "cs.ATG"
+#line 1915 "cs.ATG"
val = "System.Double";
break;
}
case 75: {
lexer.NextToken();
-#line 1913 "cs.ATG"
+#line 1916 "cs.ATG"
val = "System.Single";
break;
}
case 82: {
lexer.NextToken();
-#line 1914 "cs.ATG"
+#line 1917 "cs.ATG"
val = "System.Int32";
break;
}
case 87: {
lexer.NextToken();
-#line 1915 "cs.ATG"
+#line 1918 "cs.ATG"
val = "System.Int64";
break;
}
case 91: {
lexer.NextToken();
-#line 1916 "cs.ATG"
+#line 1919 "cs.ATG"
val = "System.Object";
break;
}
case 102: {
lexer.NextToken();
-#line 1917 "cs.ATG"
+#line 1920 "cs.ATG"
val = "System.SByte";
break;
}
case 104: {
lexer.NextToken();
-#line 1918 "cs.ATG"
+#line 1921 "cs.ATG"
val = "System.Int16";
break;
}
case 108: {
lexer.NextToken();
-#line 1919 "cs.ATG"
+#line 1922 "cs.ATG"
val = "System.String";
break;
}
case 116: {
lexer.NextToken();
-#line 1920 "cs.ATG"
+#line 1923 "cs.ATG"
val = "System.UInt32";
break;
}
case 117: {
lexer.NextToken();
-#line 1921 "cs.ATG"
+#line 1924 "cs.ATG"
val = "System.UInt64";
break;
}
case 120: {
lexer.NextToken();
-#line 1922 "cs.ATG"
+#line 1925 "cs.ATG"
val = "System.UInt16";
break;
}
case 123: {
lexer.NextToken();
-#line 1923 "cs.ATG"
+#line 1926 "cs.ATG"
val = "System.Void";
break;
}
}
-#line 1925 "cs.ATG"
+#line 1928 "cs.ATG"
pexpr = new TypeReferenceExpression(new TypeReference(val, true)) { StartLocation = t.Location, EndLocation = t.EndLocation };
} else if (la.kind == 111) {
lexer.NextToken();
-#line 1928 "cs.ATG"
+#line 1931 "cs.ATG"
pexpr = new ThisReferenceExpression(); pexpr.StartLocation = t.Location; pexpr.EndLocation = t.EndLocation;
} else if (la.kind == 51) {
lexer.NextToken();
-#line 1930 "cs.ATG"
+#line 1933 "cs.ATG"
pexpr = new BaseReferenceExpression(); pexpr.StartLocation = t.Location; pexpr.EndLocation = t.EndLocation;
} else if (la.kind == 89) {
NewExpression(
-#line 1933 "cs.ATG"
+#line 1936 "cs.ATG"
out pexpr);
} else if (la.kind == 115) {
lexer.NextToken();
Expect(20);
if (
-#line 1937 "cs.ATG"
+#line 1940 "cs.ATG"
NotVoidPointer()) {
Expect(123);
-#line 1937 "cs.ATG"
+#line 1940 "cs.ATG"
type = new TypeReference("System.Void", true);
} else if (StartOf(10)) {
TypeWithRestriction(
-#line 1938 "cs.ATG"
+#line 1941 "cs.ATG"
out type, true, true);
} else SynErr(207);
Expect(21);
-#line 1940 "cs.ATG"
+#line 1943 "cs.ATG"
pexpr = new TypeOfExpression(type);
} else if (la.kind == 63) {
lexer.NextToken();
Expect(20);
Type(
-#line 1942 "cs.ATG"
+#line 1945 "cs.ATG"
out type);
Expect(21);
-#line 1942 "cs.ATG"
+#line 1945 "cs.ATG"
pexpr = new DefaultValueExpression(type);
} else if (la.kind == 105) {
lexer.NextToken();
Expect(20);
Type(
-#line 1943 "cs.ATG"
+#line 1946 "cs.ATG"
out type);
Expect(21);
-#line 1943 "cs.ATG"
+#line 1946 "cs.ATG"
pexpr = new SizeOfExpression(type);
} else if (la.kind == 58) {
lexer.NextToken();
Expect(20);
Expr(
-#line 1944 "cs.ATG"
+#line 1947 "cs.ATG"
out expr);
Expect(21);
-#line 1944 "cs.ATG"
+#line 1947 "cs.ATG"
pexpr = new CheckedExpression(expr);
} else if (la.kind == 118) {
lexer.NextToken();
Expect(20);
Expr(
-#line 1945 "cs.ATG"
+#line 1948 "cs.ATG"
out expr);
Expect(21);
-#line 1945 "cs.ATG"
+#line 1948 "cs.ATG"
pexpr = new UncheckedExpression(expr);
} else if (la.kind == 64) {
lexer.NextToken();
AnonymousMethodExpr(
-#line 1946 "cs.ATG"
+#line 1949 "cs.ATG"
out expr);
-#line 1946 "cs.ATG"
+#line 1949 "cs.ATG"
pexpr = expr;
} else SynErr(208);
-#line 1948 "cs.ATG"
+#line 1951 "cs.ATG"
if (pexpr != null) {
if (pexpr.StartLocation.IsEmpty)
pexpr.StartLocation = startLocation;
@@ -4651,78 +4653,78 @@ out expr);
while (StartOf(36)) {
if (la.kind == 31 || la.kind == 32) {
-#line 1956 "cs.ATG"
+#line 1959 "cs.ATG"
startLocation = la.Location;
if (la.kind == 31) {
lexer.NextToken();
-#line 1958 "cs.ATG"
+#line 1961 "cs.ATG"
pexpr = new UnaryOperatorExpression(pexpr, UnaryOperatorType.PostIncrement);
} else if (la.kind == 32) {
lexer.NextToken();
-#line 1959 "cs.ATG"
+#line 1962 "cs.ATG"
pexpr = new UnaryOperatorExpression(pexpr, UnaryOperatorType.PostDecrement);
} else SynErr(209);
} else if (la.kind == 47) {
PointerMemberAccess(
-#line 1962 "cs.ATG"
+#line 1965 "cs.ATG"
out pexpr, pexpr);
} else if (la.kind == 15) {
MemberAccess(
-#line 1963 "cs.ATG"
+#line 1966 "cs.ATG"
out pexpr, pexpr);
} else if (la.kind == 20) {
lexer.NextToken();
-#line 1967 "cs.ATG"
+#line 1970 "cs.ATG"
List<Expression> parameters = new List<Expression>();
-#line 1968 "cs.ATG"
+#line 1971 "cs.ATG"
pexpr = new InvocationExpression(pexpr, parameters);
if (StartOf(26)) {
Argument(
-#line 1969 "cs.ATG"
+#line 1972 "cs.ATG"
out expr);
-#line 1969 "cs.ATG"
+#line 1972 "cs.ATG"
SafeAdd(pexpr, parameters, expr);
while (la.kind == 14) {
lexer.NextToken();
Argument(
-#line 1970 "cs.ATG"
+#line 1973 "cs.ATG"
out expr);
-#line 1970 "cs.ATG"
+#line 1973 "cs.ATG"
SafeAdd(pexpr, parameters, expr);
}
}
Expect(21);
} else {
-#line 1976 "cs.ATG"
+#line 1979 "cs.ATG"
List<Expression> indices = new List<Expression>();
pexpr = new IndexerExpression(pexpr, indices);
lexer.NextToken();
Expr(
-#line 1979 "cs.ATG"
+#line 1982 "cs.ATG"
out expr);
-#line 1979 "cs.ATG"
+#line 1982 "cs.ATG"
SafeAdd(pexpr, indices, expr);
while (la.kind == 14) {
lexer.NextToken();
Expr(
-#line 1980 "cs.ATG"
+#line 1983 "cs.ATG"
out expr);
-#line 1980 "cs.ATG"
+#line 1983 "cs.ATG"
SafeAdd(pexpr, indices, expr);
}
Expect(19);
-#line 1983 "cs.ATG"
+#line 1986 "cs.ATG"
if (pexpr != null) {
pexpr.StartLocation = startLocation;
pexpr.EndLocation = t.EndLocation;
@@ -4733,83 +4735,83 @@ out expr);
}
void QueryExpression(
-#line 2413 "cs.ATG"
+#line 2416 "cs.ATG"
out Expression outExpr) {
-#line 2414 "cs.ATG"
+#line 2417 "cs.ATG"
QueryExpression q = new QueryExpression(); outExpr = q; q.StartLocation = la.Location;
QueryExpressionFromClause fromClause;
QueryExpressionFromClause(
-#line 2418 "cs.ATG"
+#line 2421 "cs.ATG"
out fromClause);
-#line 2418 "cs.ATG"
+#line 2421 "cs.ATG"
q.FromClause = fromClause;
QueryExpressionBody(
-#line 2419 "cs.ATG"
+#line 2422 "cs.ATG"
ref q);
-#line 2420 "cs.ATG"
+#line 2423 "cs.ATG"
q.EndLocation = t.EndLocation;
outExpr = q; /* set outExpr to q again if QueryExpressionBody changed it (can happen with 'into' clauses) */
}
void ShortedLambdaExpression(
-#line 2095 "cs.ATG"
+#line 2098 "cs.ATG"
IdentifierExpression ident, out Expression pexpr) {
-#line 2096 "cs.ATG"
+#line 2099 "cs.ATG"
LambdaExpression lambda = new LambdaExpression(); pexpr = lambda;
Expect(48);
-#line 2101 "cs.ATG"
+#line 2104 "cs.ATG"
lambda.StartLocation = ident.StartLocation;
SafeAdd(lambda, lambda.Parameters, new ParameterDeclarationExpression(null, ident.Identifier));
lambda.Parameters[0].StartLocation = ident.StartLocation;
lambda.Parameters[0].EndLocation = ident.EndLocation;
LambdaExpressionBody(
-#line 2106 "cs.ATG"
+#line 2109 "cs.ATG"
lambda);
}
void TypeArgumentList(
-#line 2347 "cs.ATG"
+#line 2350 "cs.ATG"
out List<TypeReference> types, bool canBeUnbound) {
-#line 2349 "cs.ATG"
+#line 2352 "cs.ATG"
types = new List<TypeReference>();
TypeReference type = null;
Expect(23);
if (
-#line 2354 "cs.ATG"
+#line 2357 "cs.ATG"
canBeUnbound && (la.kind == Tokens.GreaterThan || la.kind == Tokens.Comma)) {
-#line 2355 "cs.ATG"
+#line 2358 "cs.ATG"
types.Add(TypeReference.Null);
while (la.kind == 14) {
lexer.NextToken();
-#line 2356 "cs.ATG"
+#line 2359 "cs.ATG"
types.Add(TypeReference.Null);
}
} else if (StartOf(10)) {
Type(
-#line 2357 "cs.ATG"
+#line 2360 "cs.ATG"
out type);
-#line 2357 "cs.ATG"
+#line 2360 "cs.ATG"
if (type != null) { types.Add(type); }
while (la.kind == 14) {
lexer.NextToken();
Type(
-#line 2358 "cs.ATG"
+#line 2361 "cs.ATG"
out type);
-#line 2358 "cs.ATG"
+#line 2361 "cs.ATG"
if (type != null) { types.Add(type); }
}
} else SynErr(210);
@@ -4817,10 +4819,10 @@ out type);
}
void LambdaExpression(
-#line 2075 "cs.ATG"
+#line 2078 "cs.ATG"
out Expression outExpr) {
-#line 2077 "cs.ATG"
+#line 2080 "cs.ATG"
LambdaExpression lambda = new LambdaExpression();
lambda.StartLocation = la.Location;
ParameterDeclarationExpression p;
@@ -4829,33 +4831,33 @@ out Expression outExpr) {
Expect(20);
if (StartOf(18)) {
LambdaExpressionParameter(
-#line 2085 "cs.ATG"
+#line 2088 "cs.ATG"
out p);
-#line 2085 "cs.ATG"
+#line 2088 "cs.ATG"
SafeAdd(lambda, lambda.Parameters, p);
while (la.kind == 14) {
lexer.NextToken();
LambdaExpressionParameter(
-#line 2087 "cs.ATG"
+#line 2090 "cs.ATG"
out p);
-#line 2087 "cs.ATG"
+#line 2090 "cs.ATG"
SafeAdd(lambda, lambda.Parameters, p);
}
}
Expect(21);
Expect(48);
LambdaExpressionBody(
-#line 2092 "cs.ATG"
+#line 2095 "cs.ATG"
lambda);
}
void NewExpression(
-#line 2022 "cs.ATG"
+#line 2025 "cs.ATG"
out Expression pexpr) {
-#line 2023 "cs.ATG"
+#line 2026 "cs.ATG"
pexpr = null;
List<Expression> parameters = new List<Expression>();
TypeReference type = null;
@@ -4864,65 +4866,65 @@ out Expression pexpr) {
Expect(89);
if (StartOf(10)) {
NonArrayType(
-#line 2030 "cs.ATG"
+#line 2033 "cs.ATG"
out type);
}
if (la.kind == 16 || la.kind == 20) {
if (la.kind == 20) {
-#line 2036 "cs.ATG"
+#line 2039 "cs.ATG"
ObjectCreateExpression oce = new ObjectCreateExpression(type, parameters);
lexer.NextToken();
-#line 2037 "cs.ATG"
+#line 2040 "cs.ATG"
if (type == null) Error("Cannot use an anonymous type with arguments for the constructor");
if (StartOf(26)) {
Argument(
-#line 2038 "cs.ATG"
+#line 2041 "cs.ATG"
out expr);
-#line 2038 "cs.ATG"
+#line 2041 "cs.ATG"
SafeAdd(oce, parameters, expr);
while (la.kind == 14) {
lexer.NextToken();
Argument(
-#line 2039 "cs.ATG"
+#line 2042 "cs.ATG"
out expr);
-#line 2039 "cs.ATG"
+#line 2042 "cs.ATG"
SafeAdd(oce, parameters, expr);
}
}
Expect(21);
-#line 2041 "cs.ATG"
+#line 2044 "cs.ATG"
pexpr = oce;
if (la.kind == 16) {
CollectionOrObjectInitializer(
-#line 2042 "cs.ATG"
+#line 2045 "cs.ATG"
out expr);
-#line 2042 "cs.ATG"
+#line 2045 "cs.ATG"
oce.ObjectInitializer = (CollectionInitializerExpression)expr;
}
} else {
-#line 2043 "cs.ATG"
+#line 2046 "cs.ATG"
ObjectCreateExpression oce = new ObjectCreateExpression(type, parameters);
CollectionOrObjectInitializer(
-#line 2044 "cs.ATG"
+#line 2047 "cs.ATG"
out expr);
-#line 2044 "cs.ATG"
+#line 2047 "cs.ATG"
oce.ObjectInitializer = (CollectionInitializerExpression)expr;
-#line 2045 "cs.ATG"
+#line 2048 "cs.ATG"
pexpr = oce;
}
} else if (la.kind == 18) {
lexer.NextToken();
-#line 2050 "cs.ATG"
+#line 2053 "cs.ATG"
ArrayCreateExpression ace = new ArrayCreateExpression(type);
/* we must not change RankSpecifier on the null type reference*/
if (ace.CreateType.IsNull) { ace.CreateType = new TypeReference(""); }
@@ -4933,80 +4935,80 @@ out expr);
while (la.kind == 14) {
lexer.NextToken();
-#line 2057 "cs.ATG"
+#line 2060 "cs.ATG"
dims += 1;
}
Expect(19);
-#line 2058 "cs.ATG"
+#line 2061 "cs.ATG"
ranks.Add(dims); dims = 0;
while (la.kind == 18) {
lexer.NextToken();
while (la.kind == 14) {
lexer.NextToken();
-#line 2059 "cs.ATG"
+#line 2062 "cs.ATG"
++dims;
}
Expect(19);
-#line 2059 "cs.ATG"
+#line 2062 "cs.ATG"
ranks.Add(dims); dims = 0;
}
-#line 2060 "cs.ATG"
+#line 2063 "cs.ATG"
ace.CreateType.RankSpecifier = ranks.ToArray();
CollectionInitializer(
-#line 2061 "cs.ATG"
+#line 2064 "cs.ATG"
out expr);
-#line 2061 "cs.ATG"
+#line 2064 "cs.ATG"
ace.ArrayInitializer = (CollectionInitializerExpression)expr;
} else if (StartOf(6)) {
Expr(
-#line 2062 "cs.ATG"
+#line 2065 "cs.ATG"
out expr);
-#line 2062 "cs.ATG"
+#line 2065 "cs.ATG"
if (expr != null) parameters.Add(expr);
while (la.kind == 14) {
lexer.NextToken();
-#line 2063 "cs.ATG"
+#line 2066 "cs.ATG"
dims += 1;
Expr(
-#line 2064 "cs.ATG"
+#line 2067 "cs.ATG"
out expr);
-#line 2064 "cs.ATG"
+#line 2067 "cs.ATG"
if (expr != null) parameters.Add(expr);
}
Expect(19);
-#line 2066 "cs.ATG"
+#line 2069 "cs.ATG"
ranks.Add(dims); ace.Arguments = parameters; dims = 0;
while (la.kind == 18) {
lexer.NextToken();
while (la.kind == 14) {
lexer.NextToken();
-#line 2067 "cs.ATG"
+#line 2070 "cs.ATG"
++dims;
}
Expect(19);
-#line 2067 "cs.ATG"
+#line 2070 "cs.ATG"
ranks.Add(dims); dims = 0;
}
-#line 2068 "cs.ATG"
+#line 2071 "cs.ATG"
ace.CreateType.RankSpecifier = ranks.ToArray();
if (la.kind == 16) {
CollectionInitializer(
-#line 2069 "cs.ATG"
+#line 2072 "cs.ATG"
out expr);
-#line 2069 "cs.ATG"
+#line 2072 "cs.ATG"
ace.ArrayInitializer = (CollectionInitializerExpression)expr;
}
} else SynErr(211);
@@ -5014,10 +5016,10 @@ out expr);
}
void AnonymousMethodExpr(
-#line 2142 "cs.ATG"
+#line 2145 "cs.ATG"
out Expression outExpr) {
-#line 2144 "cs.ATG"
+#line 2147 "cs.ATG"
AnonymousMethodExpression expr = new AnonymousMethodExpression();
expr.StartLocation = t.Location;
BlockStatement stmt;
@@ -5028,59 +5030,59 @@ out Expression outExpr) {
lexer.NextToken();
if (StartOf(11)) {
FormalParameterList(
-#line 2153 "cs.ATG"
+#line 2156 "cs.ATG"
p);
-#line 2153 "cs.ATG"
+#line 2156 "cs.ATG"
expr.Parameters = p;
}
Expect(21);
-#line 2155 "cs.ATG"
+#line 2158 "cs.ATG"
expr.HasParameterList = true;
}
BlockInsideExpression(
-#line 2157 "cs.ATG"
+#line 2160 "cs.ATG"
out stmt);
-#line 2157 "cs.ATG"
+#line 2160 "cs.ATG"
expr.Body = stmt;
-#line 2158 "cs.ATG"
+#line 2161 "cs.ATG"
expr.EndLocation = t.Location;
}
void PointerMemberAccess(
-#line 2010 "cs.ATG"
+#line 2013 "cs.ATG"
out Expression expr, Expression target) {
-#line 2011 "cs.ATG"
+#line 2014 "cs.ATG"
List<TypeReference> typeList;
Expect(47);
Identifier();
-#line 2015 "cs.ATG"
+#line 2018 "cs.ATG"
expr = new PointerReferenceExpression(target, t.val); expr.StartLocation = t.Location; expr.EndLocation = t.EndLocation;
if (
-#line 2016 "cs.ATG"
+#line 2019 "cs.ATG"
IsGenericInSimpleNameOrMemberAccess()) {
TypeArgumentList(
-#line 2017 "cs.ATG"
+#line 2020 "cs.ATG"
out typeList, false);
-#line 2018 "cs.ATG"
+#line 2021 "cs.ATG"
((MemberReferenceExpression)expr).TypeArguments = typeList;
}
}
void MemberAccess(
-#line 1991 "cs.ATG"
+#line 1994 "cs.ATG"
out Expression expr, Expression target) {
-#line 1992 "cs.ATG"
+#line 1995 "cs.ATG"
List<TypeReference> typeList;
-#line 1994 "cs.ATG"
+#line 1997 "cs.ATG"
if (ShouldConvertTargetExpressionToTypeReference(target)) {
TypeReference type = GetTypeReferenceFromExpression(target);
if (type != null) {
@@ -5091,35 +5093,35 @@ out Expression expr, Expression target) {
Expect(15);
Identifier();
-#line 2003 "cs.ATG"
+#line 2006 "cs.ATG"
expr = new MemberReferenceExpression(target, t.val); expr.StartLocation = t.Location; expr.EndLocation = t.EndLocation;
if (
-#line 2004 "cs.ATG"
+#line 2007 "cs.ATG"
IsGenericInSimpleNameOrMemberAccess()) {
TypeArgumentList(
-#line 2005 "cs.ATG"
+#line 2008 "cs.ATG"
out typeList, false);
-#line 2006 "cs.ATG"
+#line 2009 "cs.ATG"
((MemberReferenceExpression)expr).TypeArguments = typeList;
}
}
void LambdaExpressionParameter(
-#line 2109 "cs.ATG"
+#line 2112 "cs.ATG"
out ParameterDeclarationExpression p) {
-#line 2110 "cs.ATG"
+#line 2113 "cs.ATG"
Location start = la.Location; p = null;
TypeReference type;
ParameterModifiers mod = ParameterModifiers.In;
if (
-#line 2115 "cs.ATG"
+#line 2118 "cs.ATG"
Peek(1).kind == Tokens.Comma || Peek(1).kind == Tokens.CloseParenthesis) {
Identifier();
-#line 2117 "cs.ATG"
+#line 2120 "cs.ATG"
p = new ParameterDeclarationExpression(null, t.val);
p.StartLocation = start; p.EndLocation = t.EndLocation;
@@ -5128,21 +5130,21 @@ Peek(1).kind == Tokens.Comma || Peek(1).kind == Tokens.CloseParenthesis) {
if (la.kind == 100) {
lexer.NextToken();
-#line 2120 "cs.ATG"
+#line 2123 "cs.ATG"
mod = ParameterModifiers.Ref;
} else {
lexer.NextToken();
-#line 2121 "cs.ATG"
+#line 2124 "cs.ATG"
mod = ParameterModifiers.Out;
}
}
Type(
-#line 2123 "cs.ATG"
+#line 2126 "cs.ATG"
out type);
Identifier();
-#line 2125 "cs.ATG"
+#line 2128 "cs.ATG"
p = new ParameterDeclarationExpression(type, t.val, mod);
p.StartLocation = start; p.EndLocation = t.EndLocation;
@@ -5150,263 +5152,263 @@ out type);
}
void LambdaExpressionBody(
-#line 2131 "cs.ATG"
+#line 2134 "cs.ATG"
LambdaExpression lambda) {
-#line 2132 "cs.ATG"
+#line 2135 "cs.ATG"
Expression expr; BlockStatement stmt;
if (la.kind == 16) {
BlockInsideExpression(
-#line 2135 "cs.ATG"
+#line 2138 "cs.ATG"
out stmt);
-#line 2135 "cs.ATG"
+#line 2138 "cs.ATG"
lambda.StatementBody = stmt;
} else if (StartOf(6)) {
Expr(
-#line 2136 "cs.ATG"
+#line 2139 "cs.ATG"
out expr);
-#line 2136 "cs.ATG"
+#line 2139 "cs.ATG"
lambda.ExpressionBody = expr;
} else SynErr(214);
-#line 2138 "cs.ATG"
+#line 2141 "cs.ATG"
lambda.EndLocation = t.EndLocation;
-#line 2139 "cs.ATG"
+#line 2142 "cs.ATG"
lambda.ExtendedEndLocation = la.Location;
}
void BlockInsideExpression(
-#line 2161 "cs.ATG"
+#line 2164 "cs.ATG"
out BlockStatement outStmt) {
-#line 2162 "cs.ATG"
+#line 2165 "cs.ATG"
Statement stmt = null; outStmt = null;
-#line 2166 "cs.ATG"
+#line 2169 "cs.ATG"
if (compilationUnit != null) {
Block(
-#line 2167 "cs.ATG"
+#line 2170 "cs.ATG"
out stmt);
-#line 2167 "cs.ATG"
+#line 2170 "cs.ATG"
outStmt = (BlockStatement)stmt;
-#line 2168 "cs.ATG"
+#line 2171 "cs.ATG"
} else {
Expect(16);
-#line 2170 "cs.ATG"
+#line 2173 "cs.ATG"
lexer.SkipCurrentBlock(0);
Expect(17);
-#line 2172 "cs.ATG"
+#line 2175 "cs.ATG"
}
}
void ConditionalAndExpr(
-#line 2181 "cs.ATG"
+#line 2184 "cs.ATG"
ref Expression outExpr) {
-#line 2182 "cs.ATG"
+#line 2185 "cs.ATG"
Expression expr;
InclusiveOrExpr(
-#line 2184 "cs.ATG"
+#line 2187 "cs.ATG"
ref outExpr);
while (la.kind == 25) {
lexer.NextToken();
UnaryExpr(
-#line 2184 "cs.ATG"
+#line 2187 "cs.ATG"
out expr);
InclusiveOrExpr(
-#line 2184 "cs.ATG"
+#line 2187 "cs.ATG"
ref expr);
-#line 2184 "cs.ATG"
+#line 2187 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr, BinaryOperatorType.LogicalAnd, expr);
}
}
void InclusiveOrExpr(
-#line 2187 "cs.ATG"
+#line 2190 "cs.ATG"
ref Expression outExpr) {
-#line 2188 "cs.ATG"
+#line 2191 "cs.ATG"
Expression expr;
ExclusiveOrExpr(
-#line 2190 "cs.ATG"
+#line 2193 "cs.ATG"
ref outExpr);
while (la.kind == 29) {
lexer.NextToken();
UnaryExpr(
-#line 2190 "cs.ATG"
+#line 2193 "cs.ATG"
out expr);
ExclusiveOrExpr(
-#line 2190 "cs.ATG"
+#line 2193 "cs.ATG"
ref expr);
-#line 2190 "cs.ATG"
+#line 2193 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr, BinaryOperatorType.BitwiseOr, expr);
}
}
void ExclusiveOrExpr(
-#line 2193 "cs.ATG"
+#line 2196 "cs.ATG"
ref Expression outExpr) {
-#line 2194 "cs.ATG"
+#line 2197 "cs.ATG"
Expression expr;
AndExpr(
-#line 2196 "cs.ATG"
+#line 2199 "cs.ATG"
ref outExpr);
while (la.kind == 30) {
lexer.NextToken();
UnaryExpr(
-#line 2196 "cs.ATG"
+#line 2199 "cs.ATG"
out expr);
AndExpr(
-#line 2196 "cs.ATG"
+#line 2199 "cs.ATG"
ref expr);
-#line 2196 "cs.ATG"
+#line 2199 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr, BinaryOperatorType.ExclusiveOr, expr);
}
}
void AndExpr(
-#line 2199 "cs.ATG"
+#line 2202 "cs.ATG"
ref Expression outExpr) {
-#line 2200 "cs.ATG"
+#line 2203 "cs.ATG"
Expression expr;
EqualityExpr(
-#line 2202 "cs.ATG"
+#line 2205 "cs.ATG"
ref outExpr);
while (la.kind == 28) {
lexer.NextToken();
UnaryExpr(
-#line 2202 "cs.ATG"
+#line 2205 "cs.ATG"
out expr);
EqualityExpr(
-#line 2202 "cs.ATG"
+#line 2205 "cs.ATG"
ref expr);
-#line 2202 "cs.ATG"
+#line 2205 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr, BinaryOperatorType.BitwiseAnd, expr);
}
}
void EqualityExpr(
-#line 2205 "cs.ATG"
+#line 2208 "cs.ATG"
ref Expression outExpr) {
-#line 2207 "cs.ATG"
+#line 2210 "cs.ATG"
Expression expr;
BinaryOperatorType op = BinaryOperatorType.None;
RelationalExpr(
-#line 2211 "cs.ATG"
+#line 2214 "cs.ATG"
ref outExpr);
while (la.kind == 33 || la.kind == 34) {
if (la.kind == 34) {
lexer.NextToken();
-#line 2214 "cs.ATG"
+#line 2217 "cs.ATG"
op = BinaryOperatorType.InEquality;
} else {
lexer.NextToken();
-#line 2215 "cs.ATG"
+#line 2218 "cs.ATG"
op = BinaryOperatorType.Equality;
}
UnaryExpr(
-#line 2217 "cs.ATG"
+#line 2220 "cs.ATG"
out expr);
RelationalExpr(
-#line 2217 "cs.ATG"
+#line 2220 "cs.ATG"
ref expr);
-#line 2217 "cs.ATG"
+#line 2220 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr, op, expr);
}
}
void RelationalExpr(
-#line 2221 "cs.ATG"
+#line 2224 "cs.ATG"
ref Expression outExpr) {
-#line 2223 "cs.ATG"
+#line 2226 "cs.ATG"
TypeReference type;
Expression expr;
BinaryOperatorType op = BinaryOperatorType.None;
ShiftExpr(
-#line 2228 "cs.ATG"
+#line 2231 "cs.ATG"
ref outExpr);
while (StartOf(37)) {
if (StartOf(38)) {
if (la.kind == 23) {
lexer.NextToken();
-#line 2230 "cs.ATG"
+#line 2233 "cs.ATG"
op = BinaryOperatorType.LessThan;
} else if (la.kind == 22) {
lexer.NextToken();
-#line 2231 "cs.ATG"
+#line 2234 "cs.ATG"
op = BinaryOperatorType.GreaterThan;
} else if (la.kind == 36) {
lexer.NextToken();
-#line 2232 "cs.ATG"
+#line 2235 "cs.ATG"
op = BinaryOperatorType.LessThanOrEqual;
} else if (la.kind == 35) {
lexer.NextToken();
-#line 2233 "cs.ATG"
+#line 2236 "cs.ATG"
op = BinaryOperatorType.GreaterThanOrEqual;
} else SynErr(215);
UnaryExpr(
-#line 2235 "cs.ATG"
+#line 2238 "cs.ATG"
out expr);
ShiftExpr(
-#line 2236 "cs.ATG"
+#line 2239 "cs.ATG"
ref expr);
-#line 2237 "cs.ATG"
+#line 2240 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr, op, expr);
} else {
if (la.kind == 85) {
lexer.NextToken();
TypeWithRestriction(
-#line 2240 "cs.ATG"
+#line 2243 "cs.ATG"
out type, false, false);
if (
-#line 2241 "cs.ATG"
+#line 2244 "cs.ATG"
la.kind == Tokens.Question && !IsPossibleExpressionStart(Peek(1).kind)) {
NullableQuestionMark(
-#line 2242 "cs.ATG"
+#line 2245 "cs.ATG"
ref type);
}
-#line 2243 "cs.ATG"
+#line 2246 "cs.ATG"
outExpr = new TypeOfIsExpression(outExpr, type);
} else if (la.kind == 50) {
lexer.NextToken();
TypeWithRestriction(
-#line 2245 "cs.ATG"
+#line 2248 "cs.ATG"
out type, false, false);
if (
-#line 2246 "cs.ATG"
+#line 2249 "cs.ATG"
la.kind == Tokens.Question && !IsPossibleExpressionStart(Peek(1).kind)) {
NullableQuestionMark(
-#line 2247 "cs.ATG"
+#line 2250 "cs.ATG"
ref type);
}
-#line 2248 "cs.ATG"
+#line 2251 "cs.ATG"
outExpr = new CastExpression(type, outExpr, CastType.TryCast);
} else SynErr(216);
}
@@ -5414,83 +5416,83 @@ ref type);
}
void ShiftExpr(
-#line 2253 "cs.ATG"
+#line 2256 "cs.ATG"
ref Expression outExpr) {
-#line 2255 "cs.ATG"
+#line 2258 "cs.ATG"
Expression expr;
BinaryOperatorType op = BinaryOperatorType.None;
AdditiveExpr(
-#line 2259 "cs.ATG"
+#line 2262 "cs.ATG"
ref outExpr);
while (la.kind == 37 ||
-#line 2262 "cs.ATG"
+#line 2265 "cs.ATG"
IsShiftRight()) {
if (la.kind == 37) {
lexer.NextToken();
-#line 2261 "cs.ATG"
+#line 2264 "cs.ATG"
op = BinaryOperatorType.ShiftLeft;
} else {
Expect(22);
Expect(22);
-#line 2263 "cs.ATG"
+#line 2266 "cs.ATG"
op = BinaryOperatorType.ShiftRight;
}
UnaryExpr(
-#line 2266 "cs.ATG"
+#line 2269 "cs.ATG"
out expr);
AdditiveExpr(
-#line 2266 "cs.ATG"
+#line 2269 "cs.ATG"
ref expr);
-#line 2266 "cs.ATG"
+#line 2269 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr, op, expr);
}
}
void AdditiveExpr(
-#line 2270 "cs.ATG"
+#line 2273 "cs.ATG"
ref Expression outExpr) {
-#line 2272 "cs.ATG"
+#line 2275 "cs.ATG"
Expression expr;
BinaryOperatorType op = BinaryOperatorType.None;
MultiplicativeExpr(
-#line 2276 "cs.ATG"
+#line 2279 "cs.ATG"
ref outExpr);
while (la.kind == 4 || la.kind == 5) {
if (la.kind == 4) {
lexer.NextToken();
-#line 2279 "cs.ATG"
+#line 2282 "cs.ATG"
op = BinaryOperatorType.Add;
} else {
lexer.NextToken();
-#line 2280 "cs.ATG"
+#line 2283 "cs.ATG"
op = BinaryOperatorType.Subtract;
}
UnaryExpr(
-#line 2282 "cs.ATG"
+#line 2285 "cs.ATG"
out expr);
MultiplicativeExpr(
-#line 2282 "cs.ATG"
+#line 2285 "cs.ATG"
ref expr);
-#line 2282 "cs.ATG"
+#line 2285 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr, op, expr);
}
}
void MultiplicativeExpr(
-#line 2286 "cs.ATG"
+#line 2289 "cs.ATG"
ref Expression outExpr) {
-#line 2288 "cs.ATG"
+#line 2291 "cs.ATG"
Expression expr;
BinaryOperatorType op = BinaryOperatorType.None;
@@ -5498,82 +5500,82 @@ ref Expression outExpr) {
if (la.kind == 6) {
lexer.NextToken();
-#line 2294 "cs.ATG"
+#line 2297 "cs.ATG"
op = BinaryOperatorType.Multiply;
} else if (la.kind == 7) {
lexer.NextToken();
-#line 2295 "cs.ATG"
+#line 2298 "cs.ATG"
op = BinaryOperatorType.Divide;
} else {
lexer.NextToken();
-#line 2296 "cs.ATG"
+#line 2299 "cs.ATG"
op = BinaryOperatorType.Modulus;
}
UnaryExpr(
-#line 2298 "cs.ATG"
+#line 2301 "cs.ATG"
out expr);
-#line 2298 "cs.ATG"
+#line 2301 "cs.ATG"
outExpr = new BinaryOperatorExpression(outExpr, op, expr);
}
}
void TypeParameterConstraintsClauseBase(
-#line 2404 "cs.ATG"
+#line 2407 "cs.ATG"
out TypeReference type) {
-#line 2405 "cs.ATG"
+#line 2408 "cs.ATG"
TypeReference t; type = null;
if (la.kind == 109) {
lexer.NextToken();
-#line 2407 "cs.ATG"
+#line 2410 "cs.ATG"
type = TypeReference.StructConstraint;
} else if (la.kind == 59) {
lexer.NextToken();
-#line 2408 "cs.ATG"
+#line 2411 "cs.ATG"
type = TypeReference.ClassConstraint;
} else if (la.kind == 89) {
lexer.NextToken();
Expect(20);
Expect(21);
-#line 2409 "cs.ATG"
+#line 2412 "cs.ATG"
type = TypeReference.NewConstraint;
} else if (StartOf(10)) {
Type(
-#line 2410 "cs.ATG"
+#line 2413 "cs.ATG"
out t);
-#line 2410 "cs.ATG"
+#line 2413 "cs.ATG"
type = t;
} else SynErr(217);
}
void QueryExpressionFromClause(
-#line 2425 "cs.ATG"
+#line 2428 "cs.ATG"
out QueryExpressionFromClause fc) {
-#line 2426 "cs.ATG"
+#line 2429 "cs.ATG"
fc = new QueryExpressionFromClause(); fc.StartLocation = la.Location;
Expect(137);
QueryExpressionFromOrJoinClause(
-#line 2430 "cs.ATG"
+#line 2433 "cs.ATG"
fc);
-#line 2431 "cs.ATG"
+#line 2434 "cs.ATG"
fc.EndLocation = t.EndLocation;
}
void QueryExpressionBody(
-#line 2461 "cs.ATG"
+#line 2464 "cs.ATG"
ref QueryExpression q) {
-#line 2462 "cs.ATG"
+#line 2465 "cs.ATG"
QueryExpressionFromClause fromClause; QueryExpressionWhereClause whereClause;
QueryExpressionLetClause letClause; QueryExpressionJoinClause joinClause;
QueryExpressionOrderClause orderClause;
@@ -5582,249 +5584,249 @@ ref QueryExpression q) {
while (StartOf(39)) {
if (la.kind == 137) {
QueryExpressionFromClause(
-#line 2468 "cs.ATG"
+#line 2471 "cs.ATG"
out fromClause);
-#line 2468 "cs.ATG"
+#line 2471 "cs.ATG"
SafeAdd<QueryExpressionClause>(q, q.MiddleClauses, fromClause);
} else if (la.kind == 127) {
QueryExpressionWhereClause(
-#line 2469 "cs.ATG"
+#line 2472 "cs.ATG"
out whereClause);
-#line 2469 "cs.ATG"
+#line 2472 "cs.ATG"
SafeAdd<QueryExpressionClause>(q, q.MiddleClauses, whereClause);
} else if (la.kind == 141) {
QueryExpressionLetClause(
-#line 2470 "cs.ATG"
+#line 2473 "cs.ATG"
out letClause);
-#line 2470 "cs.ATG"
+#line 2473 "cs.ATG"
SafeAdd<QueryExpressionClause>(q, q.MiddleClauses, letClause);
} else if (la.kind == 142) {
QueryExpressionJoinClause(
-#line 2471 "cs.ATG"
+#line 2474 "cs.ATG"
out joinClause);
-#line 2471 "cs.ATG"
+#line 2474 "cs.ATG"
SafeAdd<QueryExpressionClause>(q, q.MiddleClauses, joinClause);
} else {
QueryExpressionOrderByClause(
-#line 2472 "cs.ATG"
+#line 2475 "cs.ATG"
out orderClause);
-#line 2472 "cs.ATG"
+#line 2475 "cs.ATG"
SafeAdd<QueryExpressionClause>(q, q.MiddleClauses, orderClause);
}
}
if (la.kind == 133) {
QueryExpressionSelectClause(
-#line 2474 "cs.ATG"
+#line 2477 "cs.ATG"
out selectClause);
-#line 2474 "cs.ATG"
+#line 2477 "cs.ATG"
q.SelectOrGroupClause = selectClause;
} else if (la.kind == 134) {
QueryExpressionGroupClause(
-#line 2475 "cs.ATG"
+#line 2478 "cs.ATG"
out groupClause);
-#line 2475 "cs.ATG"
+#line 2478 "cs.ATG"
q.SelectOrGroupClause = groupClause;
} else SynErr(218);
if (la.kind == 136) {
QueryExpressionIntoClause(
-#line 2477 "cs.ATG"
+#line 2480 "cs.ATG"
ref q);
}
}
void QueryExpressionFromOrJoinClause(
-#line 2451 "cs.ATG"
+#line 2454 "cs.ATG"
QueryExpressionFromOrJoinClause fjc) {
-#line 2452 "cs.ATG"
+#line 2455 "cs.ATG"
TypeReference type; Expression expr;
-#line 2454 "cs.ATG"
+#line 2457 "cs.ATG"
fjc.Type = null;
if (
-#line 2455 "cs.ATG"
+#line 2458 "cs.ATG"
IsLocalVarDecl()) {
Type(
-#line 2455 "cs.ATG"
+#line 2458 "cs.ATG"
out type);
-#line 2455 "cs.ATG"
+#line 2458 "cs.ATG"
fjc.Type = type;
}
Identifier();
-#line 2456 "cs.ATG"
+#line 2459 "cs.ATG"
fjc.Identifier = t.val;
Expect(81);
Expr(
-#line 2458 "cs.ATG"
+#line 2461 "cs.ATG"
out expr);
-#line 2458 "cs.ATG"
+#line 2461 "cs.ATG"
fjc.InExpression = expr;
}
void QueryExpressionJoinClause(
-#line 2434 "cs.ATG"
+#line 2437 "cs.ATG"
out QueryExpressionJoinClause jc) {
-#line 2435 "cs.ATG"
+#line 2438 "cs.ATG"
jc = new QueryExpressionJoinClause(); jc.StartLocation = la.Location;
Expression expr;
Expect(142);
QueryExpressionFromOrJoinClause(
-#line 2440 "cs.ATG"
+#line 2443 "cs.ATG"
jc);
Expect(143);
Expr(
-#line 2442 "cs.ATG"
+#line 2445 "cs.ATG"
out expr);
-#line 2442 "cs.ATG"
+#line 2445 "cs.ATG"
jc.OnExpression = expr;
Expect(144);
Expr(
-#line 2444 "cs.ATG"
+#line 2447 "cs.ATG"
out expr);
-#line 2444 "cs.ATG"
+#line 2447 "cs.ATG"
jc.EqualsExpression = expr;
if (la.kind == 136) {
lexer.NextToken();
Identifier();
-#line 2446 "cs.ATG"
+#line 2449 "cs.ATG"
jc.IntoIdentifier = t.val;
}
-#line 2448 "cs.ATG"
+#line 2451 "cs.ATG"
jc.EndLocation = t.EndLocation;
}
void QueryExpressionWhereClause(
-#line 2480 "cs.ATG"
+#line 2483 "cs.ATG"
out QueryExpressionWhereClause wc) {
-#line 2481 "cs.ATG"
+#line 2484 "cs.ATG"
Expression expr; wc = new QueryExpressionWhereClause(); wc.StartLocation = la.Location;
Expect(127);
Expr(
-#line 2484 "cs.ATG"
+#line 2487 "cs.ATG"
out expr);
-#line 2484 "cs.ATG"
+#line 2487 "cs.ATG"
wc.Condition = expr;
-#line 2485 "cs.ATG"
+#line 2488 "cs.ATG"
wc.EndLocation = t.EndLocation;
}
void QueryExpressionLetClause(
-#line 2488 "cs.ATG"
+#line 2491 "cs.ATG"
out QueryExpressionLetClause wc) {
-#line 2489 "cs.ATG"
+#line 2492 "cs.ATG"
Expression expr; wc = new QueryExpressionLetClause(); wc.StartLocation = la.Location;
Expect(141);
Identifier();
-#line 2492 "cs.ATG"
+#line 2495 "cs.ATG"
wc.Identifier = t.val;
Expect(3);
Expr(
-#line 2494 "cs.ATG"
+#line 2497 "cs.ATG"
out expr);
-#line 2494 "cs.ATG"
+#line 2497 "cs.ATG"
wc.Expression = expr;
-#line 2495 "cs.ATG"
+#line 2498 "cs.ATG"
wc.EndLocation = t.EndLocation;
}
void QueryExpressionOrderByClause(
-#line 2498 "cs.ATG"
+#line 2501 "cs.ATG"
out QueryExpressionOrderClause oc) {
-#line 2499 "cs.ATG"
+#line 2502 "cs.ATG"
QueryExpressionOrdering ordering; oc = new QueryExpressionOrderClause(); oc.StartLocation = la.Location;
Expect(140);
QueryExpressionOrdering(
-#line 2502 "cs.ATG"
+#line 2505 "cs.ATG"
out ordering);
-#line 2502 "cs.ATG"
+#line 2505 "cs.ATG"
SafeAdd(oc, oc.Orderings, ordering);
while (la.kind == 14) {
lexer.NextToken();
QueryExpressionOrdering(
-#line 2504 "cs.ATG"
+#line 2507 "cs.ATG"
out ordering);
-#line 2504 "cs.ATG"
+#line 2507 "cs.ATG"
SafeAdd(oc, oc.Orderings, ordering);
}
-#line 2506 "cs.ATG"
+#line 2509 "cs.ATG"
oc.EndLocation = t.EndLocation;
}
void QueryExpressionSelectClause(
-#line 2519 "cs.ATG"
+#line 2522 "cs.ATG"
out QueryExpressionSelectClause sc) {
-#line 2520 "cs.ATG"
+#line 2523 "cs.ATG"
Expression expr; sc = new QueryExpressionSelectClause(); sc.StartLocation = la.Location;
Expect(133);
Expr(
-#line 2523 "cs.ATG"
+#line 2526 "cs.ATG"
out expr);
-#line 2523 "cs.ATG"
+#line 2526 "cs.ATG"
sc.Projection = expr;
-#line 2524 "cs.ATG"
+#line 2527 "cs.ATG"
sc.EndLocation = t.EndLocation;
}
void QueryExpressionGroupClause(
-#line 2527 "cs.ATG"
+#line 2530 "cs.ATG"
out QueryExpressionGroupClause gc) {
-#line 2528 "cs.ATG"
+#line 2531 "cs.ATG"
Expression expr; gc = new QueryExpressionGroupClause(); gc.StartLocation = la.Location;
Expect(134);
Expr(
-#line 2531 "cs.ATG"
+#line 2534 "cs.ATG"
out expr);
-#line 2531 "cs.ATG"
+#line 2534 "cs.ATG"
gc.Projection = expr;
Expect(135);
Expr(
-#line 2533 "cs.ATG"
+#line 2536 "cs.ATG"
out expr);
-#line 2533 "cs.ATG"
+#line 2536 "cs.ATG"
gc.GroupBy = expr;
-#line 2534 "cs.ATG"
+#line 2537 "cs.ATG"
gc.EndLocation = t.EndLocation;
}
void QueryExpressionIntoClause(
-#line 2537 "cs.ATG"
+#line 2540 "cs.ATG"
ref QueryExpression q) {
-#line 2538 "cs.ATG"
+#line 2541 "cs.ATG"
QueryExpression firstQuery = q;
QueryExpression continuedQuery = new QueryExpression();
continuedQuery.StartLocation = q.StartLocation;
@@ -5839,58 +5841,58 @@ ref QueryExpression q) {
Expect(136);
Identifier();
-#line 2551 "cs.ATG"
+#line 2554 "cs.ATG"
continuedQuery.FromClause.Identifier = t.val;
-#line 2552 "cs.ATG"
+#line 2555 "cs.ATG"
continuedQuery.FromClause.EndLocation = t.EndLocation;
QueryExpressionBody(
-#line 2553 "cs.ATG"
+#line 2556 "cs.ATG"
ref q);
}
void QueryExpressionOrdering(
-#line 2509 "cs.ATG"
+#line 2512 "cs.ATG"
out QueryExpressionOrdering ordering) {
-#line 2510 "cs.ATG"
+#line 2513 "cs.ATG"
Expression expr; ordering = new QueryExpressionOrdering(); ordering.StartLocation = la.Location;
Expr(
-#line 2512 "cs.ATG"
+#line 2515 "cs.ATG"
out expr);
-#line 2512 "cs.ATG"
+#line 2515 "cs.ATG"
ordering.Criteria = expr;
if (la.kind == 138 || la.kind == 139) {
if (la.kind == 138) {
lexer.NextToken();
-#line 2513 "cs.ATG"
+#line 2516 "cs.ATG"
ordering.Direction = QueryExpressionOrderingDirection.Ascending;
} else {
lexer.NextToken();
-#line 2514 "cs.ATG"
+#line 2517 "cs.ATG"
ordering.Direction = QueryExpressionOrderingDirection.Descending;
}
}
-#line 2516 "cs.ATG"
+#line 2519 "cs.ATG"
ordering.EndLocation = t.EndLocation;
}
-
-
- void ParseRoot()
- {
+
+
+ void ParseRoot()
+ {
CS();
-
- }
-
- protected override void SynErr(int line, int col, int errorNumber)
- {
- string s;
- switch (errorNumber) {
+
+ }
+
+ protected override void SynErr(int line, int col, int errorNumber)
+ {
+ string s;
+ switch (errorNumber) {
case 0: s = "EOF expected"; break;
case 1: s = "ident expected"; break;
case 2: s = "Literal expected"; break;
@@ -6110,18 +6112,18 @@ out expr);
case 216: s = "invalid RelationalExpr"; break;
case 217: s = "invalid TypeParameterConstraintsClauseBase"; break;
case 218: s = "invalid QueryExpressionBody"; break;
-
- default: s = "error " + errorNumber; break;
- }
- this.Errors.Error(line, col, s);
- }
-
- private bool StartOf(int s)
- {
- return set[s, lexer.LookAhead.kind];
- }
-
- static bool[,] set = {
+
+ default: s = "error " + errorNumber; break;
+ }
+ this.Errors.Error(line, col, s);
+ }
+
+ private bool StartOf(int s)
+ {
+ return set[s, lexer.LookAhead.kind];
+ }
+
+ static bool[,] set = {
{T,T,T,x, T,T,T,x, x,x,x,T, x,x,x,x, T,T,T,x, T,x,x,x, T,x,x,T, T,x,x,T, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,T, T,T,T,x, x,T,T,T, T,T,T,T, T,T,T,x, T,T,T,T, T,x,T,T, T,T,T,T, T,x,T,T, T,x,T,T, x,T,T,T, x,x,T,x, T,T,T,T, x,T,T,T, T,T,x,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,T,T,T, T,x,x},
{x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,T, x,x,x,x, T,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, T,x,x,x, T,T,x,x, x,x,x,x, T,T,T,x, x,x,x,T, x,x,x,T, x,T,x,x, x,x,x,x, x,x,x,T, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x},
{x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,T, x,x,x,x, T,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, T,x,x,x, x,T,x,x, x,x,x,x, T,T,T,x, x,x,x,T, x,x,x,T, x,T,x,x, x,x,x,x, x,x,x,T, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x},
@@ -6162,8 +6164,8 @@ out expr);
{x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,T, x,x,x,x, x,x,x,x, x,x,x,T, T,x,x,x, x,x,x,x, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x},
{x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,T, x,x,x,x, x,x,x,x, x,x,x,T, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x},
{x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, x,x,x,x, x,x,x,x, x,T,x,x, T,T,T,x, x,x,x}
-
- };
-} // end Parser
-
+
+ };
+} // end Parser
+
} \ No newline at end of file
diff --git a/main/contrib/NRefactory/Project/Src/Parser/CSharp/cs.ATG b/main/contrib/NRefactory/Project/Src/Parser/CSharp/cs.ATG
index 1901e1978b..e49da6c2b0 100644
--- a/main/contrib/NRefactory/Project/Src/Parser/CSharp/cs.ATG
+++ b/main/contrib/NRefactory/Project/Src/Parser/CSharp/cs.ATG
@@ -240,22 +240,24 @@ Attribute<out ASTAttribute attribute>
"::"
]
Qualident<out qualident>
- (. List<Expression> positional = new List<Expression>();
- List<NamedArgumentExpression> named = new List<NamedArgumentExpression>();
+ (. List<Expression> positional = null;
+ List<NamedArgumentExpression> named = null;
string name = (alias != null && alias != "global") ? alias + "." + qualident : qualident;
.)
- [ AttributeArguments<positional, named> ]
+ [ AttributeArguments<out positional, out named> ]
(. attribute = new ASTAttribute(name, positional, named);
attribute.StartLocation = startPos;
attribute.EndLocation = t.EndLocation;
.)
.
-AttributeArguments<List<Expression> positional, List<NamedArgumentExpression> named>
+AttributeArguments<out List<Expression> positional, out List<NamedArgumentExpression> named>
(.
bool nameFound = false;
string name = "";
Expression expr;
+ positional = new List<Expression>();
+ named = new List<NamedArgumentExpression> ();
.)
=
"("
@@ -264,7 +266,8 @@ AttributeArguments<List<Expression> positional, List<NamedArgumentExpression> na
IF (IsAssignment()) (. nameFound = true; .)
Identifier (. name = t.val; .)
"="
- ] Expr<out expr> (. if (expr != null) {if(name == "") positional.Add(expr);
+ ] Expr<out expr> (. if (expr != null) {
+ if(name == "") positional.Add(expr);
else { named.Add(new NamedArgumentExpression(name, expr)); name = ""; }
}
.)
diff --git a/main/contrib/NRefactory/Project/Src/Parser/VBNet/Parser.cs b/main/contrib/NRefactory/Project/Src/Parser/VBNet/Parser.cs
index 4551eda142..d9e5d586f6 100644
--- a/main/contrib/NRefactory/Project/Src/Parser/VBNet/Parser.cs
+++ b/main/contrib/NRefactory/Project/Src/Parser/VBNet/Parser.cs
@@ -7,31 +7,31 @@ using System.Text;
using ICSharpCode.NRefactory.Ast;
using ICSharpCode.NRefactory.Parser.VB;
using ASTAttribute = ICSharpCode.NRefactory.Ast.Attribute;
-/*
- Parser.frame file for NRefactory.
- */
-using System;
-using System.Reflection;
-
-namespace ICSharpCode.NRefactory.Parser.VB {
-
-
-
-partial class Parser : AbstractParser
-{
+/*
+ Parser.frame file for NRefactory.
+ */
+using System;
+using System.Reflection;
+
+namespace ICSharpCode.NRefactory.Parser.VB {
+
+
+
+partial class Parser : AbstractParser
+{
const int maxT = 222;
-
- const bool T = true;
- const bool x = false;
-
+
+ const bool T = true;
+ const bool x = false;
+
#line 12 "VBNET.ATG"
-
-
-/*
-
-*/
-
+
+
+/*
+
+*/
+
void VBNET() {
#line 246 "VBNET.ATG"
@@ -1688,8 +1688,7 @@ IsMustOverride(m)) {
}
compilationUnit.AddChild(methodDeclaration);
-
- if (ParseMethodBodies) {
+ if (ParseMethodBodies) {
Block(
#line 946 "VBNET.ATG"
out stmt);
@@ -2069,8 +2068,7 @@ out eventAccessorDeclaration);
{
Error("Need to provide RaiseEvent accessor.");
}
-
- EventDeclaration decl = new EventDeclaration {
+ EventDeclaration decl = new EventDeclaration {
TypeReference = type, Name = customEventName, Modifier = m.Modifier,
Attributes = attributes,
StartLocation = m.GetDeclarationLocation(startPos),
@@ -6808,8 +6806,7 @@ out goToStatement);
#line 3099 "VBNET.ATG"
string val = goToStatement.Label;
-
- // if value is numeric, make sure that is 0
+ // if value is numeric, make sure that is 0
try {
long intLabel = Int64.Parse(val);
if(intLabel != 0) {
@@ -7044,18 +7041,18 @@ out blockStmt);
}
}
-
-
- void ParseRoot()
- {
+
+
+ void ParseRoot()
+ {
VBNET();
-
- }
-
- protected override void SynErr(int line, int col, int errorNumber)
- {
- string s;
- switch (errorNumber) {
+
+ }
+
+ protected override void SynErr(int line, int col, int errorNumber)
+ {
+ string s;
+ switch (errorNumber) {
case 0: s = "EOF expected"; break;
case 1: s = "EOL expected"; break;
case 2: s = "ident expected"; break;
@@ -7343,18 +7340,18 @@ out blockStmt);
case 284: s = "invalid ResumeStatement"; break;
case 285: s = "invalid CaseClause"; break;
case 286: s = "invalid CaseClause"; break;
-
- default: s = "error " + errorNumber; break;
- }
- this.Errors.Error(line, col, s);
- }
-
- private bool StartOf(int s)
- {
- return set[s, lexer.LookAhead.kind];
- }
-
- static bool[,] set = {
+
+ default: s = "error " + errorNumber; break;
+ }
+ this.Errors.Error(line, col, s);
+ }
+
+ private bool StartOf(int s)
+ {
+ return set[s, lexer.LookAhead.kind];
+ }
+
+ static bool[,] set = {
{T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x},
{x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,x, x,T,T,x, x,x,T,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,T,x, T,T,x,x, x,x,x,x, x,x,x,x, T,T,x,x, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x},
{x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,x, x,T,T,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,T,x, T,T,x,x, x,x,x,x, x,x,x,x, T,T,x,x, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x},
@@ -7399,8 +7396,8 @@ out blockStmt);
{x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,T,x,T, T,T,T,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,T, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,T, T,x,T,x, x,x,x,x, x,x,x,T, x,x,x,x, T,x,x,x, x,T,x,x, x,x,x,x, T,x,x,x, x,x,T,x, x,x,T,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,T,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,T,x,x, x,x,x,x, x,T,T,x, x,x,x,x, x,x,x,x, T,T,x,x, x,x,x,T, x,x,x,x, x,x,x,x},
{x,x,T,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,T,x,x, x,T,x,T, T,T,T,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,T,x,x, x,x,x,T, x,x,T,x, x,x,x,x, x,x,x,T, x,x,x,x, T,x,x,x, x,T,x,x, x,x,x,x, T,x,x,x, x,x,T,x, x,x,T,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,T,x, x,x,x,x, x,T,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, T,x,x,x, x,x,x,x, x,T,T,x, x,x,x,x, x,x,x,x, T,T,x,x, x,x,x,T, x,x,x,x, x,x,x,x},
{x,x,x,x, x,x,x,x, x,x,T,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, T,T,T,T, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,T, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x, x,x,x,x}
-
- };
-} // end Parser
-
+
+ };
+} // end Parser
+
} \ No newline at end of file
diff --git a/main/contrib/NRefactory/Project/Src/PrettyPrinter/CSharp/CSharpOutputVisitor.cs b/main/contrib/NRefactory/Project/Src/PrettyPrinter/CSharp/CSharpOutputVisitor.cs
index 903f8f3604..484f053342 100644
--- a/main/contrib/NRefactory/Project/Src/PrettyPrinter/CSharp/CSharpOutputVisitor.cs
+++ b/main/contrib/NRefactory/Project/Src/PrettyPrinter/CSharp/CSharpOutputVisitor.cs
@@ -255,30 +255,32 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
return null;
}
- public override object TrackedVisitAttribute(ICSharpCode.NRefactory.Ast.Attribute attribute, object data)
+ public override object TrackedVisitAttribute (ICSharpCode.NRefactory.Ast.Attribute attribute, object data)
{
- outputFormatter.PrintIdentifier(attribute.Name);
- outputFormatter.PrintToken(Tokens.OpenParenthesis);
+ outputFormatter.PrintIdentifier (attribute.Name);
+ if (attribute.IsEmptyCall)
+ return null;
+ outputFormatter.PrintToken (Tokens.OpenParenthesis);
if (this.prettyPrintOptions.WithinMethodCallParentheses) {
- outputFormatter.Space();
+ outputFormatter.Space ();
}
- this.AppendCommaSeparatedList(attribute.PositionalArguments);
+ this.AppendCommaSeparatedList (attribute.PositionalArguments);
if (attribute.NamedArguments != null && attribute.NamedArguments.Count > 0) {
if (attribute.PositionalArguments.Count > 0) {
- PrintFormattedComma();
+ PrintFormattedComma ();
}
for (int i = 0; i < attribute.NamedArguments.Count; ++i) {
- TrackVisit((INode)attribute.NamedArguments[i], data);
+ TrackVisit ((INode)attribute.NamedArguments[i], data);
if (i + 1 < attribute.NamedArguments.Count) {
- PrintFormattedComma();
+ PrintFormattedComma ();
}
}
}
if (this.prettyPrintOptions.WithinMethodCallParentheses) {
- outputFormatter.Space();
+ outputFormatter.Space ();
}
- outputFormatter.PrintToken(Tokens.CloseParenthesis);
+ outputFormatter.PrintToken (Tokens.CloseParenthesis);
return null;
}