Browse Source

Remove hand-written AST visitor/null/placeholder boilerplate

The generator emits the IAstVisitor interface, the AcceptVisitor overloads,
and the null-node and pattern-placeholder nodes from [DecompilerAstNode]
declarations, so drop the hand-written equivalents across the C# AST: per-node
AcceptVisitor/DoMatch, the #region Null / #region PatternPlaceholder blocks,
IAstVisitor.cs, and now-dead usings. Also adds AccessorKind and moves
IdentifierExpressionBackreference into the PatternMatching folder.

Assisted-by: Claude:claude-opus-4-8:Claude Code
pull/3807/head
Siegfried Pammer 3 weeks ago committed by Siegfried Pammer
parent
commit
dfd18133bb
  1. 87
      ICSharpCode.Decompiler/CSharp/Syntax/AstNode.cs
  2. 79
      ICSharpCode.Decompiler/CSharp/Syntax/AstType.cs
  3. 49
      ICSharpCode.Decompiler/CSharp/Syntax/CSharpTokenNode.cs
  4. 30
      ICSharpCode.Decompiler/CSharp/Syntax/ComposedType.cs
  5. 15
      ICSharpCode.Decompiler/CSharp/Syntax/DocumentationReference.cs
  6. 22
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/AnonymousMethodExpression.cs
  7. 21
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/AnonymousTypeCreateExpression.cs
  8. 24
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ArrayCreateExpression.cs
  9. 129
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ArrayInitializerExpression.cs
  10. 23
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/AsExpression.cs
  11. 23
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/AssignmentExpression.cs
  12. 21
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/BaseReferenceExpression.cs
  13. 22
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/BinaryOperatorExpression.cs
  14. 23
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/CastExpression.cs
  15. 21
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/CheckedExpression.cs
  16. 23
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ConditionalExpression.cs
  17. 24
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/DeclarationExpression.cs
  18. 21
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/DefaultValueExpression.cs
  19. 21
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/DirectionExpression.cs
  20. 28
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ErrorExpression.cs
  21. 80
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/Expression.cs
  22. 21
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/IdentifierExpression.cs
  23. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/IndexerExpression.cs
  24. 80
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/InterpolatedStringExpression.cs
  25. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/InvocationExpression.cs
  26. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/IsExpression.cs
  27. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/LambdaExpression.cs
  28. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/MemberReferenceExpression.cs
  29. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/NamedArgumentExpression.cs
  30. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/NamedExpression.cs
  31. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/NullReferenceExpression.cs
  32. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ObjectCreateExpression.cs
  33. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/OutVarDeclarationExpression.cs
  34. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ParenthesizedExpression.cs
  35. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/PointerReferenceExpression.cs
  36. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/PrimitiveExpression.cs
  37. 184
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/QueryExpression.cs
  38. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/RecursivePatternExpression.cs
  39. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/SizeOfExpression.cs
  40. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/StackAllocExpression.cs
  41. 30
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/SwitchExpression.cs
  42. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ThisReferenceExpression.cs
  43. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ThrowExpression.cs
  44. 17
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/TupleExpression.cs
  45. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/TypeOfExpression.cs
  46. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/TypeReferenceExpression.cs
  47. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/UnaryOperatorExpression.cs
  48. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/UncheckedExpression.cs
  49. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/UndocumentedExpression.cs
  50. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Expressions/WithInitializerExpression.cs
  51. 15
      ICSharpCode.Decompiler/CSharp/Syntax/FunctionPointerAstType.cs
  52. 15
      ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/Attribute.cs
  53. 61
      ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/AttributeSection.cs
  54. 15
      ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/Comment.cs
  55. 15
      ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/Constraint.cs
  56. 15
      ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/DelegateDeclaration.cs
  57. 15
      ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/ExternAliasDeclaration.cs
  58. 15
      ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/NamespaceDeclaration.cs
  59. 15
      ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/PreProcessorDirective.cs
  60. 15
      ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/TypeDeclaration.cs
  61. 15
      ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/TypeParameterDeclaration.cs
  62. 15
      ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/UsingAliasDeclaration.cs
  63. 15
      ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/UsingDeclaration.cs
  64. 470
      ICSharpCode.Decompiler/CSharp/Syntax/IAstVisitor.cs
  65. 45
      ICSharpCode.Decompiler/CSharp/Syntax/Identifier.cs
  66. 15
      ICSharpCode.Decompiler/CSharp/Syntax/InvocationAstType.cs
  67. 15
      ICSharpCode.Decompiler/CSharp/Syntax/MemberType.cs
  68. 10
      ICSharpCode.Decompiler/CSharp/Syntax/PatternMatching/IdentifierExpressionBackreference.cs
  69. 15
      ICSharpCode.Decompiler/CSharp/Syntax/PrimitiveType.cs
  70. 9
      ICSharpCode.Decompiler/CSharp/Syntax/Role.cs
  71. 48
      ICSharpCode.Decompiler/CSharp/Syntax/SimpleType.cs
  72. 93
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/BlockStatement.cs
  73. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/BreakStatement.cs
  74. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/CheckedStatement.cs
  75. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/ContinueStatement.cs
  76. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/DoWhileStatement.cs
  77. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/EmptyStatement.cs
  78. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/ExpressionStatement.cs
  79. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/FixedStatement.cs
  80. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/ForStatement.cs
  81. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/ForeachStatement.cs
  82. 45
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/GotoStatement.cs
  83. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/IfElseStatement.cs
  84. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/LabelStatement.cs
  85. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/LocalFunctionDeclarationStatement.cs
  86. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/LockStatement.cs
  87. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/ReturnStatement.cs
  88. 79
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/Statement.cs
  89. 91
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/SwitchStatement.cs
  90. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/ThrowStatement.cs
  91. 109
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/TryCatchStatement.cs
  92. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/UncheckedStatement.cs
  93. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/UnsafeStatement.cs
  94. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/UsingStatement.cs
  95. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/VariableDeclarationStatement.cs
  96. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/WhileStatement.cs
  97. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/YieldBreakStatement.cs
  98. 15
      ICSharpCode.Decompiler/CSharp/Syntax/Statements/YieldReturnStatement.cs
  99. 16
      ICSharpCode.Decompiler/CSharp/Syntax/SyntaxTree.cs
  100. 63
      ICSharpCode.Decompiler/CSharp/Syntax/TupleAstType.cs
  101. Some files were not shown because too many files have changed in this diff Show More

87
ICSharpCode.Decompiler/CSharp/Syntax/AstNode.cs

@ -38,96 +38,11 @@ using ICSharpCode.Decompiler.TypeSystem; @@ -38,96 +38,11 @@ using ICSharpCode.Decompiler.TypeSystem;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
[DecompilerAstNode(hasNullNode: true, hasPatternPlaceholder: true)]
public abstract partial class AstNode : AbstractAnnotatable, INode, ICloneable
public abstract partial class AstNode : AbstractAnnotatable, IFreezable, INode, ICloneable
{
// the Root role must be available when creating the null nodes, so we can't put it in the Roles class
internal static readonly Role<AstNode?> RootRole = new Role<AstNode?>("Root", null);
#region Null
public static readonly AstNode Null = new NullAstNode();
sealed class NullAstNode : AstNode
{
public override NodeType NodeType {
get {
return NodeType.Unknown;
}
}
public override bool IsNull {
get {
return true;
}
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitNullNode(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitNullNode(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitNullNode(this, data);
}
protected internal override bool DoMatch(AstNode? other, PatternMatching.Match match)
{
return other == null || other.IsNull;
}
}
#endregion
#region PatternPlaceholder
public static implicit operator AstNode?(PatternMatching.Pattern? pattern)
{
return pattern != null ? new PatternPlaceholder(pattern) : null;
}
sealed class PatternPlaceholder : AstNode, INode
{
readonly PatternMatching.Pattern child;
public PatternPlaceholder(PatternMatching.Pattern child)
{
this.child = child;
}
public override NodeType NodeType {
get { return NodeType.Pattern; }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitPatternPlaceholder(this, child);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitPatternPlaceholder(this, child);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitPatternPlaceholder(this, child, data);
}
protected internal override bool DoMatch(AstNode? other, PatternMatching.Match match)
{
return child.DoMatch(other, match);
}
bool PatternMatching.INode.DoMatchCollection(Role? role, PatternMatching.INode? pos, PatternMatching.Match match, PatternMatching.BacktrackingInfo backtrackingInfo)
{
return child.DoMatchCollection(role, pos, match, backtrackingInfo);
}
}
#endregion
AstNode? parent;
AstNode? prevSibling;
AstNode? nextSibling;

79
ICSharpCode.Decompiler/CSharp/Syntax/AstType.cs

@ -29,85 +29,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -29,85 +29,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
[DecompilerAstNode(hasNullNode: true, hasPatternPlaceholder: true)]
public abstract partial class AstType : AstNode
{
#region Null
public new static readonly AstType Null = new NullAstType();
sealed class NullAstType : AstType
{
public override bool IsNull {
get {
return true;
}
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitNullNode(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitNullNode(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitNullNode(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
return other == null || other.IsNull;
}
}
#endregion
#region PatternPlaceholder
public static implicit operator AstType(PatternMatching.Pattern pattern)
{
return pattern != null ? new PatternPlaceholder(pattern) : null;
}
sealed class PatternPlaceholder : AstType, INode
{
readonly PatternMatching.Pattern child;
public PatternPlaceholder(PatternMatching.Pattern child)
{
this.child = child;
}
public override NodeType NodeType {
get { return NodeType.Pattern; }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitPatternPlaceholder(this, child);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitPatternPlaceholder(this, child);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitPatternPlaceholder(this, child, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
return child.DoMatch(other, match);
}
bool PatternMatching.INode.DoMatchCollection(Role role, PatternMatching.INode pos, PatternMatching.Match match, PatternMatching.BacktrackingInfo backtrackingInfo)
{
return child.DoMatchCollection(role, pos, match, backtrackingInfo);
}
}
#endregion
public override NodeType NodeType {
get { return NodeType.TypeReference; }
}

49
ICSharpCode.Decompiler/CSharp/Syntax/CSharpTokenNode.cs

@ -37,40 +37,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -37,40 +37,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
[DecompilerAstNode(hasNullNode: true)]
public partial class CSharpTokenNode : AstNode
{
public static new readonly CSharpTokenNode Null = new NullCSharpTokenNode();
class NullCSharpTokenNode : CSharpTokenNode
{
public override bool IsNull {
get {
return true;
}
}
public NullCSharpTokenNode() : base(TextLocation.Empty, null)
{
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitNullNode(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitNullNode(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitNullNode(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
return other == null || other.IsNull;
}
}
public override NodeType NodeType {
get {
return NodeType.Token;
@ -118,21 +84,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -118,21 +84,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
return string.Empty;
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitCSharpTokenNode(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitCSharpTokenNode(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitCSharpTokenNode(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
CSharpTokenNode o = other as CSharpTokenNode;

30
ICSharpCode.Decompiler/CSharp/Syntax/ComposedType.cs

@ -128,21 +128,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -128,21 +128,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildrenByRole(PointerRole); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitComposedType(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitComposedType(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitComposedType(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
ComposedType o = other as ComposedType;
@ -247,21 +232,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -247,21 +232,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildByRole(Roles.RBracket); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitArraySpecifier(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitArraySpecifier(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitArraySpecifier(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
ArraySpecifier o = other as ArraySpecifier;

15
ICSharpCode.Decompiler/CSharp/Syntax/DocumentationReference.cs

@ -131,20 +131,5 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -131,20 +131,5 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
return this.Parameters.DoMatch(o.Parameters, match);
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitDocumentationReference(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitDocumentationReference(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitDocumentationReference(this, data);
}
}
}

22
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/AnonymousMethodExpression.cs

@ -94,27 +94,5 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -94,27 +94,5 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
public AnonymousMethodExpression(BlockStatement body, params ParameterDeclaration[] parameters) : this(body, (IEnumerable<ParameterDeclaration>)parameters)
{
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitAnonymousMethodExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitAnonymousMethodExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitAnonymousMethodExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
AnonymousMethodExpression o = other as AnonymousMethodExpression;
return o != null && this.IsAsync == o.IsAsync && this.HasParameterList == o.HasParameterList
&& this.Parameters.DoMatch(o.Parameters, match) && this.Body.DoMatch(o.Body, match);
}
}
}

21
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/AnonymousTypeCreateExpression.cs

@ -66,27 +66,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -66,27 +66,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
public AnonymousTypeCreateExpression(params Expression[] initializer) : this((IEnumerable<Expression>)initializer)
{
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitAnonymousTypeCreateExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitAnonymousTypeCreateExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitAnonymousTypeCreateExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
var o = other as AnonymousTypeCreateExpression;
return o != null && this.Initializers.DoMatch(o.Initializers, match);
}
}
}

24
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ArrayCreateExpression.cs

@ -53,29 +53,5 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -53,29 +53,5 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildByRole(InitializerRole); }
set { SetChildByRole(InitializerRole, value); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitArrayCreateExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitArrayCreateExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitArrayCreateExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
ArrayCreateExpression o = other as ArrayCreateExpression;
return o != null && this.Type.DoMatch(o.Type, match)
&& this.Arguments.DoMatch(o.Arguments, match)
&& this.AdditionalArraySpecifiers.DoMatch(o.AdditionalArraySpecifiers, match)
&& this.Initializer.DoMatch(o.Initializer, match);
}
}
}

129
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ArrayInitializerExpression.cs

@ -34,18 +34,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -34,18 +34,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
[DecompilerAstNode(hasNullNode: true, hasPatternPlaceholder: true)]
public partial class ArrayInitializerExpression : Expression
{
/// <summary>
/// For ease of use purposes in the resolver the ast representation
/// of { a, b, c } is { {a}, {b}, {c} }.
/// If IsSingleElement is true then this array initializer expression is a generated one.
/// That has no meaning in the source code (and contains no brace tokens).
/// </summary>
public virtual bool IsSingleElement {
get {
return false;
}
}
public ArrayInitializerExpression()
{
}
@ -60,39 +48,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -60,39 +48,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
this.Elements.AddRange(elements);
}
#region Null
public new static readonly ArrayInitializerExpression Null = new NullArrayInitializerExpression();
sealed class NullArrayInitializerExpression : ArrayInitializerExpression
{
public override bool IsNull {
get {
return true;
}
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitNullNode(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitNullNode(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitNullNode(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
return other == null || other.IsNull;
}
}
#endregion
public CSharpTokenNode LBraceToken {
get { return GetChildByRole(Roles.LBrace); }
}
@ -104,90 +59,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -104,90 +59,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
public CSharpTokenNode RBraceToken {
get { return GetChildByRole(Roles.RBrace); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitArrayInitializerExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitArrayInitializerExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitArrayInitializerExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
ArrayInitializerExpression o = other as ArrayInitializerExpression;
return o != null && this.Elements.DoMatch(o.Elements, match);
}
public static ArrayInitializerExpression CreateSingleElementInitializer()
{
return new SingleArrayInitializerExpression();
}
/// <summary>
/// Single elements in array initializers are represented with this special class.
/// </summary>
class SingleArrayInitializerExpression : ArrayInitializerExpression
{
public override bool IsSingleElement {
get {
return true;
}
}
}
#region PatternPlaceholder
public static implicit operator ArrayInitializerExpression(PatternMatching.Pattern pattern)
{
return pattern != null ? new PatternPlaceholder(pattern) : null;
}
sealed class PatternPlaceholder : ArrayInitializerExpression, PatternMatching.INode
{
readonly PatternMatching.Pattern child;
public PatternPlaceholder(PatternMatching.Pattern child)
{
this.child = child;
}
public override NodeType NodeType {
get { return NodeType.Pattern; }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitPatternPlaceholder(this, child);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitPatternPlaceholder(this, child);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitPatternPlaceholder(this, child, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
return child.DoMatch(other, match);
}
bool PatternMatching.INode.DoMatchCollection(Role role, PatternMatching.INode pos, PatternMatching.Match match, PatternMatching.BacktrackingInfo backtrackingInfo)
{
return child.DoMatchCollection(role, pos, match, backtrackingInfo);
}
}
#endregion
}
}

23
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/AsExpression.cs

@ -23,8 +23,6 @@ @@ -23,8 +23,6 @@
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
using System.Collections.Generic;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
@ -58,27 +56,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -58,27 +56,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
AddChild(expression, Roles.Expression);
AddChild(type, Roles.Type);
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitAsExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitAsExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitAsExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
AsExpression o = other as AsExpression;
return o != null && this.Expression.DoMatch(o.Expression, match) && this.Type.DoMatch(o.Type, match);
}
}
}

23
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/AssignmentExpression.cs

@ -25,7 +25,6 @@ @@ -25,7 +25,6 @@
// THE SOFTWARE.
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
namespace ICSharpCode.Decompiler.CSharp.Syntax
@ -89,28 +88,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -89,28 +88,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
set { SetChildByRole(RightRole, value); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitAssignmentExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitAssignmentExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitAssignmentExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
AssignmentExpression o = other as AssignmentExpression;
return o != null && (this.Operator == AssignmentOperatorType.Any || this.Operator == o.Operator)
&& this.Left.DoMatch(o.Left, match) && this.Right.DoMatch(o.Right, match);
}
public static TokenRole GetOperatorRole(AssignmentOperatorType op)
{
switch (op)

21
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/BaseReferenceExpression.cs

@ -47,26 +47,5 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -47,26 +47,5 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
return new TextLocation(Location.Line, Location.Column + "base".Length);
}
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitBaseReferenceExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitBaseReferenceExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitBaseReferenceExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
BaseReferenceExpression o = other as BaseReferenceExpression;
return o != null;
}
}
}

22
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/BinaryOperatorExpression.cs

@ -91,28 +91,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -91,28 +91,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
set { SetChildByRole(RightRole, value); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitBinaryOperatorExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitBinaryOperatorExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitBinaryOperatorExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
BinaryOperatorExpression o = other as BinaryOperatorExpression;
return o != null && (this.Operator == BinaryOperatorType.Any || this.Operator == o.Operator)
&& this.Left.DoMatch(o.Left, match) && this.Right.DoMatch(o.Right, match);
}
public static TokenRole GetOperatorRole(BinaryOperatorType op)
{
switch (op)

23
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/CastExpression.cs

@ -23,8 +23,6 @@ @@ -23,8 +23,6 @@
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
using System.Collections.Generic;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
@ -60,27 +58,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -60,27 +58,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
AddChild(castToType, Roles.Type);
AddChild(expression, Roles.Expression);
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitCastExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitCastExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitCastExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
CastExpression o = other as CastExpression;
return o != null && this.Type.DoMatch(o.Type, match) && this.Expression.DoMatch(o.Expression, match);
}
}
}

21
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/CheckedExpression.cs

@ -59,26 +59,5 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -59,26 +59,5 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
{
AddChild(expression, Roles.Expression);
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitCheckedExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitCheckedExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitCheckedExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
CheckedExpression o = other as CheckedExpression;
return o != null && this.Expression.DoMatch(o.Expression, match);
}
}
}

23
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ConditionalExpression.cs

@ -23,8 +23,6 @@ @@ -23,8 +23,6 @@
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
using System.Collections.Generic;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
@ -72,26 +70,5 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -72,26 +70,5 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
AddChild(trueExpression, TrueRole);
AddChild(falseExpression, FalseRole);
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitConditionalExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitConditionalExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitConditionalExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
ConditionalExpression o = other as ConditionalExpression;
return o != null && this.Condition.DoMatch(o.Condition, match) && this.TrueExpression.DoMatch(o.TrueExpression, match) && this.FalseExpression.DoMatch(o.FalseExpression, match);
}
}
}

24
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/DeclarationExpression.cs

@ -16,8 +16,6 @@ @@ -16,8 +16,6 @@
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using ICSharpCode.Decompiler.CSharp.Syntax.PatternMatching;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
@ -35,27 +33,5 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -35,27 +33,5 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildByRole(Roles.VariableDesignationRole); }
set { SetChildByRole(Roles.VariableDesignationRole, value); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitDeclarationExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitDeclarationExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitDeclarationExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, Match match)
{
return other is DeclarationExpression o
&& Type.DoMatch(o.Type, match)
&& Designation.DoMatch(o.Designation, match);
}
}
}

21
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/DefaultValueExpression.cs

@ -59,27 +59,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -59,27 +59,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
{
AddChild(type, Roles.Type);
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitDefaultValueExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitDefaultValueExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitDefaultValueExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
DefaultValueExpression o = other as DefaultValueExpression;
return o != null && this.Type.DoMatch(o.Type, match);
}
}
}

21
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/DirectionExpression.cs

@ -77,26 +77,5 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -77,26 +77,5 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
this.FieldDirection = direction;
AddChild(expression, Roles.Expression);
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitDirectionExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitDirectionExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitDirectionExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
DirectionExpression o = other as DirectionExpression;
return o != null && this.FieldDirection == o.FieldDirection && this.Expression.DoMatch(o.Expression, match);
}
}
}

28
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ErrorExpression.cs

@ -23,8 +23,6 @@ @@ -23,8 +23,6 @@
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
using System;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
[DecompilerAstNode(hasNullNode: false)]
@ -44,11 +42,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -44,11 +42,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
}
public string Error {
get;
private set;
}
public ErrorExpression()
{
}
@ -57,27 +50,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -57,27 +50,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
{
AddChild(new Comment(error, CommentType.MultiLine), Roles.Comment);
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitErrorNode(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitErrorNode(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitErrorNode(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
var o = other as ErrorExpression;
return o != null;
}
}
}

80
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/Expression.cs

@ -17,7 +17,6 @@ @@ -17,7 +17,6 @@
// DEALINGS IN THE SOFTWARE.
using System;
using System.Collections.Generic;
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
@ -31,85 +30,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -31,85 +30,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
[DecompilerAstNode(hasNullNode: true, hasPatternPlaceholder: true)]
public abstract partial class Expression : AstNode
{
#region Null
public new static readonly Expression Null = new NullExpression();
sealed class NullExpression : Expression
{
public override bool IsNull {
get {
return true;
}
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitNullNode(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitNullNode(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitNullNode(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
return other == null || other.IsNull;
}
}
#endregion
#region PatternPlaceholder
public static implicit operator Expression(PatternMatching.Pattern pattern)
{
return pattern != null ? new PatternPlaceholder(pattern) : null;
}
sealed class PatternPlaceholder : Expression, PatternMatching.INode
{
readonly PatternMatching.Pattern child;
public PatternPlaceholder(PatternMatching.Pattern child)
{
this.child = child;
}
public override NodeType NodeType {
get { return NodeType.Pattern; }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitPatternPlaceholder(this, child);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitPatternPlaceholder(this, child);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitPatternPlaceholder(this, child, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
return child.DoMatch(other, match);
}
bool PatternMatching.INode.DoMatchCollection(Role role, PatternMatching.INode pos, PatternMatching.Match match, PatternMatching.BacktrackingInfo backtrackingInfo)
{
return child.DoMatchCollection(role, pos, match, backtrackingInfo);
}
}
#endregion
public override NodeType NodeType {
get {
return NodeType.Expression;

21
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/IdentifierExpression.cs

@ -64,26 +64,5 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -64,26 +64,5 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
public AstNodeCollection<AstType> TypeArguments {
get { return GetChildrenByRole(Roles.TypeArgument); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitIdentifierExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitIdentifierExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitIdentifierExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
IdentifierExpression o = other as IdentifierExpression;
return o != null && MatchString(this.Identifier, o.Identifier) && this.TypeArguments.DoMatch(o.TypeArguments, match);
}
}
}

15
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/IndexerExpression.cs

@ -71,21 +71,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -71,21 +71,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
{
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitIndexerExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitIndexerExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitIndexerExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
IndexerExpression o = other as IndexerExpression;

80
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/InterpolatedStringExpression.cs

@ -1,6 +1,4 @@ @@ -1,6 +1,4 @@
using System;
using System.Collections.Generic;
using System.Text;
using ICSharpCode.Decompiler.CSharp.Syntax.PatternMatching;
@ -26,21 +24,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -26,21 +24,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
Content.AddRange(content);
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitInterpolatedStringExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitInterpolatedStringExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitInterpolatedStringExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, Match match)
{
InterpolatedStringExpression o = other as InterpolatedStringExpression;
@ -51,39 +34,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -51,39 +34,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
[DecompilerAstNode(hasNullNode: true)]
public abstract partial class InterpolatedStringContent : AstNode
{
#region Null
public new static readonly InterpolatedStringContent Null = new NullInterpolatedStringContent();
sealed class NullInterpolatedStringContent : InterpolatedStringContent
{
public override bool IsNull {
get {
return true;
}
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitNullNode(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitNullNode(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitNullNode(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
return other == null || other.IsNull;
}
}
#endregion
public new static readonly Role<InterpolatedStringContent> Role = new Role<InterpolatedStringContent>("InterpolatedStringContent", Syntax.InterpolatedStringContent.Null);
public override NodeType NodeType => NodeType.Unknown;
@ -127,21 +77,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -127,21 +77,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
Suffix = suffix;
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitInterpolation(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitInterpolation(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitInterpolation(this, data);
}
protected internal override bool DoMatch(AstNode other, Match match)
{
Interpolation o = other as Interpolation;
@ -164,21 +99,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -164,21 +99,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
Text = text;
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitInterpolatedStringText(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitInterpolatedStringText(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitInterpolatedStringText(this, data);
}
protected internal override bool DoMatch(AstNode other, Match match)
{
InterpolatedStringText o = other as InterpolatedStringText;

15
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/InvocationExpression.cs

@ -51,21 +51,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -51,21 +51,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildByRole(Roles.RPar); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitInvocationExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitInvocationExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitInvocationExpression(this, data);
}
public InvocationExpression()
{
}

15
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/IsExpression.cs

@ -58,21 +58,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -58,21 +58,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
AddChild(type, Roles.Type);
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitIsExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitIsExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitIsExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
IsExpression o = other as IsExpression;

15
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/LambdaExpression.cs

@ -68,21 +68,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -68,21 +68,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
set { SetChildByRole(BodyRole, value); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitLambdaExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitLambdaExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitLambdaExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
LambdaExpression o = other as LambdaExpression;

15
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/MemberReferenceExpression.cs

@ -98,21 +98,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -98,21 +98,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
{
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitMemberReferenceExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitMemberReferenceExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitMemberReferenceExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
MemberReferenceExpression o = other as MemberReferenceExpression;

15
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/NamedArgumentExpression.cs

@ -62,21 +62,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -62,21 +62,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
set { SetChildByRole(Roles.Expression, value); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitNamedArgumentExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitNamedArgumentExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitNamedArgumentExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
NamedArgumentExpression o = other as NamedArgumentExpression;

15
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/NamedExpression.cs

@ -71,21 +71,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -71,21 +71,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
set { SetChildByRole(Roles.Expression, value); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitNamedExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitNamedExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitNamedExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
var o = other as NamedExpression;

15
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/NullReferenceExpression.cs

@ -59,21 +59,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -59,21 +59,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
this.location = location;
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitNullReferenceExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitNullReferenceExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitNullReferenceExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
NullReferenceExpression o = other as NullReferenceExpression;

15
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ObjectCreateExpression.cs

@ -83,21 +83,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -83,21 +83,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
{
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitObjectCreateExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitObjectCreateExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitObjectCreateExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
ObjectCreateExpression o = other as ObjectCreateExpression;

15
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/OutVarDeclarationExpression.cs

@ -50,21 +50,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -50,21 +50,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
this.Variable = new VariableInitializer(name);
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitOutVarDeclarationExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitOutVarDeclarationExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitOutVarDeclarationExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
var o = other as OutVarDeclarationExpression;

15
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ParenthesizedExpression.cs

@ -54,21 +54,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -54,21 +54,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
Expression = expr;
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitParenthesizedExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitParenthesizedExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitParenthesizedExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
ParenthesizedExpression o = other as ParenthesizedExpression;

15
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/PointerReferenceExpression.cs

@ -65,21 +65,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -65,21 +65,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildrenByRole(Roles.TypeArgument); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitPointerReferenceExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitPointerReferenceExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitPointerReferenceExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
PointerReferenceExpression o = other as PointerReferenceExpression;

15
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/PrimitiveExpression.cs

@ -90,21 +90,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -90,21 +90,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
this.format = format;
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitPrimitiveExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitPrimitiveExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitPrimitiveExpression(this, data);
}
unsafe static TextLocation AdvanceLocation(TextLocation startLocation, string str)
{
int line = startLocation.Line;

184
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/QueryExpression.cs

@ -23,58 +23,10 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -23,58 +23,10 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
{
public static readonly Role<QueryClause> ClauseRole = new Role<QueryClause>("Clause", null);
#region Null
public new static readonly QueryExpression Null = new NullQueryExpression();
sealed class NullQueryExpression : QueryExpression
{
public override bool IsNull {
get {
return true;
}
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitNullNode(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitNullNode(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitNullNode(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
return other == null || other.IsNull;
}
}
#endregion
public AstNodeCollection<QueryClause> Clauses {
get { return GetChildrenByRole(ClauseRole); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitQueryExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitQueryExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitQueryExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
QueryExpression o = other as QueryExpression;
@ -135,21 +87,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -135,21 +87,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildByRole(Roles.Identifier); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitQueryContinuationClause(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitQueryContinuationClause(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitQueryContinuationClause(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
QueryContinuationClause o = other as QueryContinuationClause;
@ -194,21 +131,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -194,21 +131,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
set { SetChildByRole(Roles.Expression, value); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitQueryFromClause(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitQueryFromClause(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitQueryFromClause(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
QueryFromClause o = other as QueryFromClause;
@ -248,21 +170,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -248,21 +170,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
set { SetChildByRole(Roles.Expression, value); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitQueryLetClause(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitQueryLetClause(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitQueryLetClause(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
QueryLetClause o = other as QueryLetClause;
@ -270,6 +177,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -270,6 +177,7 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
}
[DecompilerAstNode(hasNullNode: false)]
public partial class QueryWhereClause : QueryClause
{
@ -284,21 +192,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -284,21 +192,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
set { SetChildByRole(Roles.Condition, value); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitQueryWhereClause(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitQueryWhereClause(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitQueryWhereClause(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
QueryWhereClause o = other as QueryWhereClause;
@ -394,21 +287,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -394,21 +287,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildByRole(IntoIdentifierRole); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitQueryJoinClause(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitQueryJoinClause(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitQueryJoinClause(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
QueryJoinClause o = other as QueryJoinClause;
@ -434,21 +312,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -434,21 +312,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildrenByRole(OrderingRole); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitQueryOrderClause(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitQueryOrderClause(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitQueryOrderClause(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
QueryOrderClause o = other as QueryOrderClause;
@ -480,21 +343,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -480,21 +343,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return Direction == QueryOrderingDirection.Ascending ? GetChildByRole(AscendingKeywordRole) : GetChildByRole(DescendingKeywordRole); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitQueryOrdering(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitQueryOrdering(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitQueryOrdering(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
QueryOrdering o = other as QueryOrdering;
@ -523,21 +371,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -523,21 +371,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
set { SetChildByRole(Roles.Expression, value); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitQuerySelectClause(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitQuerySelectClause(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitQuerySelectClause(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
QuerySelectClause o = other as QuerySelectClause;
@ -571,21 +404,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -571,21 +404,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
set { SetChildByRole(KeyRole, value); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitQueryGroupClause(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitQueryGroupClause(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitQueryGroupClause(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
QueryGroupClause o = other as QueryGroupClause;

15
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/RecursivePatternExpression.cs

@ -41,21 +41,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -41,21 +41,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
public bool IsPositional { get; set; }
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitRecursivePatternExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitRecursivePatternExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitRecursivePatternExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, Match match)
{
return other is RecursivePatternExpression o

15
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/SizeOfExpression.cs

@ -60,21 +60,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -60,21 +60,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
AddChild(type, Roles.Type);
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitSizeOfExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitSizeOfExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitSizeOfExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
SizeOfExpression o = other as SizeOfExpression;

15
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/StackAllocExpression.cs

@ -62,21 +62,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -62,21 +62,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
set { SetChildByRole(InitializerRole, value); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitStackAllocExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitStackAllocExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitStackAllocExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
StackAllocExpression o = other as StackAllocExpression;

30
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/SwitchExpression.cs

@ -48,21 +48,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -48,21 +48,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildByRole(Roles.RBrace); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitSwitchExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitSwitchExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitSwitchExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
SwitchExpression o = other as SwitchExpression;
@ -95,21 +80,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -95,21 +80,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
public override NodeType NodeType => NodeType.Unknown;
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitSwitchExpressionSection(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitSwitchExpressionSection(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitSwitchExpressionSection(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
SwitchExpressionSection o = other as SwitchExpressionSection;

15
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ThisReferenceExpression.cs

@ -48,21 +48,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -48,21 +48,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitThisReferenceExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitThisReferenceExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitThisReferenceExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
ThisReferenceExpression o = other as ThisReferenceExpression;

15
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/ThrowExpression.cs

@ -44,21 +44,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -44,21 +44,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
AddChild(expression, Roles.Expression);
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitThrowExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitThrowExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitThrowExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
ThrowExpression o = other as ThrowExpression;

17
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/TupleExpression.cs

@ -16,8 +16,6 @@ @@ -16,8 +16,6 @@
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System;
using ICSharpCode.Decompiler.CSharp.Syntax.PatternMatching;
namespace ICSharpCode.Decompiler.CSharp.Syntax
@ -29,21 +27,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -29,21 +27,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildrenByRole(Roles.Expression); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitTupleExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitTupleExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitTupleExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, Match match)
{
return other is TupleExpression tuple

15
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/TypeOfExpression.cs

@ -60,21 +60,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -60,21 +60,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
AddChild(type, Roles.Type);
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitTypeOfExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitTypeOfExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitTypeOfExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
TypeOfExpression o = other as TypeOfExpression;

15
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/TypeReferenceExpression.cs

@ -30,21 +30,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -30,21 +30,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
set { SetChildByRole(Roles.Type, value); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitTypeReferenceExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitTypeReferenceExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitTypeReferenceExpression(this, data);
}
public TypeReferenceExpression()
{
}

15
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/UnaryOperatorExpression.cs

@ -73,21 +73,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -73,21 +73,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
set { SetChildByRole(Roles.Expression, value); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitUnaryOperatorExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitUnaryOperatorExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitUnaryOperatorExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
UnaryOperatorExpression o = other as UnaryOperatorExpression;

15
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/UncheckedExpression.cs

@ -60,21 +60,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -60,21 +60,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
AddChild(expression, Roles.Expression);
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitUncheckedExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitUncheckedExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitUncheckedExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
UncheckedExpression o = other as UncheckedExpression;

15
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/UndocumentedExpression.cs

@ -80,21 +80,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -80,21 +80,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildByRole(Roles.RPar); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitUndocumentedExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitUndocumentedExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitUndocumentedExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
UndocumentedExpression o = other as UndocumentedExpression;

15
ICSharpCode.Decompiler/CSharp/Syntax/Expressions/WithInitializerExpression.cs

@ -43,21 +43,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -43,21 +43,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
set { SetChildByRole(InitializerRole, value); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitWithInitializerExpression(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitWithInitializerExpression(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitWithInitializerExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, Match match)
{
return other is WithInitializerExpression o

15
ICSharpCode.Decompiler/CSharp/Syntax/FunctionPointerAstType.cs

@ -47,21 +47,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -47,21 +47,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
set { SetChildByRole(Roles.Type, value); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitFunctionPointerType(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitFunctionPointerType(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitFunctionPointerType(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
return other is FunctionPointerAstType o

15
ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/Attribute.cs

@ -63,21 +63,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -63,21 +63,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
set;
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitAttribute(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitAttribute(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitAttribute(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
Attribute o = other as Attribute;

61
ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/AttributeSection.cs

@ -32,52 +32,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -32,52 +32,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
[DecompilerAstNode(hasNullNode: false, hasPatternPlaceholder: true)]
public partial class AttributeSection : AstNode
{
#region PatternPlaceholder
public static implicit operator AttributeSection(PatternMatching.Pattern pattern)
{
return pattern != null ? new PatternPlaceholder(pattern) : null;
}
sealed class PatternPlaceholder : AttributeSection, PatternMatching.INode
{
readonly PatternMatching.Pattern child;
public PatternPlaceholder(PatternMatching.Pattern child)
{
this.child = child;
}
public override NodeType NodeType {
get { return NodeType.Pattern; }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitPatternPlaceholder(this, child);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitPatternPlaceholder(this, child);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitPatternPlaceholder(this, child, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
return child.DoMatch(other, match);
}
bool PatternMatching.INode.DoMatchCollection(Role role, PatternMatching.INode pos, PatternMatching.Match match, PatternMatching.BacktrackingInfo backtrackingInfo)
{
return child.DoMatchCollection(role, pos, match, backtrackingInfo);
}
}
#endregion
public override NodeType NodeType {
get {
return NodeType.Unknown;
@ -114,21 +68,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -114,21 +68,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildByRole(Roles.RBracket); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitAttributeSection(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitAttributeSection(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitAttributeSection(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
AttributeSection o = other as AttributeSection;

15
ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/Comment.cs

@ -126,21 +126,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -126,21 +126,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
this.endLocation = endLocation;
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitComment(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitComment(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitComment(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
Comment o = other as Comment;

15
ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/Constraint.cs

@ -58,21 +58,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -58,21 +58,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitConstraint(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitConstraint(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitConstraint(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
Constraint o = other as Constraint;

15
ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/DelegateDeclaration.cs

@ -66,21 +66,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -66,21 +66,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildrenByRole(Roles.Constraint); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitDelegateDeclaration(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitDelegateDeclaration(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitDelegateDeclaration(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
DelegateDeclaration o = other as DelegateDeclaration;

15
ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/ExternAliasDeclaration.cs

@ -68,21 +68,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -68,21 +68,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildByRole(Roles.Semicolon); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitExternAliasDeclaration(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitExternAliasDeclaration(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitExternAliasDeclaration(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
var o = other as ExternAliasDeclaration;

15
ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/NamespaceDeclaration.cs

@ -136,21 +136,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -136,21 +136,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
AddChild(child, MemberRole);
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitNamespaceDeclaration(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitNamespaceDeclaration(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitNamespaceDeclaration(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
NamespaceDeclaration o = other as NamespaceDeclaration;

15
ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/PreProcessorDirective.cs

@ -181,21 +181,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -181,21 +181,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
this.Argument = argument;
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitPreProcessorDirective(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitPreProcessorDirective(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitPreProcessorDirective(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
PreProcessorDirective o = other as PreProcessorDirective;

15
ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/TypeDeclaration.cs

@ -140,21 +140,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -140,21 +140,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildByRole(Roles.RBrace); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitTypeDeclaration(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitTypeDeclaration(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitTypeDeclaration(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
TypeDeclaration o = other as TypeDeclaration;

15
ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/TypeParameterDeclaration.cs

@ -90,21 +90,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -90,21 +90,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
Name = name;
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitTypeParameterDeclaration(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitTypeParameterDeclaration(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitTypeParameterDeclaration(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
TypeParameterDeclaration o = other as TypeParameterDeclaration;

15
ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/UsingAliasDeclaration.cs

@ -84,21 +84,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -84,21 +84,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
AddChild(import, ImportRole);
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitUsingAliasDeclaration(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitUsingAliasDeclaration(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitUsingAliasDeclaration(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
UsingAliasDeclaration o = other as UsingAliasDeclaration;

15
ICSharpCode.Decompiler/CSharp/Syntax/GeneralScope/UsingDeclaration.cs

@ -101,21 +101,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -101,21 +101,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
AddChild(import, ImportRole);
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitUsingDeclaration(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitUsingDeclaration(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitUsingDeclaration(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
UsingDeclaration o = other as UsingDeclaration;

470
ICSharpCode.Decompiler/CSharp/Syntax/IAstVisitor.cs

@ -1,470 +0,0 @@ @@ -1,470 +0,0 @@
// Copyright (c) 2010-2013 AlphaSierraPapa for the SharpDevelop Team
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
// software and associated documentation files (the "Software"), to deal in the Software
// without restriction, including without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
// to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or
// substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
/// <summary>
/// AST visitor.
/// </summary>
public interface IAstVisitor
{
void VisitAnonymousMethodExpression(AnonymousMethodExpression anonymousMethodExpression);
void VisitAnonymousTypeCreateExpression(AnonymousTypeCreateExpression anonymousTypeCreateExpression);
void VisitArrayCreateExpression(ArrayCreateExpression arrayCreateExpression);
void VisitArrayInitializerExpression(ArrayInitializerExpression arrayInitializerExpression);
void VisitAsExpression(AsExpression asExpression);
void VisitAssignmentExpression(AssignmentExpression assignmentExpression);
void VisitBaseReferenceExpression(BaseReferenceExpression baseReferenceExpression);
void VisitBinaryOperatorExpression(BinaryOperatorExpression binaryOperatorExpression);
void VisitCastExpression(CastExpression castExpression);
void VisitCheckedExpression(CheckedExpression checkedExpression);
void VisitConditionalExpression(ConditionalExpression conditionalExpression);
void VisitDeclarationExpression(DeclarationExpression declarationExpression);
void VisitRecursivePatternExpression(RecursivePatternExpression recursivePatternExpression);
void VisitDefaultValueExpression(DefaultValueExpression defaultValueExpression);
void VisitDirectionExpression(DirectionExpression directionExpression);
void VisitIdentifierExpression(IdentifierExpression identifierExpression);
void VisitIndexerExpression(IndexerExpression indexerExpression);
void VisitInterpolatedStringExpression(InterpolatedStringExpression interpolatedStringExpression);
void VisitInvocationExpression(InvocationExpression invocationExpression);
void VisitIsExpression(IsExpression isExpression);
void VisitLambdaExpression(LambdaExpression lambdaExpression);
void VisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression);
void VisitNamedArgumentExpression(NamedArgumentExpression namedArgumentExpression);
void VisitNamedExpression(NamedExpression namedExpression);
void VisitNullReferenceExpression(NullReferenceExpression nullReferenceExpression);
void VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression);
void VisitOutVarDeclarationExpression(OutVarDeclarationExpression outVarDeclarationExpression);
void VisitParenthesizedExpression(ParenthesizedExpression parenthesizedExpression);
void VisitPointerReferenceExpression(PointerReferenceExpression pointerReferenceExpression);
void VisitPrimitiveExpression(PrimitiveExpression primitiveExpression);
void VisitSizeOfExpression(SizeOfExpression sizeOfExpression);
void VisitStackAllocExpression(StackAllocExpression stackAllocExpression);
void VisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression);
void VisitThrowExpression(ThrowExpression throwExpression);
void VisitTupleExpression(TupleExpression tupleExpression);
void VisitTypeOfExpression(TypeOfExpression typeOfExpression);
void VisitTypeReferenceExpression(TypeReferenceExpression typeReferenceExpression);
void VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression);
void VisitUncheckedExpression(UncheckedExpression uncheckedExpression);
void VisitUndocumentedExpression(UndocumentedExpression undocumentedExpression);
void VisitWithInitializerExpression(WithInitializerExpression withInitializerExpression);
void VisitQueryExpression(QueryExpression queryExpression);
void VisitQueryContinuationClause(QueryContinuationClause queryContinuationClause);
void VisitQueryFromClause(QueryFromClause queryFromClause);
void VisitQueryLetClause(QueryLetClause queryLetClause);
void VisitQueryWhereClause(QueryWhereClause queryWhereClause);
void VisitQueryJoinClause(QueryJoinClause queryJoinClause);
void VisitQueryOrderClause(QueryOrderClause queryOrderClause);
void VisitQueryOrdering(QueryOrdering queryOrdering);
void VisitQuerySelectClause(QuerySelectClause querySelectClause);
void VisitQueryGroupClause(QueryGroupClause queryGroupClause);
void VisitAttribute(Attribute attribute);
void VisitAttributeSection(AttributeSection attributeSection);
void VisitDelegateDeclaration(DelegateDeclaration delegateDeclaration);
void VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration);
void VisitTypeDeclaration(TypeDeclaration typeDeclaration);
void VisitUsingAliasDeclaration(UsingAliasDeclaration usingAliasDeclaration);
void VisitUsingDeclaration(UsingDeclaration usingDeclaration);
void VisitExternAliasDeclaration(ExternAliasDeclaration externAliasDeclaration);
void VisitBlockStatement(BlockStatement blockStatement);
void VisitBreakStatement(BreakStatement breakStatement);
void VisitCheckedStatement(CheckedStatement checkedStatement);
void VisitContinueStatement(ContinueStatement continueStatement);
void VisitDoWhileStatement(DoWhileStatement doWhileStatement);
void VisitEmptyStatement(EmptyStatement emptyStatement);
void VisitExpressionStatement(ExpressionStatement expressionStatement);
void VisitFixedStatement(FixedStatement fixedStatement);
void VisitForeachStatement(ForeachStatement foreachStatement);
void VisitForStatement(ForStatement forStatement);
void VisitGotoCaseStatement(GotoCaseStatement gotoCaseStatement);
void VisitGotoDefaultStatement(GotoDefaultStatement gotoDefaultStatement);
void VisitGotoStatement(GotoStatement gotoStatement);
void VisitIfElseStatement(IfElseStatement ifElseStatement);
void VisitLabelStatement(LabelStatement labelStatement);
void VisitLockStatement(LockStatement lockStatement);
void VisitReturnStatement(ReturnStatement returnStatement);
void VisitSwitchStatement(SwitchStatement switchStatement);
void VisitSwitchSection(SwitchSection switchSection);
void VisitCaseLabel(CaseLabel caseLabel);
void VisitSwitchExpression(SwitchExpression switchExpression);
void VisitSwitchExpressionSection(SwitchExpressionSection switchExpressionSection);
void VisitThrowStatement(ThrowStatement throwStatement);
void VisitTryCatchStatement(TryCatchStatement tryCatchStatement);
void VisitCatchClause(CatchClause catchClause);
void VisitUncheckedStatement(UncheckedStatement uncheckedStatement);
void VisitUnsafeStatement(UnsafeStatement unsafeStatement);
void VisitUsingStatement(UsingStatement usingStatement);
void VisitVariableDeclarationStatement(VariableDeclarationStatement variableDeclarationStatement);
void VisitLocalFunctionDeclarationStatement(LocalFunctionDeclarationStatement localFunctionDeclarationStatement);
void VisitWhileStatement(WhileStatement whileStatement);
void VisitYieldBreakStatement(YieldBreakStatement yieldBreakStatement);
void VisitYieldReturnStatement(YieldReturnStatement yieldReturnStatement);
void VisitAccessor(Accessor accessor);
void VisitConstructorDeclaration(ConstructorDeclaration constructorDeclaration);
void VisitConstructorInitializer(ConstructorInitializer constructorInitializer);
void VisitDestructorDeclaration(DestructorDeclaration destructorDeclaration);
void VisitEnumMemberDeclaration(EnumMemberDeclaration enumMemberDeclaration);
void VisitEventDeclaration(EventDeclaration eventDeclaration);
void VisitCustomEventDeclaration(CustomEventDeclaration customEventDeclaration);
void VisitFieldDeclaration(FieldDeclaration fieldDeclaration);
void VisitIndexerDeclaration(IndexerDeclaration indexerDeclaration);
void VisitMethodDeclaration(MethodDeclaration methodDeclaration);
void VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration);
void VisitParameterDeclaration(ParameterDeclaration parameterDeclaration);
void VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration);
void VisitVariableInitializer(VariableInitializer variableInitializer);
void VisitFixedFieldDeclaration(FixedFieldDeclaration fixedFieldDeclaration);
void VisitFixedVariableInitializer(FixedVariableInitializer fixedVariableInitializer);
void VisitExtensionDeclaration(ExtensionDeclaration extensionDeclaration);
void VisitSyntaxTree(SyntaxTree syntaxTree);
void VisitSimpleType(SimpleType simpleType);
void VisitMemberType(MemberType memberType);
void VisitTupleType(TupleAstType tupleType);
void VisitTupleTypeElement(TupleTypeElement tupleTypeElement);
void VisitFunctionPointerType(FunctionPointerAstType functionPointerType);
void VisitInvocationType(InvocationAstType invocationType);
void VisitComposedType(ComposedType composedType);
void VisitArraySpecifier(ArraySpecifier arraySpecifier);
void VisitPrimitiveType(PrimitiveType primitiveType);
void VisitComment(Comment comment);
void VisitPreProcessorDirective(PreProcessorDirective preProcessorDirective);
void VisitDocumentationReference(DocumentationReference documentationReference);
void VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration);
void VisitConstraint(Constraint constraint);
void VisitCSharpTokenNode(CSharpTokenNode cSharpTokenNode);
void VisitIdentifier(Identifier identifier);
void VisitInterpolation(Interpolation interpolation);
void VisitInterpolatedStringText(InterpolatedStringText interpolatedStringText);
void VisitSingleVariableDesignation(SingleVariableDesignation singleVariableDesignation);
void VisitParenthesizedVariableDesignation(ParenthesizedVariableDesignation parenthesizedVariableDesignation);
void VisitNullNode(AstNode nullNode);
void VisitErrorNode(AstNode errorNode);
void VisitPatternPlaceholder(AstNode placeholder, PatternMatching.Pattern pattern);
}
/// <summary>
/// AST visitor.
/// </summary>
public interface IAstVisitor<out S>
{
S VisitAnonymousMethodExpression(AnonymousMethodExpression anonymousMethodExpression);
S VisitAnonymousTypeCreateExpression(AnonymousTypeCreateExpression anonymousTypeCreateExpression);
S VisitArrayCreateExpression(ArrayCreateExpression arrayCreateExpression);
S VisitArrayInitializerExpression(ArrayInitializerExpression arrayInitializerExpression);
S VisitAsExpression(AsExpression asExpression);
S VisitAssignmentExpression(AssignmentExpression assignmentExpression);
S VisitBaseReferenceExpression(BaseReferenceExpression baseReferenceExpression);
S VisitBinaryOperatorExpression(BinaryOperatorExpression binaryOperatorExpression);
S VisitCastExpression(CastExpression castExpression);
S VisitCheckedExpression(CheckedExpression checkedExpression);
S VisitConditionalExpression(ConditionalExpression conditionalExpression);
S VisitDeclarationExpression(DeclarationExpression declarationExpression);
S VisitRecursivePatternExpression(RecursivePatternExpression recursivePatternExpression);
S VisitDefaultValueExpression(DefaultValueExpression defaultValueExpression);
S VisitDirectionExpression(DirectionExpression directionExpression);
S VisitIdentifierExpression(IdentifierExpression identifierExpression);
S VisitIndexerExpression(IndexerExpression indexerExpression);
S VisitInterpolatedStringExpression(InterpolatedStringExpression interpolatedStringExpression);
S VisitInvocationExpression(InvocationExpression invocationExpression);
S VisitIsExpression(IsExpression isExpression);
S VisitLambdaExpression(LambdaExpression lambdaExpression);
S VisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression);
S VisitNamedArgumentExpression(NamedArgumentExpression namedArgumentExpression);
S VisitNamedExpression(NamedExpression namedExpression);
S VisitNullReferenceExpression(NullReferenceExpression nullReferenceExpression);
S VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression);
S VisitOutVarDeclarationExpression(OutVarDeclarationExpression outVarDeclarationExpression);
S VisitParenthesizedExpression(ParenthesizedExpression parenthesizedExpression);
S VisitPointerReferenceExpression(PointerReferenceExpression pointerReferenceExpression);
S VisitPrimitiveExpression(PrimitiveExpression primitiveExpression);
S VisitSizeOfExpression(SizeOfExpression sizeOfExpression);
S VisitStackAllocExpression(StackAllocExpression stackAllocExpression);
S VisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression);
S VisitThrowExpression(ThrowExpression throwExpression);
S VisitTupleExpression(TupleExpression tupleExpression);
S VisitTypeOfExpression(TypeOfExpression typeOfExpression);
S VisitTypeReferenceExpression(TypeReferenceExpression typeReferenceExpression);
S VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression);
S VisitUncheckedExpression(UncheckedExpression uncheckedExpression);
S VisitUndocumentedExpression(UndocumentedExpression undocumentedExpression);
S VisitWithInitializerExpression(WithInitializerExpression withInitializerExpression);
S VisitQueryExpression(QueryExpression queryExpression);
S VisitQueryContinuationClause(QueryContinuationClause queryContinuationClause);
S VisitQueryFromClause(QueryFromClause queryFromClause);
S VisitQueryLetClause(QueryLetClause queryLetClause);
S VisitQueryWhereClause(QueryWhereClause queryWhereClause);
S VisitQueryJoinClause(QueryJoinClause queryJoinClause);
S VisitQueryOrderClause(QueryOrderClause queryOrderClause);
S VisitQueryOrdering(QueryOrdering queryOrdering);
S VisitQuerySelectClause(QuerySelectClause querySelectClause);
S VisitQueryGroupClause(QueryGroupClause queryGroupClause);
S VisitAttribute(Attribute attribute);
S VisitAttributeSection(AttributeSection attributeSection);
S VisitDelegateDeclaration(DelegateDeclaration delegateDeclaration);
S VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration);
S VisitTypeDeclaration(TypeDeclaration typeDeclaration);
S VisitUsingAliasDeclaration(UsingAliasDeclaration usingAliasDeclaration);
S VisitUsingDeclaration(UsingDeclaration usingDeclaration);
S VisitExternAliasDeclaration(ExternAliasDeclaration externAliasDeclaration);
S VisitBlockStatement(BlockStatement blockStatement);
S VisitBreakStatement(BreakStatement breakStatement);
S VisitCheckedStatement(CheckedStatement checkedStatement);
S VisitContinueStatement(ContinueStatement continueStatement);
S VisitDoWhileStatement(DoWhileStatement doWhileStatement);
S VisitEmptyStatement(EmptyStatement emptyStatement);
S VisitExpressionStatement(ExpressionStatement expressionStatement);
S VisitFixedStatement(FixedStatement fixedStatement);
S VisitForeachStatement(ForeachStatement foreachStatement);
S VisitForStatement(ForStatement forStatement);
S VisitGotoCaseStatement(GotoCaseStatement gotoCaseStatement);
S VisitGotoDefaultStatement(GotoDefaultStatement gotoDefaultStatement);
S VisitGotoStatement(GotoStatement gotoStatement);
S VisitIfElseStatement(IfElseStatement ifElseStatement);
S VisitLabelStatement(LabelStatement labelStatement);
S VisitLockStatement(LockStatement lockStatement);
S VisitReturnStatement(ReturnStatement returnStatement);
S VisitSwitchStatement(SwitchStatement switchStatement);
S VisitSwitchSection(SwitchSection switchSection);
S VisitCaseLabel(CaseLabel caseLabel);
S VisitSwitchExpression(SwitchExpression switchExpression);
S VisitSwitchExpressionSection(SwitchExpressionSection switchExpressionSection);
S VisitThrowStatement(ThrowStatement throwStatement);
S VisitTryCatchStatement(TryCatchStatement tryCatchStatement);
S VisitCatchClause(CatchClause catchClause);
S VisitUncheckedStatement(UncheckedStatement uncheckedStatement);
S VisitUnsafeStatement(UnsafeStatement unsafeStatement);
S VisitUsingStatement(UsingStatement usingStatement);
S VisitVariableDeclarationStatement(VariableDeclarationStatement variableDeclarationStatement);
S VisitLocalFunctionDeclarationStatement(LocalFunctionDeclarationStatement localFunctionDeclarationStatement);
S VisitWhileStatement(WhileStatement whileStatement);
S VisitYieldBreakStatement(YieldBreakStatement yieldBreakStatement);
S VisitYieldReturnStatement(YieldReturnStatement yieldReturnStatement);
S VisitAccessor(Accessor accessor);
S VisitConstructorDeclaration(ConstructorDeclaration constructorDeclaration);
S VisitConstructorInitializer(ConstructorInitializer constructorInitializer);
S VisitDestructorDeclaration(DestructorDeclaration destructorDeclaration);
S VisitEnumMemberDeclaration(EnumMemberDeclaration enumMemberDeclaration);
S VisitEventDeclaration(EventDeclaration eventDeclaration);
S VisitCustomEventDeclaration(CustomEventDeclaration customEventDeclaration);
S VisitFieldDeclaration(FieldDeclaration fieldDeclaration);
S VisitIndexerDeclaration(IndexerDeclaration indexerDeclaration);
S VisitMethodDeclaration(MethodDeclaration methodDeclaration);
S VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration);
S VisitParameterDeclaration(ParameterDeclaration parameterDeclaration);
S VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration);
S VisitVariableInitializer(VariableInitializer variableInitializer);
S VisitFixedFieldDeclaration(FixedFieldDeclaration fixedFieldDeclaration);
S VisitFixedVariableInitializer(FixedVariableInitializer fixedVariableInitializer);
S VisitExtensionDeclaration(ExtensionDeclaration extensionDeclaration);
S VisitSyntaxTree(SyntaxTree syntaxTree);
S VisitSimpleType(SimpleType simpleType);
S VisitMemberType(MemberType memberType);
S VisitTupleType(TupleAstType tupleType);
S VisitTupleTypeElement(TupleTypeElement tupleTypeElement);
S VisitFunctionPointerType(FunctionPointerAstType functionPointerType);
S VisitInvocationType(InvocationAstType invocationType);
S VisitComposedType(ComposedType composedType);
S VisitArraySpecifier(ArraySpecifier arraySpecifier);
S VisitPrimitiveType(PrimitiveType primitiveType);
S VisitComment(Comment comment);
S VisitPreProcessorDirective(PreProcessorDirective preProcessorDirective);
S VisitDocumentationReference(DocumentationReference documentationReference);
S VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration);
S VisitConstraint(Constraint constraint);
S VisitCSharpTokenNode(CSharpTokenNode cSharpTokenNode);
S VisitIdentifier(Identifier identifier);
S VisitInterpolation(Interpolation interpolation);
S VisitInterpolatedStringText(InterpolatedStringText interpolatedStringText);
S VisitSingleVariableDesignation(SingleVariableDesignation singleVariableDesignation);
S VisitParenthesizedVariableDesignation(ParenthesizedVariableDesignation parenthesizedVariableDesignation);
S VisitNullNode(AstNode nullNode);
S VisitErrorNode(AstNode errorNode);
S VisitPatternPlaceholder(AstNode placeholder, PatternMatching.Pattern pattern);
}
/// <summary>
/// AST visitor.
/// </summary>
public interface IAstVisitor<in T, out S>
{
S VisitAnonymousMethodExpression(AnonymousMethodExpression anonymousMethodExpression, T data);
S VisitAnonymousTypeCreateExpression(AnonymousTypeCreateExpression anonymousTypeCreateExpression, T data);
S VisitArrayCreateExpression(ArrayCreateExpression arrayCreateExpression, T data);
S VisitArrayInitializerExpression(ArrayInitializerExpression arrayInitializerExpression, T data);
S VisitAsExpression(AsExpression asExpression, T data);
S VisitAssignmentExpression(AssignmentExpression assignmentExpression, T data);
S VisitBaseReferenceExpression(BaseReferenceExpression baseReferenceExpression, T data);
S VisitBinaryOperatorExpression(BinaryOperatorExpression binaryOperatorExpression, T data);
S VisitCastExpression(CastExpression castExpression, T data);
S VisitCheckedExpression(CheckedExpression checkedExpression, T data);
S VisitConditionalExpression(ConditionalExpression conditionalExpression, T data);
S VisitDeclarationExpression(DeclarationExpression declarationExpression, T data);
S VisitRecursivePatternExpression(RecursivePatternExpression recursivePatternExpression, T data);
S VisitDefaultValueExpression(DefaultValueExpression defaultValueExpression, T data);
S VisitDirectionExpression(DirectionExpression directionExpression, T data);
S VisitIdentifierExpression(IdentifierExpression identifierExpression, T data);
S VisitIndexerExpression(IndexerExpression indexerExpression, T data);
S VisitInterpolatedStringExpression(InterpolatedStringExpression interpolatedStringExpression, T data);
S VisitInvocationExpression(InvocationExpression invocationExpression, T data);
S VisitIsExpression(IsExpression isExpression, T data);
S VisitLambdaExpression(LambdaExpression lambdaExpression, T data);
S VisitMemberReferenceExpression(MemberReferenceExpression memberReferenceExpression, T data);
S VisitNamedArgumentExpression(NamedArgumentExpression namedArgumentExpression, T data);
S VisitNamedExpression(NamedExpression namedExpression, T data);
S VisitNullReferenceExpression(NullReferenceExpression nullReferenceExpression, T data);
S VisitObjectCreateExpression(ObjectCreateExpression objectCreateExpression, T data);
S VisitOutVarDeclarationExpression(OutVarDeclarationExpression outVarDeclarationExpression, T data);
S VisitParenthesizedExpression(ParenthesizedExpression parenthesizedExpression, T data);
S VisitPointerReferenceExpression(PointerReferenceExpression pointerReferenceExpression, T data);
S VisitPrimitiveExpression(PrimitiveExpression primitiveExpression, T data);
S VisitSizeOfExpression(SizeOfExpression sizeOfExpression, T data);
S VisitStackAllocExpression(StackAllocExpression stackAllocExpression, T data);
S VisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression, T data);
S VisitThrowExpression(ThrowExpression throwExpression, T data);
S VisitTupleExpression(TupleExpression tupleExpression, T data);
S VisitTypeOfExpression(TypeOfExpression typeOfExpression, T data);
S VisitTypeReferenceExpression(TypeReferenceExpression typeReferenceExpression, T data);
S VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression, T data);
S VisitUncheckedExpression(UncheckedExpression uncheckedExpression, T data);
S VisitUndocumentedExpression(UndocumentedExpression undocumentedExpression, T data);
S VisitWithInitializerExpression(WithInitializerExpression withInitializerExpression, T data);
S VisitQueryExpression(QueryExpression queryExpression, T data);
S VisitQueryContinuationClause(QueryContinuationClause queryContinuationClause, T data);
S VisitQueryFromClause(QueryFromClause queryFromClause, T data);
S VisitQueryLetClause(QueryLetClause queryLetClause, T data);
S VisitQueryWhereClause(QueryWhereClause queryWhereClause, T data);
S VisitQueryJoinClause(QueryJoinClause queryJoinClause, T data);
S VisitQueryOrderClause(QueryOrderClause queryOrderClause, T data);
S VisitQueryOrdering(QueryOrdering queryOrdering, T data);
S VisitQuerySelectClause(QuerySelectClause querySelectClause, T data);
S VisitQueryGroupClause(QueryGroupClause queryGroupClause, T data);
S VisitAttribute(Attribute attribute, T data);
S VisitAttributeSection(AttributeSection attributeSection, T data);
S VisitDelegateDeclaration(DelegateDeclaration delegateDeclaration, T data);
S VisitNamespaceDeclaration(NamespaceDeclaration namespaceDeclaration, T data);
S VisitTypeDeclaration(TypeDeclaration typeDeclaration, T data);
S VisitUsingAliasDeclaration(UsingAliasDeclaration usingAliasDeclaration, T data);
S VisitUsingDeclaration(UsingDeclaration usingDeclaration, T data);
S VisitExternAliasDeclaration(ExternAliasDeclaration externAliasDeclaration, T data);
S VisitBlockStatement(BlockStatement blockStatement, T data);
S VisitBreakStatement(BreakStatement breakStatement, T data);
S VisitCheckedStatement(CheckedStatement checkedStatement, T data);
S VisitContinueStatement(ContinueStatement continueStatement, T data);
S VisitDoWhileStatement(DoWhileStatement doWhileStatement, T data);
S VisitEmptyStatement(EmptyStatement emptyStatement, T data);
S VisitExpressionStatement(ExpressionStatement expressionStatement, T data);
S VisitFixedStatement(FixedStatement fixedStatement, T data);
S VisitForeachStatement(ForeachStatement foreachStatement, T data);
S VisitForStatement(ForStatement forStatement, T data);
S VisitGotoCaseStatement(GotoCaseStatement gotoCaseStatement, T data);
S VisitGotoDefaultStatement(GotoDefaultStatement gotoDefaultStatement, T data);
S VisitGotoStatement(GotoStatement gotoStatement, T data);
S VisitIfElseStatement(IfElseStatement ifElseStatement, T data);
S VisitLabelStatement(LabelStatement labelStatement, T data);
S VisitLockStatement(LockStatement lockStatement, T data);
S VisitReturnStatement(ReturnStatement returnStatement, T data);
S VisitSwitchStatement(SwitchStatement switchStatement, T data);
S VisitSwitchSection(SwitchSection switchSection, T data);
S VisitCaseLabel(CaseLabel caseLabel, T data);
S VisitSwitchExpression(SwitchExpression switchExpression, T data);
S VisitSwitchExpressionSection(SwitchExpressionSection switchExpressionSection, T data);
S VisitThrowStatement(ThrowStatement throwStatement, T data);
S VisitTryCatchStatement(TryCatchStatement tryCatchStatement, T data);
S VisitCatchClause(CatchClause catchClause, T data);
S VisitUncheckedStatement(UncheckedStatement uncheckedStatement, T data);
S VisitUnsafeStatement(UnsafeStatement unsafeStatement, T data);
S VisitUsingStatement(UsingStatement usingStatement, T data);
S VisitVariableDeclarationStatement(VariableDeclarationStatement variableDeclarationStatement, T data);
S VisitLocalFunctionDeclarationStatement(LocalFunctionDeclarationStatement localFunctionDeclarationStatement, T data);
S VisitWhileStatement(WhileStatement whileStatement, T data);
S VisitYieldBreakStatement(YieldBreakStatement yieldBreakStatement, T data);
S VisitYieldReturnStatement(YieldReturnStatement yieldReturnStatement, T data);
S VisitAccessor(Accessor accessor, T data);
S VisitConstructorDeclaration(ConstructorDeclaration constructorDeclaration, T data);
S VisitConstructorInitializer(ConstructorInitializer constructorInitializer, T data);
S VisitDestructorDeclaration(DestructorDeclaration destructorDeclaration, T data);
S VisitEnumMemberDeclaration(EnumMemberDeclaration enumMemberDeclaration, T data);
S VisitEventDeclaration(EventDeclaration eventDeclaration, T data);
S VisitCustomEventDeclaration(CustomEventDeclaration customEventDeclaration, T data);
S VisitFieldDeclaration(FieldDeclaration fieldDeclaration, T data);
S VisitIndexerDeclaration(IndexerDeclaration indexerDeclaration, T data);
S VisitMethodDeclaration(MethodDeclaration methodDeclaration, T data);
S VisitOperatorDeclaration(OperatorDeclaration operatorDeclaration, T data);
S VisitParameterDeclaration(ParameterDeclaration parameterDeclaration, T data);
S VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration, T data);
S VisitVariableInitializer(VariableInitializer variableInitializer, T data);
S VisitFixedFieldDeclaration(FixedFieldDeclaration fixedFieldDeclaration, T data);
S VisitFixedVariableInitializer(FixedVariableInitializer fixedVariableInitializer, T data);
S VisitExtensionDeclaration(ExtensionDeclaration extensionDeclaration, T data);
S VisitSyntaxTree(SyntaxTree syntaxTree, T data);
S VisitSimpleType(SimpleType simpleType, T data);
S VisitMemberType(MemberType memberType, T data);
S VisitTupleType(TupleAstType tupleType, T data);
S VisitTupleTypeElement(TupleTypeElement tupleTypeElement, T data);
S VisitFunctionPointerType(FunctionPointerAstType functionPointerType, T data);
S VisitInvocationType(InvocationAstType invocationType, T data);
S VisitComposedType(ComposedType composedType, T data);
S VisitArraySpecifier(ArraySpecifier arraySpecifier, T data);
S VisitPrimitiveType(PrimitiveType primitiveType, T data);
S VisitComment(Comment comment, T data);
S VisitPreProcessorDirective(PreProcessorDirective preProcessorDirective, T data);
S VisitDocumentationReference(DocumentationReference documentationReference, T data);
S VisitTypeParameterDeclaration(TypeParameterDeclaration typeParameterDeclaration, T data);
S VisitConstraint(Constraint constraint, T data);
S VisitCSharpTokenNode(CSharpTokenNode cSharpTokenNode, T data);
S VisitIdentifier(Identifier identifier, T data);
S VisitInterpolation(Interpolation interpolation, T data);
S VisitInterpolatedStringText(InterpolatedStringText interpolatedStringText, T data);
S VisitSingleVariableDesignation(SingleVariableDesignation singleVariableDesignation, T data);
S VisitParenthesizedVariableDesignation(ParenthesizedVariableDesignation parenthesizedVariableDesignation, T data);
S VisitNullNode(AstNode nullNode, T data);
S VisitErrorNode(AstNode errorNode, T data);
S VisitPatternPlaceholder(AstNode placeholder, PatternMatching.Pattern pattern, T data);
}
}

45
ICSharpCode.Decompiler/CSharp/Syntax/Identifier.cs

@ -31,36 +31,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -31,36 +31,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
[DecompilerAstNode(hasNullNode: true)]
public partial class Identifier : AstNode
{
public new static readonly Identifier Null = new NullIdentifier();
sealed class NullIdentifier : Identifier
{
public override bool IsNull {
get {
return true;
}
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitNullNode(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitNullNode(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitNullNode(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
return other == null || other.IsNull;
}
}
public override NodeType NodeType {
get {
return NodeType.Token;
@ -147,21 +117,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -147,21 +117,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
return new Identifier(name, location);
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitIdentifier(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitIdentifier(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitIdentifier(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
Identifier o = other as Identifier;

15
ICSharpCode.Decompiler/CSharp/Syntax/InvocationAstType.cs

@ -35,21 +35,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -35,21 +35,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
set { SetChildByRole(Roles.Type, value); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitInvocationType(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitInvocationType(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitInvocationType(this, data);
}
protected internal override bool DoMatch(AstNode other, Match match)
{
return other is InvocationAstType o

15
ICSharpCode.Decompiler/CSharp/Syntax/MemberType.cs

@ -93,21 +93,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -93,21 +93,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
{
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitMemberType(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitMemberType(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitMemberType(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
MemberType o = other as MemberType;

10
ICSharpCode.Decompiler/CSharp/Syntax/IdentifierExpressionBackreference.cs → ICSharpCode.Decompiler/CSharp/Syntax/PatternMatching/IdentifierExpressionBackreference.cs

@ -19,12 +19,12 @@ @@ -19,12 +19,12 @@
using System;
using System.Linq;
namespace ICSharpCode.Decompiler.CSharp.Syntax
namespace ICSharpCode.Decompiler.CSharp.Syntax.PatternMatching
{
/// <summary>
/// Matches identifier expressions that have the same identifier as the referenced variable/type definition/method definition.
/// </summary>
public class IdentifierExpressionBackreference : PatternMatching.Pattern
public class IdentifierExpressionBackreference : Pattern
{
readonly string referencedGroupName;
@ -39,12 +39,12 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -39,12 +39,12 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
this.referencedGroupName = referencedGroupName;
}
public override bool DoMatch(PatternMatching.INode other, PatternMatching.Match match)
public override bool DoMatch(INode other, Match match)
{
IdentifierExpression ident = other as IdentifierExpression;
var ident = other as IdentifierExpression;
if (ident == null || ident.TypeArguments.Any())
return false;
AstNode referenced = (AstNode)match.Get(referencedGroupName).Last();
var referenced = (AstNode)match.Get(referencedGroupName).Last();
if (referenced == null)
return false;
return ident.Identifier == referenced.GetChildByRole(Roles.Identifier).Name;

15
ICSharpCode.Decompiler/CSharp/Syntax/PrimitiveType.cs

@ -82,21 +82,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -82,21 +82,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitPrimitiveType(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitPrimitiveType(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitPrimitiveType(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
PrimitiveType o = other as PrimitiveType;

9
ICSharpCode.Decompiler/CSharp/Syntax/Role.cs

@ -88,15 +88,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -88,15 +88,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
return node is T;
}
[Obsolete("Use the other overload explicitly specifying the nullObject.")]
public Role(string name)
{
if (name == null)
throw new ArgumentNullException(nameof(name));
this.name = name;
this.nullObject = null!;
}
public Role(string name, T nullObject)
{
this.name = name ?? throw new ArgumentNullException(nameof(name));

48
ICSharpCode.Decompiler/CSharp/Syntax/SimpleType.cs

@ -31,39 +31,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -31,39 +31,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
[DecompilerAstNode(hasNullNode: true)]
public partial class SimpleType : AstType
{
#region Null
public new static readonly SimpleType Null = new NullSimpleType();
sealed class NullSimpleType : SimpleType
{
public override bool IsNull {
get {
return true;
}
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitNullNode(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitNullNode(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitNullNode(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
return other == null || other.IsNull;
}
}
#endregion
public SimpleType()
{
}
@ -118,21 +85,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -118,21 +85,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildrenByRole(Roles.TypeArgument); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitSimpleType(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitSimpleType(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitSimpleType(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
SimpleType o = other as SimpleType;

93
ICSharpCode.Decompiler/CSharp/Syntax/Statements/BlockStatement.cs

@ -36,84 +36,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -36,84 +36,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
{
public static readonly Role<Statement> StatementRole = new Role<Statement>("Statement", Statement.Null);
#region Null
public static readonly new BlockStatement Null = new NullBlockStatement();
sealed class NullBlockStatement : BlockStatement
{
public override bool IsNull {
get {
return true;
}
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitNullNode(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitNullNode(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitNullNode(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
return other == null || other.IsNull;
}
}
#endregion
#region PatternPlaceholder
public static implicit operator BlockStatement(PatternMatching.Pattern pattern)
{
return pattern != null ? new PatternPlaceholder(pattern) : null;
}
sealed class PatternPlaceholder : BlockStatement, PatternMatching.INode
{
readonly PatternMatching.Pattern child;
public PatternPlaceholder(PatternMatching.Pattern child)
{
this.child = child;
}
public override NodeType NodeType {
get { return NodeType.Pattern; }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitPatternPlaceholder(this, child);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitPatternPlaceholder(this, child);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitPatternPlaceholder(this, child, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
return child.DoMatch(other, match);
}
bool PatternMatching.INode.DoMatchCollection(Role role, PatternMatching.INode pos, PatternMatching.Match match, PatternMatching.BacktrackingInfo backtrackingInfo)
{
return child.DoMatchCollection(role, pos, match, backtrackingInfo);
}
}
#endregion
public CSharpTokenNode LBraceToken {
get { return GetChildByRole(Roles.LBrace); }
}
@ -126,21 +48,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -126,21 +48,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildByRole(Roles.RBrace); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitBlockStatement(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitBlockStatement(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitBlockStatement(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
BlockStatement o = other as BlockStatement;

15
ICSharpCode.Decompiler/CSharp/Syntax/Statements/BreakStatement.cs

@ -42,21 +42,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -42,21 +42,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildByRole(Roles.Semicolon); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitBreakStatement(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitBreakStatement(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitBreakStatement(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
BreakStatement o = other as BreakStatement;

15
ICSharpCode.Decompiler/CSharp/Syntax/Statements/CheckedStatement.cs

@ -52,21 +52,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -52,21 +52,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
AddChild(body, Roles.Body);
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitCheckedStatement(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitCheckedStatement(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitCheckedStatement(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
CheckedStatement o = other as CheckedStatement;

15
ICSharpCode.Decompiler/CSharp/Syntax/Statements/ContinueStatement.cs

@ -42,21 +42,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -42,21 +42,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildByRole(Roles.Semicolon); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitContinueStatement(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitContinueStatement(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitContinueStatement(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
ContinueStatement o = other as ContinueStatement;

15
ICSharpCode.Decompiler/CSharp/Syntax/Statements/DoWhileStatement.cs

@ -65,21 +65,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -65,21 +65,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildByRole(Roles.Semicolon); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitDoWhileStatement(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitDoWhileStatement(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitDoWhileStatement(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
DoWhileStatement o = other as DoWhileStatement;

15
ICSharpCode.Decompiler/CSharp/Syntax/Statements/EmptyStatement.cs

@ -49,21 +49,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -49,21 +49,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
}
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitEmptyStatement(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitEmptyStatement(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitEmptyStatement(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
EmptyStatement o = other as EmptyStatement;

15
ICSharpCode.Decompiler/CSharp/Syntax/Statements/ExpressionStatement.cs

@ -41,21 +41,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -41,21 +41,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildByRole(Roles.Semicolon); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitExpressionStatement(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitExpressionStatement(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitExpressionStatement(this, data);
}
public ExpressionStatement()
{
}

15
ICSharpCode.Decompiler/CSharp/Syntax/Statements/FixedStatement.cs

@ -60,21 +60,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -60,21 +60,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
set { SetChildByRole(Roles.EmbeddedStatement, value); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitFixedStatement(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitFixedStatement(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitFixedStatement(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
FixedStatement o = other as FixedStatement;

15
ICSharpCode.Decompiler/CSharp/Syntax/Statements/ForStatement.cs

@ -71,21 +71,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -71,21 +71,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
set { SetChildByRole(Roles.EmbeddedStatement, value); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitForStatement(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitForStatement(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitForStatement(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
ForStatement o = other as ForStatement;

15
ICSharpCode.Decompiler/CSharp/Syntax/Statements/ForeachStatement.cs

@ -81,21 +81,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -81,21 +81,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
set { SetChildByRole(Roles.EmbeddedStatement, value); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitForeachStatement(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitForeachStatement(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitForeachStatement(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
ForeachStatement o = other as ForeachStatement;

45
ICSharpCode.Decompiler/CSharp/Syntax/Statements/GotoStatement.cs

@ -63,21 +63,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -63,21 +63,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildByRole(Roles.Semicolon); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitGotoStatement(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitGotoStatement(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitGotoStatement(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
GotoStatement o = other as GotoStatement;
@ -114,21 +99,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -114,21 +99,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildByRole(Roles.Semicolon); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitGotoCaseStatement(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitGotoCaseStatement(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitGotoCaseStatement(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
GotoCaseStatement o = other as GotoCaseStatement;
@ -157,21 +127,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -157,21 +127,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildByRole(Roles.Semicolon); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitGotoDefaultStatement(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitGotoDefaultStatement(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitGotoDefaultStatement(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
GotoDefaultStatement o = other as GotoDefaultStatement;

15
ICSharpCode.Decompiler/CSharp/Syntax/Statements/IfElseStatement.cs

@ -69,21 +69,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -69,21 +69,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
set { SetChildByRole(FalseRole, value); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitIfElseStatement(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitIfElseStatement(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitIfElseStatement(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
IfElseStatement o = other as IfElseStatement;

15
ICSharpCode.Decompiler/CSharp/Syntax/Statements/LabelStatement.cs

@ -50,21 +50,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -50,21 +50,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildByRole(Roles.Colon); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitLabelStatement(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitLabelStatement(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitLabelStatement(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
LabelStatement o = other as LabelStatement;

15
ICSharpCode.Decompiler/CSharp/Syntax/Statements/LocalFunctionDeclarationStatement.cs

@ -35,21 +35,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -35,21 +35,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
AddChild(methodDeclaration, MethodDeclarationRole);
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitLocalFunctionDeclarationStatement(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitLocalFunctionDeclarationStatement(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitLocalFunctionDeclarationStatement(this, data);
}
protected internal override bool DoMatch(AstNode other, Match match)
{
return other is LocalFunctionDeclarationStatement o && Declaration.DoMatch(o.Declaration, match);

15
ICSharpCode.Decompiler/CSharp/Syntax/Statements/LockStatement.cs

@ -56,21 +56,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -56,21 +56,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
set { SetChildByRole(Roles.EmbeddedStatement, value); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitLockStatement(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitLockStatement(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitLockStatement(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
LockStatement o = other as LockStatement;

15
ICSharpCode.Decompiler/CSharp/Syntax/Statements/ReturnStatement.cs

@ -56,21 +56,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -56,21 +56,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
AddChild(returnExpression, Roles.Expression);
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitReturnStatement(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitReturnStatement(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitReturnStatement(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
ReturnStatement o = other as ReturnStatement;

79
ICSharpCode.Decompiler/CSharp/Syntax/Statements/Statement.cs

@ -30,85 +30,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -30,85 +30,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
[DecompilerAstNode(hasNullNode: true, hasPatternPlaceholder: true)]
public abstract partial class Statement : AstNode
{
#region Null
public new static readonly Statement Null = new NullStatement();
sealed class NullStatement : Statement
{
public override bool IsNull {
get {
return true;
}
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitNullNode(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitNullNode(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitNullNode(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
return other == null || other.IsNull;
}
}
#endregion
#region PatternPlaceholder
public static implicit operator Statement(PatternMatching.Pattern pattern)
{
return pattern != null ? new PatternPlaceholder(pattern) : null;
}
sealed class PatternPlaceholder : Statement, PatternMatching.INode
{
readonly PatternMatching.Pattern child;
public PatternPlaceholder(PatternMatching.Pattern child)
{
this.child = child;
}
public override NodeType NodeType {
get { return NodeType.Pattern; }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitPatternPlaceholder(this, child);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitPatternPlaceholder(this, child);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitPatternPlaceholder(this, child, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
return child.DoMatch(other, match);
}
bool PatternMatching.INode.DoMatchCollection(Role role, PatternMatching.INode pos, PatternMatching.Match match, PatternMatching.BacktrackingInfo backtrackingInfo)
{
return child.DoMatchCollection(role, pos, match, backtrackingInfo);
}
}
#endregion
public new Statement Clone()
{
return (Statement)base.Clone();

91
ICSharpCode.Decompiler/CSharp/Syntax/Statements/SwitchStatement.cs

@ -64,21 +64,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -64,21 +64,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildByRole(Roles.RBrace); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitSwitchStatement(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitSwitchStatement(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitSwitchStatement(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
SwitchStatement o = other as SwitchStatement;
@ -89,52 +74,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -89,52 +74,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
[DecompilerAstNode(hasNullNode: false, hasPatternPlaceholder: true)]
public partial class SwitchSection : AstNode
{
#region PatternPlaceholder
public static implicit operator SwitchSection(PatternMatching.Pattern pattern)
{
return pattern != null ? new PatternPlaceholder(pattern) : null;
}
sealed class PatternPlaceholder : SwitchSection, PatternMatching.INode
{
readonly PatternMatching.Pattern child;
public PatternPlaceholder(PatternMatching.Pattern child)
{
this.child = child;
}
public override NodeType NodeType {
get { return NodeType.Pattern; }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitPatternPlaceholder(this, child);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitPatternPlaceholder(this, child);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitPatternPlaceholder(this, child, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
return child.DoMatch(other, match);
}
bool PatternMatching.INode.DoMatchCollection(Role role, PatternMatching.INode pos, PatternMatching.Match match, PatternMatching.BacktrackingInfo backtrackingInfo)
{
return child.DoMatchCollection(role, pos, match, backtrackingInfo);
}
}
#endregion
public static readonly Role<CaseLabel> CaseLabelRole = new Role<CaseLabel>("CaseLabel", null);
public override NodeType NodeType {
@ -151,21 +90,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -151,21 +90,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildrenByRole(Roles.EmbeddedStatement); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitSwitchSection(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitSwitchSection(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitSwitchSection(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
SwitchSection o = other as SwitchSection;
@ -206,21 +130,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -206,21 +130,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
this.Expression = expression;
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitCaseLabel(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitCaseLabel(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitCaseLabel(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
CaseLabel o = other as CaseLabel;

15
ICSharpCode.Decompiler/CSharp/Syntax/Statements/ThrowStatement.cs

@ -56,21 +56,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -56,21 +56,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
AddChild(expression, Roles.Expression);
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitThrowStatement(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitThrowStatement(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitThrowStatement(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
ThrowStatement o = other as ThrowStatement;

109
ICSharpCode.Decompiler/CSharp/Syntax/Statements/TryCatchStatement.cs

@ -60,21 +60,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -60,21 +60,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
set { SetChildByRole(FinallyBlockRole, value); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitTryCatchStatement(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitTryCatchStatement(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitTryCatchStatement(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
TryCatchStatement o = other as TryCatchStatement;
@ -94,85 +79,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -94,85 +79,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
public static readonly TokenRole CondLPar = new TokenRole("(");
public static readonly TokenRole CondRPar = new TokenRole(")");
#region Null
public new static readonly CatchClause Null = new NullCatchClause();
sealed class NullCatchClause : CatchClause
{
public override bool IsNull {
get {
return true;
}
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitNullNode(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitNullNode(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitNullNode(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
return other == null || other.IsNull;
}
}
#endregion
#region PatternPlaceholder
public static implicit operator CatchClause(PatternMatching.Pattern pattern)
{
return pattern != null ? new PatternPlaceholder(pattern) : null;
}
sealed class PatternPlaceholder : CatchClause, PatternMatching.INode
{
readonly PatternMatching.Pattern child;
public PatternPlaceholder(PatternMatching.Pattern child)
{
this.child = child;
}
public override NodeType NodeType {
get { return NodeType.Pattern; }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitPatternPlaceholder(this, child);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitPatternPlaceholder(this, child);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitPatternPlaceholder(this, child, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
return child.DoMatch(other, match);
}
bool PatternMatching.INode.DoMatchCollection(Role role, PatternMatching.INode pos, PatternMatching.Match match, PatternMatching.BacktrackingInfo backtrackingInfo)
{
return child.DoMatchCollection(role, pos, match, backtrackingInfo);
}
}
#endregion
public override NodeType NodeType {
get {
return NodeType.Unknown;
@ -237,21 +143,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -237,21 +143,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
set { SetChildByRole(Roles.Body, value); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitCatchClause(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitCatchClause(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitCatchClause(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
CatchClause o = other as CatchClause;

15
ICSharpCode.Decompiler/CSharp/Syntax/Statements/UncheckedStatement.cs

@ -52,21 +52,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -52,21 +52,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
AddChild(body, Roles.Body);
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitUncheckedStatement(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitUncheckedStatement(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitUncheckedStatement(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
UncheckedStatement o = other as UncheckedStatement;

15
ICSharpCode.Decompiler/CSharp/Syntax/Statements/UnsafeStatement.cs

@ -43,21 +43,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -43,21 +43,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
set { SetChildByRole(Roles.Body, value); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitUnsafeStatement(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitUnsafeStatement(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitUnsafeStatement(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
UnsafeStatement o = other as UnsafeStatement;

15
ICSharpCode.Decompiler/CSharp/Syntax/Statements/UsingStatement.cs

@ -72,21 +72,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -72,21 +72,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
set { SetChildByRole(Roles.EmbeddedStatement, value); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitUsingStatement(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitUsingStatement(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitUsingStatement(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
UsingStatement o = other as UsingStatement;

15
ICSharpCode.Decompiler/CSharp/Syntax/Statements/VariableDeclarationStatement.cs

@ -64,21 +64,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -64,21 +64,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
return Variables.FirstOrNullObject(vi => vi.Name == name);
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitVariableDeclarationStatement(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitVariableDeclarationStatement(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitVariableDeclarationStatement(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
VariableDeclarationStatement o = other as VariableDeclarationStatement;

15
ICSharpCode.Decompiler/CSharp/Syntax/Statements/WhileStatement.cs

@ -56,21 +56,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -56,21 +56,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
set { SetChildByRole(Roles.EmbeddedStatement, value); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitWhileStatement(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitWhileStatement(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitWhileStatement(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
WhileStatement o = other as WhileStatement;

15
ICSharpCode.Decompiler/CSharp/Syntax/Statements/YieldBreakStatement.cs

@ -47,21 +47,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -47,21 +47,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildByRole(Roles.Semicolon); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitYieldBreakStatement(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitYieldBreakStatement(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitYieldBreakStatement(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
YieldBreakStatement o = other as YieldBreakStatement;

15
ICSharpCode.Decompiler/CSharp/Syntax/Statements/YieldReturnStatement.cs

@ -52,21 +52,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -52,21 +52,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildByRole(Roles.Semicolon); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitYieldReturnStatement(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitYieldReturnStatement(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitYieldReturnStatement(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
YieldReturnStatement o = other as YieldReturnStatement;

16
ICSharpCode.Decompiler/CSharp/Syntax/SyntaxTree.cs

@ -26,7 +26,6 @@ @@ -26,7 +26,6 @@
using System.Collections.Generic;
using ICSharpCode.Decompiler.TypeSystem;
using ICSharpCode.Decompiler.Util;
namespace ICSharpCode.Decompiler.CSharp.Syntax
@ -121,20 +120,5 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -121,20 +120,5 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
SyntaxTree o = other as SyntaxTree;
return o != null && this.Members.DoMatch(o.Members, match);
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitSyntaxTree(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitSyntaxTree(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitSyntaxTree(this, data);
}
}
}

63
ICSharpCode.Decompiler/CSharp/Syntax/TupleAstType.cs

@ -29,21 +29,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -29,21 +29,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
get { return GetChildrenByRole(ElementRole); }
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitTupleType(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitTupleType(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitTupleType(this, data);
}
protected internal override bool DoMatch(AstNode other, Match match)
{
return other is TupleAstType o && Elements.DoMatch(o.Elements, match);
@ -53,39 +38,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -53,39 +38,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
[DecompilerAstNode(hasNullNode: true)]
public partial class TupleTypeElement : AstNode
{
#region Null
public new static readonly TupleTypeElement Null = new TupleTypeElement();
sealed class NullTupleTypeElement : TupleTypeElement
{
public override bool IsNull {
get {
return true;
}
}
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitNullNode(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitNullNode(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitNullNode(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
return other == null || other.IsNull;
}
}
#endregion
public AstType Type {
get { return GetChildByRole(Roles.Type); }
set { SetChildByRole(Roles.Type, value); }
@ -103,21 +55,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax @@ -103,21 +55,6 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
public override NodeType NodeType => NodeType.Unknown;
public override void AcceptVisitor(IAstVisitor visitor)
{
visitor.VisitTupleTypeElement(this);
}
public override T AcceptVisitor<T>(IAstVisitor<T> visitor)
{
return visitor.VisitTupleTypeElement(this);
}
public override S AcceptVisitor<T, S>(IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitTupleTypeElement(this, data);
}
protected internal override bool DoMatch(AstNode other, Match match)
{
return other is TupleTypeElement o

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save