Browse Source

implemented AnonymousObjectCreationExpression

newNRvisualizers
Siegfried Pammer 14 years ago
parent
commit
f7fcc9d68b
  1. 41
      ICSharpCode.NRefactory.VB/Ast/Expressions/AnonymousObjectCreationExpression.cs
  2. 2
      ICSharpCode.NRefactory.VB/IAstVisitor.cs
  3. 1
      ICSharpCode.NRefactory.VB/ICSharpCode.NRefactory.VB.csproj
  4. 16
      ICSharpCode.NRefactory.VB/OutputVisitor/OutputVisitor.cs
  5. 6
      ICSharpCode.NRefactory.VB/Visitors/CSharpToVBConverterVisitor.cs

41
ICSharpCode.NRefactory.VB/Ast/Expressions/AnonymousObjectCreationExpression.cs

@ -0,0 +1,41 @@ @@ -0,0 +1,41 @@
// 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.Collections.Generic;
namespace ICSharpCode.NRefactory.VB.Ast
{
public class AnonymousObjectCreationExpression : Expression
{
public AstNodeCollection<Expression> Initializer {
get { return GetChildrenByRole(Roles.Expression); }
}
public AnonymousObjectCreationExpression ()
{
}
public AnonymousObjectCreationExpression (IEnumerable<Expression> initializer)
{
foreach (var ini in initializer) {
AddChild (ini, Roles.Expression);
}
}
public AnonymousObjectCreationExpression (params Expression[] initializer) : this ((IEnumerable<Expression>)initializer)
{
}
public override S AcceptVisitor<T, S> (IAstVisitor<T, S> visitor, T data)
{
return visitor.VisitAnonymousObjectCreationExpression(this, data);
}
protected internal override bool DoMatch(AstNode other, PatternMatching.Match match)
{
var o = other as AnonymousObjectCreationExpression;
return o != null && this.Initializer.DoMatch(o.Initializer, match);
}
}
}

2
ICSharpCode.NRefactory.VB/IAstVisitor.cs

@ -113,5 +113,7 @@ namespace ICSharpCode.NRefactory.VB { @@ -113,5 +113,7 @@ namespace ICSharpCode.NRefactory.VB {
S VisitQueryExpression(QueryExpression queryExpression, T data);
S VisitEmptyExpression(EmptyExpression emptyExpression, T data);
S VisitAnonymousObjectCreationExpression(AnonymousObjectCreationExpression anonymousObjectCreationExpression, T data);
}
}

1
ICSharpCode.NRefactory.VB/ICSharpCode.NRefactory.VB.csproj

@ -48,6 +48,7 @@ @@ -48,6 +48,7 @@
<Compile Include="Ast\AstNodeCollection.cs" />
<Compile Include="Ast\Comment.cs" />
<Compile Include="Ast\Enums.cs" />
<Compile Include="Ast\Expressions\AnonymousObjectCreationExpression.cs" />
<Compile Include="Ast\Expressions\ArrayCreateExpression.cs" />
<Compile Include="Ast\Expressions\ArrayInitializerExpression.cs" />
<Compile Include="Ast\Expressions\AssignmentExpression.cs" />

16
ICSharpCode.NRefactory.VB/OutputVisitor/OutputVisitor.cs

@ -2411,5 +2411,21 @@ namespace ICSharpCode.NRefactory.VB @@ -2411,5 +2411,21 @@ namespace ICSharpCode.NRefactory.VB
return EndNode(emptyExpression);
}
public object VisitAnonymousObjectCreationExpression(AnonymousObjectCreationExpression anonymousObjectCreationExpression, object data)
{
StartNode(anonymousObjectCreationExpression);
WriteKeyword("New");
WriteKeyword("With");
WriteToken("{", AnonymousObjectCreationExpression.Roles.LBrace);
Space();
WriteCommaSeparatedList(anonymousObjectCreationExpression.Initializer);
Space();
WriteToken("}", AnonymousObjectCreationExpression.Roles.RBrace);
return EndNode(anonymousObjectCreationExpression);
}
}
}

6
ICSharpCode.NRefactory.VB/Visitors/CSharpToVBConverterVisitor.cs

@ -429,7 +429,11 @@ namespace ICSharpCode.NRefactory.VB.Visitors @@ -429,7 +429,11 @@ namespace ICSharpCode.NRefactory.VB.Visitors
public AstNode VisitAnonymousTypeCreateExpression(CSharp.AnonymousTypeCreateExpression anonymousTypeCreateExpression, object data)
{
throw new NotImplementedException();
var expr = new AnonymousObjectCreationExpression();
ConvertNodes(anonymousTypeCreateExpression.Initializer, expr.Initializer);
return EndNode(anonymousTypeCreateExpression, expr);
}
public AstNode VisitParenthesizedExpression(CSharp.ParenthesizedExpression parenthesizedExpression, object data)

Loading…
Cancel
Save