diff --git a/src/Libraries/NRefactory/Project/Src/PrettyPrinter/CSharp/CSharpOutputVisitor.cs b/src/Libraries/NRefactory/Project/Src/PrettyPrinter/CSharp/CSharpOutputVisitor.cs index cbbf324e9d..cce25f8eb4 100644 --- a/src/Libraries/NRefactory/Project/Src/PrettyPrinter/CSharp/CSharpOutputVisitor.cs +++ b/src/Libraries/NRefactory/Project/Src/PrettyPrinter/CSharp/CSharpOutputVisitor.cs @@ -2400,7 +2400,37 @@ namespace ICSharpCode.NRefactory.PrettyPrinter outputFormatter.PrintToken(Tokens.CloseParenthesis); 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); diff --git a/src/Libraries/NRefactory/Test/Output/CSharp/VBNetToCSharpConverterTest.cs b/src/Libraries/NRefactory/Test/Output/CSharp/VBNetToCSharpConverterTest.cs index b63df2ee0a..aebb178470 100644 --- a/src/Libraries/NRefactory/Test/Output/CSharp/VBNetToCSharpConverterTest.cs +++ b/src/Libraries/NRefactory/Test/Output/CSharp/VBNetToCSharpConverterTest.cs @@ -915,6 +915,26 @@ static bool InitStaticVariableHelper(Microsoft.VisualBasic.CompilerServices.Stat } + [Test] + public void XmlLINQDescendants() + { + TestStatement(@"Dim element = someXml...", + @"var element = someXml.Descendants(""somename"");"); + } + [Test] + public void XmlLINQElements() + { + TestStatement(@"Dim element = someXml.", + @"var element = someXml.Elements(""somename"");"); + } + + [Test] + public void XmlLINQAttribute() + { + TestStatement(@"Dim value = someXml.@attr", + @"var value = someXml.Attribute(""attr"").Value;"); + } + [Test] public void LinqQueryWhereSelect() {