|
|
|
@ -20,6 +20,8 @@ namespace ICSharpCode.NRefactory.VB.Visitors
@@ -20,6 +20,8 @@ namespace ICSharpCode.NRefactory.VB.Visitors
|
|
|
|
|
bool? IsReferenceType(CSharp.Expression expression); |
|
|
|
|
//ITypeResolveContext ResolveContext { get; }
|
|
|
|
|
IType ResolveType(AstType type, TypeDeclaration entity = null); |
|
|
|
|
bool IsMethodGroup(CSharp.Expression expression); |
|
|
|
|
bool HasEvent(Expression expression); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
@ -126,9 +128,21 @@ namespace ICSharpCode.NRefactory.VB.Visitors
@@ -126,9 +128,21 @@ namespace ICSharpCode.NRefactory.VB.Visitors
|
|
|
|
|
op = AssignmentOperatorType.Assign; |
|
|
|
|
break; |
|
|
|
|
case ICSharpCode.NRefactory.CSharp.AssignmentOperatorType.Add: |
|
|
|
|
if (provider.HasEvent(left)) { |
|
|
|
|
var addHandler = new AddRemoveHandlerStatement { IsAddHandler = true }; |
|
|
|
|
addHandler.EventExpression = left; |
|
|
|
|
addHandler.DelegateExpression = right; |
|
|
|
|
return EndNode(assignmentExpression, addHandler); |
|
|
|
|
} |
|
|
|
|
op = AssignmentOperatorType.Add; |
|
|
|
|
break; |
|
|
|
|
case ICSharpCode.NRefactory.CSharp.AssignmentOperatorType.Subtract: |
|
|
|
|
if (provider.HasEvent(left)) { |
|
|
|
|
var addHandler = new AddRemoveHandlerStatement { IsAddHandler = false }; |
|
|
|
|
addHandler.EventExpression = left; |
|
|
|
|
addHandler.DelegateExpression = right; |
|
|
|
|
return EndNode(assignmentExpression, addHandler); |
|
|
|
|
} |
|
|
|
|
op = AssignmentOperatorType.Subtract; |
|
|
|
|
break; |
|
|
|
|
case ICSharpCode.NRefactory.CSharp.AssignmentOperatorType.Multiply: |
|
|
|
@ -359,6 +373,9 @@ namespace ICSharpCode.NRefactory.VB.Visitors
@@ -359,6 +373,9 @@ namespace ICSharpCode.NRefactory.VB.Visitors
|
|
|
|
|
var expr = new IdentifierExpression(); |
|
|
|
|
expr.Identifier = new Identifier(identifierExpression.Identifier, TextLocation.Empty); |
|
|
|
|
ConvertNodes(identifierExpression.TypeArguments, expr.TypeArguments); |
|
|
|
|
if (provider.IsMethodGroup(identifierExpression)) { |
|
|
|
|
return EndNode(identifierExpression, new UnaryOperatorExpression(UnaryOperatorType.AddressOf, expr)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return EndNode(identifierExpression, expr); |
|
|
|
|
} |
|
|
|
@ -372,10 +389,8 @@ namespace ICSharpCode.NRefactory.VB.Visitors
@@ -372,10 +389,8 @@ namespace ICSharpCode.NRefactory.VB.Visitors
|
|
|
|
|
|
|
|
|
|
public AstNode VisitInvocationExpression(CSharp.InvocationExpression invocationExpression, object data) |
|
|
|
|
{ |
|
|
|
|
var expr = new InvocationExpression( |
|
|
|
|
(Expression)invocationExpression.Target.AcceptVisitor(this, data)); |
|
|
|
|
var expr = new InvocationExpression((Expression)invocationExpression.Target.AcceptVisitor(this, data)); |
|
|
|
|
ConvertNodes(invocationExpression.Arguments, expr.Arguments); |
|
|
|
|
|
|
|
|
|
return EndNode(invocationExpression, expr); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -412,6 +427,9 @@ namespace ICSharpCode.NRefactory.VB.Visitors
@@ -412,6 +427,9 @@ namespace ICSharpCode.NRefactory.VB.Visitors
|
|
|
|
|
memberAccessExpression.Target = (Expression)memberReferenceExpression.Target.AcceptVisitor(this, data); |
|
|
|
|
memberAccessExpression.MemberName = new Identifier(memberReferenceExpression.MemberName, TextLocation.Empty); |
|
|
|
|
ConvertNodes(memberReferenceExpression.TypeArguments, memberAccessExpression.TypeArguments); |
|
|
|
|
if (provider.IsMethodGroup(memberReferenceExpression)) { |
|
|
|
|
return EndNode(memberReferenceExpression, new UnaryOperatorExpression(UnaryOperatorType.AddressOf, memberAccessExpression)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return EndNode(memberReferenceExpression, memberAccessExpression); |
|
|
|
|
} |
|
|
|
@ -445,6 +463,11 @@ namespace ICSharpCode.NRefactory.VB.Visitors
@@ -445,6 +463,11 @@ namespace ICSharpCode.NRefactory.VB.Visitors
|
|
|
|
|
{ |
|
|
|
|
var expr = new ObjectCreationExpression((AstType)objectCreateExpression.Type.AcceptVisitor(this, data)); |
|
|
|
|
ConvertNodes(objectCreateExpression.Arguments, expr.Arguments); |
|
|
|
|
var arg1 = expr.Arguments.FirstOrDefault() as UnaryOperatorExpression; |
|
|
|
|
if (arg1 != null && arg1.Operator == UnaryOperatorType.AddressOf) { |
|
|
|
|
arg1.Remove(); |
|
|
|
|
return EndNode(objectCreateExpression, arg1); |
|
|
|
|
} |
|
|
|
|
if (!objectCreateExpression.Initializer.IsNull) |
|
|
|
|
expr.Initializer = (ArrayInitializerExpression)objectCreateExpression.Initializer.AcceptVisitor(this, data); |
|
|
|
|
|
|
|
|
@ -1036,8 +1059,10 @@ namespace ICSharpCode.NRefactory.VB.Visitors
@@ -1036,8 +1059,10 @@ namespace ICSharpCode.NRefactory.VB.Visitors
|
|
|
|
|
|
|
|
|
|
public AstNode VisitExpressionStatement(CSharp.ExpressionStatement expressionStatement, object data) |
|
|
|
|
{ |
|
|
|
|
var expr = new ExpressionStatement((Expression)expressionStatement.Expression.AcceptVisitor(this, data)); |
|
|
|
|
return EndNode(expressionStatement, expr); |
|
|
|
|
var node = expressionStatement.Expression.AcceptVisitor(this, data); |
|
|
|
|
if (node is Expression) |
|
|
|
|
node = new ExpressionStatement((Expression)node); |
|
|
|
|
return EndNode(expressionStatement, node); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public AstNode VisitFixedStatement(CSharp.FixedStatement fixedStatement, object data) |
|
|
|
|