Browse Source

handle VB.Net Axis LINQ syntax to CS conversion with tests

pull/42/head
Gregor Pacnik 12 years ago
parent
commit
8a9b312dcf
  1. 30
      src/Libraries/NRefactory/Project/Src/PrettyPrinter/CSharp/CSharpOutputVisitor.cs
  2. 20
      src/Libraries/NRefactory/Test/Output/CSharp/VBNetToCSharpConverterTest.cs

30
src/Libraries/NRefactory/Project/Src/PrettyPrinter/CSharp/CSharpOutputVisitor.cs

@ -2401,6 +2401,36 @@ namespace ICSharpCode.NRefactory.PrettyPrinter @@ -2401,6 +2401,36 @@ namespace ICSharpCode.NRefactory.PrettyPrinter
return null;
}
public override object TrackedVisitXmlMemberAccessExpression(XmlMemberAccessExpression xmlMemberAccessExpression, object data)
{
xmlMemberAccessExpression.TargetObject.AcceptVisitor(this, data);
switch (xmlMemberAccessExpression.AxisType)
{
case XmlAxisType.Element:
outputFormatter.PrintToken(Tokens.Dot);
outputFormatter.PrintText("Elements(\"");
outputFormatter.PrintText(xmlMemberAccessExpression.Identifier);
outputFormatter.PrintText("\")");
break;
case XmlAxisType.Attribute:
outputFormatter.PrintToken(Tokens.Dot);
outputFormatter.PrintText("Attribute(\"");
outputFormatter.PrintText(xmlMemberAccessExpression.Identifier);
outputFormatter.PrintText("\").Value");
break;
case XmlAxisType.Descendents:
outputFormatter.PrintToken(Tokens.Dot);
outputFormatter.PrintText("Descendants(\"");
outputFormatter.PrintText(xmlMemberAccessExpression.Identifier);
outputFormatter.PrintText("\")");
break;
default:
throw new Exception("Invalid value for XmlAxisType");
}
return null;
}
public override object TrackedVisitIdentifierExpression(IdentifierExpression identifierExpression, object data)
{
outputFormatter.PrintIdentifier(identifierExpression.Identifier);

20
src/Libraries/NRefactory/Test/Output/CSharp/VBNetToCSharpConverterTest.cs

@ -915,6 +915,26 @@ static bool InitStaticVariableHelper(Microsoft.VisualBasic.CompilerServices.Stat @@ -915,6 +915,26 @@ static bool InitStaticVariableHelper(Microsoft.VisualBasic.CompilerServices.Stat
}
[Test]
public void XmlLINQDescendants()
{
TestStatement(@"Dim element = someXml...<somename>",
@"var element = someXml.Descendants(""somename"");");
}
[Test]
public void XmlLINQElements()
{
TestStatement(@"Dim element = someXml.<somename>",
@"var element = someXml.Elements(""somename"");");
}
[Test]
public void XmlLINQAttribute()
{
TestStatement(@"Dim value = someXml.@attr",
@"var value = someXml.Attribute(""attr"").Value;");
}
[Test]
public void LinqQueryWhereSelect()
{

Loading…
Cancel
Save