Skip to content

Commit 1731f01

Browse files
Split into a separate visitor and delegate to it by default
1 parent 068c555 commit 1731f01

2 files changed

Lines changed: 21 additions & 8 deletions

File tree

CodeConverter/CSharp/ExpressionNodeVisitor.cs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ internal partial class ExpressionNodeVisitor : VBasic.VisualBasicSyntaxVisitor<T
3535
private readonly VisualBasicNullableExpressionsConverter _visualBasicNullableTypesConverter;
3636
private readonly Dictionary<string, Stack<(SyntaxNode Scope, string TempName)>> _tempNameForAnonymousScope = new();
3737
private readonly HashSet<string> _generatedNames = new(StringComparer.OrdinalIgnoreCase);
38+
private readonly XmlExpressionNodeVisitor _xmlExpressionNodeVisitor;
3839

3940
public ExpressionNodeVisitor(SemanticModel semanticModel,
4041
VisualBasicEqualityComparison visualBasicEqualityComparison, ITypeContext typeContext, CommonConversions commonConversions,
@@ -48,7 +49,7 @@ public ExpressionNodeVisitor(SemanticModel semanticModel,
4849
_queryConverter = new QueryConverter(commonConversions, _semanticModel, TriviaConvertingExpressionVisitor);
4950
_typeContext = typeContext;
5051
_extraUsingDirectives = extraUsingDirectives;
51-
_xmlImportContext = xmlImportContext;
52+
_xmlExpressionNodeVisitor = new XmlExpressionNodeVisitor(xmlImportContext, extraUsingDirectives, TriviaConvertingExpressionVisitor);
5253
_visualBasicNullableTypesConverter = visualBasicNullableTypesConverter;
5354
_operatorConverter = VbOperatorConversion.Create(TriviaConvertingExpressionVisitor, semanticModel, visualBasicEqualityComparison, commonConversions.TypeConversionAnalyzer);
5455
// If this isn't needed, the assembly with Conversions may not be referenced, so this must be done lazily
@@ -84,12 +85,7 @@ private static IReadOnlyDictionary<ITypeSymbol, string> CreateConvertMethodsLook
8485

8586
public CommonConversions CommonConversions { get; }
8687

87-
public override async Task<CSharpSyntaxNode> DefaultVisit(SyntaxNode node)
88-
{
89-
throw new NotImplementedException(
90-
$"Conversion for {VBasic.VisualBasicExtensions.Kind(node)} not implemented, please report this issue")
91-
.WithNodeInformation(node);
92-
}
88+
public override Task<CSharpSyntaxNode> DefaultVisit(SyntaxNode node) => _xmlExpressionNodeVisitor.Visit(node);
9389

9490
public override async Task<CSharpSyntaxNode> VisitGetTypeExpression(VBasic.Syntax.GetTypeExpressionSyntax node)
9591
{

CodeConverter/CSharp/ExpressionNodeVisitor.Xml.cs renamed to CodeConverter/CSharp/XmlExpressionNodeVisitor.cs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,30 @@
44

55
namespace ICSharpCode.CodeConverter.CSharp;
66

7-
internal partial class ExpressionNodeVisitor : VBasic.VisualBasicSyntaxVisitor<Task<CSharpSyntaxNode>>
7+
internal class XmlExpressionNodeVisitor: VBasic.VisualBasicSyntaxVisitor<Task<CSharpSyntaxNode>>
88
{
99
private readonly XmlImportContext _xmlImportContext;
10+
private readonly HashSet<string> _extraUsingDirectives;
11+
12+
public XmlExpressionNodeVisitor(XmlImportContext xmlImportContext, HashSet<string> extraUsingDirectives, CommentConvertingVisitorWrapper triviaConvertingExpressionVisitor)
13+
{
14+
_xmlImportContext = xmlImportContext;
15+
_extraUsingDirectives = extraUsingDirectives;
16+
TriviaConvertingExpressionVisitor = triviaConvertingExpressionVisitor;
17+
}
18+
public override async Task<CSharpSyntaxNode> DefaultVisit(SyntaxNode node)
19+
{
20+
throw new NotImplementedException(
21+
$"Conversion for {VBasic.VisualBasicExtensions.Kind(node)} not implemented, please report this issue")
22+
.WithNodeInformation(node);
23+
}
24+
1025

1126
public override async Task<CSharpSyntaxNode> VisitXmlEmbeddedExpression(VBSyntax.XmlEmbeddedExpressionSyntax node) =>
1227
await node.Expression.AcceptAsync<ExpressionSyntax>(TriviaConvertingExpressionVisitor);
1328

29+
public CommentConvertingVisitorWrapper TriviaConvertingExpressionVisitor { get; }
30+
1431
public override async Task<CSharpSyntaxNode> VisitXmlDocument(VBasic.Syntax.XmlDocumentSyntax node)
1532
{
1633
_extraUsingDirectives.Add("System.Xml.Linq");

0 commit comments

Comments
 (0)