Skip to content

Commit 461193a

Browse files
Regex replace
\(([A-Za-z]*)\)\s?await (.*).AcceptAsync\( await $2.AcceptAsync<$1>( The intent here is to push the information about expected type to somewhere that can do something useful with the information in a more central place. You could also imagine having "default" elements for a bunch of common types (e.g. identifiernamesyntax) that allow us to attach an error in a more specific context To go even further, the return type of the visitor could contain multiple options, and the AcceptAsync method pattern picking the one relevant to the context
1 parent c571542 commit 461193a

4 files changed

Lines changed: 105 additions & 105 deletions

File tree

CodeConverter/CSharp/BuiltInVisualBasicOperatorSubstitutions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ private async Task<ExpressionSyntax> ConvertMyGroupCollectionPropertyGetWithUnde
107107
case IPropertyReferenceOperation pro when pro.Property.IsMyGroupCollectionProperty():
108108
var associatedField = pro.Property.GetAssociatedField();
109109
var propertyReferenceOperation = ((IPropertyReferenceOperation)pro.Instance);
110-
var qualification = (ExpressionSyntax)await propertyReferenceOperation.Syntax.AcceptAsync(_triviaConvertingVisitor);
110+
var qualification = await propertyReferenceOperation.Syntax.AcceptAsync<ExpressionSyntax>(_triviaConvertingVisitor);
111111
return SyntaxFactory.MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, qualification, SyntaxFactory.IdentifierName(associatedField.Name));
112112
default:
113113
return null;

CodeConverter/CSharp/CommonConversions.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,7 @@ internal async Task<SyntaxList<ArrayRankSpecifierSyntax>> ConvertArrayRankSpecif
445445
SyntaxList<VBSyntax.ArrayRankSpecifierSyntax> arrayRankSpecifierSyntaxs,
446446
ArgumentListSyntax nodeArrayBounds, bool withSizes = true)
447447
{
448-
var bounds = SyntaxFactory.List(await arrayRankSpecifierSyntaxs.SelectAsync(async r => (ArrayRankSpecifierSyntax) await r.AcceptAsync(TriviaConvertingExpressionVisitor)));
448+
var bounds = SyntaxFactory.List(await arrayRankSpecifierSyntaxs.SelectAsync(async r => await r.AcceptAsync<ArrayRankSpecifierSyntax>(TriviaConvertingExpressionVisitor)));
449449

450450
if (nodeArrayBounds != null) {
451451
ArrayRankSpecifierSyntax arrayRankSpecifierSyntax = await ConvertArrayBoundsAsync(nodeArrayBounds, withSizes);
@@ -488,7 +488,7 @@ private async Task<ExpressionSyntax> IncreaseArrayUpperBoundExpressionAsync(VBSy
488488
if (constant.HasValue && constant.Value is int)
489489
return SyntaxFactory.LiteralExpression(CSSyntaxKind.NumericLiteralExpression, SyntaxFactory.Literal((int)constant.Value + 1));
490490

491-
var convertedExpression = (ExpressionSyntax)await expr.AcceptAsync(TriviaConvertingExpressionVisitor);
491+
var convertedExpression = await expr.AcceptAsync<ExpressionSyntax>(TriviaConvertingExpressionVisitor);
492492

493493
if (op is IBinaryOperation bOp && bOp.OperatorKind == BinaryOperatorKind.Subtract &&
494494
bOp.RightOperand.ConstantValue.HasValue && bOp.RightOperand.ConstantValue.Value is int subtractedVal && subtractedVal == 1
@@ -546,7 +546,7 @@ public static CSSyntax.VariableDeclaratorSyntax CreateVariableDeclarator(string
546546
!VBasic.VisualBasicExtensions.IsDefault(pro.Property)) {
547547
var isSetter = pro.Parent.Kind == OperationKind.SimpleAssignment && pro.Parent.Children.First() == pro;
548548
var extraArg = isSetter
549-
? (ExpressionSyntax) await operation.Parent.Syntax.ChildNodes().ElementAt(1).AcceptAsync(TriviaConvertingExpressionVisitor)
549+
? await operation.Parent.Syntax.ChildNodes().ElementAt(1).AcceptAsync<ExpressionSyntax>(TriviaConvertingExpressionVisitor)
550550
: null;
551551
return (isSetter ? pro.Property.SetMethod.Name : pro.Property.GetMethod.Name, extraArg);
552552
}

0 commit comments

Comments
 (0)