Skip to content

Commit 5bc9636

Browse files
Pass type symbol
1 parent 65254e0 commit 5bc9636

File tree

3 files changed

+12
-12
lines changed

3 files changed

+12
-12
lines changed

CodeConverter/CSharp/CommonConversions.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public CommonConversions(Document document, SemanticModel semanticModel,
5757
_csCompilation = csCompilation;
5858
}
5959

60-
public async Task<(IReadOnlyCollection<VariableDeclarationSyntax> Variables, IReadOnlyCollection<CSharpSyntaxNode> Methods)> SplitVariableDeclarations(
60+
public async Task<(IReadOnlyCollection<(VariableDeclarationSyntax Decl, ITypeSymbol Type)> Variables, IReadOnlyCollection<CSharpSyntaxNode> Methods)> SplitVariableDeclarations(
6161
VariableDeclaratorSyntax declarator, bool preferExplicitType = false)
6262
{
6363
var vbInitValue = GetInitializerToConvert(declarator);
@@ -75,7 +75,7 @@ public CommonConversions(Document document, SemanticModel semanticModel,
7575
requireExplicitTypeForAll |= vbInitIsNothingLiteral || isAnonymousFunction;
7676
}
7777

78-
var csVars = new Dictionary<string, VariableDeclarationSyntax>();
78+
var csVars = new Dictionary<string, (VariableDeclarationSyntax Decl, ITypeSymbol Type)>();
7979
var csMethods = new List<CSharpSyntaxNode>();
8080

8181
foreach (var name in declarator.Names) {
@@ -87,15 +87,15 @@ public CommonConversions(Document document, SemanticModel semanticModel,
8787
string k = declaredSymbolType?.GetFullMetadataName() ?? name.ToString();//Use likely unique key if the type symbol isn't available
8888

8989
if (csVars.TryGetValue(k, out var decl)) {
90-
csVars[k] = decl.AddVariables(v);
90+
csVars[k] = (decl.Decl.AddVariables(v), decl.Type);
9191
continue;
9292
}
9393

9494
if (initializerOrMethodDecl == null || initializerOrMethodDecl is ExpressionSyntax) {
9595
var variableDeclaration = CreateVariableDeclaration(declarator, preferExplicitType,
9696
requireExplicitTypeForAll, vbInitializerType, declaredSymbolType, equalsValueClauseSyntax,
9797
initSymbol, v);
98-
csVars[k] = variableDeclaration;
98+
csVars[k] = (variableDeclaration, declaredSymbolType);
9999
} else {
100100
csMethods.Add(initializerOrMethodDecl);
101101
}

CodeConverter/CSharp/DeclarationNodeVisitor.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -474,10 +474,10 @@ private async Task<List<MemberDeclarationSyntax>> GetMemberDeclarations(VBSyntax
474474
return declarations;
475475
}
476476

477-
private IEnumerable<MemberDeclarationSyntax> CreateMemberDeclarations(IReadOnlyCollection<VariableDeclarationSyntax> splitDeclarationVariables,
477+
private IEnumerable<MemberDeclarationSyntax> CreateMemberDeclarations(IReadOnlyCollection<(VariableDeclarationSyntax Decl, ITypeSymbol Type)> splitDeclarationVariables,
478478
bool isWithEvents, SyntaxTokenList convertedModifiers, List<AttributeListSyntax> attributes)
479479
{
480-
foreach (var decl in splitDeclarationVariables)
480+
foreach (var (decl, type) in splitDeclarationVariables)
481481
{
482482
if (isWithEvents) {
483483
var fieldDecls = CreateWithEventsMembers(convertedModifiers, attributes, decl);
@@ -488,8 +488,8 @@ private IEnumerable<MemberDeclarationSyntax> CreateMemberDeclarations(IReadOnlyC
488488
foreach (var additionalDecl in CreateAdditionalLocalMembers(convertedModifiers, attributes, decl)) {
489489
yield return additionalDecl;
490490
}
491-
} else
492-
{
491+
} else {
492+
493493
yield return SyntaxFactory.FieldDeclaration(SyntaxFactory.List(attributes), convertedModifiers, decl);
494494
}
495495

CodeConverter/CSharp/MethodBodyExecutableStatementVisitor.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ public override async Task<SyntaxList<StatementSyntax>> VisitLocalDeclarationSta
9090

9191
foreach (var declarator in node.Declarators) {
9292
var splitVariableDeclarations = await CommonConversions.SplitVariableDeclarations(declarator, preferExplicitType: isConst);
93-
var localDeclarationStatementSyntaxs = splitVariableDeclarations.Variables.Select(decl => SyntaxFactory.LocalDeclarationStatement(modifiers, decl));
93+
var localDeclarationStatementSyntaxs = splitVariableDeclarations.Variables.Select(declAndType => SyntaxFactory.LocalDeclarationStatement(modifiers, declAndType.Decl));
9494
declarations.AddRange(localDeclarationStatementSyntaxs);
9595
var localFunctions = splitVariableDeclarations.Methods.Cast<LocalFunctionStatementSyntax>();
9696
declarations.AddRange(localFunctions);
@@ -454,7 +454,7 @@ public override async Task<SyntaxList<StatementSyntax>> VisitForBlock(VBSyntax.F
454454
var initializers = new List<ExpressionSyntax>();
455455
if (stmt.ControlVariable is VBSyntax.VariableDeclaratorSyntax) {
456456
var v = (VBSyntax.VariableDeclaratorSyntax)stmt.ControlVariable;
457-
declaration = (await CommonConversions.SplitVariableDeclarations(v)).Variables.Single();
457+
declaration = (await CommonConversions.SplitVariableDeclarations(v)).Variables.Single().Decl;
458458
declaration = declaration.WithVariables(SyntaxFactory.SingletonSeparatedList(declaration.Variables[0].WithInitializer(SyntaxFactory.EqualsValueClause(startValue))));
459459
id = SyntaxFactory.IdentifierName(declaration.Variables[0].Identifier);
460460
} else {
@@ -519,7 +519,7 @@ public override async Task<SyntaxList<StatementSyntax>> VisitForEachBlock(VBSynt
519519
TypeSyntax type;
520520
SyntaxToken id;
521521
if (stmt.ControlVariable is VBSyntax.VariableDeclaratorSyntax vds) {
522-
var declaration = (await CommonConversions.SplitVariableDeclarations(vds)).Variables.Single();
522+
var declaration = (await CommonConversions.SplitVariableDeclarations(vds)).Variables.Single().Decl;
523523
type = declaration.Type;
524524
id = declaration.Variables.Single().Identifier;
525525
} else {
@@ -709,7 +709,7 @@ public override async Task<SyntaxList<StatementSyntax>> VisitUsingBlock(VBSyntax
709709
StatementSyntax stmt = statementSyntax;
710710
foreach (var v in node.UsingStatement.Variables.Reverse())
711711
foreach (var declaration in (await CommonConversions.SplitVariableDeclarations(v)).Variables.Reverse())
712-
stmt = SyntaxFactory.UsingStatement(declaration, null, stmt);
712+
stmt = SyntaxFactory.UsingStatement(declaration.Decl, null, stmt);
713713
return SingleStatement(stmt);
714714
}
715715

0 commit comments

Comments
 (0)