Browse Source

finished AST generation for VB.NET query expressions

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@3403 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Markus Palme 17 years ago
parent
commit
585c7519f4
  1. 59
      src/Libraries/NRefactory/NRefactoryASTGenerator/AST/Expressions.cs
  2. 12
      src/Libraries/NRefactory/Project/Src/Ast/Enums.cs
  3. 495
      src/Libraries/NRefactory/Project/Src/Ast/Generated.cs
  4. 20
      src/Libraries/NRefactory/Project/Src/IAstVisitor.cs
  5. 1434
      src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs
  6. 313
      src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG
  7. 110
      src/Libraries/NRefactory/Project/Src/Visitors/AbstractASTVisitor.cs
  8. 194
      src/Libraries/NRefactory/Project/Src/Visitors/AbstractAstTransformer.cs
  9. 110
      src/Libraries/NRefactory/Project/Src/Visitors/NodeTrackingAstVisitor.cs
  10. 3
      src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryResolver.cs

59
src/Libraries/NRefactory/NRefactoryASTGenerator/AST/Expressions.cs

@ -17,6 +17,7 @@ namespace NRefactoryASTGenerator.Ast
class PrimitiveExpression : Expression {} class PrimitiveExpression : Expression {}
enum ParameterModifiers { In } enum ParameterModifiers { In }
enum QueryExpressionPartitionType { }
class ParameterDeclarationExpression : Expression { class ParameterDeclarationExpression : Expression {
List<AttributeSection> attributes; List<AttributeSection> attributes;
@ -259,11 +260,6 @@ namespace NRefactoryASTGenerator.Ast
/// </remarks> /// </remarks>
QueryExpressionFromClause fromClause; QueryExpressionFromClause fromClause;
/// <remarks>
/// VB.NET only.
/// </remarks>
QueryExpressionAggregateClause aggregateClause;
List<QueryExpressionClause> middleClauses; List<QueryExpressionClause> middleClauses;
/// <remarks> /// <remarks>
@ -299,6 +295,19 @@ namespace NRefactoryASTGenerator.Ast
[ImplementNullable(NullableImplementation.Shadow)] [ImplementNullable(NullableImplementation.Shadow)]
class QueryExpressionFromClause : QueryExpressionFromOrJoinClause { } class QueryExpressionFromClause : QueryExpressionFromOrJoinClause { }
class QueryExpressionAggregateClause : QueryExpressionClause {
QueryExpressionFromClause fromClause;
List<QueryExpressionClause> middleClauses;
List<ExpressionRangeVariable> intoVariables;
}
[ImplementNullable]
class ExpressionRangeVariable : AbstractNode, INullable {
string identifier;
Expression expression;
TypeReference type;
}
class QueryExpressionJoinClause : QueryExpressionFromOrJoinClause { class QueryExpressionJoinClause : QueryExpressionFromOrJoinClause {
Expression onExpression; Expression onExpression;
@ -307,6 +316,23 @@ namespace NRefactoryASTGenerator.Ast
string intoIdentifier; string intoIdentifier;
} }
[ImplementNullable(NullableImplementation.Shadow)]
class QueryExpressionJoinVBClause : QueryExpressionClause {
QueryExpressionFromClause joinVariable;
QueryExpressionJoinVBClause subJoin;
List<QueryExpressionJoinConditionVB> conditions;
}
class QueryExpressionPartitionVBClause : QueryExpressionClause {
Expression expression;
QueryExpressionPartitionType partitionType;
}
class QueryExpressionJoinConditionVB : AbstractNode {
Expression leftSide;
Expression rightSide;
}
class QueryExpressionOrderClause : QueryExpressionClause { class QueryExpressionOrderClause : QueryExpressionClause {
List<QueryExpressionOrdering> orderings; List<QueryExpressionOrdering> orderings;
} }
@ -323,12 +349,35 @@ namespace NRefactoryASTGenerator.Ast
class QueryExpressionSelectClause : QueryExpressionClause { class QueryExpressionSelectClause : QueryExpressionClause {
Expression projection; Expression projection;
} }
class QueryExpressionSelectVBClause : QueryExpressionClause {
List<ExpressionRangeVariable> variables;
}
class QueryExpressionLetVBClause : QueryExpressionClause {
List<ExpressionRangeVariable> variables;
}
class QueryExpressionDistinctClause : QueryExpressionClause {
}
class QueryExpressionGroupClause : QueryExpressionClause { class QueryExpressionGroupClause : QueryExpressionClause {
Expression projection; Expression projection;
Expression groupBy; Expression groupBy;
} }
class QueryExpressionGroupVBClause : QueryExpressionClause {
List<ExpressionRangeVariable> groupVariables;
List<ExpressionRangeVariable> byVariables;
List<ExpressionRangeVariable> intoVariables;
}
class QueryExpressionGroupJoinVBClause : QueryExpressionClause {
QueryExpressionJoinVBClause joinClause;
List<ExpressionRangeVariable> intoVariables;
}
[ImplementNullable(NullableImplementation.Shadow)] [ImplementNullable(NullableImplementation.Shadow)]
class QueryExpressionIntoClause : QueryExpressionClause { class QueryExpressionIntoClause : QueryExpressionClause {
[QuestionMarkDefault] [QuestionMarkDefault]

12
src/Libraries/NRefactory/Project/Src/Ast/Enums.cs

@ -375,4 +375,16 @@ namespace ICSharpCode.NRefactory.Ast
Ascending, Ascending,
Descending Descending
} }
/// <summary>
/// Specifies the partition type for a VB.NET
/// query expression.
/// </summary>
public enum QueryExpressionPartitionType
{
Take,
TakeWhile,
Skip,
SkipWhile
}
} }

495
src/Libraries/NRefactory/Project/Src/Ast/Generated.cs

@ -1573,12 +1573,6 @@ namespace ICSharpCode.NRefactory.Ast {
initializer = Expression.Null; initializer = Expression.Null;
} }
public bool HasRemoveRegion {
get {
return !removeRegion.IsNull;
}
}
public bool HasAddRegion { public bool HasAddRegion {
get { get {
return !addRegion.IsNull; return !addRegion.IsNull;
@ -1591,6 +1585,12 @@ namespace ICSharpCode.NRefactory.Ast {
} }
} }
public bool HasRemoveRegion {
get {
return !removeRegion.IsNull;
}
}
public override object AcceptVisitor(IAstVisitor visitor, object data) { public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitEventDeclaration(this, data); return visitor.VisitEventDeclaration(this, data);
} }
@ -1716,6 +1716,88 @@ namespace ICSharpCode.NRefactory.Ast {
} }
} }
public class ExpressionRangeVariable : AbstractNode, INullable {
string identifier;
Expression expression;
TypeReference type;
public string Identifier {
get {
return identifier;
}
set {
identifier = value ?? "";
}
}
public Expression Expression {
get {
return expression;
}
set {
expression = value ?? Expression.Null;
if (!expression.IsNull) expression.Parent = this;
}
}
public TypeReference Type {
get {
return type;
}
set {
type = value ?? TypeReference.Null;
}
}
public ExpressionRangeVariable() {
identifier = "";
expression = Expression.Null;
type = TypeReference.Null;
}
public virtual bool IsNull {
get {
return false;
}
}
public static ExpressionRangeVariable Null {
get {
return NullExpressionRangeVariable.Instance;
}
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitExpressionRangeVariable(this, data);
}
public override string ToString() {
return string.Format("[ExpressionRangeVariable Identifier={0} Expression={1} Type={2}]", Identifier, Expression, Type);
}
}
internal sealed class NullExpressionRangeVariable : ExpressionRangeVariable {
internal static NullExpressionRangeVariable Instance = new NullExpressionRangeVariable();
public override bool IsNull {
get {
return true;
}
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return null;
}
public override string ToString() {
return "[NullExpressionRangeVariable]";
}
}
public class ExpressionStatement : Statement { public class ExpressionStatement : Statement {
Expression expression; Expression expression;
@ -2205,11 +2287,12 @@ namespace ICSharpCode.NRefactory.Ast {
elseIfSections = new List<ElseIfSection>(); elseIfSections = new List<ElseIfSection>();
} }
public bool HasElseIfSections {
get { public IfElseStatement(Expression condition, Statement trueStatement)
return elseIfSections.Count > 0; : this(condition) {
this.trueStatement.Add(Statement.CheckNull(trueStatement));
if (trueStatement != null) trueStatement.Parent = this;
} }
}
public bool HasElseStatements { public bool HasElseStatements {
get { get {
@ -2217,12 +2300,11 @@ namespace ICSharpCode.NRefactory.Ast {
} }
} }
public bool HasElseIfSections {
public IfElseStatement(Expression condition, Statement trueStatement) get {
: this(condition) { return elseIfSections.Count > 0;
this.trueStatement.Add(Statement.CheckNull(trueStatement));
if (trueStatement != null) trueStatement.Parent = this;
} }
}
public IfElseStatement(Expression condition, Statement trueStatement, Statement falseStatement) public IfElseStatement(Expression condition, Statement trueStatement, Statement falseStatement)
@ -2346,9 +2428,9 @@ namespace ICSharpCode.NRefactory.Ast {
setRegion = PropertySetRegion.Null; setRegion = PropertySetRegion.Null;
} }
public bool IsWriteOnly { public bool IsReadOnly {
get { get {
return !HasGetRegion && HasSetRegion; return HasGetRegion && !HasSetRegion;
} }
} }
@ -2364,9 +2446,9 @@ namespace ICSharpCode.NRefactory.Ast {
} }
} }
public bool IsReadOnly { public bool IsWriteOnly {
get { get {
return HasGetRegion && !HasSetRegion; return !HasGetRegion && HasSetRegion;
} }
} }
@ -3272,12 +3354,6 @@ public Location ExtendedEndLocation { get; set; }
} }
} }
public bool IsWriteOnly {
get {
return !HasGetRegion && HasSetRegion;
}
}
public bool HasSetRegion { public bool HasSetRegion {
get { get {
return !setRegion.IsNull; return !setRegion.IsNull;
@ -3302,6 +3378,12 @@ public Location ExtendedEndLocation { get; set; }
} }
} }
public bool IsWriteOnly {
get {
return !HasGetRegion && HasSetRegion;
}
}
public override object AcceptVisitor(IAstVisitor visitor, object data) { public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitPropertyDeclaration(this, data); return visitor.VisitPropertyDeclaration(this, data);
} }
@ -3530,6 +3612,58 @@ public Location ExtendedEndLocation { get; set; }
} }
} }
public class QueryExpressionAggregateClause : QueryExpressionClause {
QueryExpressionFromClause fromClause;
List<QueryExpressionClause> middleClauses;
List<ExpressionRangeVariable> intoVariables;
public QueryExpressionFromClause FromClause {
get {
return fromClause;
}
set {
fromClause = value ?? QueryExpressionFromClause.Null;
if (!fromClause.IsNull) fromClause.Parent = this;
}
}
public List<QueryExpressionClause> MiddleClauses {
get {
return middleClauses;
}
set {
middleClauses = value ?? new List<QueryExpressionClause>();
}
}
public List<ExpressionRangeVariable> IntoVariables {
get {
return intoVariables;
}
set {
intoVariables = value ?? new List<ExpressionRangeVariable>();
}
}
public QueryExpressionAggregateClause() {
fromClause = QueryExpressionFromClause.Null;
middleClauses = new List<QueryExpressionClause>();
intoVariables = new List<ExpressionRangeVariable>();
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitQueryExpressionAggregateClause(this, data);
}
public override string ToString() {
return string.Format("[QueryExpressionAggregateClause FromClause={0} MiddleClauses={1} IntoVariables={2" +
"}]", FromClause, GetCollectionString(MiddleClauses), GetCollectionString(IntoVariables));
}
}
public abstract class QueryExpressionClause : AbstractNode, INullable { public abstract class QueryExpressionClause : AbstractNode, INullable {
public virtual bool IsNull { public virtual bool IsNull {
@ -3564,6 +3698,20 @@ public Location ExtendedEndLocation { get; set; }
} }
} }
public class QueryExpressionDistinctClause : QueryExpressionClause {
public QueryExpressionDistinctClause() {
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitQueryExpressionDistinctClause(this, data);
}
public override string ToString() {
return "[QueryExpressionDistinctClause]";
}
}
public class QueryExpressionFromClause : QueryExpressionFromOrJoinClause { public class QueryExpressionFromClause : QueryExpressionFromOrJoinClause {
public QueryExpressionFromClause() { public QueryExpressionFromClause() {
@ -3680,6 +3828,96 @@ public Location ExtendedEndLocation { get; set; }
} }
} }
public class QueryExpressionGroupJoinVBClause : QueryExpressionClause {
QueryExpressionJoinVBClause joinClause;
List<ExpressionRangeVariable> intoVariables;
public QueryExpressionJoinVBClause JoinClause {
get {
return joinClause;
}
set {
joinClause = value ?? QueryExpressionJoinVBClause.Null;
if (!joinClause.IsNull) joinClause.Parent = this;
}
}
public List<ExpressionRangeVariable> IntoVariables {
get {
return intoVariables;
}
set {
intoVariables = value ?? new List<ExpressionRangeVariable>();
}
}
public QueryExpressionGroupJoinVBClause() {
joinClause = QueryExpressionJoinVBClause.Null;
intoVariables = new List<ExpressionRangeVariable>();
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitQueryExpressionGroupJoinVBClause(this, data);
}
public override string ToString() {
return string.Format("[QueryExpressionGroupJoinVBClause JoinClause={0} IntoVariables={1}]", JoinClause, GetCollectionString(IntoVariables));
}
}
public class QueryExpressionGroupVBClause : QueryExpressionClause {
List<ExpressionRangeVariable> groupVariables;
List<ExpressionRangeVariable> byVariables;
List<ExpressionRangeVariable> intoVariables;
public List<ExpressionRangeVariable> GroupVariables {
get {
return groupVariables;
}
set {
groupVariables = value ?? new List<ExpressionRangeVariable>();
}
}
public List<ExpressionRangeVariable> ByVariables {
get {
return byVariables;
}
set {
byVariables = value ?? new List<ExpressionRangeVariable>();
}
}
public List<ExpressionRangeVariable> IntoVariables {
get {
return intoVariables;
}
set {
intoVariables = value ?? new List<ExpressionRangeVariable>();
}
}
public QueryExpressionGroupVBClause() {
groupVariables = new List<ExpressionRangeVariable>();
byVariables = new List<ExpressionRangeVariable>();
intoVariables = new List<ExpressionRangeVariable>();
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitQueryExpressionGroupVBClause(this, data);
}
public override string ToString() {
return string.Format("[QueryExpressionGroupVBClause GroupVariables={0} ByVariables={1} IntoVariables={2" +
"}]", GetCollectionString(GroupVariables), GetCollectionString(ByVariables), GetCollectionString(IntoVariables));
}
}
public class QueryExpressionIntoClause : QueryExpressionClause { public class QueryExpressionIntoClause : QueryExpressionClause {
string intoIdentifier; string intoIdentifier;
@ -3797,6 +4035,123 @@ public Location ExtendedEndLocation { get; set; }
} }
} }
public class QueryExpressionJoinConditionVB : AbstractNode {
Expression leftSide;
Expression rightSide;
public Expression LeftSide {
get {
return leftSide;
}
set {
leftSide = value ?? Expression.Null;
if (!leftSide.IsNull) leftSide.Parent = this;
}
}
public Expression RightSide {
get {
return rightSide;
}
set {
rightSide = value ?? Expression.Null;
if (!rightSide.IsNull) rightSide.Parent = this;
}
}
public QueryExpressionJoinConditionVB() {
leftSide = Expression.Null;
rightSide = Expression.Null;
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitQueryExpressionJoinConditionVB(this, data);
}
public override string ToString() {
return string.Format("[QueryExpressionJoinConditionVB LeftSide={0} RightSide={1}]", LeftSide, RightSide);
}
}
public class QueryExpressionJoinVBClause : QueryExpressionClause {
QueryExpressionFromClause joinVariable;
QueryExpressionJoinVBClause subJoin;
List<QueryExpressionJoinConditionVB> conditions;
public QueryExpressionFromClause JoinVariable {
get {
return joinVariable;
}
set {
joinVariable = value ?? QueryExpressionFromClause.Null;
if (!joinVariable.IsNull) joinVariable.Parent = this;
}
}
public QueryExpressionJoinVBClause SubJoin {
get {
return subJoin;
}
set {
subJoin = value ?? QueryExpressionJoinVBClause.Null;
if (!subJoin.IsNull) subJoin.Parent = this;
}
}
public List<QueryExpressionJoinConditionVB> Conditions {
get {
return conditions;
}
set {
conditions = value ?? new List<QueryExpressionJoinConditionVB>();
}
}
public QueryExpressionJoinVBClause() {
joinVariable = QueryExpressionFromClause.Null;
subJoin = QueryExpressionJoinVBClause.Null;
conditions = new List<QueryExpressionJoinConditionVB>();
}
public new static QueryExpressionJoinVBClause Null {
get {
return NullQueryExpressionJoinVBClause.Instance;
}
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitQueryExpressionJoinVBClause(this, data);
}
public override string ToString() {
return string.Format("[QueryExpressionJoinVBClause JoinVariable={0} SubJoin={1} Conditions={2}]", JoinVariable, SubJoin, GetCollectionString(Conditions));
}
}
internal sealed class NullQueryExpressionJoinVBClause : QueryExpressionJoinVBClause {
internal static NullQueryExpressionJoinVBClause Instance = new NullQueryExpressionJoinVBClause();
public override bool IsNull {
get {
return true;
}
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return null;
}
public override string ToString() {
return "[NullQueryExpressionJoinVBClause]";
}
}
public class QueryExpressionLetClause : QueryExpressionClause { public class QueryExpressionLetClause : QueryExpressionClause {
string identifier; string identifier;
@ -3836,6 +4191,32 @@ public Location ExtendedEndLocation { get; set; }
} }
} }
public class QueryExpressionLetVBClause : QueryExpressionClause {
List<ExpressionRangeVariable> variables;
public List<ExpressionRangeVariable> Variables {
get {
return variables;
}
set {
variables = value ?? new List<ExpressionRangeVariable>();
}
}
public QueryExpressionLetVBClause() {
variables = new List<ExpressionRangeVariable>();
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitQueryExpressionLetVBClause(this, data);
}
public override string ToString() {
return string.Format("[QueryExpressionLetVBClause Variables={0}]", GetCollectionString(Variables));
}
}
public class QueryExpressionOrderClause : QueryExpressionClause { public class QueryExpressionOrderClause : QueryExpressionClause {
List<QueryExpressionOrdering> orderings; List<QueryExpressionOrdering> orderings;
@ -3900,6 +4281,44 @@ public Location ExtendedEndLocation { get; set; }
} }
} }
public class QueryExpressionPartitionVBClause : QueryExpressionClause {
Expression expression;
QueryExpressionPartitionType partitionType;
public Expression Expression {
get {
return expression;
}
set {
expression = value ?? Expression.Null;
if (!expression.IsNull) expression.Parent = this;
}
}
public QueryExpressionPartitionType PartitionType {
get {
return partitionType;
}
set {
partitionType = value;
}
}
public QueryExpressionPartitionVBClause() {
expression = Expression.Null;
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitQueryExpressionPartitionVBClause(this, data);
}
public override string ToString() {
return string.Format("[QueryExpressionPartitionVBClause Expression={0} PartitionType={1}]", Expression, PartitionType);
}
}
public class QueryExpressionSelectClause : QueryExpressionClause { public class QueryExpressionSelectClause : QueryExpressionClause {
Expression projection; Expression projection;
@ -3927,6 +4346,32 @@ public Location ExtendedEndLocation { get; set; }
} }
} }
public class QueryExpressionSelectVBClause : QueryExpressionClause {
List<ExpressionRangeVariable> variables;
public List<ExpressionRangeVariable> Variables {
get {
return variables;
}
set {
variables = value ?? new List<ExpressionRangeVariable>();
}
}
public QueryExpressionSelectVBClause() {
variables = new List<ExpressionRangeVariable>();
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitQueryExpressionSelectVBClause(this, data);
}
public override string ToString() {
return string.Format("[QueryExpressionSelectVBClause Variables={0}]", GetCollectionString(Variables));
}
}
public class QueryExpressionWhereClause : QueryExpressionClause { public class QueryExpressionWhereClause : QueryExpressionClause {
Expression condition; Expression condition;

20
src/Libraries/NRefactory/Project/Src/IAstVisitor.cs

@ -93,6 +93,8 @@ namespace ICSharpCode.NRefactory {
object VisitExitStatement(ExitStatement exitStatement, object data); object VisitExitStatement(ExitStatement exitStatement, object data);
object VisitExpressionRangeVariable(ExpressionRangeVariable expressionRangeVariable, object data);
object VisitExpressionStatement(ExpressionStatement expressionStatement, object data); object VisitExpressionStatement(ExpressionStatement expressionStatement, object data);
object VisitFieldDeclaration(FieldDeclaration fieldDeclaration, object data); object VisitFieldDeclaration(FieldDeclaration fieldDeclaration, object data);
@ -163,22 +165,40 @@ namespace ICSharpCode.NRefactory {
object VisitQueryExpression(QueryExpression queryExpression, object data); object VisitQueryExpression(QueryExpression queryExpression, object data);
object VisitQueryExpressionAggregateClause(QueryExpressionAggregateClause queryExpressionAggregateClause, object data);
object VisitQueryExpressionDistinctClause(QueryExpressionDistinctClause queryExpressionDistinctClause, object data);
object VisitQueryExpressionFromClause(QueryExpressionFromClause queryExpressionFromClause, object data); object VisitQueryExpressionFromClause(QueryExpressionFromClause queryExpressionFromClause, object data);
object VisitQueryExpressionGroupClause(QueryExpressionGroupClause queryExpressionGroupClause, object data); object VisitQueryExpressionGroupClause(QueryExpressionGroupClause queryExpressionGroupClause, object data);
object VisitQueryExpressionGroupJoinVBClause(QueryExpressionGroupJoinVBClause queryExpressionGroupJoinVBClause, object data);
object VisitQueryExpressionGroupVBClause(QueryExpressionGroupVBClause queryExpressionGroupVBClause, object data);
object VisitQueryExpressionIntoClause(QueryExpressionIntoClause queryExpressionIntoClause, object data); object VisitQueryExpressionIntoClause(QueryExpressionIntoClause queryExpressionIntoClause, object data);
object VisitQueryExpressionJoinClause(QueryExpressionJoinClause queryExpressionJoinClause, object data); object VisitQueryExpressionJoinClause(QueryExpressionJoinClause queryExpressionJoinClause, object data);
object VisitQueryExpressionJoinConditionVB(QueryExpressionJoinConditionVB queryExpressionJoinConditionVB, object data);
object VisitQueryExpressionJoinVBClause(QueryExpressionJoinVBClause queryExpressionJoinVBClause, object data);
object VisitQueryExpressionLetClause(QueryExpressionLetClause queryExpressionLetClause, object data); object VisitQueryExpressionLetClause(QueryExpressionLetClause queryExpressionLetClause, object data);
object VisitQueryExpressionLetVBClause(QueryExpressionLetVBClause queryExpressionLetVBClause, object data);
object VisitQueryExpressionOrderClause(QueryExpressionOrderClause queryExpressionOrderClause, object data); object VisitQueryExpressionOrderClause(QueryExpressionOrderClause queryExpressionOrderClause, object data);
object VisitQueryExpressionOrdering(QueryExpressionOrdering queryExpressionOrdering, object data); object VisitQueryExpressionOrdering(QueryExpressionOrdering queryExpressionOrdering, object data);
object VisitQueryExpressionPartitionVBClause(QueryExpressionPartitionVBClause queryExpressionPartitionVBClause, object data);
object VisitQueryExpressionSelectClause(QueryExpressionSelectClause queryExpressionSelectClause, object data); object VisitQueryExpressionSelectClause(QueryExpressionSelectClause queryExpressionSelectClause, object data);
object VisitQueryExpressionSelectVBClause(QueryExpressionSelectVBClause queryExpressionSelectVBClause, object data);
object VisitQueryExpressionWhereClause(QueryExpressionWhereClause queryExpressionWhereClause, object data); object VisitQueryExpressionWhereClause(QueryExpressionWhereClause queryExpressionWhereClause, object data);
object VisitRaiseEventStatement(RaiseEventStatement raiseEventStatement, object data); object VisitRaiseEventStatement(RaiseEventStatement raiseEventStatement, object data);

1434
src/Libraries/NRefactory/Project/Src/Parser/VBNet/Parser.cs

File diff suppressed because it is too large Load Diff

313
src/Libraries/NRefactory/Project/Src/Parser/VBNet/VBNET.ATG

@ -2019,166 +2019,319 @@ LambdaExpr<out Expression expr>
QueryExpr<out Expression expr> QueryExpr<out Expression expr>
(. (.
QueryExpression qexpr = new QueryExpression(); QueryExpression qexpr = new QueryExpression();
List<QueryExpressionFromClause> fromClauses = new List<QueryExpressionFromClause>(); qexpr.StartLocation = la.Location;
List<QueryExpressionClause> middleClauses = new List<QueryExpressionClause>();
expr = qexpr; expr = qexpr;
.) = .) =
FromOrAggregateQueryOperator<out fromClauses> FromOrAggregateQueryOperator<middleClauses>
{ QueryOperator } { QueryOperator<middleClauses> }
(.
qexpr.EndLocation = t.EndLocation;
.)
. .
FromOrAggregateQueryOperator<out List<QueryExpressionFromClause> fromClauses> FromOrAggregateQueryOperator<List<QueryExpressionClause> middleClauses>
(. fromClauses = null; .) = (. .) =
FromQueryOperator<out fromClauses> FromQueryOperator<middleClauses>
| AggregateQueryOperator<out fromClauses> | AggregateQueryOperator<middleClauses>
. .
QueryOperator QueryOperator<List<QueryExpressionClause> middleClauses>
(. (.
List<QueryExpressionFromClause> fromClauses = null; QueryExpressionJoinVBClause joinClause = null;
QueryExpressionGroupVBClause groupByClause = null;
QueryExpressionPartitionVBClause partitionClause = null;
QueryExpressionGroupJoinVBClause groupJoinClause = null;
.) = .) =
FromQueryOperator<out fromClauses> FromQueryOperator<middleClauses>
| AggregateQueryOperator<out fromClauses> | AggregateQueryOperator<middleClauses>
| SelectQueryOperator | SelectQueryOperator<middleClauses>
| DistinctQueryOperator | DistinctQueryOperator<middleClauses>
| WhereQueryOperator | WhereQueryOperator<middleClauses>
| OrderByQueryOperator | OrderByQueryOperator<middleClauses>
| PartitionQueryOperator | PartitionQueryOperator<out partitionClause>
| LetQueryOperator | LetQueryOperator<middleClauses>
| JoinQueryOperator | JoinQueryOperator<out joinClause>
| IF(la.kind == Tokens.Group && Peek(1).kind == Tokens.Join) GroupJoinQueryOperator (. middleClauses.Add(joinClause); .)
| GroupByQueryOperator | IF(la.kind == Tokens.Group && Peek(1).kind == Tokens.Join) GroupJoinQueryOperator<out groupJoinClause>
(. middleClauses.Add(groupJoinClause); .)
| GroupByQueryOperator<out groupByClause>
(. middleClauses.Add(groupByClause); .)
. .
OrderByQueryOperator OrderByQueryOperator<List<QueryExpressionClause> middleClauses>
(. .) = (.
"Order" "By" OrderExpressionList QueryExpressionOrderClause orderClause = new QueryExpressionOrderClause();
orderClause.StartLocation = la.Location;
List<QueryExpressionOrdering> orderings = null;
.) =
"Order" "By" OrderExpressionList<out orderings>
(.
orderClause.Orderings = orderings;
orderClause.EndLocation = t.EndLocation;
middleClauses.Add(orderClause);
.)
. .
OrderExpressionList OrderExpressionList<out List<QueryExpressionOrdering> orderings>
(. .) = (.
OrderExpression orderings = new List<QueryExpressionOrdering>();
QueryExpressionOrdering ordering = null;
.) =
OrderExpression<out ordering>
(. orderings.Add(ordering); .)
{ {
"," OrderExpression "," OrderExpression<out ordering>
(. orderings.Add(ordering); .)
} }
. .
OrderExpression OrderExpression<out QueryExpressionOrdering ordering>
(. Expression orderExpr = null; .) = (.
ordering = new QueryExpressionOrdering();
ordering.StartLocation = la.Location;
ordering.Direction = QueryExpressionOrderingDirection.None;
Expression orderExpr = null;
.) =
Expr<out orderExpr> Expr<out orderExpr>
(.
ordering.Criteria = orderExpr;
.)
[ [
"Ascending" "Ascending" (. ordering.Direction = QueryExpressionOrderingDirection.Ascending; .)
| "Descending" | "Descending" (. ordering.Direction = QueryExpressionOrderingDirection.Descending; .)
] ]
(. ordering.EndLocation = t.EndLocation; .)
. .
GroupByQueryOperator GroupByQueryOperator<out QueryExpressionGroupVBClause groupByClause>
(. .) = (.
"Group" ExpressionRangeVariableDeclarationList "By" ExpressionRangeVariableDeclarationList groupByClause = new QueryExpressionGroupVBClause();
"Into" ExpressionRangeVariableDeclarationList groupByClause.StartLocation = la.Location;
.) =
"Group" ExpressionRangeVariableDeclarationList<groupByClause.GroupVariables>
"By" ExpressionRangeVariableDeclarationList<groupByClause.ByVariables>
"Into" ExpressionRangeVariableDeclarationList<groupByClause.IntoVariables>
(.
SetParent(groupByClause.GroupVariables, groupByClause);
SetParent(groupByClause.ByVariables, groupByClause);
SetParent(groupByClause.IntoVariables, groupByClause);
groupByClause.EndLocation = t.EndLocation;
.)
. .
GroupJoinQueryOperator GroupJoinQueryOperator<out QueryExpressionGroupJoinVBClause groupJoinClause>
(. .) = (.
"Group" JoinQueryOperator groupJoinClause = new QueryExpressionGroupJoinVBClause();
"Into" ExpressionRangeVariableDeclarationList groupJoinClause.StartLocation = la.Location;
QueryExpressionJoinVBClause joinClause = null;
.) =
"Group" JoinQueryOperator<out joinClause>
"Into" ExpressionRangeVariableDeclarationList<groupJoinClause.IntoVariables>
(.
groupJoinClause.JoinClause = joinClause;
groupJoinClause.EndLocation = t.EndLocation;
.)
. .
FromQueryOperator<out List<QueryExpressionFromClause> fromClauses> FromQueryOperator<List<QueryExpressionClause> middleClauses>
(. (.
.) = .) =
"From" CollectionRangeVariableDeclarationList<out fromClauses> "From" CollectionRangeVariableDeclarationList<middleClauses>
. .
SelectQueryOperator SelectQueryOperator<List<QueryExpressionClause> middleClauses>
(. .) = (.
"Select" ExpressionRangeVariableDeclarationList QueryExpressionSelectVBClause selectClause = new QueryExpressionSelectVBClause();
selectClause.StartLocation = la.Location;
.) =
"Select" ExpressionRangeVariableDeclarationList<selectClause.Variables>
(.
SetParent(selectClause.Variables, selectClause);
selectClause.EndLocation = t.Location;
middleClauses.Add(selectClause);
.)
. .
DistinctQueryOperator DistinctQueryOperator<List<QueryExpressionClause> middleClauses>
(. .) = (.
QueryExpressionDistinctClause distinctClause = new QueryExpressionDistinctClause();
distinctClause.StartLocation = la.Location;
.) =
"Distinct" "Distinct"
(.
distinctClause.EndLocation = t.EndLocation;
middleClauses.Add(distinctClause);
.)
. .
WhereQueryOperator WhereQueryOperator<List<QueryExpressionClause> middleClauses>
(. Expression operand = null; .) = (.
QueryExpressionWhereClause whereClause = new QueryExpressionWhereClause();
whereClause.StartLocation = la.Location;
Expression operand = null;
.) =
"Where" Expr<out operand> "Where" Expr<out operand>
(.
whereClause.Condition = operand;
whereClause.EndLocation = t.EndLocation;
middleClauses.Add(whereClause);
.)
. .
PartitionQueryOperator PartitionQueryOperator<out QueryExpressionPartitionVBClause partitionClause>
(. Expression expr = null; .) = (.
"Take" [ "While" ] Expr<out expr> partitionClause = new QueryExpressionPartitionVBClause();
| "Skip" [ "While" ] Expr<out expr> partitionClause.StartLocation = la.Location;
Expression expr = null;
.) =
"Take" (. partitionClause.PartitionType = QueryExpressionPartitionType.Take; .)
[ "While" (. partitionClause.PartitionType = QueryExpressionPartitionType.TakeWhile; .) ]
Expr<out expr>
| "Skip" (. partitionClause.PartitionType = QueryExpressionPartitionType.Skip; .)
[ "While" ] (. partitionClause.PartitionType = QueryExpressionPartitionType.SkipWhile; .)
Expr<out expr>
(.
partitionClause.Expression = expr;
partitionClause.EndLocation = t.EndLocation;
.)
. .
AggregateQueryOperator<out List<QueryExpressionFromClause> fromClauses> AggregateQueryOperator<List<QueryExpressionClause> middleClauses>
(. (.
fromClauses =new List<QueryExpressionFromClause>(); QueryExpressionFromClause fromClause = null;
QueryExpressionFromClause aggreateClause = null; QueryExpressionAggregateClause aggregateClause = new QueryExpressionAggregateClause();
aggregateClause.IntoVariables = new List<ExpressionRangeVariable>();
aggregateClause.StartLocation = la.Location;
.) = .) =
"Aggregate" CollectionRangeVariableDeclaration<out aggreateClause> { QueryOperator } "Aggregate" CollectionRangeVariableDeclaration<out fromClause>
(. fromClauses.Add(aggreateClause); .) (.
"Into" ExpressionRangeVariableDeclarationList aggregateClause.FromClause = fromClause;
.)
{
QueryOperator<aggregateClause.MiddleClauses>
}
(. SetParent(aggregateClause.MiddleClauses, aggregateClause); .)
"Into" ExpressionRangeVariableDeclarationList<aggregateClause.IntoVariables>
(.
SetParent(aggregateClause.IntoVariables, aggregateClause);
aggregateClause.EndLocation = t.EndLocation;
middleClauses.Add(aggregateClause);
.)
. .
LetQueryOperator LetQueryOperator<List<QueryExpressionClause> middleClauses>
(. .) = (.
"Let" ExpressionRangeVariableDeclarationList QueryExpressionLetVBClause letClause = new QueryExpressionLetVBClause();
letClause.StartLocation = la.Location;
.) =
"Let" ExpressionRangeVariableDeclarationList<letClause.Variables>
(.
letClause.EndLocation = t.EndLocation;
middleClauses.Add(letClause);
.)
. .
ExpressionRangeVariableDeclarationList ExpressionRangeVariableDeclarationList<List<ExpressionRangeVariable> variables>
(. .) = (.
ExpressionRangeVariable variable = null;
ExpressionRangeVariableDeclaration .) =
{ "," ExpressionRangeVariableDeclaration } ExpressionRangeVariableDeclaration<out variable>
(. variables.Add(variable); .)
{ "," ExpressionRangeVariableDeclaration<out variable> (. variables.Add(variable); .) }
. .
ExpressionRangeVariableDeclaration ExpressionRangeVariableDeclaration<out ExpressionRangeVariable variable>
(. (.
variable = new ExpressionRangeVariable();
variable.StartLocation = la.Location;
Expression rhs = null; Expression rhs = null;
TypeReference typeName = null; TypeReference typeName = null;
.) = .) =
[ IF(IsIdentifiedExpressionRange()) Identifier [ "As" TypeName<out typeName> ] "=" [
IF(IsIdentifiedExpressionRange()) Identifier
(. variable.Identifier = t.val; .)
[
"As" TypeName<out typeName>
(. variable.Type = typeName; .)
]
"="
] ]
Expr<out rhs> Expr<out rhs>
(.
variable.Expression = rhs;
variable.EndLocation = t.EndLocation;
.)
. .
JoinQueryOperator JoinQueryOperator<out QueryExpressionJoinVBClause joinClause>
(. QueryExpressionFromClause joinClause = null; .) = (.
"Join" CollectionRangeVariableDeclaration<out joinClause> [ JoinQueryOperator ] "On" joinClause = new QueryExpressionJoinVBClause();
JoinCondition joinClause.StartLocation = la.Location;
QueryExpressionFromClause joinVariable = null;
QueryExpressionJoinVBClause subJoin = null;
QueryExpressionJoinConditionVB condition = null;
.) =
"Join" CollectionRangeVariableDeclaration<out joinVariable>
(. joinClause.JoinVariable = joinVariable; .)
[
JoinQueryOperator<out subJoin>
(. joinClause.SubJoin = subJoin; .)
]
"On"
JoinCondition<out condition>
(. SafeAdd(joinClause, joinClause.Conditions, condition); .)
{ {
"And" JoinCondition "And" JoinCondition<out condition>
(. SafeAdd(joinClause, joinClause.Conditions, condition); .)
} }
(.
joinClause.EndLocation = t.EndLocation;
.)
. .
CollectionRangeVariableDeclarationList<out List<QueryExpressionFromClause> fromClauses> CollectionRangeVariableDeclarationList<List<QueryExpressionClause> middleClauses>
(. (.
fromClauses = new List<QueryExpressionFromClause>();
QueryExpressionFromClause fromClause = null; QueryExpressionFromClause fromClause = null;
.) = .) =
CollectionRangeVariableDeclaration<out fromClause> CollectionRangeVariableDeclaration<out fromClause>
(. fromClauses.Add(fromClause); .) (. middleClauses.Add(fromClause); .)
{ "," CollectionRangeVariableDeclaration<out fromClause> (. fromClauses.Add(fromClause); .) } { "," CollectionRangeVariableDeclaration<out fromClause> (. middleClauses.Add(fromClause); .) }
. .
CollectionRangeVariableDeclaration<out QueryExpressionFromClause fromClause> CollectionRangeVariableDeclaration<out QueryExpressionFromClause fromClause>
(. (.
fromClause = new QueryExpressionFromClause(); fromClause = new QueryExpressionFromClause();
fromClause.StartLocation = la.Location;
TypeReference typeName = null; TypeReference typeName = null;
Expression inExpr = null; Expression inExpr = null;
.) = .) =
Identifier Identifier
[ "As" TypeName<out typeName> (. fromClause.Type = typeName; .) ] [ "As" TypeName<out typeName> (. fromClause.Type = typeName; .) ]
"In" Expr<out inExpr> "In" Expr<out inExpr>
(. fromClause.InExpression = inExpr; .) (.
fromClause.InExpression = inExpr;
fromClause.EndLocation = t.EndLocation;
.)
. .
JoinCondition JoinCondition<out QueryExpressionJoinConditionVB condition>
(. (.
condition = new QueryExpressionJoinConditionVB();
condition.StartLocation = la.Location;
Expression lhs = null; Expression lhs = null;
Expression rhs = null; Expression rhs = null;
.) = .) =
Expr<out lhs> "Equals" Expr<out rhs> Expr<out lhs> "Equals" Expr<out rhs>
(.
condition.LeftSide = lhs;
condition.RightSide = rhs;
condition.EndLocation = t.EndLocation;
.)
. .
MemberInitializer<out NamedArgumentExpression memberInitializer> MemberInitializer<out NamedArgumentExpression memberInitializer>

110
src/Libraries/NRefactory/Project/Src/Visitors/AbstractASTVisitor.cs

@ -400,6 +400,14 @@ namespace ICSharpCode.NRefactory.Visitors {
return null; return null;
} }
public virtual object VisitExpressionRangeVariable(ExpressionRangeVariable expressionRangeVariable, object data) {
Debug.Assert((expressionRangeVariable != null));
Debug.Assert((expressionRangeVariable.Expression != null));
Debug.Assert((expressionRangeVariable.Type != null));
expressionRangeVariable.Expression.AcceptVisitor(this, data);
return expressionRangeVariable.Type.AcceptVisitor(this, data);
}
public virtual object VisitExpressionStatement(ExpressionStatement expressionStatement, object data) { public virtual object VisitExpressionStatement(ExpressionStatement expressionStatement, object data) {
Debug.Assert((expressionStatement != null)); Debug.Assert((expressionStatement != null));
Debug.Assert((expressionStatement.Expression != null)); Debug.Assert((expressionStatement.Expression != null));
@ -841,6 +849,28 @@ namespace ICSharpCode.NRefactory.Visitors {
return queryExpression.IntoClause.AcceptVisitor(this, data); return queryExpression.IntoClause.AcceptVisitor(this, data);
} }
public virtual object VisitQueryExpressionAggregateClause(QueryExpressionAggregateClause queryExpressionAggregateClause, object data) {
Debug.Assert((queryExpressionAggregateClause != null));
Debug.Assert((queryExpressionAggregateClause.FromClause != null));
Debug.Assert((queryExpressionAggregateClause.MiddleClauses != null));
Debug.Assert((queryExpressionAggregateClause.IntoVariables != null));
queryExpressionAggregateClause.FromClause.AcceptVisitor(this, data);
foreach (QueryExpressionClause o in queryExpressionAggregateClause.MiddleClauses) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
foreach (ExpressionRangeVariable o in queryExpressionAggregateClause.IntoVariables) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
return null;
}
public virtual object VisitQueryExpressionDistinctClause(QueryExpressionDistinctClause queryExpressionDistinctClause, object data) {
Debug.Assert((queryExpressionDistinctClause != null));
return null;
}
public virtual object VisitQueryExpressionFromClause(QueryExpressionFromClause queryExpressionFromClause, object data) { public virtual object VisitQueryExpressionFromClause(QueryExpressionFromClause queryExpressionFromClause, object data) {
Debug.Assert((queryExpressionFromClause != null)); Debug.Assert((queryExpressionFromClause != null));
Debug.Assert((queryExpressionFromClause.Type != null)); Debug.Assert((queryExpressionFromClause.Type != null));
@ -857,6 +887,38 @@ namespace ICSharpCode.NRefactory.Visitors {
return queryExpressionGroupClause.GroupBy.AcceptVisitor(this, data); return queryExpressionGroupClause.GroupBy.AcceptVisitor(this, data);
} }
public virtual object VisitQueryExpressionGroupJoinVBClause(QueryExpressionGroupJoinVBClause queryExpressionGroupJoinVBClause, object data) {
Debug.Assert((queryExpressionGroupJoinVBClause != null));
Debug.Assert((queryExpressionGroupJoinVBClause.JoinClause != null));
Debug.Assert((queryExpressionGroupJoinVBClause.IntoVariables != null));
queryExpressionGroupJoinVBClause.JoinClause.AcceptVisitor(this, data);
foreach (ExpressionRangeVariable o in queryExpressionGroupJoinVBClause.IntoVariables) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
return null;
}
public virtual object VisitQueryExpressionGroupVBClause(QueryExpressionGroupVBClause queryExpressionGroupVBClause, object data) {
Debug.Assert((queryExpressionGroupVBClause != null));
Debug.Assert((queryExpressionGroupVBClause.GroupVariables != null));
Debug.Assert((queryExpressionGroupVBClause.ByVariables != null));
Debug.Assert((queryExpressionGroupVBClause.IntoVariables != null));
foreach (ExpressionRangeVariable o in queryExpressionGroupVBClause.GroupVariables) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
foreach (ExpressionRangeVariable o in queryExpressionGroupVBClause.ByVariables) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
foreach (ExpressionRangeVariable o in queryExpressionGroupVBClause.IntoVariables) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
return null;
}
public virtual object VisitQueryExpressionIntoClause(QueryExpressionIntoClause queryExpressionIntoClause, object data) { public virtual object VisitQueryExpressionIntoClause(QueryExpressionIntoClause queryExpressionIntoClause, object data) {
Debug.Assert((queryExpressionIntoClause != null)); Debug.Assert((queryExpressionIntoClause != null));
Debug.Assert((queryExpressionIntoClause.ContinuedQuery != null)); Debug.Assert((queryExpressionIntoClause.ContinuedQuery != null));
@ -875,12 +937,44 @@ namespace ICSharpCode.NRefactory.Visitors {
return queryExpressionJoinClause.EqualsExpression.AcceptVisitor(this, data); return queryExpressionJoinClause.EqualsExpression.AcceptVisitor(this, data);
} }
public virtual object VisitQueryExpressionJoinConditionVB(QueryExpressionJoinConditionVB queryExpressionJoinConditionVB, object data) {
Debug.Assert((queryExpressionJoinConditionVB != null));
Debug.Assert((queryExpressionJoinConditionVB.LeftSide != null));
Debug.Assert((queryExpressionJoinConditionVB.RightSide != null));
queryExpressionJoinConditionVB.LeftSide.AcceptVisitor(this, data);
return queryExpressionJoinConditionVB.RightSide.AcceptVisitor(this, data);
}
public virtual object VisitQueryExpressionJoinVBClause(QueryExpressionJoinVBClause queryExpressionJoinVBClause, object data) {
Debug.Assert((queryExpressionJoinVBClause != null));
Debug.Assert((queryExpressionJoinVBClause.JoinVariable != null));
Debug.Assert((queryExpressionJoinVBClause.SubJoin != null));
Debug.Assert((queryExpressionJoinVBClause.Conditions != null));
queryExpressionJoinVBClause.JoinVariable.AcceptVisitor(this, data);
queryExpressionJoinVBClause.SubJoin.AcceptVisitor(this, data);
foreach (QueryExpressionJoinConditionVB o in queryExpressionJoinVBClause.Conditions) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
return null;
}
public virtual object VisitQueryExpressionLetClause(QueryExpressionLetClause queryExpressionLetClause, object data) { public virtual object VisitQueryExpressionLetClause(QueryExpressionLetClause queryExpressionLetClause, object data) {
Debug.Assert((queryExpressionLetClause != null)); Debug.Assert((queryExpressionLetClause != null));
Debug.Assert((queryExpressionLetClause.Expression != null)); Debug.Assert((queryExpressionLetClause.Expression != null));
return queryExpressionLetClause.Expression.AcceptVisitor(this, data); return queryExpressionLetClause.Expression.AcceptVisitor(this, data);
} }
public virtual object VisitQueryExpressionLetVBClause(QueryExpressionLetVBClause queryExpressionLetVBClause, object data) {
Debug.Assert((queryExpressionLetVBClause != null));
Debug.Assert((queryExpressionLetVBClause.Variables != null));
foreach (ExpressionRangeVariable o in queryExpressionLetVBClause.Variables) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
return null;
}
public virtual object VisitQueryExpressionOrderClause(QueryExpressionOrderClause queryExpressionOrderClause, object data) { public virtual object VisitQueryExpressionOrderClause(QueryExpressionOrderClause queryExpressionOrderClause, object data) {
Debug.Assert((queryExpressionOrderClause != null)); Debug.Assert((queryExpressionOrderClause != null));
Debug.Assert((queryExpressionOrderClause.Orderings != null)); Debug.Assert((queryExpressionOrderClause.Orderings != null));
@ -897,12 +991,28 @@ namespace ICSharpCode.NRefactory.Visitors {
return queryExpressionOrdering.Criteria.AcceptVisitor(this, data); return queryExpressionOrdering.Criteria.AcceptVisitor(this, data);
} }
public virtual object VisitQueryExpressionPartitionVBClause(QueryExpressionPartitionVBClause queryExpressionPartitionVBClause, object data) {
Debug.Assert((queryExpressionPartitionVBClause != null));
Debug.Assert((queryExpressionPartitionVBClause.Expression != null));
return queryExpressionPartitionVBClause.Expression.AcceptVisitor(this, data);
}
public virtual object VisitQueryExpressionSelectClause(QueryExpressionSelectClause queryExpressionSelectClause, object data) { public virtual object VisitQueryExpressionSelectClause(QueryExpressionSelectClause queryExpressionSelectClause, object data) {
Debug.Assert((queryExpressionSelectClause != null)); Debug.Assert((queryExpressionSelectClause != null));
Debug.Assert((queryExpressionSelectClause.Projection != null)); Debug.Assert((queryExpressionSelectClause.Projection != null));
return queryExpressionSelectClause.Projection.AcceptVisitor(this, data); return queryExpressionSelectClause.Projection.AcceptVisitor(this, data);
} }
public virtual object VisitQueryExpressionSelectVBClause(QueryExpressionSelectVBClause queryExpressionSelectVBClause, object data) {
Debug.Assert((queryExpressionSelectVBClause != null));
Debug.Assert((queryExpressionSelectVBClause.Variables != null));
foreach (ExpressionRangeVariable o in queryExpressionSelectVBClause.Variables) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
return null;
}
public virtual object VisitQueryExpressionWhereClause(QueryExpressionWhereClause queryExpressionWhereClause, object data) { public virtual object VisitQueryExpressionWhereClause(QueryExpressionWhereClause queryExpressionWhereClause, object data) {
Debug.Assert((queryExpressionWhereClause != null)); Debug.Assert((queryExpressionWhereClause != null));
Debug.Assert((queryExpressionWhereClause.Condition != null)); Debug.Assert((queryExpressionWhereClause.Condition != null));

194
src/Libraries/NRefactory/Project/Src/Visitors/AbstractAstTransformer.cs

@ -723,6 +723,19 @@ namespace ICSharpCode.NRefactory.Visitors {
return null; return null;
} }
public virtual object VisitExpressionRangeVariable(ExpressionRangeVariable expressionRangeVariable, object data) {
Debug.Assert((expressionRangeVariable != null));
Debug.Assert((expressionRangeVariable.Expression != null));
Debug.Assert((expressionRangeVariable.Type != null));
nodeStack.Push(expressionRangeVariable.Expression);
expressionRangeVariable.Expression.AcceptVisitor(this, data);
expressionRangeVariable.Expression = ((Expression)(nodeStack.Pop()));
nodeStack.Push(expressionRangeVariable.Type);
expressionRangeVariable.Type.AcceptVisitor(this, data);
expressionRangeVariable.Type = ((TypeReference)(nodeStack.Pop()));
return null;
}
public virtual object VisitExpressionStatement(ExpressionStatement expressionStatement, object data) { public virtual object VisitExpressionStatement(ExpressionStatement expressionStatement, object data) {
Debug.Assert((expressionStatement != null)); Debug.Assert((expressionStatement != null));
Debug.Assert((expressionStatement.Expression != null)); Debug.Assert((expressionStatement.Expression != null));
@ -1553,6 +1566,44 @@ namespace ICSharpCode.NRefactory.Visitors {
return null; return null;
} }
public virtual object VisitQueryExpressionAggregateClause(QueryExpressionAggregateClause queryExpressionAggregateClause, object data) {
Debug.Assert((queryExpressionAggregateClause != null));
Debug.Assert((queryExpressionAggregateClause.FromClause != null));
Debug.Assert((queryExpressionAggregateClause.MiddleClauses != null));
Debug.Assert((queryExpressionAggregateClause.IntoVariables != null));
nodeStack.Push(queryExpressionAggregateClause.FromClause);
queryExpressionAggregateClause.FromClause.AcceptVisitor(this, data);
queryExpressionAggregateClause.FromClause = ((QueryExpressionFromClause)(nodeStack.Pop()));
for (int i = 0; i < queryExpressionAggregateClause.MiddleClauses.Count; i++) {
QueryExpressionClause o = queryExpressionAggregateClause.MiddleClauses[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (QueryExpressionClause)nodeStack.Pop();
if (o == null)
queryExpressionAggregateClause.MiddleClauses.RemoveAt(i--);
else
queryExpressionAggregateClause.MiddleClauses[i] = o;
}
for (int i = 0; i < queryExpressionAggregateClause.IntoVariables.Count; i++) {
ExpressionRangeVariable o = queryExpressionAggregateClause.IntoVariables[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (ExpressionRangeVariable)nodeStack.Pop();
if (o == null)
queryExpressionAggregateClause.IntoVariables.RemoveAt(i--);
else
queryExpressionAggregateClause.IntoVariables[i] = o;
}
return null;
}
public virtual object VisitQueryExpressionDistinctClause(QueryExpressionDistinctClause queryExpressionDistinctClause, object data) {
Debug.Assert((queryExpressionDistinctClause != null));
return null;
}
public virtual object VisitQueryExpressionFromClause(QueryExpressionFromClause queryExpressionFromClause, object data) { public virtual object VisitQueryExpressionFromClause(QueryExpressionFromClause queryExpressionFromClause, object data) {
Debug.Assert((queryExpressionFromClause != null)); Debug.Assert((queryExpressionFromClause != null));
Debug.Assert((queryExpressionFromClause.Type != null)); Debug.Assert((queryExpressionFromClause.Type != null));
@ -1579,6 +1630,68 @@ namespace ICSharpCode.NRefactory.Visitors {
return null; return null;
} }
public virtual object VisitQueryExpressionGroupJoinVBClause(QueryExpressionGroupJoinVBClause queryExpressionGroupJoinVBClause, object data) {
Debug.Assert((queryExpressionGroupJoinVBClause != null));
Debug.Assert((queryExpressionGroupJoinVBClause.JoinClause != null));
Debug.Assert((queryExpressionGroupJoinVBClause.IntoVariables != null));
nodeStack.Push(queryExpressionGroupJoinVBClause.JoinClause);
queryExpressionGroupJoinVBClause.JoinClause.AcceptVisitor(this, data);
queryExpressionGroupJoinVBClause.JoinClause = ((QueryExpressionJoinVBClause)(nodeStack.Pop()));
for (int i = 0; i < queryExpressionGroupJoinVBClause.IntoVariables.Count; i++) {
ExpressionRangeVariable o = queryExpressionGroupJoinVBClause.IntoVariables[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (ExpressionRangeVariable)nodeStack.Pop();
if (o == null)
queryExpressionGroupJoinVBClause.IntoVariables.RemoveAt(i--);
else
queryExpressionGroupJoinVBClause.IntoVariables[i] = o;
}
return null;
}
public virtual object VisitQueryExpressionGroupVBClause(QueryExpressionGroupVBClause queryExpressionGroupVBClause, object data) {
Debug.Assert((queryExpressionGroupVBClause != null));
Debug.Assert((queryExpressionGroupVBClause.GroupVariables != null));
Debug.Assert((queryExpressionGroupVBClause.ByVariables != null));
Debug.Assert((queryExpressionGroupVBClause.IntoVariables != null));
for (int i = 0; i < queryExpressionGroupVBClause.GroupVariables.Count; i++) {
ExpressionRangeVariable o = queryExpressionGroupVBClause.GroupVariables[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (ExpressionRangeVariable)nodeStack.Pop();
if (o == null)
queryExpressionGroupVBClause.GroupVariables.RemoveAt(i--);
else
queryExpressionGroupVBClause.GroupVariables[i] = o;
}
for (int i = 0; i < queryExpressionGroupVBClause.ByVariables.Count; i++) {
ExpressionRangeVariable o = queryExpressionGroupVBClause.ByVariables[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (ExpressionRangeVariable)nodeStack.Pop();
if (o == null)
queryExpressionGroupVBClause.ByVariables.RemoveAt(i--);
else
queryExpressionGroupVBClause.ByVariables[i] = o;
}
for (int i = 0; i < queryExpressionGroupVBClause.IntoVariables.Count; i++) {
ExpressionRangeVariable o = queryExpressionGroupVBClause.IntoVariables[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (ExpressionRangeVariable)nodeStack.Pop();
if (o == null)
queryExpressionGroupVBClause.IntoVariables.RemoveAt(i--);
else
queryExpressionGroupVBClause.IntoVariables[i] = o;
}
return null;
}
public virtual object VisitQueryExpressionIntoClause(QueryExpressionIntoClause queryExpressionIntoClause, object data) { public virtual object VisitQueryExpressionIntoClause(QueryExpressionIntoClause queryExpressionIntoClause, object data) {
Debug.Assert((queryExpressionIntoClause != null)); Debug.Assert((queryExpressionIntoClause != null));
Debug.Assert((queryExpressionIntoClause.ContinuedQuery != null)); Debug.Assert((queryExpressionIntoClause.ContinuedQuery != null));
@ -1609,6 +1722,44 @@ namespace ICSharpCode.NRefactory.Visitors {
return null; return null;
} }
public virtual object VisitQueryExpressionJoinConditionVB(QueryExpressionJoinConditionVB queryExpressionJoinConditionVB, object data) {
Debug.Assert((queryExpressionJoinConditionVB != null));
Debug.Assert((queryExpressionJoinConditionVB.LeftSide != null));
Debug.Assert((queryExpressionJoinConditionVB.RightSide != null));
nodeStack.Push(queryExpressionJoinConditionVB.LeftSide);
queryExpressionJoinConditionVB.LeftSide.AcceptVisitor(this, data);
queryExpressionJoinConditionVB.LeftSide = ((Expression)(nodeStack.Pop()));
nodeStack.Push(queryExpressionJoinConditionVB.RightSide);
queryExpressionJoinConditionVB.RightSide.AcceptVisitor(this, data);
queryExpressionJoinConditionVB.RightSide = ((Expression)(nodeStack.Pop()));
return null;
}
public virtual object VisitQueryExpressionJoinVBClause(QueryExpressionJoinVBClause queryExpressionJoinVBClause, object data) {
Debug.Assert((queryExpressionJoinVBClause != null));
Debug.Assert((queryExpressionJoinVBClause.JoinVariable != null));
Debug.Assert((queryExpressionJoinVBClause.SubJoin != null));
Debug.Assert((queryExpressionJoinVBClause.Conditions != null));
nodeStack.Push(queryExpressionJoinVBClause.JoinVariable);
queryExpressionJoinVBClause.JoinVariable.AcceptVisitor(this, data);
queryExpressionJoinVBClause.JoinVariable = ((QueryExpressionFromClause)(nodeStack.Pop()));
nodeStack.Push(queryExpressionJoinVBClause.SubJoin);
queryExpressionJoinVBClause.SubJoin.AcceptVisitor(this, data);
queryExpressionJoinVBClause.SubJoin = ((QueryExpressionJoinVBClause)(nodeStack.Pop()));
for (int i = 0; i < queryExpressionJoinVBClause.Conditions.Count; i++) {
QueryExpressionJoinConditionVB o = queryExpressionJoinVBClause.Conditions[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (QueryExpressionJoinConditionVB)nodeStack.Pop();
if (o == null)
queryExpressionJoinVBClause.Conditions.RemoveAt(i--);
else
queryExpressionJoinVBClause.Conditions[i] = o;
}
return null;
}
public virtual object VisitQueryExpressionLetClause(QueryExpressionLetClause queryExpressionLetClause, object data) { public virtual object VisitQueryExpressionLetClause(QueryExpressionLetClause queryExpressionLetClause, object data) {
Debug.Assert((queryExpressionLetClause != null)); Debug.Assert((queryExpressionLetClause != null));
Debug.Assert((queryExpressionLetClause.Expression != null)); Debug.Assert((queryExpressionLetClause.Expression != null));
@ -1618,6 +1769,23 @@ namespace ICSharpCode.NRefactory.Visitors {
return null; return null;
} }
public virtual object VisitQueryExpressionLetVBClause(QueryExpressionLetVBClause queryExpressionLetVBClause, object data) {
Debug.Assert((queryExpressionLetVBClause != null));
Debug.Assert((queryExpressionLetVBClause.Variables != null));
for (int i = 0; i < queryExpressionLetVBClause.Variables.Count; i++) {
ExpressionRangeVariable o = queryExpressionLetVBClause.Variables[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (ExpressionRangeVariable)nodeStack.Pop();
if (o == null)
queryExpressionLetVBClause.Variables.RemoveAt(i--);
else
queryExpressionLetVBClause.Variables[i] = o;
}
return null;
}
public virtual object VisitQueryExpressionOrderClause(QueryExpressionOrderClause queryExpressionOrderClause, object data) { public virtual object VisitQueryExpressionOrderClause(QueryExpressionOrderClause queryExpressionOrderClause, object data) {
Debug.Assert((queryExpressionOrderClause != null)); Debug.Assert((queryExpressionOrderClause != null));
Debug.Assert((queryExpressionOrderClause.Orderings != null)); Debug.Assert((queryExpressionOrderClause.Orderings != null));
@ -1644,6 +1812,15 @@ namespace ICSharpCode.NRefactory.Visitors {
return null; return null;
} }
public virtual object VisitQueryExpressionPartitionVBClause(QueryExpressionPartitionVBClause queryExpressionPartitionVBClause, object data) {
Debug.Assert((queryExpressionPartitionVBClause != null));
Debug.Assert((queryExpressionPartitionVBClause.Expression != null));
nodeStack.Push(queryExpressionPartitionVBClause.Expression);
queryExpressionPartitionVBClause.Expression.AcceptVisitor(this, data);
queryExpressionPartitionVBClause.Expression = ((Expression)(nodeStack.Pop()));
return null;
}
public virtual object VisitQueryExpressionSelectClause(QueryExpressionSelectClause queryExpressionSelectClause, object data) { public virtual object VisitQueryExpressionSelectClause(QueryExpressionSelectClause queryExpressionSelectClause, object data) {
Debug.Assert((queryExpressionSelectClause != null)); Debug.Assert((queryExpressionSelectClause != null));
Debug.Assert((queryExpressionSelectClause.Projection != null)); Debug.Assert((queryExpressionSelectClause.Projection != null));
@ -1653,6 +1830,23 @@ namespace ICSharpCode.NRefactory.Visitors {
return null; return null;
} }
public virtual object VisitQueryExpressionSelectVBClause(QueryExpressionSelectVBClause queryExpressionSelectVBClause, object data) {
Debug.Assert((queryExpressionSelectVBClause != null));
Debug.Assert((queryExpressionSelectVBClause.Variables != null));
for (int i = 0; i < queryExpressionSelectVBClause.Variables.Count; i++) {
ExpressionRangeVariable o = queryExpressionSelectVBClause.Variables[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (ExpressionRangeVariable)nodeStack.Pop();
if (o == null)
queryExpressionSelectVBClause.Variables.RemoveAt(i--);
else
queryExpressionSelectVBClause.Variables[i] = o;
}
return null;
}
public virtual object VisitQueryExpressionWhereClause(QueryExpressionWhereClause queryExpressionWhereClause, object data) { public virtual object VisitQueryExpressionWhereClause(QueryExpressionWhereClause queryExpressionWhereClause, object data) {
Debug.Assert((queryExpressionWhereClause != null)); Debug.Assert((queryExpressionWhereClause != null));
Debug.Assert((queryExpressionWhereClause.Condition != null)); Debug.Assert((queryExpressionWhereClause.Condition != null));

110
src/Libraries/NRefactory/Project/Src/Visitors/NodeTrackingAstVisitor.cs

@ -304,6 +304,13 @@ namespace ICSharpCode.NRefactory.Visitors {
return result; return result;
} }
public sealed override object VisitExpressionRangeVariable(ExpressionRangeVariable expressionRangeVariable, object data) {
this.BeginVisit(expressionRangeVariable);
object result = this.TrackedVisitExpressionRangeVariable(expressionRangeVariable, data);
this.EndVisit(expressionRangeVariable);
return result;
}
public sealed override object VisitExpressionStatement(ExpressionStatement expressionStatement, object data) { public sealed override object VisitExpressionStatement(ExpressionStatement expressionStatement, object data) {
this.BeginVisit(expressionStatement); this.BeginVisit(expressionStatement);
object result = this.TrackedVisitExpressionStatement(expressionStatement, data); object result = this.TrackedVisitExpressionStatement(expressionStatement, data);
@ -549,6 +556,20 @@ namespace ICSharpCode.NRefactory.Visitors {
return result; return result;
} }
public sealed override object VisitQueryExpressionAggregateClause(QueryExpressionAggregateClause queryExpressionAggregateClause, object data) {
this.BeginVisit(queryExpressionAggregateClause);
object result = this.TrackedVisitQueryExpressionAggregateClause(queryExpressionAggregateClause, data);
this.EndVisit(queryExpressionAggregateClause);
return result;
}
public sealed override object VisitQueryExpressionDistinctClause(QueryExpressionDistinctClause queryExpressionDistinctClause, object data) {
this.BeginVisit(queryExpressionDistinctClause);
object result = this.TrackedVisitQueryExpressionDistinctClause(queryExpressionDistinctClause, data);
this.EndVisit(queryExpressionDistinctClause);
return result;
}
public sealed override object VisitQueryExpressionFromClause(QueryExpressionFromClause queryExpressionFromClause, object data) { public sealed override object VisitQueryExpressionFromClause(QueryExpressionFromClause queryExpressionFromClause, object data) {
this.BeginVisit(queryExpressionFromClause); this.BeginVisit(queryExpressionFromClause);
object result = this.TrackedVisitQueryExpressionFromClause(queryExpressionFromClause, data); object result = this.TrackedVisitQueryExpressionFromClause(queryExpressionFromClause, data);
@ -563,6 +584,20 @@ namespace ICSharpCode.NRefactory.Visitors {
return result; return result;
} }
public sealed override object VisitQueryExpressionGroupJoinVBClause(QueryExpressionGroupJoinVBClause queryExpressionGroupJoinVBClause, object data) {
this.BeginVisit(queryExpressionGroupJoinVBClause);
object result = this.TrackedVisitQueryExpressionGroupJoinVBClause(queryExpressionGroupJoinVBClause, data);
this.EndVisit(queryExpressionGroupJoinVBClause);
return result;
}
public sealed override object VisitQueryExpressionGroupVBClause(QueryExpressionGroupVBClause queryExpressionGroupVBClause, object data) {
this.BeginVisit(queryExpressionGroupVBClause);
object result = this.TrackedVisitQueryExpressionGroupVBClause(queryExpressionGroupVBClause, data);
this.EndVisit(queryExpressionGroupVBClause);
return result;
}
public sealed override object VisitQueryExpressionIntoClause(QueryExpressionIntoClause queryExpressionIntoClause, object data) { public sealed override object VisitQueryExpressionIntoClause(QueryExpressionIntoClause queryExpressionIntoClause, object data) {
this.BeginVisit(queryExpressionIntoClause); this.BeginVisit(queryExpressionIntoClause);
object result = this.TrackedVisitQueryExpressionIntoClause(queryExpressionIntoClause, data); object result = this.TrackedVisitQueryExpressionIntoClause(queryExpressionIntoClause, data);
@ -577,6 +612,20 @@ namespace ICSharpCode.NRefactory.Visitors {
return result; return result;
} }
public sealed override object VisitQueryExpressionJoinConditionVB(QueryExpressionJoinConditionVB queryExpressionJoinConditionVB, object data) {
this.BeginVisit(queryExpressionJoinConditionVB);
object result = this.TrackedVisitQueryExpressionJoinConditionVB(queryExpressionJoinConditionVB, data);
this.EndVisit(queryExpressionJoinConditionVB);
return result;
}
public sealed override object VisitQueryExpressionJoinVBClause(QueryExpressionJoinVBClause queryExpressionJoinVBClause, object data) {
this.BeginVisit(queryExpressionJoinVBClause);
object result = this.TrackedVisitQueryExpressionJoinVBClause(queryExpressionJoinVBClause, data);
this.EndVisit(queryExpressionJoinVBClause);
return result;
}
public sealed override object VisitQueryExpressionLetClause(QueryExpressionLetClause queryExpressionLetClause, object data) { public sealed override object VisitQueryExpressionLetClause(QueryExpressionLetClause queryExpressionLetClause, object data) {
this.BeginVisit(queryExpressionLetClause); this.BeginVisit(queryExpressionLetClause);
object result = this.TrackedVisitQueryExpressionLetClause(queryExpressionLetClause, data); object result = this.TrackedVisitQueryExpressionLetClause(queryExpressionLetClause, data);
@ -584,6 +633,13 @@ namespace ICSharpCode.NRefactory.Visitors {
return result; return result;
} }
public sealed override object VisitQueryExpressionLetVBClause(QueryExpressionLetVBClause queryExpressionLetVBClause, object data) {
this.BeginVisit(queryExpressionLetVBClause);
object result = this.TrackedVisitQueryExpressionLetVBClause(queryExpressionLetVBClause, data);
this.EndVisit(queryExpressionLetVBClause);
return result;
}
public sealed override object VisitQueryExpressionOrderClause(QueryExpressionOrderClause queryExpressionOrderClause, object data) { public sealed override object VisitQueryExpressionOrderClause(QueryExpressionOrderClause queryExpressionOrderClause, object data) {
this.BeginVisit(queryExpressionOrderClause); this.BeginVisit(queryExpressionOrderClause);
object result = this.TrackedVisitQueryExpressionOrderClause(queryExpressionOrderClause, data); object result = this.TrackedVisitQueryExpressionOrderClause(queryExpressionOrderClause, data);
@ -598,6 +654,13 @@ namespace ICSharpCode.NRefactory.Visitors {
return result; return result;
} }
public sealed override object VisitQueryExpressionPartitionVBClause(QueryExpressionPartitionVBClause queryExpressionPartitionVBClause, object data) {
this.BeginVisit(queryExpressionPartitionVBClause);
object result = this.TrackedVisitQueryExpressionPartitionVBClause(queryExpressionPartitionVBClause, data);
this.EndVisit(queryExpressionPartitionVBClause);
return result;
}
public sealed override object VisitQueryExpressionSelectClause(QueryExpressionSelectClause queryExpressionSelectClause, object data) { public sealed override object VisitQueryExpressionSelectClause(QueryExpressionSelectClause queryExpressionSelectClause, object data) {
this.BeginVisit(queryExpressionSelectClause); this.BeginVisit(queryExpressionSelectClause);
object result = this.TrackedVisitQueryExpressionSelectClause(queryExpressionSelectClause, data); object result = this.TrackedVisitQueryExpressionSelectClause(queryExpressionSelectClause, data);
@ -605,6 +668,13 @@ namespace ICSharpCode.NRefactory.Visitors {
return result; return result;
} }
public sealed override object VisitQueryExpressionSelectVBClause(QueryExpressionSelectVBClause queryExpressionSelectVBClause, object data) {
this.BeginVisit(queryExpressionSelectVBClause);
object result = this.TrackedVisitQueryExpressionSelectVBClause(queryExpressionSelectVBClause, data);
this.EndVisit(queryExpressionSelectVBClause);
return result;
}
public sealed override object VisitQueryExpressionWhereClause(QueryExpressionWhereClause queryExpressionWhereClause, object data) { public sealed override object VisitQueryExpressionWhereClause(QueryExpressionWhereClause queryExpressionWhereClause, object data) {
this.BeginVisit(queryExpressionWhereClause); this.BeginVisit(queryExpressionWhereClause);
object result = this.TrackedVisitQueryExpressionWhereClause(queryExpressionWhereClause, data); object result = this.TrackedVisitQueryExpressionWhereClause(queryExpressionWhereClause, data);
@ -971,6 +1041,10 @@ namespace ICSharpCode.NRefactory.Visitors {
return base.VisitExitStatement(exitStatement, data); return base.VisitExitStatement(exitStatement, data);
} }
public virtual object TrackedVisitExpressionRangeVariable(ExpressionRangeVariable expressionRangeVariable, object data) {
return base.VisitExpressionRangeVariable(expressionRangeVariable, data);
}
public virtual object TrackedVisitExpressionStatement(ExpressionStatement expressionStatement, object data) { public virtual object TrackedVisitExpressionStatement(ExpressionStatement expressionStatement, object data) {
return base.VisitExpressionStatement(expressionStatement, data); return base.VisitExpressionStatement(expressionStatement, data);
} }
@ -1111,6 +1185,14 @@ namespace ICSharpCode.NRefactory.Visitors {
return base.VisitQueryExpression(queryExpression, data); return base.VisitQueryExpression(queryExpression, data);
} }
public virtual object TrackedVisitQueryExpressionAggregateClause(QueryExpressionAggregateClause queryExpressionAggregateClause, object data) {
return base.VisitQueryExpressionAggregateClause(queryExpressionAggregateClause, data);
}
public virtual object TrackedVisitQueryExpressionDistinctClause(QueryExpressionDistinctClause queryExpressionDistinctClause, object data) {
return base.VisitQueryExpressionDistinctClause(queryExpressionDistinctClause, data);
}
public virtual object TrackedVisitQueryExpressionFromClause(QueryExpressionFromClause queryExpressionFromClause, object data) { public virtual object TrackedVisitQueryExpressionFromClause(QueryExpressionFromClause queryExpressionFromClause, object data) {
return base.VisitQueryExpressionFromClause(queryExpressionFromClause, data); return base.VisitQueryExpressionFromClause(queryExpressionFromClause, data);
} }
@ -1119,6 +1201,14 @@ namespace ICSharpCode.NRefactory.Visitors {
return base.VisitQueryExpressionGroupClause(queryExpressionGroupClause, data); return base.VisitQueryExpressionGroupClause(queryExpressionGroupClause, data);
} }
public virtual object TrackedVisitQueryExpressionGroupJoinVBClause(QueryExpressionGroupJoinVBClause queryExpressionGroupJoinVBClause, object data) {
return base.VisitQueryExpressionGroupJoinVBClause(queryExpressionGroupJoinVBClause, data);
}
public virtual object TrackedVisitQueryExpressionGroupVBClause(QueryExpressionGroupVBClause queryExpressionGroupVBClause, object data) {
return base.VisitQueryExpressionGroupVBClause(queryExpressionGroupVBClause, data);
}
public virtual object TrackedVisitQueryExpressionIntoClause(QueryExpressionIntoClause queryExpressionIntoClause, object data) { public virtual object TrackedVisitQueryExpressionIntoClause(QueryExpressionIntoClause queryExpressionIntoClause, object data) {
return base.VisitQueryExpressionIntoClause(queryExpressionIntoClause, data); return base.VisitQueryExpressionIntoClause(queryExpressionIntoClause, data);
} }
@ -1127,10 +1217,22 @@ namespace ICSharpCode.NRefactory.Visitors {
return base.VisitQueryExpressionJoinClause(queryExpressionJoinClause, data); return base.VisitQueryExpressionJoinClause(queryExpressionJoinClause, data);
} }
public virtual object TrackedVisitQueryExpressionJoinConditionVB(QueryExpressionJoinConditionVB queryExpressionJoinConditionVB, object data) {
return base.VisitQueryExpressionJoinConditionVB(queryExpressionJoinConditionVB, data);
}
public virtual object TrackedVisitQueryExpressionJoinVBClause(QueryExpressionJoinVBClause queryExpressionJoinVBClause, object data) {
return base.VisitQueryExpressionJoinVBClause(queryExpressionJoinVBClause, data);
}
public virtual object TrackedVisitQueryExpressionLetClause(QueryExpressionLetClause queryExpressionLetClause, object data) { public virtual object TrackedVisitQueryExpressionLetClause(QueryExpressionLetClause queryExpressionLetClause, object data) {
return base.VisitQueryExpressionLetClause(queryExpressionLetClause, data); return base.VisitQueryExpressionLetClause(queryExpressionLetClause, data);
} }
public virtual object TrackedVisitQueryExpressionLetVBClause(QueryExpressionLetVBClause queryExpressionLetVBClause, object data) {
return base.VisitQueryExpressionLetVBClause(queryExpressionLetVBClause, data);
}
public virtual object TrackedVisitQueryExpressionOrderClause(QueryExpressionOrderClause queryExpressionOrderClause, object data) { public virtual object TrackedVisitQueryExpressionOrderClause(QueryExpressionOrderClause queryExpressionOrderClause, object data) {
return base.VisitQueryExpressionOrderClause(queryExpressionOrderClause, data); return base.VisitQueryExpressionOrderClause(queryExpressionOrderClause, data);
} }
@ -1139,10 +1241,18 @@ namespace ICSharpCode.NRefactory.Visitors {
return base.VisitQueryExpressionOrdering(queryExpressionOrdering, data); return base.VisitQueryExpressionOrdering(queryExpressionOrdering, data);
} }
public virtual object TrackedVisitQueryExpressionPartitionVBClause(QueryExpressionPartitionVBClause queryExpressionPartitionVBClause, object data) {
return base.VisitQueryExpressionPartitionVBClause(queryExpressionPartitionVBClause, data);
}
public virtual object TrackedVisitQueryExpressionSelectClause(QueryExpressionSelectClause queryExpressionSelectClause, object data) { public virtual object TrackedVisitQueryExpressionSelectClause(QueryExpressionSelectClause queryExpressionSelectClause, object data) {
return base.VisitQueryExpressionSelectClause(queryExpressionSelectClause, data); return base.VisitQueryExpressionSelectClause(queryExpressionSelectClause, data);
} }
public virtual object TrackedVisitQueryExpressionSelectVBClause(QueryExpressionSelectVBClause queryExpressionSelectVBClause, object data) {
return base.VisitQueryExpressionSelectVBClause(queryExpressionSelectVBClause, data);
}
public virtual object TrackedVisitQueryExpressionWhereClause(QueryExpressionWhereClause queryExpressionWhereClause, object data) { public virtual object TrackedVisitQueryExpressionWhereClause(QueryExpressionWhereClause queryExpressionWhereClause, object data) {
return base.VisitQueryExpressionWhereClause(queryExpressionWhereClause, data); return base.VisitQueryExpressionWhereClause(queryExpressionWhereClause, data);
} }

3
src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/NRefactoryResolver/NRefactoryResolver.cs

@ -205,6 +205,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
} else if ("global".Equals(expression, StringComparison.InvariantCultureIgnoreCase)) { } else if ("global".Equals(expression, StringComparison.InvariantCultureIgnoreCase)) {
return new NamespaceResolveResult(null, null, ""); return new NamespaceResolveResult(null, null, "");
} }
// array
} else if (language == NR.SupportedLanguage.CSharp && expressionResult.Context.IsTypeContext && !expressionResult.Context.IsObjectCreation) { } else if (language == NR.SupportedLanguage.CSharp && expressionResult.Context.IsTypeContext && !expressionResult.Context.IsObjectCreation) {
expr = ParseTypeReference(expression); expr = ParseTypeReference(expression);
} }
@ -213,6 +214,8 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver
if (expr == null) { if (expr == null) {
return null; return null;
} }
// "new" is missing
if (expressionResult.Context.IsObjectCreation && !(expr is ObjectCreateExpression)) { if (expressionResult.Context.IsObjectCreation && !(expr is ObjectCreateExpression)) {
Expression tmp = expr; Expression tmp = expr;
while (tmp != null) { while (tmp != null) {

Loading…
Cancel
Save