Skip to content

Commit 147fd7c

Browse files
committed
Use new compiler API
1 parent 5069c81 commit 147fd7c

File tree

3 files changed

+13
-21
lines changed

3 files changed

+13
-21
lines changed

src/Analyzers/CSharp/CodeFixes/MakeMethodAsynchronous/CSharpMakeMethodAsynchronousCodeFixProvider.cs

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,12 @@ protected override SyntaxNode AddAsyncTokenAndFixReturnType(
7171
bool keepVoid,
7272
IMethodSymbol methodSymbol,
7373
SyntaxNode node,
74-
KnownTaskTypes knownTypes,
75-
CancellationToken cancellationToken)
74+
KnownTaskTypes knownTypes)
7675
{
7776
return node switch
7877
{
79-
MethodDeclarationSyntax method => FixMethod(keepVoid, methodSymbol, method, knownTypes, cancellationToken),
80-
LocalFunctionStatementSyntax localFunction => FixLocalFunction(keepVoid, methodSymbol, localFunction, knownTypes, cancellationToken),
78+
MethodDeclarationSyntax method => FixMethod(keepVoid, methodSymbol, method, knownTypes),
79+
LocalFunctionStatementSyntax localFunction => FixLocalFunction(keepVoid, methodSymbol, localFunction, knownTypes),
8180
AnonymousFunctionExpressionSyntax anonymous => FixAnonymousFunction(anonymous),
8281
_ => node,
8382
};
@@ -87,34 +86,31 @@ private static MethodDeclarationSyntax FixMethod(
8786
bool keepVoid,
8887
IMethodSymbol methodSymbol,
8988
MethodDeclarationSyntax method,
90-
KnownTaskTypes knownTypes,
91-
CancellationToken cancellationToken)
89+
KnownTaskTypes knownTypes)
9290
{
9391
var (newModifiers, newReturnType) = AddAsyncModifierWithCorrectedTrivia(
9492
method.Modifiers,
95-
FixMethodReturnType(keepVoid, methodSymbol, method.ReturnType, knownTypes, cancellationToken));
93+
FixMethodReturnType(keepVoid, methodSymbol, method.ReturnType, knownTypes));
9694
return method.WithReturnType(newReturnType).WithModifiers(newModifiers);
9795
}
9896

9997
private static LocalFunctionStatementSyntax FixLocalFunction(
10098
bool keepVoid,
10199
IMethodSymbol methodSymbol,
102100
LocalFunctionStatementSyntax localFunction,
103-
KnownTaskTypes knownTypes,
104-
CancellationToken cancellationToken)
101+
KnownTaskTypes knownTypes)
105102
{
106103
var (newModifiers, newReturnType) = AddAsyncModifierWithCorrectedTrivia(
107104
localFunction.Modifiers,
108-
FixMethodReturnType(keepVoid, methodSymbol, localFunction.ReturnType, knownTypes, cancellationToken));
105+
FixMethodReturnType(keepVoid, methodSymbol, localFunction.ReturnType, knownTypes));
109106
return localFunction.WithReturnType(newReturnType).WithModifiers(newModifiers);
110107
}
111108

112109
private static TypeSyntax FixMethodReturnType(
113110
bool keepVoid,
114111
IMethodSymbol methodSymbol,
115112
TypeSyntax returnTypeSyntax,
116-
KnownTaskTypes knownTypes,
117-
CancellationToken cancellationToken)
113+
KnownTaskTypes knownTypes)
118114
{
119115
var newReturnType = returnTypeSyntax.WithAdditionalAnnotations(Formatter.Annotation);
120116

@@ -128,13 +124,13 @@ private static TypeSyntax FixMethodReturnType(
128124
else
129125
{
130126
var returnType = methodSymbol.ReturnType;
131-
if (IsIEnumerable(returnType, knownTypes) && IsIterator(methodSymbol, cancellationToken))
127+
if (IsIEnumerable(returnType, knownTypes) && methodSymbol.IsIterator)
132128
{
133129
newReturnType = knownTypes.IAsyncEnumerableOfTType is null
134130
? MakeGenericType(nameof(IAsyncEnumerable<>), methodSymbol.ReturnType)
135131
: knownTypes.IAsyncEnumerableOfTType.Construct(methodSymbol.ReturnType.GetTypeArguments()[0]).GenerateTypeSyntax();
136132
}
137-
else if (IsIEnumerator(returnType, knownTypes) && IsIterator(methodSymbol, cancellationToken))
133+
else if (IsIEnumerator(returnType, knownTypes) && methodSymbol.IsIterator)
138134
{
139135
newReturnType = knownTypes.IAsyncEnumeratorOfTType is null
140136
? MakeGenericType(nameof(IAsyncEnumerator<>), methodSymbol.ReturnType)
@@ -164,9 +160,6 @@ static TypeSyntax MakeGenericType(string type, ITypeSymbol typeArgumentFrom)
164160
}
165161
}
166162

167-
private static bool IsIterator(IMethodSymbol method, CancellationToken cancellationToken)
168-
=> method.Locations.Any(static (loc, cancellationToken) => loc.FindNode(cancellationToken).ContainsYield(), cancellationToken);
169-
170163
private static bool IsIAsyncEnumerableOrEnumerator(ITypeSymbol returnType, KnownTaskTypes knownTypes)
171164
=> returnType.OriginalDefinition.Equals(knownTypes.IAsyncEnumerableOfTType) ||
172165
returnType.OriginalDefinition.Equals(knownTypes.IAsyncEnumeratorOfTType);

src/Analyzers/Core/CodeFixes/MakeMethodAsynchronous/AbstractMakeMethodAsynchronousCodeFixProvider.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ internal abstract partial class AbstractMakeMethodAsynchronousCodeFixProvider :
2525
protected abstract bool IsAsyncReturnType(ITypeSymbol type, KnownTaskTypes knownTypes);
2626

2727
protected abstract SyntaxNode AddAsyncTokenAndFixReturnType(
28-
bool keepVoid, IMethodSymbol methodSymbol, SyntaxNode node, KnownTaskTypes knownTypes, CancellationToken cancellationToken);
28+
bool keepVoid, IMethodSymbol methodSymbol, SyntaxNode node, KnownTaskTypes knownTypes);
2929

3030
public override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer;
3131

@@ -188,7 +188,7 @@ private async Task<Solution> AddAsyncTokenAsync(
188188
SyntaxNode node,
189189
CancellationToken cancellationToken)
190190
{
191-
var newNode = AddAsyncTokenAndFixReturnType(keepVoid, methodSymbol, node, knownTypes, cancellationToken);
191+
var newNode = AddAsyncTokenAndFixReturnType(keepVoid, methodSymbol, node, knownTypes);
192192

193193
var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
194194
var newRoot = root.ReplaceNode(node, newNode);

src/Analyzers/VisualBasic/CodeFixes/MakeMethodAsynchronous/VisualBasicMakeMethodAsynchronousCodeFixProvider.vb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.MakeMethodAsynchronous
6161
keepVoid As Boolean,
6262
methodSymbolOpt As IMethodSymbol,
6363
node As SyntaxNode,
64-
knownTypes As KnownTaskTypes,
65-
cancellationToken As CancellationToken) As SyntaxNode
64+
knownTypes As KnownTaskTypes) As SyntaxNode
6665

6766
If node.IsKind(SyntaxKind.SingleLineSubLambdaExpression) OrElse
6867
node.IsKind(SyntaxKind.SingleLineFunctionLambdaExpression) Then

0 commit comments

Comments
 (0)