Browse Source

NRefactory.VB: removed C# specific Dom classes

newNRvisualizers
Siegfried Pammer 15 years ago
parent
commit
8a419bac43
  1. 16
      NRefactory.sln
  2. 58
      VB/NRefactoryASTGenerator/AST/Expressions.cs
  3. 51
      VB/NRefactoryASTGenerator/AST/Statements.cs
  4. 8
      VB/NRefactoryASTGenerator/AST/TypeLevel.cs
  5. 1
      VB/NRefactoryASTGenerator/KeywordGenerator.cs
  6. 704
      VB/Project/Dom/Generated.cs
  7. 34
      VB/Project/IAstVisitor.cs
  8. 2
      VB/Project/Lexer/Token.cs
  9. 2768
      VB/Project/Parser/Parser.cs
  10. 8
      VB/Project/Parser/gen.bat
  11. 2
      VB/Project/Parser/vbnet.atg
  12. 210
      VB/Project/PrettyPrinter/VBNet/VBNetOutputVisitor.cs
  13. 146
      VB/Project/Visitors/AbstractASTVisitor.cs
  14. 243
      VB/Project/Visitors/AbstractAstTransformer.cs
  15. 160
      VB/Project/Visitors/CodeDOMOutputVisitor.cs
  16. 39
      VB/Project/Visitors/LookupTableVisitor.cs
  17. 187
      VB/Project/Visitors/NodeTrackingAstVisitor.cs
  18. 68
      VB/Project/Visitors/NotImplementedAstVisitor.cs
  19. 17
      VB/Test/ICSharpCode.NRefactory.VB.Tests.csproj
  20. 1
      VB/Test/Lexer/LexerTests.cs
  21. 4
      VB/Test/Parser/Expressions/AddressOfExpressionTests.cs
  22. 7
      VB/Test/Parser/Expressions/ArrayCreateExpressionTests.cs
  23. 36
      VB/Test/Parser/Expressions/AssignmentExpressionTests.cs
  24. 19
      VB/Test/Parser/Expressions/CheckedExpressionTests.cs
  25. 19
      VB/Test/Parser/Expressions/IndexerExpressionTests.cs
  26. 19
      VB/Test/Parser/Expressions/PointerReferenceExpressionTests.cs
  27. 617
      VB/Test/Parser/Expressions/QueryExpressionTests.cs
  28. 633
      VB/Test/Parser/Expressions/QueryExpressionVBTests.cs
  29. 19
      VB/Test/Parser/Expressions/SizeOfExpressionTests.cs
  30. 19
      VB/Test/Parser/Expressions/StackAllocExpressionTests.cs
  31. 19
      VB/Test/Parser/Expressions/UncheckedExpressionTests.cs
  32. 4
      VB/Test/Parser/Statements/BlockStatementTests.cs
  33. 20
      VB/Test/Parser/Statements/BreakStatementTests.cs
  34. 19
      VB/Test/Parser/Statements/CheckedStatementTests.cs
  35. 4
      VB/Test/Parser/Statements/ContinueStatementTests.cs
  36. 19
      VB/Test/Parser/Statements/EmptyStatementTests.cs
  37. 4
      VB/Test/Parser/Statements/ExpressionStatementTests.cs
  38. 19
      VB/Test/Parser/Statements/FixedStatementTests.cs
  39. 19
      VB/Test/Parser/Statements/ForStatementTests.cs
  40. 19
      VB/Test/Parser/Statements/GotoCaseStatementTests.cs
  41. 19
      VB/Test/Parser/Statements/UncheckedStatementTests.cs
  42. 19
      VB/Test/Parser/Statements/UnsafeStatementTests.cs
  43. 17
      VB/Test/Parser/TypeLevel/DestructorDeclarationTests.cs
  44. 17
      VB/Test/Parser/TypeLevel/IndexerDeclarationTests.cs

16
NRefactory.sln

@ -8,19 +8,19 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution @@ -8,19 +8,19 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
doc\TODO = doc\TODO
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.NRefactory", "ICSharpCode.NRefactory\ICSharpCode.NRefactory.csproj", "{3B2A5653-EC97-4001-BB9B-D90F1AF2C371}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.NRefactory.Tests", "ICSharpCode.NRefactory.Tests\ICSharpCode.NRefactory.Tests.csproj", "{63D3B27A-D966-4902-90B3-30290E1692F1}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "VB", "VB", "{61F5C042-086B-45DD-999E-01B1A78A4619}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryASTGenerator", "VB\NRefactoryASTGenerator\NRefactoryASTGenerator.csproj", "{B22522AA-B5BF-4A58-AC6D-D4B45805521F}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.NRefactory.VB.Tests", "VB\Test\ICSharpCode.NRefactory.VB.Tests.csproj", "{870115DD-960A-4406-A6B9-600BCDC36A03}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.NRefactory.VB", "VB\Project\ICSharpCode.NRefactory.VB.csproj", "{7B82B671-419F-45F4-B778-D9286F996EFA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.NRefactory.VB.Tests", "VB\Test\ICSharpCode.NRefactory.VB.Tests.csproj", "{870115DD-960A-4406-A6B9-600BCDC36A03}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactoryASTGenerator", "VB\NRefactoryASTGenerator\NRefactoryASTGenerator.csproj", "{B22522AA-B5BF-4A58-AC6D-D4B45805521F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.NRefactory", "ICSharpCode.NRefactory\ICSharpCode.NRefactory.csproj", "{3B2A5653-EC97-4001-BB9B-D90F1AF2C371}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.NRefactory.Tests", "ICSharpCode.NRefactory.Tests\ICSharpCode.NRefactory.Tests.csproj", "{63D3B27A-D966-4902-90B3-30290E1692F1}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -64,8 +64,8 @@ Global @@ -64,8 +64,8 @@ Global
{870115DD-960A-4406-A6B9-600BCDC36A03}.Release|x86.ActiveCfg = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{870115DD-960A-4406-A6B9-600BCDC36A03} = {61F5C042-086B-45DD-999E-01B1A78A4619}
{7B82B671-419F-45F4-B778-D9286F996EFA} = {61F5C042-086B-45DD-999E-01B1A78A4619}
{B22522AA-B5BF-4A58-AC6D-D4B45805521F} = {61F5C042-086B-45DD-999E-01B1A78A4619}
{7B82B671-419F-45F4-B778-D9286F996EFA} = {61F5C042-086B-45DD-999E-01B1A78A4619}
{870115DD-960A-4406-A6B9-600BCDC36A03} = {61F5C042-086B-45DD-999E-01B1A78A4619}
EndGlobalSection
EndGlobal

58
VB/NRefactoryASTGenerator/AST/Expressions.cs

@ -118,14 +118,6 @@ namespace NRefactoryASTGenerator.Ast @@ -118,14 +118,6 @@ namespace NRefactoryASTGenerator.Ast
public MemberReferenceExpression(Expression targetObject, string memberName) {}
}
class PointerReferenceExpression : Expression {
Expression targetObject;
string memberName;
List<TypeReference> typeArguments;
public PointerReferenceExpression(Expression targetObject, string memberName) {}
}
class IdentifierExpression : Expression {
string identifier;
List<TypeReference> typeArguments;
@ -185,12 +177,6 @@ namespace NRefactoryASTGenerator.Ast @@ -185,12 +177,6 @@ namespace NRefactoryASTGenerator.Ast
TypeReference returnType;
}
class CheckedExpression : Expression {
Expression expression;
public CheckedExpression(Expression expression) {}
}
class ConditionalExpression : Expression {
Expression condition;
Expression trueExpression;
@ -215,32 +201,6 @@ namespace NRefactoryASTGenerator.Ast @@ -215,32 +201,6 @@ namespace NRefactoryASTGenerator.Ast
public DirectionExpression(FieldDirection fieldDirection, Expression expression) {}
}
class IndexerExpression : Expression {
Expression targetObject;
List<Expression> indexes;
public IndexerExpression(Expression targetObject, List<Expression> indexes) {}
}
class SizeOfExpression : Expression {
TypeReference typeReference;
public SizeOfExpression(TypeReference typeReference) {}
}
class StackAllocExpression : Expression {
TypeReference typeReference;
Expression expression;
public StackAllocExpression(TypeReference typeReference, Expression expression) {}
}
class UncheckedExpression : Expression {
Expression expression;
public UncheckedExpression(Expression expression) {}
}
class AddressOfExpression : Expression {
Expression expression;
@ -256,25 +216,7 @@ namespace NRefactoryASTGenerator.Ast @@ -256,25 +216,7 @@ namespace NRefactoryASTGenerator.Ast
public TypeOfIsExpression(Expression expression, TypeReference typeReference) {}
}
[ImplementNullable(NullableImplementation.Shadow)]
class QueryExpression : Expression {
/// <remarks>
/// Either from or aggregate clause.
/// </remarks>
QueryExpressionFromClause fromClause;
bool isQueryContinuation;
List<QueryExpressionClause> middleClauses;
/// <remarks>
/// C# only.
/// </remarks>
QueryExpressionClause selectOrGroupClause;
}
class QueryExpressionVB : Expression {
List<QueryExpressionClause> clauses;
}

51
VB/NRefactoryASTGenerator/AST/Statements.cs

@ -17,8 +17,6 @@ namespace NRefactoryASTGenerator.Ast @@ -17,8 +17,6 @@ namespace NRefactoryASTGenerator.Ast
[CustomImplementation, HasChildren]
class BlockStatement : Statement {}
class BreakStatement : Statement {}
enum ContinueType {}
class ContinueStatement : Statement {
@ -49,14 +47,6 @@ namespace NRefactoryASTGenerator.Ast @@ -49,14 +47,6 @@ namespace NRefactoryASTGenerator.Ast
public ForeachStatement(TypeReference typeReference, string variableName, Expression expression, Statement embeddedStatement, Expression nextExpression) {}
}
class ForStatement : StatementWithEmbeddedStatement {
List<Statement> initializers;
Expression condition;
List<Statement> iterator;
public ForStatement(List<Statement> initializers, Expression condition, List<Statement> iterator, Statement embeddedStatement) {}
}
class GotoStatement : Statement {
string label;
@ -178,53 +168,12 @@ namespace NRefactoryASTGenerator.Ast @@ -178,53 +168,12 @@ namespace NRefactoryASTGenerator.Ast
public CatchClause(Statement statementBlock) {}
}
class CheckedStatement : Statement {
Statement block;
public CheckedStatement(Statement block) {}
}
class EmptyStatement : Statement {}
class FixedStatement : StatementWithEmbeddedStatement {
Statement pointerDeclaration;
public FixedStatement(Statement pointerDeclaration, Statement embeddedStatement) {}
}
[IncludeBoolProperty("IsDefaultCase", "return expression.IsNull;")]
class GotoCaseStatement : Statement {
Expression expression;
public GotoCaseStatement(Expression expression) {}
}
class UncheckedStatement : Statement {
Statement block;
public UncheckedStatement(Statement block) {}
}
class UnsafeStatement : Statement {
Statement block;
public UnsafeStatement(Statement block) {}
}
class UsingStatement : StatementWithEmbeddedStatement {
Statement resourceAcquisition;
public UsingStatement(Statement resourceAcquisition, Statement embeddedStatement) {}
}
[IncludeBoolProperty("IsYieldReturn", "return statement is ReturnStatement;")]
[IncludeBoolProperty("IsYieldBreak", "return statement is BreakStatement;")]
class YieldStatement : Statement {
Statement statement;
public YieldStatement(Statement statement) {}
}
class AddHandlerStatement : Statement {
Expression eventExpression;
Expression handlerExpression;

8
VB/NRefactoryASTGenerator/AST/TypeLevel.cs

@ -211,14 +211,6 @@ namespace NRefactoryASTGenerator.Ast @@ -211,14 +211,6 @@ namespace NRefactoryASTGenerator.Ast
public PropertySetRegion(BlockStatement block, List<AttributeSection> attributes) : base(block, attributes) {}
}
class DestructorDeclaration : AttributedNode
{
string name;
BlockStatement body;
public DestructorDeclaration(string name, Modifiers modifier, List<AttributeSection> attributes) : base(modifier, attributes) {}
}
enum CharsetModifier { None }
class DeclareDeclaration : ParametrizedNode

1
VB/NRefactoryASTGenerator/KeywordGenerator.cs

@ -97,6 +97,7 @@ namespace NRefactoryASTGenerator @@ -97,6 +97,7 @@ namespace NRefactoryASTGenerator
writer.WriteLine("using System;");
writer.WriteLine("using System.IO;");
writer.WriteLine("using NUnit.Framework;");
writer.WriteLine("using ICSharpCode.NRefactory.VB;");
writer.WriteLine("using ICSharpCode.NRefactory.VB.Parser;");
writer.WriteLine("using ICSharpCode.NRefactory.VB.PrettyPrinter;");
writer.WriteLine();

704
VB/Project/Dom/Generated.cs

@ -455,20 +455,6 @@ namespace ICSharpCode.NRefactory.VB.Dom { @@ -455,20 +455,6 @@ namespace ICSharpCode.NRefactory.VB.Dom {
}
}
public class BreakStatement : Statement {
public BreakStatement() {
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitBreakStatement(this, data);
}
public override string ToString() {
return "[BreakStatement]";
}
}
public class CaseLabel : AbstractNode {
Expression label;
@ -679,60 +665,6 @@ namespace ICSharpCode.NRefactory.VB.Dom { @@ -679,60 +665,6 @@ namespace ICSharpCode.NRefactory.VB.Dom {
}
}
public class CheckedExpression : Expression {
Expression expression;
public Expression Expression {
get {
return expression;
}
set {
expression = value ?? Expression.Null;
if (!expression.IsNull) expression.Parent = this;
}
}
public CheckedExpression(Expression expression) {
Expression = expression;
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitCheckedExpression(this, data);
}
public override string ToString() {
return string.Format("[CheckedExpression Expression={0}]", Expression);
}
}
public class CheckedStatement : Statement {
Statement block;
public Statement Block {
get {
return block;
}
set {
block = value ?? Statement.Null;
if (!block.IsNull) block.Parent = this;
}
}
public CheckedStatement(Statement block) {
Block = block;
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitCheckedStatement(this, data);
}
public override string ToString() {
return string.Format("[CheckedStatement Block={0}]", Block);
}
}
public class ClassReferenceExpression : Expression {
public ClassReferenceExpression() {
@ -1256,47 +1188,6 @@ namespace ICSharpCode.NRefactory.VB.Dom { @@ -1256,47 +1188,6 @@ namespace ICSharpCode.NRefactory.VB.Dom {
}
}
public class DestructorDeclaration : AttributedNode {
string name;
BlockStatement body;
public string Name {
get {
return name;
}
set {
name = value ?? "";
}
}
public BlockStatement Body {
get {
return body;
}
set {
body = value ?? BlockStatement.Null;
if (!body.IsNull) body.Parent = this;
}
}
public DestructorDeclaration(string name, Modifiers modifier, List<AttributeSection> attributes) {
Name = name;
Modifier = modifier;
Attributes = attributes;
body = BlockStatement.Null;
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitDestructorDeclaration(this, data);
}
public override string ToString() {
return string.Format("[DestructorDeclaration Name={0} Body={1} Attributes={2} Modifier={3}]", Name, Body, GetCollectionString(Attributes), Modifier);
}
}
public class DirectionExpression : Expression {
FieldDirection fieldDirection;
@ -1417,20 +1308,6 @@ namespace ICSharpCode.NRefactory.VB.Dom { @@ -1417,20 +1308,6 @@ namespace ICSharpCode.NRefactory.VB.Dom {
}
}
public class EmptyStatement : Statement {
public EmptyStatement() {
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitEmptyStatement(this, data);
}
public override string ToString() {
return "[EmptyStatement]";
}
}
public class EndStatement : Statement {
public EndStatement() {
@ -1665,21 +1542,21 @@ namespace ICSharpCode.NRefactory.VB.Dom { @@ -1665,21 +1542,21 @@ namespace ICSharpCode.NRefactory.VB.Dom {
initializer = Expression.Null;
}
public bool HasRemoveRegion {
public bool HasAddRegion {
get {
return !removeRegion.IsNull;
return !addRegion.IsNull;
}
}
public bool HasRaiseRegion {
public bool HasRemoveRegion {
get {
return !raiseRegion.IsNull;
return !removeRegion.IsNull;
}
}
public bool HasAddRegion {
public bool HasRaiseRegion {
get {
return !addRegion.IsNull;
return !raiseRegion.IsNull;
}
}
@ -2011,34 +1888,6 @@ namespace ICSharpCode.NRefactory.VB.Dom { @@ -2011,34 +1888,6 @@ namespace ICSharpCode.NRefactory.VB.Dom {
}
}
public class FixedStatement : StatementWithEmbeddedStatement {
Statement pointerDeclaration;
public Statement PointerDeclaration {
get {
return pointerDeclaration;
}
set {
pointerDeclaration = value ?? Statement.Null;
if (!pointerDeclaration.IsNull) pointerDeclaration.Parent = this;
}
}
public FixedStatement(Statement pointerDeclaration, Statement embeddedStatement) {
PointerDeclaration = pointerDeclaration;
EmbeddedStatement = embeddedStatement;
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitFixedStatement(this, data);
}
public override string ToString() {
return string.Format("[FixedStatement PointerDeclaration={0} EmbeddedStatement={1}]", PointerDeclaration, EmbeddedStatement);
}
}
public class ForeachStatement : StatementWithEmbeddedStatement {
TypeReference typeReference;
@ -2218,91 +2067,6 @@ namespace ICSharpCode.NRefactory.VB.Dom { @@ -2218,91 +2067,6 @@ namespace ICSharpCode.NRefactory.VB.Dom {
}
}
public class ForStatement : StatementWithEmbeddedStatement {
List<Statement> initializers;
Expression condition;
List<Statement> iterator;
public List<Statement> Initializers {
get {
return initializers;
}
set {
initializers = value ?? new List<Statement>();
}
}
public Expression Condition {
get {
return condition;
}
set {
condition = value ?? Expression.Null;
if (!condition.IsNull) condition.Parent = this;
}
}
public List<Statement> Iterator {
get {
return iterator;
}
set {
iterator = value ?? new List<Statement>();
}
}
public ForStatement(List<Statement> initializers, Expression condition, List<Statement> iterator, Statement embeddedStatement) {
Initializers = initializers;
Condition = condition;
Iterator = iterator;
EmbeddedStatement = embeddedStatement;
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitForStatement(this, data);
}
public override string ToString() {
return string.Format("[ForStatement Initializers={0} Condition={1} Iterator={2} EmbeddedStatement={3}]", GetCollectionString(Initializers), Condition, GetCollectionString(Iterator), EmbeddedStatement);
}
}
public class GotoCaseStatement : Statement {
Expression expression;
public Expression Expression {
get {
return expression;
}
set {
expression = value ?? Expression.Null;
if (!expression.IsNull) expression.Parent = this;
}
}
public GotoCaseStatement(Expression expression) {
Expression = expression;
}
public bool IsDefaultCase {
get {
return expression.IsNull;
}
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitGotoCaseStatement(this, data);
}
public override string ToString() {
return string.Format("[GotoCaseStatement Expression={0}]", Expression);
}
}
public class GotoStatement : Statement {
string label;
@ -2428,6 +2192,12 @@ namespace ICSharpCode.NRefactory.VB.Dom { @@ -2428,6 +2192,12 @@ namespace ICSharpCode.NRefactory.VB.Dom {
if (trueStatement != null) trueStatement.Parent = this;
}
public bool HasElseIfSections {
get {
return elseIfSections.Count > 0;
}
}
public bool HasElseStatements {
get {
return falseStatement.Count > 0;
@ -2443,12 +2213,6 @@ namespace ICSharpCode.NRefactory.VB.Dom { @@ -2443,12 +2213,6 @@ namespace ICSharpCode.NRefactory.VB.Dom {
if (falseStatement != null) falseStatement.Parent = this;
}
public bool HasElseIfSections {
get {
return elseIfSections.Count > 0;
}
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitIfElseStatement(this, data);
}
@ -2459,45 +2223,6 @@ namespace ICSharpCode.NRefactory.VB.Dom { @@ -2459,45 +2223,6 @@ namespace ICSharpCode.NRefactory.VB.Dom {
}
}
public class IndexerExpression : Expression {
Expression targetObject;
List<Expression> indexes;
public Expression TargetObject {
get {
return targetObject;
}
set {
targetObject = value ?? Expression.Null;
if (!targetObject.IsNull) targetObject.Parent = this;
}
}
public List<Expression> Indexes {
get {
return indexes;
}
set {
indexes = value ?? new List<Expression>();
}
}
public IndexerExpression(Expression targetObject, List<Expression> indexes) {
TargetObject = targetObject;
Indexes = indexes;
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitIndexerExpression(this, data);
}
public override string ToString() {
return string.Format("[IndexerExpression TargetObject={0} Indexes={1}]", TargetObject, GetCollectionString(Indexes));
}
}
public class InterfaceImplementation : AbstractNode {
TypeReference interfaceType;
@ -3294,75 +3019,24 @@ public Location ExtendedEndLocation { get; set; } @@ -3294,75 +3019,24 @@ public Location ExtendedEndLocation { get; set; }
}
}
public class PointerReferenceExpression : Expression {
public class PropertyDeclaration : MemberNode {
Expression targetObject;
Location bodyStart;
string memberName;
Location bodyEnd;
List<TypeReference> typeArguments;
PropertyGetRegion getRegion;
public Expression TargetObject {
PropertySetRegion setRegion;
Expression initializer;
public Location BodyStart {
get {
return targetObject;
return bodyStart;
}
set {
targetObject = value ?? Expression.Null;
if (!targetObject.IsNull) targetObject.Parent = this;
}
}
public string MemberName {
get {
return memberName;
}
set {
memberName = value ?? "";
}
}
public List<TypeReference> TypeArguments {
get {
return typeArguments;
}
set {
typeArguments = value ?? new List<TypeReference>();
}
}
public PointerReferenceExpression(Expression targetObject, string memberName) {
TargetObject = targetObject;
MemberName = memberName;
typeArguments = new List<TypeReference>();
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitPointerReferenceExpression(this, data);
}
public override string ToString() {
return string.Format("[PointerReferenceExpression TargetObject={0} MemberName={1} TypeArguments={2}]", TargetObject, MemberName, GetCollectionString(TypeArguments));
}
}
public class PropertyDeclaration : MemberNode {
Location bodyStart;
Location bodyEnd;
PropertyGetRegion getRegion;
PropertySetRegion setRegion;
Expression initializer;
public Location BodyStart {
get {
return bodyStart;
}
set {
bodyStart = value;
bodyStart = value;
}
}
@ -3417,24 +3091,6 @@ public Location ExtendedEndLocation { get; set; } @@ -3417,24 +3091,6 @@ public Location ExtendedEndLocation { get; set; }
initializer = Expression.Null;
}
internal PropertyDeclaration(string name, TypeReference typeReference, Modifiers modifier, List<AttributeSection> attributes) : this(modifier, attributes, name, null)
{
this.TypeReference = typeReference;
if ((modifier & Modifiers.ReadOnly) != Modifiers.ReadOnly) {
this.SetRegion = new PropertySetRegion(null, null);
}
if ((modifier & Modifiers.WriteOnly) != Modifiers.WriteOnly) {
this.GetRegion = new PropertyGetRegion(null, null);
}
}
public bool HasSetRegion {
get {
return !setRegion.IsNull;
}
}
public bool IsReadOnly {
get {
return HasGetRegion && !HasSetRegion;
@ -3447,15 +3103,33 @@ public Location ExtendedEndLocation { get; set; } @@ -3447,15 +3103,33 @@ public Location ExtendedEndLocation { get; set; }
}
}
public bool IsWriteOnly {
get {
return !HasGetRegion && HasSetRegion;
}
}
public bool IsIndexer {
get {
return (Modifier & Modifiers.Default) != 0;
}
}
public bool IsWriteOnly {
internal PropertyDeclaration(string name, TypeReference typeReference, Modifiers modifier, List<AttributeSection> attributes) : this(modifier, attributes, name, null)
{
this.TypeReference = typeReference;
if ((modifier & Modifiers.ReadOnly) != Modifiers.ReadOnly) {
this.SetRegion = new PropertySetRegion(null, null);
}
if ((modifier & Modifiers.WriteOnly) != Modifiers.WriteOnly) {
this.GetRegion = new PropertyGetRegion(null, null);
}
}
public bool HasSetRegion {
get {
return !HasGetRegion && HasSetRegion;
return !setRegion.IsNull;
}
}
@ -3598,62 +3272,19 @@ public Location ExtendedEndLocation { get; set; } @@ -3598,62 +3272,19 @@ public Location ExtendedEndLocation { get; set; }
public class QueryExpression : Expression {
QueryExpressionFromClause fromClause;
bool isQueryContinuation;
List<QueryExpressionClause> middleClauses;
QueryExpressionClause selectOrGroupClause;
public QueryExpressionFromClause FromClause {
get {
return fromClause;
}
set {
fromClause = value ?? QueryExpressionFromClause.Null;
if (!fromClause.IsNull) fromClause.Parent = this;
}
}
public bool IsQueryContinuation {
get {
return isQueryContinuation;
}
set {
isQueryContinuation = value;
}
}
public List<QueryExpressionClause> MiddleClauses {
get {
return middleClauses;
}
set {
middleClauses = value ?? new List<QueryExpressionClause>();
}
}
List<QueryExpressionClause> clauses;
public QueryExpressionClause SelectOrGroupClause {
public List<QueryExpressionClause> Clauses {
get {
return selectOrGroupClause;
return clauses;
}
set {
selectOrGroupClause = value ?? QueryExpressionClause.Null;
if (!selectOrGroupClause.IsNull) selectOrGroupClause.Parent = this;
clauses = value ?? new List<QueryExpressionClause>();
}
}
public QueryExpression() {
fromClause = QueryExpressionFromClause.Null;
middleClauses = new List<QueryExpressionClause>();
selectOrGroupClause = QueryExpressionClause.Null;
}
public new static QueryExpression Null {
get {
return NullQueryExpression.Instance;
}
clauses = new List<QueryExpressionClause>();
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
@ -3661,27 +3292,7 @@ public Location ExtendedEndLocation { get; set; } @@ -3661,27 +3292,7 @@ public Location ExtendedEndLocation { get; set; }
}
public override string ToString() {
return string.Format("[QueryExpression FromClause={0} IsQueryContinuation={1} MiddleClauses={2} SelectO" +
"rGroupClause={3}]", FromClause, IsQueryContinuation, GetCollectionString(MiddleClauses), SelectOrGroupClause);
}
}
internal sealed class NullQueryExpression : QueryExpression {
internal static NullQueryExpression Instance = new NullQueryExpression();
public override bool IsNull {
get {
return true;
}
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return null;
}
public override string ToString() {
return "[NullQueryExpression]";
return string.Format("[QueryExpression Clauses={0}]", GetCollectionString(Clauses));
}
}
@ -4371,32 +3982,6 @@ public Location ExtendedEndLocation { get; set; } @@ -4371,32 +3982,6 @@ public Location ExtendedEndLocation { get; set; }
}
}
public class QueryExpressionVB : Expression {
List<QueryExpressionClause> clauses;
public List<QueryExpressionClause> Clauses {
get {
return clauses;
}
set {
clauses = value ?? new List<QueryExpressionClause>();
}
}
public QueryExpressionVB() {
clauses = new List<QueryExpressionClause>();
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitQueryExpressionVB(this, data);
}
public override string ToString() {
return string.Format("[QueryExpressionVB Clauses={0}]", GetCollectionString(Clauses));
}
}
public class QueryExpressionWhereClause : QueryExpressionClause {
Expression condition;
@ -4609,73 +4194,6 @@ public Location ExtendedEndLocation { get; set; } @@ -4609,73 +4194,6 @@ public Location ExtendedEndLocation { get; set; }
}
}
public class SizeOfExpression : Expression {
TypeReference typeReference;
public TypeReference TypeReference {
get {
return typeReference;
}
set {
typeReference = value ?? TypeReference.Null;
if (!typeReference.IsNull) typeReference.Parent = this;
}
}
public SizeOfExpression(TypeReference typeReference) {
TypeReference = typeReference;
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitSizeOfExpression(this, data);
}
public override string ToString() {
return string.Format("[SizeOfExpression TypeReference={0}]", TypeReference);
}
}
public class StackAllocExpression : Expression {
TypeReference typeReference;
Expression expression;
public TypeReference TypeReference {
get {
return typeReference;
}
set {
typeReference = value ?? TypeReference.Null;
if (!typeReference.IsNull) typeReference.Parent = this;
}
}
public Expression Expression {
get {
return expression;
}
set {
expression = value ?? Expression.Null;
if (!expression.IsNull) expression.Parent = this;
}
}
public StackAllocExpression(TypeReference typeReference, Expression expression) {
TypeReference = typeReference;
Expression = expression;
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitStackAllocExpression(this, data);
}
public override string ToString() {
return string.Format("[StackAllocExpression TypeReference={0} Expression={1}]", TypeReference, Expression);
}
}
public class StopStatement : Statement {
public StopStatement() {
@ -5122,87 +4640,6 @@ public Location ExtendedEndLocation { get; set; } @@ -5122,87 +4640,6 @@ public Location ExtendedEndLocation { get; set; }
}
}
public class UncheckedExpression : Expression {
Expression expression;
public Expression Expression {
get {
return expression;
}
set {
expression = value ?? Expression.Null;
if (!expression.IsNull) expression.Parent = this;
}
}
public UncheckedExpression(Expression expression) {
Expression = expression;
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitUncheckedExpression(this, data);
}
public override string ToString() {
return string.Format("[UncheckedExpression Expression={0}]", Expression);
}
}
public class UncheckedStatement : Statement {
Statement block;
public Statement Block {
get {
return block;
}
set {
block = value ?? Statement.Null;
if (!block.IsNull) block.Parent = this;
}
}
public UncheckedStatement(Statement block) {
Block = block;
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitUncheckedStatement(this, data);
}
public override string ToString() {
return string.Format("[UncheckedStatement Block={0}]", Block);
}
}
public class UnsafeStatement : Statement {
Statement block;
public Statement Block {
get {
return block;
}
set {
block = value ?? Statement.Null;
if (!block.IsNull) block.Parent = this;
}
}
public UnsafeStatement(Statement block) {
Block = block;
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitUnsafeStatement(this, data);
}
public override string ToString() {
return string.Format("[UnsafeStatement Block={0}]", Block);
}
}
public class Using : AbstractNode {
string name;
@ -5297,10 +4734,10 @@ public Location ExtendedEndLocation { get; set; } @@ -5297,10 +4734,10 @@ public Location ExtendedEndLocation { get; set; }
public UsingDeclaration(string xmlNamespace, string prefix) { usings = new List<Using>(1); usings.Add(new Using(xmlNamespace, prefix)); }
public UsingDeclaration(string @namespace, TypeReference alias) { usings = new List<Using>(1); usings.Add(new Using(@namespace, alias)); }
public UsingDeclaration(string @namespace) : this(@namespace, TypeReference.Null) {}
public UsingDeclaration(string @namespace, TypeReference alias) { usings = new List<Using>(1); usings.Add(new Using(@namespace, alias)); }
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitUsingDeclaration(this, data);
}
@ -5763,43 +5200,4 @@ public UsingDeclaration(string @namespace) : this(@namespace, TypeReference.Null @@ -5763,43 +5200,4 @@ public UsingDeclaration(string @namespace) : this(@namespace, TypeReference.Null
"tifier={3}]", TargetObject, AxisType, IsXmlIdentifier, Identifier);
}
}
public class YieldStatement : Statement {
Statement statement;
public Statement Statement {
get {
return statement;
}
set {
statement = value ?? Statement.Null;
if (!statement.IsNull) statement.Parent = this;
}
}
public YieldStatement(Statement statement) {
Statement = statement;
}
public bool IsYieldBreak {
get {
return statement is BreakStatement;
}
}
public bool IsYieldReturn {
get {
return statement is ReturnStatement;
}
}
public override object AcceptVisitor(IAstVisitor visitor, object data) {
return visitor.VisitYieldStatement(this, data);
}
public override string ToString() {
return string.Format("[YieldStatement Statement={0}]", Statement);
}
}
}

34
VB/Project/IAstVisitor.cs

@ -35,18 +35,12 @@ namespace ICSharpCode.NRefactory.VB { @@ -35,18 +35,12 @@ namespace ICSharpCode.NRefactory.VB {
object VisitBlockStatement(BlockStatement blockStatement, object data);
object VisitBreakStatement(BreakStatement breakStatement, object data);
object VisitCaseLabel(CaseLabel caseLabel, object data);
object VisitCastExpression(CastExpression castExpression, object data);
object VisitCatchClause(CatchClause catchClause, object data);
object VisitCheckedExpression(CheckedExpression checkedExpression, object data);
object VisitCheckedStatement(CheckedStatement checkedStatement, object data);
object VisitClassReferenceExpression(ClassReferenceExpression classReferenceExpression, object data);
object VisitCollectionInitializerExpression(CollectionInitializerExpression collectionInitializerExpression, object data);
@ -69,16 +63,12 @@ namespace ICSharpCode.NRefactory.VB { @@ -69,16 +63,12 @@ namespace ICSharpCode.NRefactory.VB {
object VisitDelegateDeclaration(DelegateDeclaration delegateDeclaration, object data);
object VisitDestructorDeclaration(DestructorDeclaration destructorDeclaration, object data);
object VisitDirectionExpression(DirectionExpression directionExpression, object data);
object VisitDoLoopStatement(DoLoopStatement doLoopStatement, object data);
object VisitElseIfSection(ElseIfSection elseIfSection, object data);
object VisitEmptyStatement(EmptyStatement emptyStatement, object data);
object VisitEndStatement(EndStatement endStatement, object data);
object VisitEraseStatement(EraseStatement eraseStatement, object data);
@ -103,24 +93,16 @@ namespace ICSharpCode.NRefactory.VB { @@ -103,24 +93,16 @@ namespace ICSharpCode.NRefactory.VB {
object VisitFieldDeclaration(FieldDeclaration fieldDeclaration, object data);
object VisitFixedStatement(FixedStatement fixedStatement, object data);
object VisitForeachStatement(ForeachStatement foreachStatement, object data);
object VisitForNextStatement(ForNextStatement forNextStatement, object data);
object VisitForStatement(ForStatement forStatement, object data);
object VisitGotoCaseStatement(GotoCaseStatement gotoCaseStatement, object data);
object VisitGotoStatement(GotoStatement gotoStatement, object data);
object VisitIdentifierExpression(IdentifierExpression identifierExpression, object data);
object VisitIfElseStatement(IfElseStatement ifElseStatement, object data);
object VisitIndexerExpression(IndexerExpression indexerExpression, object data);
object VisitInnerClassTypeReference(InnerClassTypeReference innerClassTypeReference, object data);
object VisitInterfaceImplementation(InterfaceImplementation interfaceImplementation, object data);
@ -157,8 +139,6 @@ namespace ICSharpCode.NRefactory.VB { @@ -157,8 +139,6 @@ namespace ICSharpCode.NRefactory.VB {
object VisitParenthesizedExpression(ParenthesizedExpression parenthesizedExpression, object data);
object VisitPointerReferenceExpression(PointerReferenceExpression pointerReferenceExpression, object data);
object VisitPrimitiveExpression(PrimitiveExpression primitiveExpression, object data);
object VisitPropertyDeclaration(PropertyDeclaration propertyDeclaration, object data);
@ -201,8 +181,6 @@ namespace ICSharpCode.NRefactory.VB { @@ -201,8 +181,6 @@ namespace ICSharpCode.NRefactory.VB {
object VisitQueryExpressionSelectVBClause(QueryExpressionSelectVBClause queryExpressionSelectVBClause, object data);
object VisitQueryExpressionVB(QueryExpressionVB queryExpressionVB, object data);
object VisitQueryExpressionWhereClause(QueryExpressionWhereClause queryExpressionWhereClause, object data);
object VisitRaiseEventStatement(RaiseEventStatement raiseEventStatement, object data);
@ -215,10 +193,6 @@ namespace ICSharpCode.NRefactory.VB { @@ -215,10 +193,6 @@ namespace ICSharpCode.NRefactory.VB {
object VisitReturnStatement(ReturnStatement returnStatement, object data);
object VisitSizeOfExpression(SizeOfExpression sizeOfExpression, object data);
object VisitStackAllocExpression(StackAllocExpression stackAllocExpression, object data);
object VisitStopStatement(StopStatement stopStatement, object data);
object VisitSwitchSection(SwitchSection switchSection, object data);
@ -245,12 +219,6 @@ namespace ICSharpCode.NRefactory.VB { @@ -245,12 +219,6 @@ namespace ICSharpCode.NRefactory.VB {
object VisitUnaryOperatorExpression(UnaryOperatorExpression unaryOperatorExpression, object data);
object VisitUncheckedExpression(UncheckedExpression uncheckedExpression, object data);
object VisitUncheckedStatement(UncheckedStatement uncheckedStatement, object data);
object VisitUnsafeStatement(UnsafeStatement unsafeStatement, object data);
object VisitUsing(Using @using, object data);
object VisitUsingDeclaration(UsingDeclaration usingDeclaration, object data);
@ -272,7 +240,5 @@ namespace ICSharpCode.NRefactory.VB { @@ -272,7 +240,5 @@ namespace ICSharpCode.NRefactory.VB {
object VisitXmlEmbeddedExpression(XmlEmbeddedExpression xmlEmbeddedExpression, object data);
object VisitXmlMemberAccessExpression(XmlMemberAccessExpression xmlMemberAccessExpression, object data);
object VisitYieldStatement(YieldStatement yieldStatement, object data);
}
}

2
VB/Project/Lexer/Token.cs

@ -99,7 +99,7 @@ namespace ICSharpCode.NRefactory.VB.Parser @@ -99,7 +99,7 @@ namespace ICSharpCode.NRefactory.VB.Parser
vbToken = "<unknown>";
}
return string.Format("[Token {1} Location={2} EndLocation={3} val={4}]",
return string.Format("[Token {0} Location={1} EndLocation={2} val={3}]",
vbToken, Location, EndLocation, val);
}
}

2768
VB/Project/Parser/Parser.cs

File diff suppressed because it is too large Load Diff

8
VB/Project/Parser/gen.bat

@ -4,11 +4,11 @@ echo Generating with #Coco @@ -4,11 +4,11 @@ echo Generating with #Coco
cd Frames
copy ..\VBNet\VBNET.ATG
SharpCoco -namespace ICSharpCode.NRefactory.VB.Parser VBNET.ATG
move Parser.cs ..\VBNet
copy ..\vbnet.atg
SharpCoco -namespace ICSharpCode.NRefactory.VB.Parser vbnet.atg
move Parser.cs ..
del VBNET.ATG
del vbnet.atg
pause
cd ..

2
VB/Project/Parser/vbnet.atg

@ -2289,7 +2289,7 @@ FunctionLambdaExpression<out LambdaExpression lambda> @@ -2289,7 +2289,7 @@ FunctionLambdaExpression<out LambdaExpression lambda>
QueryExpr<out Expression expr>
(.
QueryExpressionVB qexpr = new QueryExpressionVB();
QueryExpression qexpr = new QueryExpression();
qexpr.StartLocation = la.Location;
expr = qexpr;
.) =

210
VB/Project/PrettyPrinter/VBNet/VBNetOutputVisitor.cs

@ -997,51 +997,6 @@ namespace ICSharpCode.NRefactory.VB.PrettyPrinter @@ -997,51 +997,6 @@ namespace ICSharpCode.NRefactory.VB.PrettyPrinter
return null;
}
public override object TrackedVisitDestructorDeclaration(DestructorDeclaration destructorDeclaration, object data)
{
outputFormatter.Indent();
outputFormatter.PrintText("Protected Overrides Sub Finalize()");
outputFormatter.NewLine();
++outputFormatter.IndentationLevel;
exitTokenStack.Push(Tokens.Sub);
outputFormatter.Indent();
outputFormatter.PrintToken(Tokens.Try);
outputFormatter.NewLine();
++outputFormatter.IndentationLevel;
TrackedVisit(destructorDeclaration.Body, data);
--outputFormatter.IndentationLevel;
outputFormatter.Indent();
outputFormatter.PrintToken(Tokens.Finally);
outputFormatter.NewLine();
++outputFormatter.IndentationLevel;
outputFormatter.Indent();
outputFormatter.PrintText("MyBase.Finalize()");
outputFormatter.NewLine();
--outputFormatter.IndentationLevel;
outputFormatter.Indent();
outputFormatter.PrintToken(Tokens.End);
outputFormatter.Space();
outputFormatter.PrintToken(Tokens.Try);
outputFormatter.NewLine();
exitTokenStack.Pop();
--outputFormatter.IndentationLevel;
outputFormatter.Indent();
outputFormatter.PrintToken(Tokens.End);
outputFormatter.Space();
outputFormatter.PrintToken(Tokens.Sub);
outputFormatter.NewLine();
return null;
}
public override object TrackedVisitOperatorDeclaration(OperatorDeclaration operatorDeclaration, object data)
{
VisitAttributes(operatorDeclaration.Attributes, data);
@ -1397,20 +1352,6 @@ namespace ICSharpCode.NRefactory.VB.PrettyPrinter @@ -1397,20 +1352,6 @@ namespace ICSharpCode.NRefactory.VB.PrettyPrinter
return null;
}
public override object TrackedVisitEmptyStatement(EmptyStatement emptyStatement, object data)
{
outputFormatter.NewLine();
return null;
}
public override object TrackedVisitYieldStatement(YieldStatement yieldStatement, object data)
{
UnsupportedNode(yieldStatement);
outputFormatter.PrintText("yield ");
TrackedVisit(yieldStatement.Statement, data);
return null;
}
public override object TrackedVisitReturnStatement(ReturnStatement returnStatement, object data)
{
outputFormatter.PrintToken(Tokens.Return);
@ -1463,40 +1404,6 @@ namespace ICSharpCode.NRefactory.VB.PrettyPrinter @@ -1463,40 +1404,6 @@ namespace ICSharpCode.NRefactory.VB.PrettyPrinter
return null;
}
public override object TrackedVisitForStatement(ForStatement forStatement, object data)
{
// Is converted to {initializer} while <Condition> {Embedded} {Iterators} end while
exitTokenStack.Push(Tokens.While);
bool isFirstLine = true;
foreach (INode node in forStatement.Initializers) {
if (!isFirstLine)
outputFormatter.Indent();
isFirstLine = false;
TrackedVisit(node, data);
outputFormatter.NewLine();
}
if (!isFirstLine)
outputFormatter.Indent();
outputFormatter.PrintToken(Tokens.While);
outputFormatter.Space();
if (forStatement.Condition.IsNull) {
outputFormatter.PrintToken(Tokens.True);
} else {
TrackedVisit(forStatement.Condition, data);
}
outputFormatter.NewLine();
PrintIndentedBlock(forStatement.EmbeddedStatement);
PrintIndentedBlock(forStatement.Iterator);
outputFormatter.Indent();
outputFormatter.PrintToken(Tokens.End);
outputFormatter.Space();
outputFormatter.PrintToken(Tokens.While);
exitTokenStack.Pop();
return null;
}
public override object TrackedVisitLabelStatement(LabelStatement labelStatement, object data)
{
outputFormatter.PrintIdentifier(labelStatement.Label);
@ -1590,16 +1497,6 @@ namespace ICSharpCode.NRefactory.VB.PrettyPrinter @@ -1590,16 +1497,6 @@ namespace ICSharpCode.NRefactory.VB.PrettyPrinter
return null;
}
public override object TrackedVisitBreakStatement(BreakStatement breakStatement, object data)
{
outputFormatter.PrintToken(Tokens.Exit);
if (exitTokenStack.Count > 0) {
outputFormatter.Space();
outputFormatter.PrintToken(exitTokenStack.Peek());
}
return null;
}
public override object TrackedVisitStopStatement(StopStatement stopStatement, object data)
{
outputFormatter.PrintToken(Tokens.Stop);
@ -1645,17 +1542,6 @@ namespace ICSharpCode.NRefactory.VB.PrettyPrinter @@ -1645,17 +1542,6 @@ namespace ICSharpCode.NRefactory.VB.PrettyPrinter
return null;
}
public override object TrackedVisitGotoCaseStatement(GotoCaseStatement gotoCaseStatement, object data)
{
outputFormatter.PrintText("goto case ");
if (gotoCaseStatement.IsDefaultCase) {
outputFormatter.PrintText("default");
} else {
TrackedVisit(gotoCaseStatement.Expression, null);
}
return null;
}
public override object TrackedVisitDoLoopStatement(DoLoopStatement doLoopStatement, object data)
{
if (doLoopStatement.ConditionPosition == ConditionPosition.None) {
@ -1877,30 +1763,6 @@ namespace ICSharpCode.NRefactory.VB.PrettyPrinter @@ -1877,30 +1763,6 @@ namespace ICSharpCode.NRefactory.VB.PrettyPrinter
return null;
}
public override object TrackedVisitFixedStatement(FixedStatement fixedStatement, object data)
{
UnsupportedNode(fixedStatement);
return TrackedVisit(fixedStatement.EmbeddedStatement, data);
}
public override object TrackedVisitUnsafeStatement(UnsafeStatement unsafeStatement, object data)
{
UnsupportedNode(unsafeStatement);
return TrackedVisit(unsafeStatement.Block, data);
}
public override object TrackedVisitCheckedStatement(CheckedStatement checkedStatement, object data)
{
UnsupportedNode(checkedStatement);
return TrackedVisit(checkedStatement.Block, data);
}
public override object TrackedVisitUncheckedStatement(UncheckedStatement uncheckedStatement, object data)
{
UnsupportedNode(uncheckedStatement);
return TrackedVisit(uncheckedStatement.Block, data);
}
public override object TrackedVisitExitStatement(ExitStatement exitStatement, object data)
{
outputFormatter.PrintToken(Tokens.Exit);
@ -2441,38 +2303,6 @@ namespace ICSharpCode.NRefactory.VB.PrettyPrinter @@ -2441,38 +2303,6 @@ namespace ICSharpCode.NRefactory.VB.PrettyPrinter
return null;
}
public override object TrackedVisitSizeOfExpression(SizeOfExpression sizeOfExpression, object data)
{
if (!sizeOfExpression.TypeReference.IsArrayType && sizeOfExpression.TypeReference.PointerNestingLevel == 0) {
switch (sizeOfExpression.TypeReference.Type) {
case "System.Byte":
case "System.SByte":
outputFormatter.PrintText("1");
return null;
case "System.Char":
case "System.Int16":
case "System.UInt16":
outputFormatter.PrintText("2");
return null;
case "System.Single":
case "System.Int32":
case "System.UInt32":
outputFormatter.PrintText("4");
return null;
case "System.Double":
case "System.Int64":
case "System.UInt64":
outputFormatter.PrintText("8");
return null;
}
}
UnsupportedNode(sizeOfExpression);
outputFormatter.PrintText("sizeof(");
TrackedVisit(sizeOfExpression.TypeReference, data);
outputFormatter.PrintText(")");
return null;
}
public override object TrackedVisitTypeOfExpression(TypeOfExpression typeOfExpression, object data)
{
outputFormatter.PrintToken(Tokens.GetType);
@ -2515,28 +2345,6 @@ namespace ICSharpCode.NRefactory.VB.PrettyPrinter @@ -2515,28 +2345,6 @@ namespace ICSharpCode.NRefactory.VB.PrettyPrinter
return null;
}
public override object TrackedVisitCheckedExpression(CheckedExpression checkedExpression, object data)
{
UnsupportedNode(checkedExpression);
return TrackedVisit(checkedExpression.Expression, data);
}
public override object TrackedVisitUncheckedExpression(UncheckedExpression uncheckedExpression, object data)
{
UnsupportedNode(uncheckedExpression);
return TrackedVisit(uncheckedExpression.Expression, data);
}
public override object TrackedVisitPointerReferenceExpression(PointerReferenceExpression pointerReferenceExpression, object data)
{
UnsupportedNode(pointerReferenceExpression);
TrackedVisit(pointerReferenceExpression.TargetObject, data);
outputFormatter.PrintText(".");
outputFormatter.PrintIdentifier(pointerReferenceExpression.MemberName);
PrintTypeArguments(pointerReferenceExpression.TypeArguments);
return null;
}
public override object TrackedVisitCastExpression(CastExpression castExpression, object data)
{
if (castExpression.CastType == CastType.TryCast) {
@ -2615,22 +2423,6 @@ namespace ICSharpCode.NRefactory.VB.PrettyPrinter @@ -2615,22 +2423,6 @@ namespace ICSharpCode.NRefactory.VB.PrettyPrinter
return null;
}
public override object TrackedVisitStackAllocExpression(StackAllocExpression stackAllocExpression, object data)
{
UnsupportedNode(stackAllocExpression);
outputFormatter.PrintText("stackalloc");
return null;
}
public override object TrackedVisitIndexerExpression(IndexerExpression indexerExpression, object data)
{
TrackedVisit(indexerExpression.TargetObject, data);
outputFormatter.PrintToken(Tokens.OpenParenthesis);
AppendCommaSeparatedList(indexerExpression.Indexes);
outputFormatter.PrintToken(Tokens.CloseParenthesis);
return null;
}
public override object TrackedVisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression, object data)
{
outputFormatter.PrintToken(Tokens.Me);
@ -3011,7 +2803,7 @@ namespace ICSharpCode.NRefactory.VB.PrettyPrinter @@ -3011,7 +2803,7 @@ namespace ICSharpCode.NRefactory.VB.PrettyPrinter
outputFormatter.PrintToken(Tokens.Function);
}
public override object TrackedVisitQueryExpressionVB(QueryExpressionVB queryExpression, object data)
public override object TrackedVisitQueryExpression(QueryExpression queryExpression, object data)
{
outputFormatter.IndentationLevel++;
for (int i = 0; i < queryExpression.Clauses.Count; i++) {

146
VB/Project/Visitors/AbstractASTVisitor.cs

@ -106,11 +106,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -106,11 +106,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return blockStatement.AcceptChildren(this, data);
}
public virtual object VisitBreakStatement(BreakStatement breakStatement, object data) {
Debug.Assert((breakStatement != null));
return null;
}
public virtual object VisitCaseLabel(CaseLabel caseLabel, object data) {
Debug.Assert((caseLabel != null));
Debug.Assert((caseLabel.Label != null));
@ -137,18 +132,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -137,18 +132,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return catchClause.Condition.AcceptVisitor(this, data);
}
public virtual object VisitCheckedExpression(CheckedExpression checkedExpression, object data) {
Debug.Assert((checkedExpression != null));
Debug.Assert((checkedExpression.Expression != null));
return checkedExpression.Expression.AcceptVisitor(this, data);
}
public virtual object VisitCheckedStatement(CheckedStatement checkedStatement, object data) {
Debug.Assert((checkedStatement != null));
Debug.Assert((checkedStatement.Block != null));
return checkedStatement.Block.AcceptVisitor(this, data);
}
public virtual object VisitClassReferenceExpression(ClassReferenceExpression classReferenceExpression, object data) {
Debug.Assert((classReferenceExpression != null));
return null;
@ -264,17 +247,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -264,17 +247,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return null;
}
public virtual object VisitDestructorDeclaration(DestructorDeclaration destructorDeclaration, object data) {
Debug.Assert((destructorDeclaration != null));
Debug.Assert((destructorDeclaration.Attributes != null));
Debug.Assert((destructorDeclaration.Body != null));
foreach (AttributeSection o in destructorDeclaration.Attributes) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
return destructorDeclaration.Body.AcceptVisitor(this, data);
}
public virtual object VisitDirectionExpression(DirectionExpression directionExpression, object data) {
Debug.Assert((directionExpression != null));
Debug.Assert((directionExpression.Expression != null));
@ -297,11 +269,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -297,11 +269,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return elseIfSection.EmbeddedStatement.AcceptVisitor(this, data);
}
public virtual object VisitEmptyStatement(EmptyStatement emptyStatement, object data) {
Debug.Assert((emptyStatement != null));
return null;
}
public virtual object VisitEndStatement(EndStatement endStatement, object data) {
Debug.Assert((endStatement != null));
return null;
@ -444,14 +411,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -444,14 +411,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return null;
}
public virtual object VisitFixedStatement(FixedStatement fixedStatement, object data) {
Debug.Assert((fixedStatement != null));
Debug.Assert((fixedStatement.PointerDeclaration != null));
Debug.Assert((fixedStatement.EmbeddedStatement != null));
fixedStatement.PointerDeclaration.AcceptVisitor(this, data);
return fixedStatement.EmbeddedStatement.AcceptVisitor(this, data);
}
public virtual object VisitForeachStatement(ForeachStatement foreachStatement, object data) {
Debug.Assert((foreachStatement != null));
Debug.Assert((foreachStatement.TypeReference != null));
@ -485,30 +444,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -485,30 +444,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return forNextStatement.EmbeddedStatement.AcceptVisitor(this, data);
}
public virtual object VisitForStatement(ForStatement forStatement, object data) {
Debug.Assert((forStatement != null));
Debug.Assert((forStatement.Initializers != null));
Debug.Assert((forStatement.Condition != null));
Debug.Assert((forStatement.Iterator != null));
Debug.Assert((forStatement.EmbeddedStatement != null));
foreach (Statement o in forStatement.Initializers) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
forStatement.Condition.AcceptVisitor(this, data);
foreach (Statement o in forStatement.Iterator) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
return forStatement.EmbeddedStatement.AcceptVisitor(this, data);
}
public virtual object VisitGotoCaseStatement(GotoCaseStatement gotoCaseStatement, object data) {
Debug.Assert((gotoCaseStatement != null));
Debug.Assert((gotoCaseStatement.Expression != null));
return gotoCaseStatement.Expression.AcceptVisitor(this, data);
}
public virtual object VisitGotoStatement(GotoStatement gotoStatement, object data) {
Debug.Assert((gotoStatement != null));
return null;
@ -546,18 +481,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -546,18 +481,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return null;
}
public virtual object VisitIndexerExpression(IndexerExpression indexerExpression, object data) {
Debug.Assert((indexerExpression != null));
Debug.Assert((indexerExpression.TargetObject != null));
Debug.Assert((indexerExpression.Indexes != null));
indexerExpression.TargetObject.AcceptVisitor(this, data);
foreach (Expression o in indexerExpression.Indexes) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
return null;
}
public virtual object VisitInnerClassTypeReference(InnerClassTypeReference innerClassTypeReference, object data) {
Debug.Assert((innerClassTypeReference != null));
Debug.Assert((innerClassTypeReference.GenericTypes != null));
@ -757,18 +680,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -757,18 +680,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return parenthesizedExpression.Expression.AcceptVisitor(this, data);
}
public virtual object VisitPointerReferenceExpression(PointerReferenceExpression pointerReferenceExpression, object data) {
Debug.Assert((pointerReferenceExpression != null));
Debug.Assert((pointerReferenceExpression.TargetObject != null));
Debug.Assert((pointerReferenceExpression.TypeArguments != null));
pointerReferenceExpression.TargetObject.AcceptVisitor(this, data);
foreach (TypeReference o in pointerReferenceExpression.TypeArguments) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
return null;
}
public virtual object VisitPrimitiveExpression(PrimitiveExpression primitiveExpression, object data) {
Debug.Assert((primitiveExpression != null));
return null;
@ -831,15 +742,12 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -831,15 +742,12 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
public virtual object VisitQueryExpression(QueryExpression queryExpression, object data) {
Debug.Assert((queryExpression != null));
Debug.Assert((queryExpression.FromClause != null));
Debug.Assert((queryExpression.MiddleClauses != null));
Debug.Assert((queryExpression.SelectOrGroupClause != null));
queryExpression.FromClause.AcceptVisitor(this, data);
foreach (QueryExpressionClause o in queryExpression.MiddleClauses) {
Debug.Assert((queryExpression.Clauses != null));
foreach (QueryExpressionClause o in queryExpression.Clauses) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
return queryExpression.SelectOrGroupClause.AcceptVisitor(this, data);
return null;
}
public virtual object VisitQueryExpressionAggregateClause(QueryExpressionAggregateClause queryExpressionAggregateClause, object data) {
@ -1000,16 +908,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -1000,16 +908,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return null;
}
public virtual object VisitQueryExpressionVB(QueryExpressionVB queryExpressionVB, object data) {
Debug.Assert((queryExpressionVB != null));
Debug.Assert((queryExpressionVB.Clauses != null));
foreach (QueryExpressionClause o in queryExpressionVB.Clauses) {
Debug.Assert(o != null);
o.AcceptVisitor(this, data);
}
return null;
}
public virtual object VisitQueryExpressionWhereClause(QueryExpressionWhereClause queryExpressionWhereClause, object data) {
Debug.Assert((queryExpressionWhereClause != null));
Debug.Assert((queryExpressionWhereClause.Condition != null));
@ -1055,20 +953,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -1055,20 +953,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return returnStatement.Expression.AcceptVisitor(this, data);
}
public virtual object VisitSizeOfExpression(SizeOfExpression sizeOfExpression, object data) {
Debug.Assert((sizeOfExpression != null));
Debug.Assert((sizeOfExpression.TypeReference != null));
return sizeOfExpression.TypeReference.AcceptVisitor(this, data);
}
public virtual object VisitStackAllocExpression(StackAllocExpression stackAllocExpression, object data) {
Debug.Assert((stackAllocExpression != null));
Debug.Assert((stackAllocExpression.TypeReference != null));
Debug.Assert((stackAllocExpression.Expression != null));
stackAllocExpression.TypeReference.AcceptVisitor(this, data);
return stackAllocExpression.Expression.AcceptVisitor(this, data);
}
public virtual object VisitStopStatement(StopStatement stopStatement, object data) {
Debug.Assert((stopStatement != null));
return null;
@ -1191,24 +1075,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -1191,24 +1075,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return unaryOperatorExpression.Expression.AcceptVisitor(this, data);
}
public virtual object VisitUncheckedExpression(UncheckedExpression uncheckedExpression, object data) {
Debug.Assert((uncheckedExpression != null));
Debug.Assert((uncheckedExpression.Expression != null));
return uncheckedExpression.Expression.AcceptVisitor(this, data);
}
public virtual object VisitUncheckedStatement(UncheckedStatement uncheckedStatement, object data) {
Debug.Assert((uncheckedStatement != null));
Debug.Assert((uncheckedStatement.Block != null));
return uncheckedStatement.Block.AcceptVisitor(this, data);
}
public virtual object VisitUnsafeStatement(UnsafeStatement unsafeStatement, object data) {
Debug.Assert((unsafeStatement != null));
Debug.Assert((unsafeStatement.Block != null));
return unsafeStatement.Block.AcceptVisitor(this, data);
}
public virtual object VisitUsing(Using @using, object data) {
Debug.Assert((@using != null));
Debug.Assert((@using.Alias != null));
@ -1297,11 +1163,5 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -1297,11 +1163,5 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
Debug.Assert((xmlMemberAccessExpression.TargetObject != null));
return xmlMemberAccessExpression.TargetObject.AcceptVisitor(this, data);
}
public virtual object VisitYieldStatement(YieldStatement yieldStatement, object data) {
Debug.Assert((yieldStatement != null));
Debug.Assert((yieldStatement.Statement != null));
return yieldStatement.Statement.AcceptVisitor(this, data);
}
}
}

243
VB/Project/Visitors/AbstractAstTransformer.cs

@ -199,11 +199,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -199,11 +199,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return null;
}
public virtual object VisitBreakStatement(BreakStatement breakStatement, object data) {
Debug.Assert((breakStatement != null));
return null;
}
public virtual object VisitCaseLabel(CaseLabel caseLabel, object data) {
Debug.Assert((caseLabel != null));
Debug.Assert((caseLabel.Label != null));
@ -247,24 +242,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -247,24 +242,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return null;
}
public virtual object VisitCheckedExpression(CheckedExpression checkedExpression, object data) {
Debug.Assert((checkedExpression != null));
Debug.Assert((checkedExpression.Expression != null));
nodeStack.Push(checkedExpression.Expression);
checkedExpression.Expression.AcceptVisitor(this, data);
checkedExpression.Expression = ((Expression)(nodeStack.Pop()));
return null;
}
public virtual object VisitCheckedStatement(CheckedStatement checkedStatement, object data) {
Debug.Assert((checkedStatement != null));
Debug.Assert((checkedStatement.Block != null));
nodeStack.Push(checkedStatement.Block);
checkedStatement.Block.AcceptVisitor(this, data);
checkedStatement.Block = ((Statement)(nodeStack.Pop()));
return null;
}
public virtual object VisitClassReferenceExpression(ClassReferenceExpression classReferenceExpression, object data) {
Debug.Assert((classReferenceExpression != null));
return null;
@ -479,27 +456,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -479,27 +456,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return null;
}
public virtual object VisitDestructorDeclaration(DestructorDeclaration destructorDeclaration, object data) {
Debug.Assert((destructorDeclaration != null));
Debug.Assert((destructorDeclaration.Attributes != null));
Debug.Assert((destructorDeclaration.Body != null));
for (int i = 0; i < destructorDeclaration.Attributes.Count; i++) {
AttributeSection o = destructorDeclaration.Attributes[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (AttributeSection)nodeStack.Pop();
if (o == null)
destructorDeclaration.Attributes.RemoveAt(i--);
else
destructorDeclaration.Attributes[i] = o;
}
nodeStack.Push(destructorDeclaration.Body);
destructorDeclaration.Body.AcceptVisitor(this, data);
destructorDeclaration.Body = ((BlockStatement)(nodeStack.Pop()));
return null;
}
public virtual object VisitDirectionExpression(DirectionExpression directionExpression, object data) {
Debug.Assert((directionExpression != null));
Debug.Assert((directionExpression.Expression != null));
@ -535,11 +491,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -535,11 +491,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return null;
}
public virtual object VisitEmptyStatement(EmptyStatement emptyStatement, object data) {
Debug.Assert((emptyStatement != null));
return null;
}
public virtual object VisitEndStatement(EndStatement endStatement, object data) {
Debug.Assert((endStatement != null));
return null;
@ -796,19 +747,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -796,19 +747,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return null;
}
public virtual object VisitFixedStatement(FixedStatement fixedStatement, object data) {
Debug.Assert((fixedStatement != null));
Debug.Assert((fixedStatement.PointerDeclaration != null));
Debug.Assert((fixedStatement.EmbeddedStatement != null));
nodeStack.Push(fixedStatement.PointerDeclaration);
fixedStatement.PointerDeclaration.AcceptVisitor(this, data);
fixedStatement.PointerDeclaration = ((Statement)(nodeStack.Pop()));
nodeStack.Push(fixedStatement.EmbeddedStatement);
fixedStatement.EmbeddedStatement.AcceptVisitor(this, data);
fixedStatement.EmbeddedStatement = ((Statement)(nodeStack.Pop()));
return null;
}
public virtual object VisitForeachStatement(ForeachStatement foreachStatement, object data) {
Debug.Assert((foreachStatement != null));
Debug.Assert((foreachStatement.TypeReference != null));
@ -871,52 +809,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -871,52 +809,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return null;
}
public virtual object VisitForStatement(ForStatement forStatement, object data) {
Debug.Assert((forStatement != null));
Debug.Assert((forStatement.Initializers != null));
Debug.Assert((forStatement.Condition != null));
Debug.Assert((forStatement.Iterator != null));
Debug.Assert((forStatement.EmbeddedStatement != null));
for (int i = 0; i < forStatement.Initializers.Count; i++) {
Statement o = forStatement.Initializers[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (Statement)nodeStack.Pop();
if (o == null)
forStatement.Initializers.RemoveAt(i--);
else
forStatement.Initializers[i] = o;
}
nodeStack.Push(forStatement.Condition);
forStatement.Condition.AcceptVisitor(this, data);
forStatement.Condition = ((Expression)(nodeStack.Pop()));
for (int i = 0; i < forStatement.Iterator.Count; i++) {
Statement o = forStatement.Iterator[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (Statement)nodeStack.Pop();
if (o == null)
forStatement.Iterator.RemoveAt(i--);
else
forStatement.Iterator[i] = o;
}
nodeStack.Push(forStatement.EmbeddedStatement);
forStatement.EmbeddedStatement.AcceptVisitor(this, data);
forStatement.EmbeddedStatement = ((Statement)(nodeStack.Pop()));
return null;
}
public virtual object VisitGotoCaseStatement(GotoCaseStatement gotoCaseStatement, object data) {
Debug.Assert((gotoCaseStatement != null));
Debug.Assert((gotoCaseStatement.Expression != null));
nodeStack.Push(gotoCaseStatement.Expression);
gotoCaseStatement.Expression.AcceptVisitor(this, data);
gotoCaseStatement.Expression = ((Expression)(nodeStack.Pop()));
return null;
}
public virtual object VisitGotoStatement(GotoStatement gotoStatement, object data) {
Debug.Assert((gotoStatement != null));
return null;
@ -984,27 +876,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -984,27 +876,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return null;
}
public virtual object VisitIndexerExpression(IndexerExpression indexerExpression, object data) {
Debug.Assert((indexerExpression != null));
Debug.Assert((indexerExpression.TargetObject != null));
Debug.Assert((indexerExpression.Indexes != null));
nodeStack.Push(indexerExpression.TargetObject);
indexerExpression.TargetObject.AcceptVisitor(this, data);
indexerExpression.TargetObject = ((Expression)(nodeStack.Pop()));
for (int i = 0; i < indexerExpression.Indexes.Count; i++) {
Expression o = indexerExpression.Indexes[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (Expression)nodeStack.Pop();
if (o == null)
indexerExpression.Indexes.RemoveAt(i--);
else
indexerExpression.Indexes[i] = o;
}
return null;
}
public virtual object VisitInnerClassTypeReference(InnerClassTypeReference innerClassTypeReference, object data) {
Debug.Assert((innerClassTypeReference != null));
Debug.Assert((innerClassTypeReference.GenericTypes != null));
@ -1374,27 +1245,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -1374,27 +1245,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return null;
}
public virtual object VisitPointerReferenceExpression(PointerReferenceExpression pointerReferenceExpression, object data) {
Debug.Assert((pointerReferenceExpression != null));
Debug.Assert((pointerReferenceExpression.TargetObject != null));
Debug.Assert((pointerReferenceExpression.TypeArguments != null));
nodeStack.Push(pointerReferenceExpression.TargetObject);
pointerReferenceExpression.TargetObject.AcceptVisitor(this, data);
pointerReferenceExpression.TargetObject = ((Expression)(nodeStack.Pop()));
for (int i = 0; i < pointerReferenceExpression.TypeArguments.Count; i++) {
TypeReference o = pointerReferenceExpression.TypeArguments[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (TypeReference)nodeStack.Pop();
if (o == null)
pointerReferenceExpression.TypeArguments.RemoveAt(i--);
else
pointerReferenceExpression.TypeArguments[i] = o;
}
return null;
}
public virtual object VisitPrimitiveExpression(PrimitiveExpression primitiveExpression, object data) {
Debug.Assert((primitiveExpression != null));
return null;
@ -1513,26 +1363,18 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -1513,26 +1363,18 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
public virtual object VisitQueryExpression(QueryExpression queryExpression, object data) {
Debug.Assert((queryExpression != null));
Debug.Assert((queryExpression.FromClause != null));
Debug.Assert((queryExpression.MiddleClauses != null));
Debug.Assert((queryExpression.SelectOrGroupClause != null));
nodeStack.Push(queryExpression.FromClause);
queryExpression.FromClause.AcceptVisitor(this, data);
queryExpression.FromClause = ((QueryExpressionFromClause)(nodeStack.Pop()));
for (int i = 0; i < queryExpression.MiddleClauses.Count; i++) {
QueryExpressionClause o = queryExpression.MiddleClauses[i];
Debug.Assert((queryExpression.Clauses != null));
for (int i = 0; i < queryExpression.Clauses.Count; i++) {
QueryExpressionClause o = queryExpression.Clauses[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (QueryExpressionClause)nodeStack.Pop();
if (o == null)
queryExpression.MiddleClauses.RemoveAt(i--);
queryExpression.Clauses.RemoveAt(i--);
else
queryExpression.MiddleClauses[i] = o;
queryExpression.Clauses[i] = o;
}
nodeStack.Push(queryExpression.SelectOrGroupClause);
queryExpression.SelectOrGroupClause.AcceptVisitor(this, data);
queryExpression.SelectOrGroupClause = ((QueryExpressionClause)(nodeStack.Pop()));
return null;
}
@ -1808,23 +1650,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -1808,23 +1650,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return null;
}
public virtual object VisitQueryExpressionVB(QueryExpressionVB queryExpressionVB, object data) {
Debug.Assert((queryExpressionVB != null));
Debug.Assert((queryExpressionVB.Clauses != null));
for (int i = 0; i < queryExpressionVB.Clauses.Count; i++) {
QueryExpressionClause o = queryExpressionVB.Clauses[i];
Debug.Assert(o != null);
nodeStack.Push(o);
o.AcceptVisitor(this, data);
o = (QueryExpressionClause)nodeStack.Pop();
if (o == null)
queryExpressionVB.Clauses.RemoveAt(i--);
else
queryExpressionVB.Clauses[i] = o;
}
return null;
}
public virtual object VisitQueryExpressionWhereClause(QueryExpressionWhereClause queryExpressionWhereClause, object data) {
Debug.Assert((queryExpressionWhereClause != null));
Debug.Assert((queryExpressionWhereClause.Condition != null));
@ -1895,28 +1720,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -1895,28 +1720,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return null;
}
public virtual object VisitSizeOfExpression(SizeOfExpression sizeOfExpression, object data) {
Debug.Assert((sizeOfExpression != null));
Debug.Assert((sizeOfExpression.TypeReference != null));
nodeStack.Push(sizeOfExpression.TypeReference);
sizeOfExpression.TypeReference.AcceptVisitor(this, data);
sizeOfExpression.TypeReference = ((TypeReference)(nodeStack.Pop()));
return null;
}
public virtual object VisitStackAllocExpression(StackAllocExpression stackAllocExpression, object data) {
Debug.Assert((stackAllocExpression != null));
Debug.Assert((stackAllocExpression.TypeReference != null));
Debug.Assert((stackAllocExpression.Expression != null));
nodeStack.Push(stackAllocExpression.TypeReference);
stackAllocExpression.TypeReference.AcceptVisitor(this, data);
stackAllocExpression.TypeReference = ((TypeReference)(nodeStack.Pop()));
nodeStack.Push(stackAllocExpression.Expression);
stackAllocExpression.Expression.AcceptVisitor(this, data);
stackAllocExpression.Expression = ((Expression)(nodeStack.Pop()));
return null;
}
public virtual object VisitStopStatement(StopStatement stopStatement, object data) {
Debug.Assert((stopStatement != null));
return null;
@ -2148,33 +1951,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -2148,33 +1951,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return null;
}
public virtual object VisitUncheckedExpression(UncheckedExpression uncheckedExpression, object data) {
Debug.Assert((uncheckedExpression != null));
Debug.Assert((uncheckedExpression.Expression != null));
nodeStack.Push(uncheckedExpression.Expression);
uncheckedExpression.Expression.AcceptVisitor(this, data);
uncheckedExpression.Expression = ((Expression)(nodeStack.Pop()));
return null;
}
public virtual object VisitUncheckedStatement(UncheckedStatement uncheckedStatement, object data) {
Debug.Assert((uncheckedStatement != null));
Debug.Assert((uncheckedStatement.Block != null));
nodeStack.Push(uncheckedStatement.Block);
uncheckedStatement.Block.AcceptVisitor(this, data);
uncheckedStatement.Block = ((Statement)(nodeStack.Pop()));
return null;
}
public virtual object VisitUnsafeStatement(UnsafeStatement unsafeStatement, object data) {
Debug.Assert((unsafeStatement != null));
Debug.Assert((unsafeStatement.Block != null));
nodeStack.Push(unsafeStatement.Block);
unsafeStatement.Block.AcceptVisitor(this, data);
unsafeStatement.Block = ((Statement)(nodeStack.Pop()));
return null;
}
public virtual object VisitUsing(Using @using, object data) {
Debug.Assert((@using != null));
Debug.Assert((@using.Alias != null));
@ -2328,14 +2104,5 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -2328,14 +2104,5 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
xmlMemberAccessExpression.TargetObject = ((Expression)(nodeStack.Pop()));
return null;
}
public virtual object VisitYieldStatement(YieldStatement yieldStatement, object data) {
Debug.Assert((yieldStatement != null));
Debug.Assert((yieldStatement.Statement != null));
nodeStack.Push(yieldStatement.Statement);
yieldStatement.Statement.AcceptVisitor(this, data);
yieldStatement.Statement = ((Statement)(nodeStack.Pop()));
return null;
}
}
}

160
VB/Project/Visitors/CodeDOMOutputVisitor.cs

@ -489,15 +489,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors @@ -489,15 +489,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors
return declStmt;
}
public override object VisitEmptyStatement(EmptyStatement emptyStatement, object data)
{
CodeSnippetStatement emptyStmt = new CodeSnippetStatement();
AddStmt(emptyStmt);
return emptyStmt;
}
public override object VisitReturnStatement(ReturnStatement returnStatement, object data)
{
CodeMethodReturnStatement returnStmt;
@ -722,86 +713,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors @@ -722,86 +713,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors
return forLoop;
}
public override object VisitForStatement(ForStatement forStatement, object data)
{
CodeIterationStatement forLoop = new CodeIterationStatement();
breakableStack.Push(new Breakable());
codeStack.Push(NullStmtCollection);
if (forStatement.Initializers.Count > 0)
{
if (forStatement.Initializers.Count > 1)
{
throw new NotSupportedException("CodeDom does not support Multiple For-Loop Initializer Statements");
}
foreach (object o in forStatement.Initializers)
{
if (o is Expression)
{
forLoop.InitStatement = new CodeExpressionStatement((CodeExpression)((Expression)o).AcceptVisitor(this, data));
}
if (o is Statement)
{
forLoop.InitStatement = (CodeStatement)((Statement)o).AcceptVisitor(this, data);
}
}
}
else
{
// RG: need to handle empty InitStatement
forLoop.InitStatement = new CodeExpressionStatement(new CodeSnippetExpression());
}
if (forStatement.Condition == null) {
forLoop.TestExpression = new CodePrimitiveExpression(true);
} else {
forLoop.TestExpression = (CodeExpression)forStatement.Condition.AcceptVisitor(this, data);
}
codeStack.Push(forLoop.Statements);
forStatement.EmbeddedStatement.AcceptVisitor(this, data);
codeStack.Pop();
if (forStatement.Iterator.Count > 0)
{
if (forStatement.Initializers.Count > 1)
{
throw new NotSupportedException("CodeDom does not support Multiple For-Loop Iterator Statements");
}
foreach (Statement stmt in forStatement.Iterator)
{
forLoop.IncrementStatement = (CodeStatement)stmt.AcceptVisitor(this, data);
}
}
else
{
// RG: need to handle empty IncrementStatement
forLoop.IncrementStatement = new CodeExpressionStatement(new CodeSnippetExpression());
}
codeStack.Pop();
Breakable breakable = breakableStack.Pop();
if (breakable.IsContinue)
{
forLoop.Statements.Add(new CodeSnippetStatement());
forLoop.Statements.Add(new CodeLabeledStatement("continue" + breakable.Id, new CodeExpressionStatement(new CodeSnippetExpression())));
}
AddStmt(forLoop);
if (breakable.IsBreak)
{
AddStmt(new CodeLabeledStatement("break" + breakable.Id, new CodeExpressionStatement(new CodeSnippetExpression())));
}
return forLoop;
}
public override object VisitLabelStatement(LabelStatement labelStatement, object data)
{
@ -939,8 +850,8 @@ namespace ICSharpCode.NRefactory.VB.Visitors @@ -939,8 +850,8 @@ namespace ICSharpCode.NRefactory.VB.Visitors
{
INode stmt = section.Children[i];
if (i == section.Children.Count - 1 && stmt is BreakStatement)
break;
// if (i == section.Children.Count - 1 && stmt is BreakStatement)
// break;
stmt.AcceptVisitor(this, data);
}
@ -958,8 +869,8 @@ namespace ICSharpCode.NRefactory.VB.Visitors @@ -958,8 +869,8 @@ namespace ICSharpCode.NRefactory.VB.Visitors
{
INode stmt = defaultSection.Children[i];
if (i == defaultSection.Children.Count - 1 && stmt is BreakStatement)
break;
// if (i == defaultSection.Children.Count - 1 && stmt is BreakStatement)
// break;
stmt.AcceptVisitor(this, data);
}
@ -1028,11 +939,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors @@ -1028,11 +939,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors
return throwStmt;
}
public override object VisitFixedStatement(FixedStatement fixedStatement, object data)
{
throw new NotSupportedException("CodeDom does not support Fixed Statement");
}
#region Expressions
public override object VisitPrimitiveExpression(PrimitiveExpression primitiveExpression, object data)
{
@ -1437,11 +1343,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors @@ -1437,11 +1343,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors
return new CodeCastExpression(typeRef, (CodeExpression)castExpression.Expression.AcceptVisitor(this, data));
}
public override object VisitIndexerExpression(IndexerExpression indexerExpression, object data)
{
return new CodeIndexerExpression((CodeExpression)indexerExpression.TargetObject.AcceptVisitor(this, data), GetExpressionList(indexerExpression.Indexes));
}
public override object VisitThisReferenceExpression(ThisReferenceExpression thisReferenceExpression, object data)
{
return new CodeThisReferenceExpression();
@ -1477,59 +1378,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors @@ -1477,59 +1378,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors
return parameter;
}
public override object VisitBreakStatement(BreakStatement breakStatement, object data)
{
// RG:
// break;
//
// emulate with:
// goto break1;
//
Breakable breakable = breakableStack.Peek();
breakable.IsBreak = true;
CodeGotoStatement breakStmt = new CodeGotoStatement("break" + breakable.Id);
AddStmt(breakStmt);
return breakStmt;
}
public override object VisitContinueStatement(ContinueStatement continueStatement, object data)
{
// RG:
// continue;
//
// emulate with:
// goto continue1;
//
Breakable breakable = breakableStack.Peek();
// Is continuable?
if (!breakable.AllowContinue)
{
// walk stack to find first continuable item
Breakable[] stack = breakableStack.ToArray();
foreach (Breakable b in stack)
{
if (b.AllowContinue)
{
breakable = b;
break;
}
}
}
breakable.IsContinue = true;
CodeGotoStatement continueStmt = new CodeGotoStatement("continue" + breakable.Id);
AddStmt(continueStmt);
return continueStmt;
}
bool IsField(string reflectionTypeName, string fieldName)
{
return environmentInformationProvider.HasField(reflectionTypeName, 0, fieldName);

39
VB/Project/Visitors/LookupTableVisitor.cs

@ -155,12 +155,13 @@ namespace ICSharpCode.NRefactory.VB.Visitors @@ -155,12 +155,13 @@ namespace ICSharpCode.NRefactory.VB.Visitors
public override object VisitQueryExpressionFromClause(QueryExpressionFromClause fromClause, object data)
{
QueryExpression parent = fromClause.Parent as QueryExpression;
foreach (CollectionRangeVariable variable in fromClause.Sources) {
AddVariable(variable.Type, variable.Identifier,
variable.StartLocation, CurrentEndLocation,
false, true, variable.Expression, null, parent != null && parent.IsQueryContinuation);
}
// TODO : reimplement this!
// QueryExpression parent = fromClause.Parent as QueryExpression;
// foreach (CollectionRangeVariable variable in fromClause.Sources) {
// AddVariable(variable.Type, variable.Identifier,
// variable.StartLocation, CurrentEndLocation,
// false, true, variable.Expression, null, parent != null && parent.IsQueryContinuation);
// }
return base.VisitQueryExpressionFromClause(fromClause, data);
}
@ -213,32 +214,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors @@ -213,32 +214,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors
}
}
public override object VisitFixedStatement(FixedStatement fixedStatement, object data)
{
// uses LocalVariableDeclaration, we just have to put the end location on the stack
if (fixedStatement.EmbeddedStatement.EndLocation.IsEmpty) {
return base.VisitFixedStatement(fixedStatement, data);
} else {
endLocationStack.Push(fixedStatement.EmbeddedStatement.EndLocation);
base.VisitFixedStatement(fixedStatement, data);
endLocationStack.Pop();
return null;
}
}
public override object VisitForStatement(ForStatement forStatement, object data)
{
// uses LocalVariableDeclaration, we just have to put the end location on the stack
if (forStatement.EmbeddedStatement.EndLocation.IsEmpty) {
return base.VisitForStatement(forStatement, data);
} else {
endLocationStack.Push(forStatement.EmbeddedStatement.EndLocation);
base.VisitForStatement(forStatement, data);
endLocationStack.Pop();
return null;
}
}
public override object VisitUsingStatement(UsingStatement usingStatement, object data)
{
// uses LocalVariableDeclaration, we just have to put the end location on the stack

187
VB/Project/Visitors/NodeTrackingAstVisitor.cs

@ -101,13 +101,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -101,13 +101,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return result;
}
public sealed override object VisitBreakStatement(BreakStatement breakStatement, object data) {
this.BeginVisit(breakStatement);
object result = this.TrackedVisitBreakStatement(breakStatement, data);
this.EndVisit(breakStatement);
return result;
}
public sealed override object VisitCaseLabel(CaseLabel caseLabel, object data) {
this.BeginVisit(caseLabel);
object result = this.TrackedVisitCaseLabel(caseLabel, data);
@ -129,20 +122,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -129,20 +122,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return result;
}
public sealed override object VisitCheckedExpression(CheckedExpression checkedExpression, object data) {
this.BeginVisit(checkedExpression);
object result = this.TrackedVisitCheckedExpression(checkedExpression, data);
this.EndVisit(checkedExpression);
return result;
}
public sealed override object VisitCheckedStatement(CheckedStatement checkedStatement, object data) {
this.BeginVisit(checkedStatement);
object result = this.TrackedVisitCheckedStatement(checkedStatement, data);
this.EndVisit(checkedStatement);
return result;
}
public sealed override object VisitClassReferenceExpression(ClassReferenceExpression classReferenceExpression, object data) {
this.BeginVisit(classReferenceExpression);
object result = this.TrackedVisitClassReferenceExpression(classReferenceExpression, data);
@ -220,13 +199,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -220,13 +199,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return result;
}
public sealed override object VisitDestructorDeclaration(DestructorDeclaration destructorDeclaration, object data) {
this.BeginVisit(destructorDeclaration);
object result = this.TrackedVisitDestructorDeclaration(destructorDeclaration, data);
this.EndVisit(destructorDeclaration);
return result;
}
public sealed override object VisitDirectionExpression(DirectionExpression directionExpression, object data) {
this.BeginVisit(directionExpression);
object result = this.TrackedVisitDirectionExpression(directionExpression, data);
@ -248,13 +220,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -248,13 +220,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return result;
}
public sealed override object VisitEmptyStatement(EmptyStatement emptyStatement, object data) {
this.BeginVisit(emptyStatement);
object result = this.TrackedVisitEmptyStatement(emptyStatement, data);
this.EndVisit(emptyStatement);
return result;
}
public sealed override object VisitEndStatement(EndStatement endStatement, object data) {
this.BeginVisit(endStatement);
object result = this.TrackedVisitEndStatement(endStatement, data);
@ -339,13 +304,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -339,13 +304,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return result;
}
public sealed override object VisitFixedStatement(FixedStatement fixedStatement, object data) {
this.BeginVisit(fixedStatement);
object result = this.TrackedVisitFixedStatement(fixedStatement, data);
this.EndVisit(fixedStatement);
return result;
}
public sealed override object VisitForeachStatement(ForeachStatement foreachStatement, object data) {
this.BeginVisit(foreachStatement);
object result = this.TrackedVisitForeachStatement(foreachStatement, data);
@ -360,20 +318,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -360,20 +318,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return result;
}
public sealed override object VisitForStatement(ForStatement forStatement, object data) {
this.BeginVisit(forStatement);
object result = this.TrackedVisitForStatement(forStatement, data);
this.EndVisit(forStatement);
return result;
}
public sealed override object VisitGotoCaseStatement(GotoCaseStatement gotoCaseStatement, object data) {
this.BeginVisit(gotoCaseStatement);
object result = this.TrackedVisitGotoCaseStatement(gotoCaseStatement, data);
this.EndVisit(gotoCaseStatement);
return result;
}
public sealed override object VisitGotoStatement(GotoStatement gotoStatement, object data) {
this.BeginVisit(gotoStatement);
object result = this.TrackedVisitGotoStatement(gotoStatement, data);
@ -395,13 +339,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -395,13 +339,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return result;
}
public sealed override object VisitIndexerExpression(IndexerExpression indexerExpression, object data) {
this.BeginVisit(indexerExpression);
object result = this.TrackedVisitIndexerExpression(indexerExpression, data);
this.EndVisit(indexerExpression);
return result;
}
public sealed override object VisitInnerClassTypeReference(InnerClassTypeReference innerClassTypeReference, object data) {
this.BeginVisit(innerClassTypeReference);
object result = this.TrackedVisitInnerClassTypeReference(innerClassTypeReference, data);
@ -528,13 +465,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -528,13 +465,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return result;
}
public sealed override object VisitPointerReferenceExpression(PointerReferenceExpression pointerReferenceExpression, object data) {
this.BeginVisit(pointerReferenceExpression);
object result = this.TrackedVisitPointerReferenceExpression(pointerReferenceExpression, data);
this.EndVisit(pointerReferenceExpression);
return result;
}
public sealed override object VisitPrimitiveExpression(PrimitiveExpression primitiveExpression, object data) {
this.BeginVisit(primitiveExpression);
object result = this.TrackedVisitPrimitiveExpression(primitiveExpression, data);
@ -682,13 +612,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -682,13 +612,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return result;
}
public sealed override object VisitQueryExpressionVB(QueryExpressionVB queryExpressionVB, object data) {
this.BeginVisit(queryExpressionVB);
object result = this.TrackedVisitQueryExpressionVB(queryExpressionVB, data);
this.EndVisit(queryExpressionVB);
return result;
}
public sealed override object VisitQueryExpressionWhereClause(QueryExpressionWhereClause queryExpressionWhereClause, object data) {
this.BeginVisit(queryExpressionWhereClause);
object result = this.TrackedVisitQueryExpressionWhereClause(queryExpressionWhereClause, data);
@ -731,20 +654,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -731,20 +654,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return result;
}
public sealed override object VisitSizeOfExpression(SizeOfExpression sizeOfExpression, object data) {
this.BeginVisit(sizeOfExpression);
object result = this.TrackedVisitSizeOfExpression(sizeOfExpression, data);
this.EndVisit(sizeOfExpression);
return result;
}
public sealed override object VisitStackAllocExpression(StackAllocExpression stackAllocExpression, object data) {
this.BeginVisit(stackAllocExpression);
object result = this.TrackedVisitStackAllocExpression(stackAllocExpression, data);
this.EndVisit(stackAllocExpression);
return result;
}
public sealed override object VisitStopStatement(StopStatement stopStatement, object data) {
this.BeginVisit(stopStatement);
object result = this.TrackedVisitStopStatement(stopStatement, data);
@ -836,27 +745,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -836,27 +745,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return result;
}
public sealed override object VisitUncheckedExpression(UncheckedExpression uncheckedExpression, object data) {
this.BeginVisit(uncheckedExpression);
object result = this.TrackedVisitUncheckedExpression(uncheckedExpression, data);
this.EndVisit(uncheckedExpression);
return result;
}
public sealed override object VisitUncheckedStatement(UncheckedStatement uncheckedStatement, object data) {
this.BeginVisit(uncheckedStatement);
object result = this.TrackedVisitUncheckedStatement(uncheckedStatement, data);
this.EndVisit(uncheckedStatement);
return result;
}
public sealed override object VisitUnsafeStatement(UnsafeStatement unsafeStatement, object data) {
this.BeginVisit(unsafeStatement);
object result = this.TrackedVisitUnsafeStatement(unsafeStatement, data);
this.EndVisit(unsafeStatement);
return result;
}
public sealed override object VisitUsing(Using @using, object data) {
this.BeginVisit(@using);
object result = this.TrackedVisitUsing(@using, data);
@ -934,13 +822,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -934,13 +822,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return result;
}
public sealed override object VisitYieldStatement(YieldStatement yieldStatement, object data) {
this.BeginVisit(yieldStatement);
object result = this.TrackedVisitYieldStatement(yieldStatement, data);
this.EndVisit(yieldStatement);
return result;
}
public virtual object TrackedVisitAddHandlerStatement(AddHandlerStatement addHandlerStatement, object data) {
return base.VisitAddHandlerStatement(addHandlerStatement, data);
}
@ -981,10 +862,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -981,10 +862,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return base.VisitBlockStatement(blockStatement, data);
}
public virtual object TrackedVisitBreakStatement(BreakStatement breakStatement, object data) {
return base.VisitBreakStatement(breakStatement, data);
}
public virtual object TrackedVisitCaseLabel(CaseLabel caseLabel, object data) {
return base.VisitCaseLabel(caseLabel, data);
}
@ -997,14 +874,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -997,14 +874,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return base.VisitCatchClause(catchClause, data);
}
public virtual object TrackedVisitCheckedExpression(CheckedExpression checkedExpression, object data) {
return base.VisitCheckedExpression(checkedExpression, data);
}
public virtual object TrackedVisitCheckedStatement(CheckedStatement checkedStatement, object data) {
return base.VisitCheckedStatement(checkedStatement, data);
}
public virtual object TrackedVisitClassReferenceExpression(ClassReferenceExpression classReferenceExpression, object data) {
return base.VisitClassReferenceExpression(classReferenceExpression, data);
}
@ -1049,10 +918,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -1049,10 +918,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return base.VisitDelegateDeclaration(delegateDeclaration, data);
}
public virtual object TrackedVisitDestructorDeclaration(DestructorDeclaration destructorDeclaration, object data) {
return base.VisitDestructorDeclaration(destructorDeclaration, data);
}
public virtual object TrackedVisitDirectionExpression(DirectionExpression directionExpression, object data) {
return base.VisitDirectionExpression(directionExpression, data);
}
@ -1065,10 +930,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -1065,10 +930,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return base.VisitElseIfSection(elseIfSection, data);
}
public virtual object TrackedVisitEmptyStatement(EmptyStatement emptyStatement, object data) {
return base.VisitEmptyStatement(emptyStatement, data);
}
public virtual object TrackedVisitEndStatement(EndStatement endStatement, object data) {
return base.VisitEndStatement(endStatement, data);
}
@ -1117,10 +978,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -1117,10 +978,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return base.VisitFieldDeclaration(fieldDeclaration, data);
}
public virtual object TrackedVisitFixedStatement(FixedStatement fixedStatement, object data) {
return base.VisitFixedStatement(fixedStatement, data);
}
public virtual object TrackedVisitForeachStatement(ForeachStatement foreachStatement, object data) {
return base.VisitForeachStatement(foreachStatement, data);
}
@ -1129,14 +986,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -1129,14 +986,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return base.VisitForNextStatement(forNextStatement, data);
}
public virtual object TrackedVisitForStatement(ForStatement forStatement, object data) {
return base.VisitForStatement(forStatement, data);
}
public virtual object TrackedVisitGotoCaseStatement(GotoCaseStatement gotoCaseStatement, object data) {
return base.VisitGotoCaseStatement(gotoCaseStatement, data);
}
public virtual object TrackedVisitGotoStatement(GotoStatement gotoStatement, object data) {
return base.VisitGotoStatement(gotoStatement, data);
}
@ -1149,10 +998,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -1149,10 +998,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return base.VisitIfElseStatement(ifElseStatement, data);
}
public virtual object TrackedVisitIndexerExpression(IndexerExpression indexerExpression, object data) {
return base.VisitIndexerExpression(indexerExpression, data);
}
public virtual object TrackedVisitInnerClassTypeReference(InnerClassTypeReference innerClassTypeReference, object data) {
return base.VisitInnerClassTypeReference(innerClassTypeReference, data);
}
@ -1225,10 +1070,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -1225,10 +1070,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return base.VisitParenthesizedExpression(parenthesizedExpression, data);
}
public virtual object TrackedVisitPointerReferenceExpression(PointerReferenceExpression pointerReferenceExpression, object data) {
return base.VisitPointerReferenceExpression(pointerReferenceExpression, data);
}
public virtual object TrackedVisitPrimitiveExpression(PrimitiveExpression primitiveExpression, object data) {
return base.VisitPrimitiveExpression(primitiveExpression, data);
}
@ -1313,10 +1154,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -1313,10 +1154,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return base.VisitQueryExpressionSelectVBClause(queryExpressionSelectVBClause, data);
}
public virtual object TrackedVisitQueryExpressionVB(QueryExpressionVB queryExpressionVB, object data) {
return base.VisitQueryExpressionVB(queryExpressionVB, data);
}
public virtual object TrackedVisitQueryExpressionWhereClause(QueryExpressionWhereClause queryExpressionWhereClause, object data) {
return base.VisitQueryExpressionWhereClause(queryExpressionWhereClause, data);
}
@ -1341,14 +1178,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -1341,14 +1178,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return base.VisitReturnStatement(returnStatement, data);
}
public virtual object TrackedVisitSizeOfExpression(SizeOfExpression sizeOfExpression, object data) {
return base.VisitSizeOfExpression(sizeOfExpression, data);
}
public virtual object TrackedVisitStackAllocExpression(StackAllocExpression stackAllocExpression, object data) {
return base.VisitStackAllocExpression(stackAllocExpression, data);
}
public virtual object TrackedVisitStopStatement(StopStatement stopStatement, object data) {
return base.VisitStopStatement(stopStatement, data);
}
@ -1401,18 +1230,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -1401,18 +1230,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
return base.VisitUnaryOperatorExpression(unaryOperatorExpression, data);
}
public virtual object TrackedVisitUncheckedExpression(UncheckedExpression uncheckedExpression, object data) {
return base.VisitUncheckedExpression(uncheckedExpression, data);
}
public virtual object TrackedVisitUncheckedStatement(UncheckedStatement uncheckedStatement, object data) {
return base.VisitUncheckedStatement(uncheckedStatement, data);
}
public virtual object TrackedVisitUnsafeStatement(UnsafeStatement unsafeStatement, object data) {
return base.VisitUnsafeStatement(unsafeStatement, data);
}
public virtual object TrackedVisitUsing(Using @using, object data) {
return base.VisitUsing(@using, data);
}
@ -1456,9 +1273,5 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -1456,9 +1273,5 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
public virtual object TrackedVisitXmlMemberAccessExpression(XmlMemberAccessExpression xmlMemberAccessExpression, object data) {
return base.VisitXmlMemberAccessExpression(xmlMemberAccessExpression, data);
}
public virtual object TrackedVisitYieldStatement(YieldStatement yieldStatement, object data) {
return base.VisitYieldStatement(yieldStatement, data);
}
}
}

68
VB/Project/Visitors/NotImplementedAstVisitor.cs

@ -58,10 +58,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -58,10 +58,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
throw new global::System.NotImplementedException("BlockStatement");
}
public virtual object VisitBreakStatement(BreakStatement breakStatement, object data) {
throw new global::System.NotImplementedException("BreakStatement");
}
public virtual object VisitCaseLabel(CaseLabel caseLabel, object data) {
throw new global::System.NotImplementedException("CaseLabel");
}
@ -74,14 +70,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -74,14 +70,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
throw new global::System.NotImplementedException("CatchClause");
}
public virtual object VisitCheckedExpression(CheckedExpression checkedExpression, object data) {
throw new global::System.NotImplementedException("CheckedExpression");
}
public virtual object VisitCheckedStatement(CheckedStatement checkedStatement, object data) {
throw new global::System.NotImplementedException("CheckedStatement");
}
public virtual object VisitClassReferenceExpression(ClassReferenceExpression classReferenceExpression, object data) {
throw new global::System.NotImplementedException("ClassReferenceExpression");
}
@ -126,10 +114,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -126,10 +114,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
throw new global::System.NotImplementedException("DelegateDeclaration");
}
public virtual object VisitDestructorDeclaration(DestructorDeclaration destructorDeclaration, object data) {
throw new global::System.NotImplementedException("DestructorDeclaration");
}
public virtual object VisitDirectionExpression(DirectionExpression directionExpression, object data) {
throw new global::System.NotImplementedException("DirectionExpression");
}
@ -142,10 +126,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -142,10 +126,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
throw new global::System.NotImplementedException("ElseIfSection");
}
public virtual object VisitEmptyStatement(EmptyStatement emptyStatement, object data) {
throw new global::System.NotImplementedException("EmptyStatement");
}
public virtual object VisitEndStatement(EndStatement endStatement, object data) {
throw new global::System.NotImplementedException("EndStatement");
}
@ -194,10 +174,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -194,10 +174,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
throw new global::System.NotImplementedException("FieldDeclaration");
}
public virtual object VisitFixedStatement(FixedStatement fixedStatement, object data) {
throw new global::System.NotImplementedException("FixedStatement");
}
public virtual object VisitForeachStatement(ForeachStatement foreachStatement, object data) {
throw new global::System.NotImplementedException("ForeachStatement");
}
@ -206,14 +182,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -206,14 +182,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
throw new global::System.NotImplementedException("ForNextStatement");
}
public virtual object VisitForStatement(ForStatement forStatement, object data) {
throw new global::System.NotImplementedException("ForStatement");
}
public virtual object VisitGotoCaseStatement(GotoCaseStatement gotoCaseStatement, object data) {
throw new global::System.NotImplementedException("GotoCaseStatement");
}
public virtual object VisitGotoStatement(GotoStatement gotoStatement, object data) {
throw new global::System.NotImplementedException("GotoStatement");
}
@ -226,10 +194,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -226,10 +194,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
throw new global::System.NotImplementedException("IfElseStatement");
}
public virtual object VisitIndexerExpression(IndexerExpression indexerExpression, object data) {
throw new global::System.NotImplementedException("IndexerExpression");
}
public virtual object VisitInnerClassTypeReference(InnerClassTypeReference innerClassTypeReference, object data) {
throw new global::System.NotImplementedException("InnerClassTypeReference");
}
@ -302,10 +266,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -302,10 +266,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
throw new global::System.NotImplementedException("ParenthesizedExpression");
}
public virtual object VisitPointerReferenceExpression(PointerReferenceExpression pointerReferenceExpression, object data) {
throw new global::System.NotImplementedException("PointerReferenceExpression");
}
public virtual object VisitPrimitiveExpression(PrimitiveExpression primitiveExpression, object data) {
throw new global::System.NotImplementedException("PrimitiveExpression");
}
@ -390,10 +350,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -390,10 +350,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
throw new global::System.NotImplementedException("QueryExpressionSelectVBClause");
}
public virtual object VisitQueryExpressionVB(QueryExpressionVB queryExpressionVB, object data) {
throw new global::System.NotImplementedException("QueryExpressionVB");
}
public virtual object VisitQueryExpressionWhereClause(QueryExpressionWhereClause queryExpressionWhereClause, object data) {
throw new global::System.NotImplementedException("QueryExpressionWhereClause");
}
@ -418,14 +374,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -418,14 +374,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
throw new global::System.NotImplementedException("ReturnStatement");
}
public virtual object VisitSizeOfExpression(SizeOfExpression sizeOfExpression, object data) {
throw new global::System.NotImplementedException("SizeOfExpression");
}
public virtual object VisitStackAllocExpression(StackAllocExpression stackAllocExpression, object data) {
throw new global::System.NotImplementedException("StackAllocExpression");
}
public virtual object VisitStopStatement(StopStatement stopStatement, object data) {
throw new global::System.NotImplementedException("StopStatement");
}
@ -478,18 +426,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -478,18 +426,6 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
throw new global::System.NotImplementedException("UnaryOperatorExpression");
}
public virtual object VisitUncheckedExpression(UncheckedExpression uncheckedExpression, object data) {
throw new global::System.NotImplementedException("UncheckedExpression");
}
public virtual object VisitUncheckedStatement(UncheckedStatement uncheckedStatement, object data) {
throw new global::System.NotImplementedException("UncheckedStatement");
}
public virtual object VisitUnsafeStatement(UnsafeStatement unsafeStatement, object data) {
throw new global::System.NotImplementedException("UnsafeStatement");
}
public virtual object VisitUsing(Using @using, object data) {
throw new global::System.NotImplementedException("Using");
}
@ -533,9 +469,5 @@ namespace ICSharpCode.NRefactory.VB.Visitors { @@ -533,9 +469,5 @@ namespace ICSharpCode.NRefactory.VB.Visitors {
public virtual object VisitXmlMemberAccessExpression(XmlMemberAccessExpression xmlMemberAccessExpression, object data) {
throw new global::System.NotImplementedException("XmlMemberAccessExpression");
}
public virtual object VisitYieldStatement(YieldStatement yieldStatement, object data) {
throw new global::System.NotImplementedException("YieldStatement");
}
}
}

17
VB/Test/ICSharpCode.NRefactory.VB.Tests.csproj

@ -70,7 +70,6 @@ @@ -70,7 +70,6 @@
<Compile Include="Parser\Expressions\AddressOfExpressionTests.cs" />
<Compile Include="Parser\Expressions\LambdaExpressionTests.cs" />
<Compile Include="Parser\Expressions\QueryExpressionTests.cs" />
<Compile Include="Parser\Expressions\QueryExpressionVBTests.cs" />
<Compile Include="Parser\Expressions\XmlExpressionTests.cs" />
<Compile Include="Parser\Expressions\XmlMemberAccessExpressionTests.cs" />
<Compile Include="Parser\GlobalScope\AttributeSectionTests.cs" />
@ -90,13 +89,7 @@ @@ -90,13 +89,7 @@
<Compile Include="Parser\Expressions\ArrayCreateExpressionTests.cs" />
<Compile Include="Parser\Expressions\ObjectCreateExpressionTests.cs" />
<Compile Include="Parser\GlobalScope\DelegateDeclarationTests.cs" />
<Compile Include="Parser\Expressions\CheckedExpressionTests.cs" />
<Compile Include="Parser\Expressions\UncheckedExpressionTests.cs" />
<Compile Include="Parser\Expressions\ConditionalExpressionTests.cs" />
<Compile Include="Parser\Expressions\PointerReferenceExpressionTests.cs" />
<Compile Include="Parser\Expressions\IndexerExpressionTests.cs" />
<Compile Include="Parser\Expressions\SizeOfExpressionTests.cs" />
<Compile Include="Parser\Expressions\StackAllocExpressionTests.cs" />
<Compile Include="Parser\GlobalScope\UsingDeclarationTests.cs" />
<Compile Include="Parser\GlobalScope\TypeDeclarationTests.cs" />
<Compile Include="Parser\LocationAssignmentCheckVisitor.cs" />
@ -106,16 +99,11 @@ @@ -106,16 +99,11 @@
<Compile Include="Parser\TypeLevel\FieldDeclarationTests.cs" />
<Compile Include="Parser\TypeLevel\MethodDeclarationTests.cs" />
<Compile Include="Parser\TypeLevel\PropertyDeclarationTests.cs" />
<Compile Include="Parser\TypeLevel\DestructorDeclarationTests.cs" />
<Compile Include="Parser\TypeLevel\IndexerDeclarationTests.cs" />
<Compile Include="Parser\TypeLevel\OperatorDeclarationTests.cs" />
<Compile Include="Parser\Statements\BlockStatementTests.cs" />
<Compile Include="Parser\Statements\BreakStatementTests.cs" />
<Compile Include="Parser\Statements\ContinueStatementTests.cs" />
<Compile Include="Parser\Statements\EmptyStatementTests.cs" />
<Compile Include="Parser\Statements\DoLoopStatementTests.cs" />
<Compile Include="Parser\Statements\ForeachStatementTests.cs" />
<Compile Include="Parser\Statements\ForStatementTests.cs" />
<Compile Include="Parser\Statements\GotoStatementTests.cs" />
<Compile Include="Parser\Statements\IfElseStatementTests.cs" />
<Compile Include="Parser\Statements\LabelStatementTests.cs" />
@ -126,11 +114,6 @@ @@ -126,11 +114,6 @@
<Compile Include="Parser\Statements\SwitchStatementTests.cs" />
<Compile Include="Parser\Statements\ThrowStatementTests.cs" />
<Compile Include="Parser\Statements\TryCatchStatementTests.cs" />
<Compile Include="Parser\Statements\CheckedStatementTests.cs" />
<Compile Include="Parser\Statements\UncheckedStatementTests.cs" />
<Compile Include="Parser\Statements\UnsafeStatementTests.cs" />
<Compile Include="Parser\Statements\FixedStatementTests.cs" />
<Compile Include="Parser\Statements\GotoCaseStatementTests.cs" />
<Compile Include="Parser\Statements\UsingStatementTests.cs" />
<Compile Include="Parser\Expressions\ClassReferenceExpressionTests.cs" />
<Compile Include="Parser\Expressions\TypeOfIsExpressionTests.cs" />

1
VB/Test/Lexer/LexerTests.cs

@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
using System;
using System.IO;
using NUnit.Framework;
using ICSharpCode.NRefactory.VB;
using ICSharpCode.NRefactory.VB.Parser;
using ICSharpCode.NRefactory.VB.PrettyPrinter;

4
VB/Test/Parser/Expressions/AddressOfExpressionTests.cs

@ -12,8 +12,6 @@ namespace ICSharpCode.NRefactory.VB.Tests.Dom @@ -12,8 +12,6 @@ namespace ICSharpCode.NRefactory.VB.Tests.Dom
[TestFixture]
public class AddressOfExpressionTests
{
#region VB.NET
[Test]
public void SimpleAddressOfExpressionTest()
{
@ -43,7 +41,5 @@ namespace ICSharpCode.NRefactory.VB.Tests.Dom @@ -43,7 +41,5 @@ namespace ICSharpCode.NRefactory.VB.Tests.Dom
Assert.AreEqual("t", ((MemberReferenceExpression)ae.Expression).MemberName, "t");
Assert.IsInstanceOf(typeof(ThisReferenceExpression), ((MemberReferenceExpression)ae.Expression).TargetObject);
}
#endregion
}
}

7
VB/Test/Parser/Expressions/ArrayCreateExpressionTests.cs

@ -12,10 +12,8 @@ namespace ICSharpCode.NRefactory.VB.Tests.Dom @@ -12,10 +12,8 @@ namespace ICSharpCode.NRefactory.VB.Tests.Dom
[TestFixture]
public class ArrayCreateExpressionTests
{
#region VB.NET
[Test]
public void VBNetArrayCreateExpressionTest1()
public void ArrayCreateExpressionTest1()
{
ArrayCreateExpression ace = ParseUtilVBNet.ParseExpression<ArrayCreateExpression>("new Integer() {1, 2, 3, 4}");
@ -25,7 +23,7 @@ namespace ICSharpCode.NRefactory.VB.Tests.Dom @@ -25,7 +23,7 @@ namespace ICSharpCode.NRefactory.VB.Tests.Dom
}
[Test]
public void VBNetArrayCreateExpressionTest2()
public void ArrayCreateExpressionTest2()
{
ArrayCreateExpression ace = ParseUtilVBNet.ParseExpression<ArrayCreateExpression>("New Integer(0 To 5){0, 1, 2, 3, 4, 5}");
@ -34,6 +32,5 @@ namespace ICSharpCode.NRefactory.VB.Tests.Dom @@ -34,6 +32,5 @@ namespace ICSharpCode.NRefactory.VB.Tests.Dom
Assert.AreEqual(5, (ace.Arguments[0] as PrimitiveExpression).Value);
Assert.AreEqual(new int[] {0}, ace.CreateType.RankSpecifier);
}
#endregion
}
}

36
VB/Test/Parser/Expressions/AssignmentExpressionTests.cs

@ -12,8 +12,7 @@ namespace ICSharpCode.NRefactory.VB.Tests.Dom @@ -12,8 +12,7 @@ namespace ICSharpCode.NRefactory.VB.Tests.Dom
[TestFixture]
public class AssignmentExpressionTests
{
#region VB.NET
void VBNetTestAssignmentExpression(string program, AssignmentOperatorType op)
void TestAssignmentExpression(string program, AssignmentOperatorType op)
{
ExpressionStatement se = ParseUtilVBNet.ParseStatement<ExpressionStatement>(program);
AssignmentExpression ae = se.Expression as AssignmentExpression;
@ -24,52 +23,51 @@ namespace ICSharpCode.NRefactory.VB.Tests.Dom @@ -24,52 +23,51 @@ namespace ICSharpCode.NRefactory.VB.Tests.Dom
}
[Test]
public void VBNetAssignTest()
public void AssignTest()
{
VBNetTestAssignmentExpression("a = b", AssignmentOperatorType.Assign);
TestAssignmentExpression("a = b", AssignmentOperatorType.Assign);
}
[Test]
public void VBNetAddTest()
public void AddTest()
{
VBNetTestAssignmentExpression("a += b", AssignmentOperatorType.Add);
TestAssignmentExpression("a += b", AssignmentOperatorType.Add);
}
[Test]
public void VBNetSubtractTest()
public void SubtractTest()
{
VBNetTestAssignmentExpression("a -= b", AssignmentOperatorType.Subtract);
TestAssignmentExpression("a -= b", AssignmentOperatorType.Subtract);
}
[Test]
public void VBNetMultiplyTest()
public void MultiplyTest()
{
VBNetTestAssignmentExpression("a *= b", AssignmentOperatorType.Multiply);
TestAssignmentExpression("a *= b", AssignmentOperatorType.Multiply);
}
[Test]
public void VBNetDivideTest()
public void DivideTest()
{
VBNetTestAssignmentExpression("a /= b", AssignmentOperatorType.Divide);
TestAssignmentExpression("a /= b", AssignmentOperatorType.Divide);
}
[Test]
public void VBNetExclusiveOrTest()
public void ExclusiveOrTest()
{
VBNetTestAssignmentExpression("a ^= b", AssignmentOperatorType.Power);
TestAssignmentExpression("a ^= b", AssignmentOperatorType.Power);
}
[Test]
public void VBNetStringConcatTest()
public void StringConcatTest()
{
VBNetTestAssignmentExpression("a &= b", AssignmentOperatorType.ConcatString);
TestAssignmentExpression("a &= b", AssignmentOperatorType.ConcatString);
}
[Test]
public void VBNetModulusTest()
public void ModulusTest()
{
VBNetTestAssignmentExpression("a \\= b", AssignmentOperatorType.DivideInteger);
TestAssignmentExpression("a \\= b", AssignmentOperatorType.DivideInteger);
}
#endregion
}
}

19
VB/Test/Parser/Expressions/CheckedExpressionTests.cs

@ -1,19 +0,0 @@ @@ -1,19 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.IO;
using NUnit.Framework;
using ICSharpCode.NRefactory.VB.Parser;
using ICSharpCode.NRefactory.VB.Dom;
namespace ICSharpCode.NRefactory.VB.Tests.Dom
{
[TestFixture]
public class CheckedExpressionTests
{
#region VB.NET
// No VB.NET representation
#endregion
}
}

19
VB/Test/Parser/Expressions/IndexerExpressionTests.cs

@ -1,19 +0,0 @@ @@ -1,19 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.IO;
using NUnit.Framework;
using ICSharpCode.NRefactory.VB.Parser;
using ICSharpCode.NRefactory.VB.Dom;
namespace ICSharpCode.NRefactory.VB.Tests.Dom
{
[TestFixture]
public class IndexerExpressionTests
{
#region VB.NET
// No VB.NET representation
#endregion
}
}

19
VB/Test/Parser/Expressions/PointerReferenceExpressionTests.cs

@ -1,19 +0,0 @@ @@ -1,19 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.IO;
using NUnit.Framework;
using ICSharpCode.NRefactory.VB.Parser;
using ICSharpCode.NRefactory.VB.Dom;
namespace ICSharpCode.NRefactory.VB.Tests.Dom
{
[TestFixture]
public class PointerReferenceExpressionTests
{
#region VB.NET
// No VB.NET representation
#endregion
}
}

617
VB/Test/Parser/Expressions/QueryExpressionTests.cs

@ -14,5 +14,622 @@ namespace ICSharpCode.NRefactory.VB.Tests.Dom @@ -14,5 +14,622 @@ namespace ICSharpCode.NRefactory.VB.Tests.Dom
[TestFixture]
public class QueryExpressionTests
{
void RunTest(string expression, int expectedCount, Action<QueryExpression> constraint, params Type[] expectedTypes)
{
var expr = ParseUtilVBNet.ParseExpression<QueryExpression>(expression);
Assert.AreEqual(expectedCount, expr.Clauses.Count);
for (int i = 0; i < expectedTypes.Length; i++) {
Assert.IsTrue(expectedTypes[i] == expr.Clauses[i].GetType());
}
constraint(expr);
}
[Test]
public void SimpleQueryTest()
{
RunTest("From o In db.Orders Select o.OrderID", 2,
expr => {
var fromClause = expr.Clauses[0] as QueryExpressionFromClause;
var selectClause = expr.Clauses[1] as QueryExpressionSelectVBClause;
Assert.AreEqual(1, fromClause.Sources.Count);
var var1 = fromClause.Sources.First();
Assert.AreEqual("o", var1.Identifier);
Assert.IsTrue(var1.Expression is MemberReferenceExpression);
var inExpr = var1.Expression as MemberReferenceExpression;
Assert.IsTrue(inExpr.MemberName == "Orders" && inExpr.TargetObject is IdentifierExpression && (inExpr.TargetObject as IdentifierExpression).Identifier == "db");
Assert.AreEqual(1, selectClause.Variables.Count);
Assert.IsTrue(selectClause.Variables[0].Expression is MemberReferenceExpression);
var member = selectClause.Variables[0].Expression as MemberReferenceExpression;
Assert.IsTrue(member.MemberName == "OrderID" && member.TargetObject is IdentifierExpression && (member.TargetObject as IdentifierExpression).Identifier == "o");
},
typeof(QueryExpressionFromClause), typeof(QueryExpressionSelectVBClause)
);
}
[Test]
public void SkipTakeQueryTest()
{
RunTest("From o In db.Orders Select o.OrderID Skip 10 Take 5", 4,
expr => {
var fromClause = expr.Clauses[0] as QueryExpressionFromClause;
var selectClause = expr.Clauses[1] as QueryExpressionSelectVBClause;
var skipClause = expr.Clauses[2] as QueryExpressionPartitionVBClause;
var takeClause = expr.Clauses[3] as QueryExpressionPartitionVBClause;
Assert.AreEqual(1, fromClause.Sources.Count);
var var1 = fromClause.Sources.First();
Assert.AreEqual("o", var1.Identifier);
Assert.IsTrue(var1.Expression is MemberReferenceExpression);
var inExpr = var1.Expression as MemberReferenceExpression;
Assert.IsTrue(inExpr.MemberName == "Orders" && inExpr.TargetObject is IdentifierExpression && (inExpr.TargetObject as IdentifierExpression).Identifier == "db");
Assert.AreEqual(1, selectClause.Variables.Count);
Assert.IsTrue(selectClause.Variables[0].Expression is MemberReferenceExpression);
var member = selectClause.Variables[0].Expression as MemberReferenceExpression;
Assert.IsTrue(member.MemberName == "OrderID" && member.TargetObject is IdentifierExpression && (member.TargetObject as IdentifierExpression).Identifier == "o");
Assert.AreEqual(QueryExpressionPartitionType.Skip, skipClause.PartitionType);
Assert.IsTrue(skipClause.Expression is PrimitiveExpression &&
(skipClause.Expression as PrimitiveExpression).StringValue == "10");
Assert.AreEqual(QueryExpressionPartitionType.Take, takeClause.PartitionType);
Assert.IsTrue(takeClause.Expression is PrimitiveExpression &&
(takeClause.Expression as PrimitiveExpression).StringValue == "5");
},
typeof(QueryExpressionFromClause), typeof(QueryExpressionSelectVBClause),
typeof(QueryExpressionPartitionVBClause), typeof(QueryExpressionPartitionVBClause)
);
}
[Test]
public void SkipWhileTakeWhileQueryTest()
{
RunTest("From o In db.Orders Select o.OrderID Skip While o.OrderId > 2 Take While o.OrderId < 5", 4,
expr => {
var fromClause = expr.Clauses[0] as QueryExpressionFromClause;
var selectClause = expr.Clauses[1] as QueryExpressionSelectVBClause;
var skipClause = expr.Clauses[2] as QueryExpressionPartitionVBClause;
var takeClause = expr.Clauses[3] as QueryExpressionPartitionVBClause;
Assert.AreEqual(1, fromClause.Sources.Count);
var var1 = fromClause.Sources.First();
Assert.AreEqual("o", var1.Identifier);
Assert.IsTrue(var1.Expression is MemberReferenceExpression);
var inExpr = var1.Expression as MemberReferenceExpression;
Assert.IsTrue(inExpr.MemberName == "Orders" && inExpr.TargetObject is IdentifierExpression && (inExpr.TargetObject as IdentifierExpression).Identifier == "db");
Assert.AreEqual(1, selectClause.Variables.Count);
Assert.IsTrue(selectClause.Variables[0].Expression is MemberReferenceExpression);
var member = selectClause.Variables[0].Expression as MemberReferenceExpression;
Assert.IsTrue(member.MemberName == "OrderID" && member.TargetObject is IdentifierExpression && (member.TargetObject as IdentifierExpression).Identifier == "o");
Assert.AreEqual(QueryExpressionPartitionType.SkipWhile, skipClause.PartitionType);
Assert.IsTrue(skipClause.Expression is BinaryOperatorExpression);
Assert.AreEqual(QueryExpressionPartitionType.TakeWhile, takeClause.PartitionType);
Assert.IsTrue(takeClause.Expression is BinaryOperatorExpression);
},
typeof(QueryExpressionFromClause), typeof(QueryExpressionSelectVBClause),
typeof(QueryExpressionPartitionVBClause), typeof(QueryExpressionPartitionVBClause)
);
}
[Test]
public void MultipleValuesSelectTest()
{
RunTest(@"From i In list Select i, x2 = i^2",
2, expr => {
var fromClause = expr.Clauses[0] as QueryExpressionFromClause;
var selectClause = expr.Clauses[1] as QueryExpressionSelectVBClause;
Assert.AreEqual(1, fromClause.Sources.Count);
var var1 = fromClause.Sources.First();
Assert.AreEqual("i", var1.Identifier);
Assert.IsTrue(var1.Expression is IdentifierExpression);
Assert.IsTrue((var1.Expression as IdentifierExpression).Identifier == "list");
Assert.AreEqual(2, selectClause.Variables.Count);
var selectExpr1 = selectClause.Variables[0];
var selectExpr2 = selectClause.Variables[1];
Assert.IsEmpty(selectExpr1.Identifier);
Assert.IsTrue(selectExpr1.Expression is IdentifierExpression &&
(selectExpr1.Expression as IdentifierExpression).Identifier == "i");
Assert.AreEqual("x2", selectExpr2.Identifier);
Assert.IsTrue(selectExpr2.Type.IsNull);
Assert.IsTrue(selectExpr2.Expression is BinaryOperatorExpression);
var binOp = selectExpr2.Expression as BinaryOperatorExpression;
Assert.AreEqual(BinaryOperatorType.Power, binOp.Op);
Assert.IsTrue(binOp.Left is IdentifierExpression && (binOp.Left as IdentifierExpression).Identifier == "i");
Assert.IsTrue(binOp.Right is PrimitiveExpression && (binOp.Right as PrimitiveExpression).StringValue == "2");
},
typeof(QueryExpressionFromClause), typeof(QueryExpressionSelectVBClause)
);
}
[Test]
public void GroupTest()
{
Action<QueryExpression> constraint = expr => {
var fromClause = expr.Clauses[0] as QueryExpressionFromClause;
var groupClause = expr.Clauses[1] as QueryExpressionGroupVBClause;
var selectClause = expr.Clauses[2] as QueryExpressionSelectVBClause;
Assert.AreEqual(1, fromClause.Sources.Count);
var fromVar1 = fromClause.Sources.First();
Assert.AreEqual("p", fromVar1.Identifier);
Assert.IsTrue(fromVar1.Expression is IdentifierExpression);
Assert.IsTrue((fromVar1.Expression as IdentifierExpression).Identifier == "products");
Assert.AreEqual(1, groupClause.GroupVariables.Count);
Assert.AreEqual(1, groupClause.ByVariables.Count);
Assert.AreEqual(1, groupClause.IntoVariables.Count);
var gv = groupClause.GroupVariables.First();
var bv = groupClause.ByVariables.First();
var iv = groupClause.IntoVariables.First();
Assert.IsTrue(gv.Expression is IdentifierExpression && (gv.Expression as IdentifierExpression).Identifier == "p");
Assert.IsTrue(bv.Expression is MemberReferenceExpression &&
(bv.Expression as MemberReferenceExpression).MemberName == "Category");
Assert.IsTrue((bv.Expression as MemberReferenceExpression).TargetObject is IdentifierExpression &&
((bv.Expression as MemberReferenceExpression).TargetObject as IdentifierExpression).Identifier == "p");
Assert.IsTrue(iv.Expression is IdentifierExpression &&
(iv.Expression as IdentifierExpression).Identifier == "Group");
Assert.AreEqual(2, selectClause.Variables.Count);
var var1 = selectClause.Variables.First();
var var2 = selectClause.Variables.Skip(1).First();
Assert.IsTrue(var1.Expression is IdentifierExpression &&
(var1.Expression as IdentifierExpression).Identifier == "Category");
Assert.IsTrue(var2.Expression is InvocationExpression &&
(var2.Expression as InvocationExpression).TargetObject is MemberReferenceExpression &&
((var2.Expression as InvocationExpression).TargetObject as MemberReferenceExpression).MemberName == "Average" &&
((var2.Expression as InvocationExpression).TargetObject as MemberReferenceExpression).TargetObject is IdentifierExpression &&
(((var2.Expression as InvocationExpression).TargetObject as MemberReferenceExpression).TargetObject as IdentifierExpression).Identifier == "Group");
};
RunTest(@"From p In products _
Group p By p.Category Into Group _
Select Category, AveragePrice = Group.Average(Function(p) p.UnitPrice)", 3, constraint,
typeof(QueryExpressionFromClause), typeof(QueryExpressionGroupVBClause), typeof(QueryExpressionSelectVBClause));
}
[Test]
public void LetTest()
{
Action<QueryExpression> constraint = expr => {
var fromClause = expr.Clauses[0] as QueryExpressionFromClause;
var groupClause = expr.Clauses[1] as QueryExpressionGroupVBClause;
var letClause = expr.Clauses[2] as QueryExpressionLetVBClause;
var selectClause = expr.Clauses[3] as QueryExpressionSelectVBClause;
// From
Assert.AreEqual(1, fromClause.Sources.Count);
var fromVar1 = fromClause.Sources.First();
Assert.AreEqual("p", fromVar1.Identifier);
Assert.IsTrue(fromVar1.Expression is IdentifierExpression);
Assert.IsTrue((fromVar1.Expression as IdentifierExpression).Identifier == "products");
// Group By Into
Assert.AreEqual(1, groupClause.GroupVariables.Count);
Assert.AreEqual(1, groupClause.ByVariables.Count);
Assert.AreEqual(1, groupClause.IntoVariables.Count);
var gv = groupClause.GroupVariables.First();
var bv = groupClause.ByVariables.First();
var iv = groupClause.IntoVariables.First();
Assert.IsTrue(gv.Expression is IdentifierExpression && (gv.Expression as IdentifierExpression).Identifier == "p");
CheckMemberReferenceExpression(bv.Expression, "Category", "p");
Assert.IsTrue(iv.Expression is IdentifierExpression &&
(iv.Expression as IdentifierExpression).Identifier == "Group");
// Let
Assert.AreEqual(1, letClause.Variables.Count);
var letVariable = letClause.Variables.First();
Assert.AreEqual("minPrice", letVariable.Identifier);
Assert.IsTrue(letVariable.Expression is InvocationExpression);
CheckMemberReferenceExpression((letVariable.Expression as InvocationExpression).TargetObject, "Min", "Group");
// Select
Assert.AreEqual(2, selectClause.Variables.Count);
var var1 = selectClause.Variables.First();
var var2 = selectClause.Variables.Skip(1).First();
Assert.IsTrue(var1.Expression is IdentifierExpression &&
(var1.Expression as IdentifierExpression).Identifier == "Category");
Assert.IsTrue(var2.Expression is InvocationExpression);
CheckMemberReferenceExpression((var2.Expression as InvocationExpression).TargetObject, "Where", "Group");
};
RunTest(@"From p In products _
Group p By p.Category Into Group _
Let minPrice = Group.Min(Function(p) p.UnitPrice) _
Select Category, CheapestProducts = Group.Where(Function(p) p.UnitPrice = minPrice)", 4, constraint,
typeof(QueryExpressionFromClause), typeof(QueryExpressionGroupVBClause), typeof(QueryExpressionLetVBClause), typeof(QueryExpressionSelectVBClause));
}
[Test]
public void CrossJoinTest()
{
Action<QueryExpression> constraint = expr => {
var fromClause = expr.Clauses[0] as QueryExpressionFromClause;
var joinClause = expr.Clauses[1] as QueryExpressionJoinVBClause;
var selectClause = expr.Clauses[2] as QueryExpressionSelectVBClause;
// From
Assert.AreEqual(1, fromClause.Sources.Count);
var fromVar1 = fromClause.Sources.First();
Assert.AreEqual("c", fromVar1.Identifier);
Assert.IsTrue(fromVar1.Expression is IdentifierExpression);
Assert.IsTrue((fromVar1.Expression as IdentifierExpression).Identifier == "categories");
// Join In On Equals
var inClause = joinClause.JoinVariable as CollectionRangeVariable;
Assert.AreEqual("p", inClause.Identifier);
Assert.IsTrue(inClause.Expression is IdentifierExpression &&
(inClause.Expression as IdentifierExpression).Identifier == "products");
Assert.IsTrue(joinClause.SubJoin.IsNull);
Assert.AreEqual(1, joinClause.Conditions.Count);
var condition1 = joinClause.Conditions.First();
Assert.IsTrue(condition1.LeftSide is IdentifierExpression && (condition1.LeftSide as IdentifierExpression).Identifier == "c");
CheckMemberReferenceExpression(condition1.RightSide, "Category", "p");
// Select
Assert.AreEqual(2, selectClause.Variables.Count);
var var1 = selectClause.Variables.First();
var var2 = selectClause.Variables.Skip(1).First();
Assert.AreEqual("Category", var1.Identifier);
Assert.IsEmpty(var2.Identifier);
Assert.IsTrue(var1.Expression is IdentifierExpression &&
(var1.Expression as IdentifierExpression).Identifier == "c");
CheckMemberReferenceExpression(var2.Expression, "ProductName", "p");
};
RunTest(@"From c In categories _
Join p In products On c Equals p.Category _
Select Category = c, p.ProductName", 3, constraint,
typeof(QueryExpressionFromClause), typeof(QueryExpressionJoinVBClause), typeof(QueryExpressionSelectVBClause));
}
[Test]
public void OrderByTest()
{
Action<QueryExpression> constraint = expr => {
var fromClause = expr.Clauses[0] as QueryExpressionFromClause;
var orderClause = expr.Clauses[1] as QueryExpressionOrderClause;
// From
Assert.AreEqual(1, fromClause.Sources.Count);
var var1 = fromClause.Sources.First();
Assert.AreEqual("i", var1.Identifier);
Assert.IsTrue(var1.Expression is IdentifierExpression);
Assert.IsTrue((var1.Expression as IdentifierExpression).Identifier == "list");
// Order By
Assert.AreEqual(1, orderClause.Orderings.Count);
var ordering1 = orderClause.Orderings.First();
Assert.IsTrue(ordering1.Criteria is IdentifierExpression &&
(ordering1.Criteria as IdentifierExpression).Identifier == "i");
Assert.AreEqual(QueryExpressionOrderingDirection.None, ordering1.Direction);
};
RunTest(@"From i In list Order By i", 2, constraint, typeof(QueryExpressionFromClause), typeof(QueryExpressionOrderClause));
}
[Test]
public void OrderByTest2()
{
Action<QueryExpression> constraint = expr => {
var fromClause = expr.Clauses[0] as QueryExpressionFromClause;
var orderClause = expr.Clauses[1] as QueryExpressionOrderClause;
// From
Assert.AreEqual(1, fromClause.Sources.Count);
var var1 = fromClause.Sources.First();
Assert.AreEqual("i", var1.Identifier);
Assert.IsTrue(var1.Expression is IdentifierExpression);
Assert.IsTrue((var1.Expression as IdentifierExpression).Identifier == "list");
// Order By
Assert.AreEqual(1, orderClause.Orderings.Count);
var ordering1 = orderClause.Orderings.First();
Assert.IsTrue(ordering1.Criteria is IdentifierExpression &&
(ordering1.Criteria as IdentifierExpression).Identifier == "i");
Assert.AreEqual(QueryExpressionOrderingDirection.Ascending, ordering1.Direction);
};
RunTest(@"From i In list Order By i Ascending", 2, constraint, typeof(QueryExpressionFromClause), typeof(QueryExpressionOrderClause));
}
[Test]
public void OrderByTest3()
{
Action<QueryExpression> constraint = expr => {
var fromClause = expr.Clauses[0] as QueryExpressionFromClause;
var orderClause = expr.Clauses[1] as QueryExpressionOrderClause;
// From
Assert.AreEqual(1, fromClause.Sources.Count);
var var1 = fromClause.Sources.First();
Assert.AreEqual("i", var1.Identifier);
Assert.IsTrue(var1.Expression is IdentifierExpression);
Assert.IsTrue((var1.Expression as IdentifierExpression).Identifier == "list");
// Order By
Assert.AreEqual(1, orderClause.Orderings.Count);
var ordering1 = orderClause.Orderings.First();
Assert.IsTrue(ordering1.Criteria is IdentifierExpression &&
(ordering1.Criteria as IdentifierExpression).Identifier == "i");
Assert.AreEqual(QueryExpressionOrderingDirection.Descending, ordering1.Direction);
};
RunTest(@"From i In list Order By i Descending", 2, constraint, typeof(QueryExpressionFromClause), typeof(QueryExpressionOrderClause));
}
[Test]
public void OrderByThenByTest()
{
Action<QueryExpression> constraint = expr => {
var fromClause = expr.Clauses[0] as QueryExpressionFromClause;
var orderClause = expr.Clauses[1] as QueryExpressionOrderClause;
// From
Assert.AreEqual(1, fromClause.Sources.Count);
var var1 = fromClause.Sources.First();
Assert.AreEqual("d", var1.Identifier);
Assert.IsTrue(var1.Expression is IdentifierExpression);
Assert.IsTrue((var1.Expression as IdentifierExpression).Identifier == "digits");
// Order By
Assert.AreEqual(2, orderClause.Orderings.Count);
var ordering1 = orderClause.Orderings.First();
var ordering2 = orderClause.Orderings.Skip(1).First();
CheckMemberReferenceExpression(ordering1.Criteria, "Length", "d");
Assert.IsTrue(ordering2.Criteria is IdentifierExpression &&
(ordering2.Criteria as IdentifierExpression).Identifier == "d");
Assert.AreEqual(QueryExpressionOrderingDirection.None, ordering1.Direction);
Assert.AreEqual(QueryExpressionOrderingDirection.None, ordering2.Direction);
};
RunTest(@"From d In digits _
Order By d.Length, d", 2, constraint,
typeof(QueryExpressionFromClause), typeof(QueryExpressionOrderClause));
}
[Test]
public void DistinctTest()
{
Action<QueryExpression> constraint = expr => {
var fromClause = expr.Clauses[0] as QueryExpressionFromClause;
// From
Assert.AreEqual(1, fromClause.Sources.Count);
var var1 = fromClause.Sources.First();
Assert.AreEqual("d", var1.Identifier);
Assert.IsTrue(var1.Expression is IdentifierExpression);
Assert.IsTrue((var1.Expression as IdentifierExpression).Identifier == "digits");
};
RunTest(@"From d In digits Distinct", 2, constraint,
typeof(QueryExpressionFromClause), typeof(QueryExpressionDistinctClause));
}
[Test]
public void AggregateTest()
{
Action<QueryExpression> constraint = expr => {
var clause = expr.Clauses[0] as QueryExpressionAggregateClause;
Assert.AreEqual("p", clause.Source.Identifier);
CheckMemberReferenceExpression(clause.Source.Expression, "GetProcesses", "Process");
Assert.AreEqual(1, clause.IntoVariables.Count);
var into1 = clause.IntoVariables.First();
Assert.AreEqual("virtualMemory", into1.Identifier);
Assert.IsTrue(into1.Expression is InvocationExpression &&
(into1.Expression as InvocationExpression).TargetObject is IdentifierExpression &&
((into1.Expression as InvocationExpression).TargetObject as IdentifierExpression).Identifier == "Sum");
Assert.AreEqual(1, (into1.Expression as InvocationExpression).Arguments.Count);
CheckMemberReferenceExpression((into1.Expression as InvocationExpression).Arguments.First(), "VirtualMemorySize64", "p");
};
RunTest(@"Aggregate p In Process.GetProcesses _
Into virtualMemory = Sum(p.VirtualMemorySize64)", 1, constraint, typeof(QueryExpressionAggregateClause));
}
[Test]
public void GroupJoinTest()
{
Action<QueryExpression> constraint = expr => {
var fromClause1 = expr.Clauses[0] as QueryExpressionFromClause;
var groupJoinClause = expr.Clauses[1] as QueryExpressionGroupJoinVBClause;
var fromClause2 = expr.Clauses[2] as QueryExpressionFromClause;
var selectClause = expr.Clauses[3] as QueryExpressionSelectVBClause;
// From 1
Assert.AreEqual(1, fromClause1.Sources.Count);
var var1 = fromClause1.Sources.First();
Assert.AreEqual("s", var1.Identifier);
Assert.IsTrue(var1.Expression is IdentifierExpression &&
(var1.Expression as IdentifierExpression).Identifier == "fileList");
// From 2
Assert.AreEqual(1, fromClause2.Sources.Count);
var var2 = fromClause2.Sources.First();
Assert.AreEqual("p", var2.Identifier);
Assert.IsTrue(var2.Expression is IdentifierExpression &&
(var2.Expression as IdentifierExpression).Identifier == "Group");
// Select
Assert.AreEqual(1, selectClause.Variables.Count);
var var3 = selectClause.Variables.First();
Assert.IsEmpty(var3.Identifier);
Assert.IsTrue(var3.Expression is IdentifierExpression &&
(var3.Expression as IdentifierExpression).Identifier == "s");
// Group Join
var joinClause = groupJoinClause.JoinClause;
// Join In On Equals
var inClause = joinClause.JoinVariable as CollectionRangeVariable;
Assert.AreEqual("p", inClause.Identifier);
Assert.IsTrue(inClause.Expression is IdentifierExpression &&
(inClause.Expression as IdentifierExpression).Identifier == "IMAGES");
Assert.IsTrue(joinClause.SubJoin.IsNull);
Assert.AreEqual(1, joinClause.Conditions.Count);
var condition1 = joinClause.Conditions.First();
Assert.IsTrue(condition1.LeftSide is InvocationExpression);
Assert.IsTrue((condition1.LeftSide as InvocationExpression).TargetObject is MemberReferenceExpression);
Assert.IsTrue(((condition1.LeftSide as InvocationExpression).TargetObject as MemberReferenceExpression).MemberName == "ToUpper");
Assert.IsTrue(((condition1.LeftSide as InvocationExpression).TargetObject as MemberReferenceExpression).TargetObject is MemberReferenceExpression);
Assert.IsTrue((((condition1.LeftSide as InvocationExpression).TargetObject as MemberReferenceExpression).TargetObject as MemberReferenceExpression).MemberName == "Extension");
Assert.IsTrue((((condition1.LeftSide as InvocationExpression).TargetObject as MemberReferenceExpression).TargetObject as MemberReferenceExpression).TargetObject is IdentifierExpression);
Assert.IsTrue(((((condition1.LeftSide as InvocationExpression).TargetObject as MemberReferenceExpression).TargetObject as MemberReferenceExpression).TargetObject as IdentifierExpression).Identifier == "s");
Assert.IsTrue(condition1.RightSide is InvocationExpression);
Assert.IsTrue((condition1.RightSide as InvocationExpression).TargetObject is MemberReferenceExpression);
Assert.IsTrue(((condition1.RightSide as InvocationExpression).TargetObject as MemberReferenceExpression).MemberName == "ToUpper");
Assert.IsTrue(((condition1.RightSide as InvocationExpression).TargetObject as MemberReferenceExpression).TargetObject is IdentifierExpression);
Assert.IsTrue((((condition1.RightSide as InvocationExpression).TargetObject as MemberReferenceExpression).TargetObject as IdentifierExpression).Identifier == "p");
};
RunTest(@"From s In fileList _
Group Join p In IMAGES On s.Extension.ToUpper() Equals p.ToUpper() Into Group _
From p In Group _
Select s", 4, constraint,
typeof(QueryExpressionFromClause), typeof(QueryExpressionGroupJoinVBClause), typeof(QueryExpressionFromClause), typeof(QueryExpressionSelectVBClause));
}
[Test]
public void SelectManyTest()
{
Action<QueryExpression> constraint = expr => {
var fromClause = expr.Clauses[0] as QueryExpressionFromClause;
var whereClause = expr.Clauses[1] as QueryExpressionWhereClause;
var selectClause = expr.Clauses[2] as QueryExpressionSelectVBClause;
// From
Assert.AreEqual(2, fromClause.Sources.Count);
var fromVar1 = fromClause.Sources.First();
var fromVar2 = fromClause.Sources.Skip(1).First();
Assert.AreEqual("c", fromVar1.Identifier);
Assert.IsTrue(fromVar1.Expression is IdentifierExpression);
Assert.IsTrue((fromVar1.Expression as IdentifierExpression).Identifier == "customers");
Assert.AreEqual("o", fromVar2.Identifier);
CheckMemberReferenceExpression(fromVar2.Expression, "Orders", "c");
// Where
Assert.IsTrue(whereClause.Condition is BinaryOperatorExpression);
Assert.IsTrue((whereClause.Condition as BinaryOperatorExpression).Op == BinaryOperatorType.LessThan);
CheckMemberReferenceExpression((whereClause.Condition as BinaryOperatorExpression).Left, "Total", "o");
Assert.IsTrue((whereClause.Condition as BinaryOperatorExpression).Right is PrimitiveExpression);
Assert.IsTrue((double)((whereClause.Condition as BinaryOperatorExpression).Right as PrimitiveExpression).Value == 500.0);
// Select
foreach (var v in selectClause.Variables) {
Assert.IsEmpty(v.Identifier);
}
var var1 = selectClause.Variables.First();
var var2 = selectClause.Variables.Skip(1).First();
var var3 = selectClause.Variables.Skip(2).First();
CheckMemberReferenceExpression(var1.Expression, "CustomerID", "c");
CheckMemberReferenceExpression(var2.Expression, "OrderID", "o");
CheckMemberReferenceExpression(var3.Expression, "Total", "o");
};
RunTest(@"From c In customers, o In c.Orders _
Where o.Total < 500.0 _
Select c.CustomerID, o.OrderID, o.Total", 3, constraint, typeof(QueryExpressionFromClause), typeof(QueryExpressionWhereClause), typeof(QueryExpressionSelectVBClause));
}
void CheckMemberReferenceExpression(Expression expr, string memberName, string targetObjectIdentifier)
{
Assert.IsTrue(expr is MemberReferenceExpression);
Assert.IsTrue((expr as MemberReferenceExpression).MemberName == memberName &&
(expr as MemberReferenceExpression).TargetObject is IdentifierExpression &&
((expr as MemberReferenceExpression).TargetObject as IdentifierExpression).Identifier == targetObjectIdentifier);
}
}
}

633
VB/Test/Parser/Expressions/QueryExpressionVBTests.cs

@ -1,633 +0,0 @@ @@ -1,633 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Linq;
using ICSharpCode.NRefactory.VB.Dom;
using ICSharpCode.NRefactory.VB.Tests.Dom;
using NUnit.Framework;
namespace ICSharpCode.NRefactory.VB.Tests.Dom
{
[TestFixture]
public class QueryExpressionVBTests
{
void RunTest(string expression, int expectedCount, Action<QueryExpressionVB> constraint, params Type[] expectedTypes)
{
var expr = ParseUtilVBNet.ParseExpression<QueryExpressionVB>(expression);
Assert.AreEqual(expectedCount, expr.Clauses.Count);
for (int i = 0; i < expectedTypes.Length; i++) {
Assert.IsTrue(expectedTypes[i] == expr.Clauses[i].GetType());
}
constraint(expr);
}
[Test]
public void SimpleQueryTest()
{
RunTest("From o In db.Orders Select o.OrderID", 2,
expr => {
var fromClause = expr.Clauses[0] as QueryExpressionFromClause;
var selectClause = expr.Clauses[1] as QueryExpressionSelectVBClause;
Assert.AreEqual(1, fromClause.Sources.Count);
var var1 = fromClause.Sources.First();
Assert.AreEqual("o", var1.Identifier);
Assert.IsTrue(var1.Expression is MemberReferenceExpression);
var inExpr = var1.Expression as MemberReferenceExpression;
Assert.IsTrue(inExpr.MemberName == "Orders" && inExpr.TargetObject is IdentifierExpression && (inExpr.TargetObject as IdentifierExpression).Identifier == "db");
Assert.AreEqual(1, selectClause.Variables.Count);
Assert.IsTrue(selectClause.Variables[0].Expression is MemberReferenceExpression);
var member = selectClause.Variables[0].Expression as MemberReferenceExpression;
Assert.IsTrue(member.MemberName == "OrderID" && member.TargetObject is IdentifierExpression && (member.TargetObject as IdentifierExpression).Identifier == "o");
},
typeof(QueryExpressionFromClause), typeof(QueryExpressionSelectVBClause)
);
}
[Test]
public void SkipTakeQueryTest()
{
RunTest("From o In db.Orders Select o.OrderID Skip 10 Take 5", 4,
expr => {
var fromClause = expr.Clauses[0] as QueryExpressionFromClause;
var selectClause = expr.Clauses[1] as QueryExpressionSelectVBClause;
var skipClause = expr.Clauses[2] as QueryExpressionPartitionVBClause;
var takeClause = expr.Clauses[3] as QueryExpressionPartitionVBClause;
Assert.AreEqual(1, fromClause.Sources.Count);
var var1 = fromClause.Sources.First();
Assert.AreEqual("o", var1.Identifier);
Assert.IsTrue(var1.Expression is MemberReferenceExpression);
var inExpr = var1.Expression as MemberReferenceExpression;
Assert.IsTrue(inExpr.MemberName == "Orders" && inExpr.TargetObject is IdentifierExpression && (inExpr.TargetObject as IdentifierExpression).Identifier == "db");
Assert.AreEqual(1, selectClause.Variables.Count);
Assert.IsTrue(selectClause.Variables[0].Expression is MemberReferenceExpression);
var member = selectClause.Variables[0].Expression as MemberReferenceExpression;
Assert.IsTrue(member.MemberName == "OrderID" && member.TargetObject is IdentifierExpression && (member.TargetObject as IdentifierExpression).Identifier == "o");
Assert.AreEqual(QueryExpressionPartitionType.Skip, skipClause.PartitionType);
Assert.IsTrue(skipClause.Expression is PrimitiveExpression &&
(skipClause.Expression as PrimitiveExpression).StringValue == "10");
Assert.AreEqual(QueryExpressionPartitionType.Take, takeClause.PartitionType);
Assert.IsTrue(takeClause.Expression is PrimitiveExpression &&
(takeClause.Expression as PrimitiveExpression).StringValue == "5");
},
typeof(QueryExpressionFromClause), typeof(QueryExpressionSelectVBClause),
typeof(QueryExpressionPartitionVBClause), typeof(QueryExpressionPartitionVBClause)
);
}
[Test]
public void SkipWhileTakeWhileQueryTest()
{
RunTest("From o In db.Orders Select o.OrderID Skip While o.OrderId > 2 Take While o.OrderId < 5", 4,
expr => {
var fromClause = expr.Clauses[0] as QueryExpressionFromClause;
var selectClause = expr.Clauses[1] as QueryExpressionSelectVBClause;
var skipClause = expr.Clauses[2] as QueryExpressionPartitionVBClause;
var takeClause = expr.Clauses[3] as QueryExpressionPartitionVBClause;
Assert.AreEqual(1, fromClause.Sources.Count);
var var1 = fromClause.Sources.First();
Assert.AreEqual("o", var1.Identifier);
Assert.IsTrue(var1.Expression is MemberReferenceExpression);
var inExpr = var1.Expression as MemberReferenceExpression;
Assert.IsTrue(inExpr.MemberName == "Orders" && inExpr.TargetObject is IdentifierExpression && (inExpr.TargetObject as IdentifierExpression).Identifier == "db");
Assert.AreEqual(1, selectClause.Variables.Count);
Assert.IsTrue(selectClause.Variables[0].Expression is MemberReferenceExpression);
var member = selectClause.Variables[0].Expression as MemberReferenceExpression;
Assert.IsTrue(member.MemberName == "OrderID" && member.TargetObject is IdentifierExpression && (member.TargetObject as IdentifierExpression).Identifier == "o");
Assert.AreEqual(QueryExpressionPartitionType.SkipWhile, skipClause.PartitionType);
Assert.IsTrue(skipClause.Expression is BinaryOperatorExpression);
Assert.AreEqual(QueryExpressionPartitionType.TakeWhile, takeClause.PartitionType);
Assert.IsTrue(takeClause.Expression is BinaryOperatorExpression);
},
typeof(QueryExpressionFromClause), typeof(QueryExpressionSelectVBClause),
typeof(QueryExpressionPartitionVBClause), typeof(QueryExpressionPartitionVBClause)
);
}
[Test]
public void MultipleValuesSelectTest()
{
RunTest(@"From i In list Select i, x2 = i^2",
2, expr => {
var fromClause = expr.Clauses[0] as QueryExpressionFromClause;
var selectClause = expr.Clauses[1] as QueryExpressionSelectVBClause;
Assert.AreEqual(1, fromClause.Sources.Count);
var var1 = fromClause.Sources.First();
Assert.AreEqual("i", var1.Identifier);
Assert.IsTrue(var1.Expression is IdentifierExpression);
Assert.IsTrue((var1.Expression as IdentifierExpression).Identifier == "list");
Assert.AreEqual(2, selectClause.Variables.Count);
var selectExpr1 = selectClause.Variables[0];
var selectExpr2 = selectClause.Variables[1];
Assert.IsEmpty(selectExpr1.Identifier);
Assert.IsTrue(selectExpr1.Expression is IdentifierExpression &&
(selectExpr1.Expression as IdentifierExpression).Identifier == "i");
Assert.AreEqual("x2", selectExpr2.Identifier);
Assert.IsTrue(selectExpr2.Type.IsNull);
Assert.IsTrue(selectExpr2.Expression is BinaryOperatorExpression);
var binOp = selectExpr2.Expression as BinaryOperatorExpression;
Assert.AreEqual(BinaryOperatorType.Power, binOp.Op);
Assert.IsTrue(binOp.Left is IdentifierExpression && (binOp.Left as IdentifierExpression).Identifier == "i");
Assert.IsTrue(binOp.Right is PrimitiveExpression && (binOp.Right as PrimitiveExpression).StringValue == "2");
},
typeof(QueryExpressionFromClause), typeof(QueryExpressionSelectVBClause)
);
}
[Test]
public void GroupTest()
{
Action<QueryExpressionVB> constraint = expr => {
var fromClause = expr.Clauses[0] as QueryExpressionFromClause;
var groupClause = expr.Clauses[1] as QueryExpressionGroupVBClause;
var selectClause = expr.Clauses[2] as QueryExpressionSelectVBClause;
Assert.AreEqual(1, fromClause.Sources.Count);
var fromVar1 = fromClause.Sources.First();
Assert.AreEqual("p", fromVar1.Identifier);
Assert.IsTrue(fromVar1.Expression is IdentifierExpression);
Assert.IsTrue((fromVar1.Expression as IdentifierExpression).Identifier == "products");
Assert.AreEqual(1, groupClause.GroupVariables.Count);
Assert.AreEqual(1, groupClause.ByVariables.Count);
Assert.AreEqual(1, groupClause.IntoVariables.Count);
var gv = groupClause.GroupVariables.First();
var bv = groupClause.ByVariables.First();
var iv = groupClause.IntoVariables.First();
Assert.IsTrue(gv.Expression is IdentifierExpression && (gv.Expression as IdentifierExpression).Identifier == "p");
Assert.IsTrue(bv.Expression is MemberReferenceExpression &&
(bv.Expression as MemberReferenceExpression).MemberName == "Category");
Assert.IsTrue((bv.Expression as MemberReferenceExpression).TargetObject is IdentifierExpression &&
((bv.Expression as MemberReferenceExpression).TargetObject as IdentifierExpression).Identifier == "p");
Assert.IsTrue(iv.Expression is IdentifierExpression &&
(iv.Expression as IdentifierExpression).Identifier == "Group");
Assert.AreEqual(2, selectClause.Variables.Count);
var var1 = selectClause.Variables.First();
var var2 = selectClause.Variables.Skip(1).First();
Assert.IsTrue(var1.Expression is IdentifierExpression &&
(var1.Expression as IdentifierExpression).Identifier == "Category");
Assert.IsTrue(var2.Expression is InvocationExpression &&
(var2.Expression as InvocationExpression).TargetObject is MemberReferenceExpression &&
((var2.Expression as InvocationExpression).TargetObject as MemberReferenceExpression).MemberName == "Average" &&
((var2.Expression as InvocationExpression).TargetObject as MemberReferenceExpression).TargetObject is IdentifierExpression &&
(((var2.Expression as InvocationExpression).TargetObject as MemberReferenceExpression).TargetObject as IdentifierExpression).Identifier == "Group");
};
RunTest(@"From p In products _
Group p By p.Category Into Group _
Select Category, AveragePrice = Group.Average(Function(p) p.UnitPrice)", 3, constraint,
typeof(QueryExpressionFromClause), typeof(QueryExpressionGroupVBClause), typeof(QueryExpressionSelectVBClause));
}
[Test]
public void LetTest()
{
Action<QueryExpressionVB> constraint = expr => {
var fromClause = expr.Clauses[0] as QueryExpressionFromClause;
var groupClause = expr.Clauses[1] as QueryExpressionGroupVBClause;
var letClause = expr.Clauses[2] as QueryExpressionLetVBClause;
var selectClause = expr.Clauses[3] as QueryExpressionSelectVBClause;
// From
Assert.AreEqual(1, fromClause.Sources.Count);
var fromVar1 = fromClause.Sources.First();
Assert.AreEqual("p", fromVar1.Identifier);
Assert.IsTrue(fromVar1.Expression is IdentifierExpression);
Assert.IsTrue((fromVar1.Expression as IdentifierExpression).Identifier == "products");
// Group By Into
Assert.AreEqual(1, groupClause.GroupVariables.Count);
Assert.AreEqual(1, groupClause.ByVariables.Count);
Assert.AreEqual(1, groupClause.IntoVariables.Count);
var gv = groupClause.GroupVariables.First();
var bv = groupClause.ByVariables.First();
var iv = groupClause.IntoVariables.First();
Assert.IsTrue(gv.Expression is IdentifierExpression && (gv.Expression as IdentifierExpression).Identifier == "p");
CheckMemberReferenceExpression(bv.Expression, "Category", "p");
Assert.IsTrue(iv.Expression is IdentifierExpression &&
(iv.Expression as IdentifierExpression).Identifier == "Group");
// Let
Assert.AreEqual(1, letClause.Variables.Count);
var letVariable = letClause.Variables.First();
Assert.AreEqual("minPrice", letVariable.Identifier);
Assert.IsTrue(letVariable.Expression is InvocationExpression);
CheckMemberReferenceExpression((letVariable.Expression as InvocationExpression).TargetObject, "Min", "Group");
// Select
Assert.AreEqual(2, selectClause.Variables.Count);
var var1 = selectClause.Variables.First();
var var2 = selectClause.Variables.Skip(1).First();
Assert.IsTrue(var1.Expression is IdentifierExpression &&
(var1.Expression as IdentifierExpression).Identifier == "Category");
Assert.IsTrue(var2.Expression is InvocationExpression);
CheckMemberReferenceExpression((var2.Expression as InvocationExpression).TargetObject, "Where", "Group");
};
RunTest(@"From p In products _
Group p By p.Category Into Group _
Let minPrice = Group.Min(Function(p) p.UnitPrice) _
Select Category, CheapestProducts = Group.Where(Function(p) p.UnitPrice = minPrice)", 4, constraint,
typeof(QueryExpressionFromClause), typeof(QueryExpressionGroupVBClause), typeof(QueryExpressionLetVBClause), typeof(QueryExpressionSelectVBClause));
}
[Test]
public void CrossJoinTest()
{
Action<QueryExpressionVB> constraint = expr => {
var fromClause = expr.Clauses[0] as QueryExpressionFromClause;
var joinClause = expr.Clauses[1] as QueryExpressionJoinVBClause;
var selectClause = expr.Clauses[2] as QueryExpressionSelectVBClause;
// From
Assert.AreEqual(1, fromClause.Sources.Count);
var fromVar1 = fromClause.Sources.First();
Assert.AreEqual("c", fromVar1.Identifier);
Assert.IsTrue(fromVar1.Expression is IdentifierExpression);
Assert.IsTrue((fromVar1.Expression as IdentifierExpression).Identifier == "categories");
// Join In On Equals
var inClause = joinClause.JoinVariable as CollectionRangeVariable;
Assert.AreEqual("p", inClause.Identifier);
Assert.IsTrue(inClause.Expression is IdentifierExpression &&
(inClause.Expression as IdentifierExpression).Identifier == "products");
Assert.IsTrue(joinClause.SubJoin.IsNull);
Assert.AreEqual(1, joinClause.Conditions.Count);
var condition1 = joinClause.Conditions.First();
Assert.IsTrue(condition1.LeftSide is IdentifierExpression && (condition1.LeftSide as IdentifierExpression).Identifier == "c");
CheckMemberReferenceExpression(condition1.RightSide, "Category", "p");
// Select
Assert.AreEqual(2, selectClause.Variables.Count);
var var1 = selectClause.Variables.First();
var var2 = selectClause.Variables.Skip(1).First();
Assert.AreEqual("Category", var1.Identifier);
Assert.IsEmpty(var2.Identifier);
Assert.IsTrue(var1.Expression is IdentifierExpression &&
(var1.Expression as IdentifierExpression).Identifier == "c");
CheckMemberReferenceExpression(var2.Expression, "ProductName", "p");
};
RunTest(@"From c In categories _
Join p In products On c Equals p.Category _
Select Category = c, p.ProductName", 3, constraint,
typeof(QueryExpressionFromClause), typeof(QueryExpressionJoinVBClause), typeof(QueryExpressionSelectVBClause));
}
[Test]
public void OrderByTest()
{
Action<QueryExpressionVB> constraint = expr => {
var fromClause = expr.Clauses[0] as QueryExpressionFromClause;
var orderClause = expr.Clauses[1] as QueryExpressionOrderClause;
// From
Assert.AreEqual(1, fromClause.Sources.Count);
var var1 = fromClause.Sources.First();
Assert.AreEqual("i", var1.Identifier);
Assert.IsTrue(var1.Expression is IdentifierExpression);
Assert.IsTrue((var1.Expression as IdentifierExpression).Identifier == "list");
// Order By
Assert.AreEqual(1, orderClause.Orderings.Count);
var ordering1 = orderClause.Orderings.First();
Assert.IsTrue(ordering1.Criteria is IdentifierExpression &&
(ordering1.Criteria as IdentifierExpression).Identifier == "i");
Assert.AreEqual(QueryExpressionOrderingDirection.None, ordering1.Direction);
};
RunTest(@"From i In list Order By i", 2, constraint, typeof(QueryExpressionFromClause), typeof(QueryExpressionOrderClause));
}
[Test]
public void OrderByTest2()
{
Action<QueryExpressionVB> constraint = expr => {
var fromClause = expr.Clauses[0] as QueryExpressionFromClause;
var orderClause = expr.Clauses[1] as QueryExpressionOrderClause;
// From
Assert.AreEqual(1, fromClause.Sources.Count);
var var1 = fromClause.Sources.First();
Assert.AreEqual("i", var1.Identifier);
Assert.IsTrue(var1.Expression is IdentifierExpression);
Assert.IsTrue((var1.Expression as IdentifierExpression).Identifier == "list");
// Order By
Assert.AreEqual(1, orderClause.Orderings.Count);
var ordering1 = orderClause.Orderings.First();
Assert.IsTrue(ordering1.Criteria is IdentifierExpression &&
(ordering1.Criteria as IdentifierExpression).Identifier == "i");
Assert.AreEqual(QueryExpressionOrderingDirection.Ascending, ordering1.Direction);
};
RunTest(@"From i In list Order By i Ascending", 2, constraint, typeof(QueryExpressionFromClause), typeof(QueryExpressionOrderClause));
}
[Test]
public void OrderByTest3()
{
Action<QueryExpressionVB> constraint = expr => {
var fromClause = expr.Clauses[0] as QueryExpressionFromClause;
var orderClause = expr.Clauses[1] as QueryExpressionOrderClause;
// From
Assert.AreEqual(1, fromClause.Sources.Count);
var var1 = fromClause.Sources.First();
Assert.AreEqual("i", var1.Identifier);
Assert.IsTrue(var1.Expression is IdentifierExpression);
Assert.IsTrue((var1.Expression as IdentifierExpression).Identifier == "list");
// Order By
Assert.AreEqual(1, orderClause.Orderings.Count);
var ordering1 = orderClause.Orderings.First();
Assert.IsTrue(ordering1.Criteria is IdentifierExpression &&
(ordering1.Criteria as IdentifierExpression).Identifier == "i");
Assert.AreEqual(QueryExpressionOrderingDirection.Descending, ordering1.Direction);
};
RunTest(@"From i In list Order By i Descending", 2, constraint, typeof(QueryExpressionFromClause), typeof(QueryExpressionOrderClause));
}
[Test]
public void OrderByThenByTest()
{
Action<QueryExpressionVB> constraint = expr => {
var fromClause = expr.Clauses[0] as QueryExpressionFromClause;
var orderClause = expr.Clauses[1] as QueryExpressionOrderClause;
// From
Assert.AreEqual(1, fromClause.Sources.Count);
var var1 = fromClause.Sources.First();
Assert.AreEqual("d", var1.Identifier);
Assert.IsTrue(var1.Expression is IdentifierExpression);
Assert.IsTrue((var1.Expression as IdentifierExpression).Identifier == "digits");
// Order By
Assert.AreEqual(2, orderClause.Orderings.Count);
var ordering1 = orderClause.Orderings.First();
var ordering2 = orderClause.Orderings.Skip(1).First();
CheckMemberReferenceExpression(ordering1.Criteria, "Length", "d");
Assert.IsTrue(ordering2.Criteria is IdentifierExpression &&
(ordering2.Criteria as IdentifierExpression).Identifier == "d");
Assert.AreEqual(QueryExpressionOrderingDirection.None, ordering1.Direction);
Assert.AreEqual(QueryExpressionOrderingDirection.None, ordering2.Direction);
};
RunTest(@"From d In digits _
Order By d.Length, d", 2, constraint,
typeof(QueryExpressionFromClause), typeof(QueryExpressionOrderClause));
}
[Test]
public void DistinctTest()
{
Action<QueryExpressionVB> constraint = expr => {
var fromClause = expr.Clauses[0] as QueryExpressionFromClause;
// From
Assert.AreEqual(1, fromClause.Sources.Count);
var var1 = fromClause.Sources.First();
Assert.AreEqual("d", var1.Identifier);
Assert.IsTrue(var1.Expression is IdentifierExpression);
Assert.IsTrue((var1.Expression as IdentifierExpression).Identifier == "digits");
};
RunTest(@"From d In digits Distinct", 2, constraint,
typeof(QueryExpressionFromClause), typeof(QueryExpressionDistinctClause));
}
[Test]
public void AggregateTest()
{
Action<QueryExpressionVB> constraint = expr => {
var clause = expr.Clauses[0] as QueryExpressionAggregateClause;
Assert.AreEqual("p", clause.Source.Identifier);
CheckMemberReferenceExpression(clause.Source.Expression, "GetProcesses", "Process");
Assert.AreEqual(1, clause.IntoVariables.Count);
var into1 = clause.IntoVariables.First();
Assert.AreEqual("virtualMemory", into1.Identifier);
Assert.IsTrue(into1.Expression is InvocationExpression &&
(into1.Expression as InvocationExpression).TargetObject is IdentifierExpression &&
((into1.Expression as InvocationExpression).TargetObject as IdentifierExpression).Identifier == "Sum");
Assert.AreEqual(1, (into1.Expression as InvocationExpression).Arguments.Count);
CheckMemberReferenceExpression((into1.Expression as InvocationExpression).Arguments.First(), "VirtualMemorySize64", "p");
};
RunTest(@"Aggregate p In Process.GetProcesses _
Into virtualMemory = Sum(p.VirtualMemorySize64)", 1, constraint, typeof(QueryExpressionAggregateClause));
}
[Test]
public void GroupJoinTest()
{
Action<QueryExpressionVB> constraint = expr => {
var fromClause1 = expr.Clauses[0] as QueryExpressionFromClause;
var groupJoinClause = expr.Clauses[1] as QueryExpressionGroupJoinVBClause;
var fromClause2 = expr.Clauses[2] as QueryExpressionFromClause;
var selectClause = expr.Clauses[3] as QueryExpressionSelectVBClause;
// From 1
Assert.AreEqual(1, fromClause1.Sources.Count);
var var1 = fromClause1.Sources.First();
Assert.AreEqual("s", var1.Identifier);
Assert.IsTrue(var1.Expression is IdentifierExpression &&
(var1.Expression as IdentifierExpression).Identifier == "fileList");
// From 2
Assert.AreEqual(1, fromClause2.Sources.Count);
var var2 = fromClause2.Sources.First();
Assert.AreEqual("p", var2.Identifier);
Assert.IsTrue(var2.Expression is IdentifierExpression &&
(var2.Expression as IdentifierExpression).Identifier == "Group");
// Select
Assert.AreEqual(1, selectClause.Variables.Count);
var var3 = selectClause.Variables.First();
Assert.IsEmpty(var3.Identifier);
Assert.IsTrue(var3.Expression is IdentifierExpression &&
(var3.Expression as IdentifierExpression).Identifier == "s");
// Group Join
var joinClause = groupJoinClause.JoinClause;
// Join In On Equals
var inClause = joinClause.JoinVariable as CollectionRangeVariable;
Assert.AreEqual("p", inClause.Identifier);
Assert.IsTrue(inClause.Expression is IdentifierExpression &&
(inClause.Expression as IdentifierExpression).Identifier == "IMAGES");
Assert.IsTrue(joinClause.SubJoin.IsNull);
Assert.AreEqual(1, joinClause.Conditions.Count);
var condition1 = joinClause.Conditions.First();
Assert.IsTrue(condition1.LeftSide is InvocationExpression);
Assert.IsTrue((condition1.LeftSide as InvocationExpression).TargetObject is MemberReferenceExpression);
Assert.IsTrue(((condition1.LeftSide as InvocationExpression).TargetObject as MemberReferenceExpression).MemberName == "ToUpper");
Assert.IsTrue(((condition1.LeftSide as InvocationExpression).TargetObject as MemberReferenceExpression).TargetObject is MemberReferenceExpression);
Assert.IsTrue((((condition1.LeftSide as InvocationExpression).TargetObject as MemberReferenceExpression).TargetObject as MemberReferenceExpression).MemberName == "Extension");
Assert.IsTrue((((condition1.LeftSide as InvocationExpression).TargetObject as MemberReferenceExpression).TargetObject as MemberReferenceExpression).TargetObject is IdentifierExpression);
Assert.IsTrue(((((condition1.LeftSide as InvocationExpression).TargetObject as MemberReferenceExpression).TargetObject as MemberReferenceExpression).TargetObject as IdentifierExpression).Identifier == "s");
Assert.IsTrue(condition1.RightSide is InvocationExpression);
Assert.IsTrue((condition1.RightSide as InvocationExpression).TargetObject is MemberReferenceExpression);
Assert.IsTrue(((condition1.RightSide as InvocationExpression).TargetObject as MemberReferenceExpression).MemberName == "ToUpper");
Assert.IsTrue(((condition1.RightSide as InvocationExpression).TargetObject as MemberReferenceExpression).TargetObject is IdentifierExpression);
Assert.IsTrue((((condition1.RightSide as InvocationExpression).TargetObject as MemberReferenceExpression).TargetObject as IdentifierExpression).Identifier == "p");
};
RunTest(@"From s In fileList _
Group Join p In IMAGES On s.Extension.ToUpper() Equals p.ToUpper() Into Group _
From p In Group _
Select s", 4, constraint,
typeof(QueryExpressionFromClause), typeof(QueryExpressionGroupJoinVBClause), typeof(QueryExpressionFromClause), typeof(QueryExpressionSelectVBClause));
}
[Test]
public void SelectManyTest()
{
Action<QueryExpressionVB> constraint = expr => {
var fromClause = expr.Clauses[0] as QueryExpressionFromClause;
var whereClause = expr.Clauses[1] as QueryExpressionWhereClause;
var selectClause = expr.Clauses[2] as QueryExpressionSelectVBClause;
// From
Assert.AreEqual(2, fromClause.Sources.Count);
var fromVar1 = fromClause.Sources.First();
var fromVar2 = fromClause.Sources.Skip(1).First();
Assert.AreEqual("c", fromVar1.Identifier);
Assert.IsTrue(fromVar1.Expression is IdentifierExpression);
Assert.IsTrue((fromVar1.Expression as IdentifierExpression).Identifier == "customers");
Assert.AreEqual("o", fromVar2.Identifier);
CheckMemberReferenceExpression(fromVar2.Expression, "Orders", "c");
// Where
Assert.IsTrue(whereClause.Condition is BinaryOperatorExpression);
Assert.IsTrue((whereClause.Condition as BinaryOperatorExpression).Op == BinaryOperatorType.LessThan);
CheckMemberReferenceExpression((whereClause.Condition as BinaryOperatorExpression).Left, "Total", "o");
Assert.IsTrue((whereClause.Condition as BinaryOperatorExpression).Right is PrimitiveExpression);
Assert.IsTrue((double)((whereClause.Condition as BinaryOperatorExpression).Right as PrimitiveExpression).Value == 500.0);
// Select
foreach (var v in selectClause.Variables) {
Assert.IsEmpty(v.Identifier);
}
var var1 = selectClause.Variables.First();
var var2 = selectClause.Variables.Skip(1).First();
var var3 = selectClause.Variables.Skip(2).First();
CheckMemberReferenceExpression(var1.Expression, "CustomerID", "c");
CheckMemberReferenceExpression(var2.Expression, "OrderID", "o");
CheckMemberReferenceExpression(var3.Expression, "Total", "o");
};
RunTest(@"From c In customers, o In c.Orders _
Where o.Total < 500.0 _
Select c.CustomerID, o.OrderID, o.Total", 3, constraint, typeof(QueryExpressionFromClause), typeof(QueryExpressionWhereClause), typeof(QueryExpressionSelectVBClause));
}
void CheckMemberReferenceExpression(Expression expr, string memberName, string targetObjectIdentifier)
{
Assert.IsTrue(expr is MemberReferenceExpression);
Assert.IsTrue((expr as MemberReferenceExpression).MemberName == memberName &&
(expr as MemberReferenceExpression).TargetObject is IdentifierExpression &&
((expr as MemberReferenceExpression).TargetObject as IdentifierExpression).Identifier == targetObjectIdentifier);
}
}
}

19
VB/Test/Parser/Expressions/SizeOfExpressionTests.cs

@ -1,19 +0,0 @@ @@ -1,19 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.IO;
using NUnit.Framework;
using ICSharpCode.NRefactory.VB.Parser;
using ICSharpCode.NRefactory.VB.Dom;
namespace ICSharpCode.NRefactory.VB.Tests.Dom
{
[TestFixture]
public class SizeOfExpressionTests
{
#region VB.NET
// No VB.NET representation
#endregion
}
}

19
VB/Test/Parser/Expressions/StackAllocExpressionTests.cs

@ -1,19 +0,0 @@ @@ -1,19 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.IO;
using NUnit.Framework;
using ICSharpCode.NRefactory.VB.Parser;
using ICSharpCode.NRefactory.VB.Dom;
namespace ICSharpCode.NRefactory.VB.Tests.Dom
{
[TestFixture]
public class StackAllocExpressionTests
{
#region VB.NET
// No VB.NET representation
#endregion
}
}

19
VB/Test/Parser/Expressions/UncheckedExpressionTests.cs

@ -1,19 +0,0 @@ @@ -1,19 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.IO;
using NUnit.Framework;
using ICSharpCode.NRefactory.VB.Parser;
using ICSharpCode.NRefactory.VB.Dom;
namespace ICSharpCode.NRefactory.VB.Tests.Dom
{
[TestFixture]
public class UncheckedExpressionTests
{
#region VB.NET
// No VB.NET representation
#endregion
}
}

4
VB/Test/Parser/Statements/BlockStatementTests.cs

@ -12,8 +12,6 @@ namespace ICSharpCode.NRefactory.VB.Tests.Dom @@ -12,8 +12,6 @@ namespace ICSharpCode.NRefactory.VB.Tests.Dom
[TestFixture]
public class BlockStatementTests
{
#region VB.NET
// TODO
#endregion
// TODO create BlockStatementTests
}
}

20
VB/Test/Parser/Statements/BreakStatementTests.cs

@ -1,20 +0,0 @@ @@ -1,20 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.IO;
using NUnit.Framework;
using ICSharpCode.NRefactory.VB.Parser;
using ICSharpCode.NRefactory.VB.Dom;
namespace ICSharpCode.NRefactory.VB.Tests.Dom
{
[TestFixture]
public class BreakStatementTests
{
#region VB.NET
// No VB.NET representation
#endregion
}
}

19
VB/Test/Parser/Statements/CheckedStatementTests.cs

@ -1,19 +0,0 @@ @@ -1,19 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.IO;
using NUnit.Framework;
using ICSharpCode.NRefactory.VB.Parser;
using ICSharpCode.NRefactory.VB.Dom;
namespace ICSharpCode.NRefactory.VB.Tests.Dom
{
[TestFixture]
public class CheckedStatementTests
{
#region VB.NET
// No VB.NET representation
#endregion
}
}

4
VB/Test/Parser/Statements/ContinueStatementTests.cs

@ -12,8 +12,6 @@ namespace ICSharpCode.NRefactory.VB.Tests.Dom @@ -12,8 +12,6 @@ namespace ICSharpCode.NRefactory.VB.Tests.Dom
[TestFixture]
public class ContinueStatementTests
{
#region VB.NET
// No VB.NET representation
#endregion
// TODO : add ContinueStatementTests
}
}

19
VB/Test/Parser/Statements/EmptyStatementTests.cs

@ -1,19 +0,0 @@ @@ -1,19 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.IO;
using NUnit.Framework;
using ICSharpCode.NRefactory.VB.Parser;
using ICSharpCode.NRefactory.VB.Dom;
namespace ICSharpCode.NRefactory.VB.Tests.Dom
{
[TestFixture]
public class EmptyStatementTests
{
#region VB.NET
// No VB.NET representation
#endregion
}
}

4
VB/Test/Parser/Statements/ExpressionStatementTests.cs

@ -12,8 +12,6 @@ namespace ICSharpCode.NRefactory.VB.Tests.Dom @@ -12,8 +12,6 @@ namespace ICSharpCode.NRefactory.VB.Tests.Dom
[TestFixture]
public class ExpressionStatementTests
{
#region VB.NET
// TODO
#endregion
// TODO : Create ExpressionStatementTests
}
}

19
VB/Test/Parser/Statements/FixedStatementTests.cs

@ -1,19 +0,0 @@ @@ -1,19 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.IO;
using NUnit.Framework;
using ICSharpCode.NRefactory.VB.Parser;
using ICSharpCode.NRefactory.VB.Dom;
namespace ICSharpCode.NRefactory.VB.Tests.Dom
{
[TestFixture]
public class FixedStatementTests
{
#region VB.NET
// No VB.NET representation
#endregion
}
}

19
VB/Test/Parser/Statements/ForStatementTests.cs

@ -1,19 +0,0 @@ @@ -1,19 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.IO;
using NUnit.Framework;
using ICSharpCode.NRefactory.VB.Parser;
using ICSharpCode.NRefactory.VB.Dom;
namespace ICSharpCode.NRefactory.VB.Tests.Dom
{
[TestFixture]
public class ForStatementTests
{
#region VB.NET
// No VB.NET representation (for ... next is different)
#endregion
}
}

19
VB/Test/Parser/Statements/GotoCaseStatementTests.cs

@ -1,19 +0,0 @@ @@ -1,19 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.IO;
using NUnit.Framework;
using ICSharpCode.NRefactory.VB.Parser;
using ICSharpCode.NRefactory.VB.Dom;
namespace ICSharpCode.NRefactory.VB.Tests.Dom
{
[TestFixture]
public class GotoCaseStatementTests
{
#region VB.NET
// No VB.NET representation
#endregion
}
}

19
VB/Test/Parser/Statements/UncheckedStatementTests.cs

@ -1,19 +0,0 @@ @@ -1,19 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.IO;
using NUnit.Framework;
using ICSharpCode.NRefactory.VB.Parser;
using ICSharpCode.NRefactory.VB.Dom;
namespace ICSharpCode.NRefactory.VB.Tests.Dom
{
[TestFixture]
public class UncheckedStatementTests
{
#region VB.NET
// No VB.NET representation
#endregion
}
}

19
VB/Test/Parser/Statements/UnsafeStatementTests.cs

@ -1,19 +0,0 @@ @@ -1,19 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.IO;
using NUnit.Framework;
using ICSharpCode.NRefactory.VB.Parser;
using ICSharpCode.NRefactory.VB.Dom;
namespace ICSharpCode.NRefactory.VB.Tests.Dom
{
[TestFixture]
public class UnsafeStatementTests
{
#region VB.NET
// No VB.NET representation
#endregion
}
}

17
VB/Test/Parser/TypeLevel/DestructorDeclarationTests.cs

@ -1,17 +0,0 @@ @@ -1,17 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.NRefactory.VB.Dom;
using NUnit.Framework;
namespace ICSharpCode.NRefactory.VB.Tests.Dom
{
[TestFixture]
public class DestructorDeclarationTests
{
#region VB.NET
// No VB.NET representation
#endregion
}
}

17
VB/Test/Parser/TypeLevel/IndexerDeclarationTests.cs

@ -1,17 +0,0 @@ @@ -1,17 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.NRefactory.VB.Dom;
using NUnit.Framework;
namespace ICSharpCode.NRefactory.VB.Tests.Dom
{
[TestFixture]
public class IndexerDeclarationTests
{
#region VB.NET
// no vb.net representation (indexers are properties named "item" in vb.net)
#endregion
}
}
Loading…
Cancel
Save