Skip to content

Commit 17aa7e3

Browse files
Dedupe and fix syntaxkind
1 parent 384c8ee commit 17aa7e3

3 files changed

Lines changed: 10 additions & 4 deletions

File tree

CodeConverter/CSharp/BuiltInVisualBasicOperatorSubsitutions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,8 @@ private async Task<ExpressionSyntax> ConvertToObjectComparisonOperatorAsync(VBSy
109109
{
110110
var (lhs, rhs) = await AcceptSidesAsync(node);
111111
member = (member.Import, member.TypeName, "Conditional" + member.MethodName); //The VB compiler would late bind, but this should provide identical results in most cases I think
112-
var compareTextKind = _visualBasicEqualityComparison.OptionCompareTextCaseInsensitive ? SyntaxKind.TrueLiteralExpression : SyntaxKind.FalseLiteralExpression;
113-
return member.Invoke(_visualBasicEqualityComparison.ExtraUsingDirectives, lhs, rhs, SyntaxFactory.LiteralExpression(compareTextKind));
112+
var optionaCompareTextBoolLiteralExpression = _visualBasicEqualityComparison.OptionCompareTextCaseInsensitiveBoolExpression;
113+
return member.Invoke(_visualBasicEqualityComparison.ExtraUsingDirectives, lhs, rhs, optionaCompareTextBoolLiteralExpression);
114114
}
115115

116116
private async Task<ExpressionSyntax> ConvertToConcatenateOperatorAsync(VBSyntax.BinaryExpressionSyntax node)

CodeConverter/CSharp/ExpressionNodeVisitor.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ internal class ExpressionNodeVisitor : VBasic.VisualBasicSyntaxVisitor<Task<CSha
3333
private readonly SemanticModel _semanticModel;
3434
private readonly HashSet<string> _extraUsingDirectives;
3535
private readonly IOperatorConverter _operatorConverter;
36-
private readonly bool _optionCompareText = false;
3736
private readonly VisualBasicEqualityComparison _visualBasicEqualityComparison;
3837
private readonly Stack<ExpressionSyntax> _withBlockLhs = new Stack<ExpressionSyntax>();
3938
private readonly ITypeContext _typeContext;

CodeConverter/CSharp/VisualBasicEqualityComparison.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,13 @@ public enum RequiredType
4242

4343
public bool OptionCompareTextCaseInsensitive { get; set; }
4444

45+
public LiteralExpressionSyntax OptionCompareTextCaseInsensitiveBoolExpression {
46+
get {
47+
var compareTextKind = OptionCompareTextCaseInsensitive ? SyntaxKind.TrueLiteralExpression : SyntaxKind.FalseLiteralExpression;
48+
return SyntaxFactory.LiteralExpression(compareTextKind);
49+
}
50+
}
51+
4552
public HashSet<string> ExtraUsingDirectives { get; }
4653

4754
public RequiredType GetObjectEqualityType(VBSyntax.BinaryExpressionSyntax node, TypeInfo leftType, TypeInfo rightType)
@@ -211,7 +218,7 @@ private static ExpressionSyntax NegateIfNeeded(VBSyntax.BinaryExpressionSyntax n
211218
public ExpressionSyntax GetFullExpressionForVbObjectComparison(VBSyntax.BinaryExpressionSyntax node, ExpressionSyntax lhs, ExpressionSyntax rhs)
212219
{
213220
ExtraUsingDirectives.Add("Microsoft.VisualBasic.CompilerServices");
214-
var optionCompareTextCaseInsensitive = SyntaxFactory.Argument(SyntaxFactory.LiteralExpression(OptionCompareTextCaseInsensitive ? SyntaxKind.TrueKeyword : SyntaxKind.FalseLiteralExpression));
221+
var optionCompareTextCaseInsensitive = SyntaxFactory.Argument(OptionCompareTextCaseInsensitiveBoolExpression);
215222
var compareObject = SyntaxFactory.InvocationExpression(ValidSyntaxFactory.MemberAccess(nameof(Operators), nameof(Operators.ConditionalCompareObjectEqual)),
216223
SyntaxFactory.ArgumentList(SyntaxFactory.SeparatedList(new[]
217224
{SyntaxFactory.Argument(lhs), SyntaxFactory.Argument(rhs), optionCompareTextCaseInsensitive})));

0 commit comments

Comments
 (0)