Skip to content

Commit d8eb186

Browse files
Scooletzppekrol
authored andcommitted
RavenDB-25153 fixup
1 parent 382db2a commit d8eb186

File tree

1 file changed

+27
-12
lines changed

1 file changed

+27
-12
lines changed

Raven.CodeAnalysis/TaskCompletionSource/TaskCompletionSourceMustHaveRunContinuationsAsynchronouslySetAnalyzer.cs

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,9 @@ public override void Initialize(AnalysisContext context)
2626
private static void AnalyzeSyntax(SyntaxNodeAnalysisContext context)
2727
{
2828
var objectCreationExpressionSyntax = (ObjectCreationExpressionSyntax)context.Node;
29-
var genericNameSyntax = objectCreationExpressionSyntax.Type as GenericNameSyntax;
30-
if (genericNameSyntax == null)
31-
{
32-
var qualifiedNameSyntax = objectCreationExpressionSyntax.Type as QualifiedNameSyntax;
33-
if (qualifiedNameSyntax == null)
34-
return;
3529

36-
genericNameSyntax = qualifiedNameSyntax.Right as GenericNameSyntax;
37-
if (genericNameSyntax == null)
38-
return;
39-
}
40-
41-
if (string.Equals(genericNameSyntax.Identifier.Text, TaskCompletionSourceName) == false)
30+
if (IsGenericTaskCompletionSourceCreation(objectCreationExpressionSyntax) == false &&
31+
IsNonGenericTaskCompletionSourceCreation(objectCreationExpressionSyntax) == false)
4232
return;
4333

4434
var arguments = objectCreationExpressionSyntax.ArgumentList;
@@ -51,6 +41,31 @@ private static void AnalyzeSyntax(SyntaxNodeAnalysisContext context)
5141
ReportDiagnostic(context, objectCreationExpressionSyntax);
5242
}
5343

44+
private static bool IsGenericTaskCompletionSourceCreation(ObjectCreationExpressionSyntax objectCreationExpressionSyntax) =>
45+
IsTaskCompletionSource<GenericNameSyntax>(objectCreationExpressionSyntax);
46+
47+
private static bool IsNonGenericTaskCompletionSourceCreation(ObjectCreationExpressionSyntax objectCreationExpressionSyntax) =>
48+
IsTaskCompletionSource<IdentifierNameSyntax>(objectCreationExpressionSyntax);
49+
50+
private static bool IsTaskCompletionSource<TNameSyntax>(ObjectCreationExpressionSyntax objectCreationExpressionSyntax)
51+
where TNameSyntax : SimpleNameSyntax
52+
{
53+
var nameSyntax = objectCreationExpressionSyntax.Type as TNameSyntax;
54+
55+
if (nameSyntax == null)
56+
{
57+
var qualifiedNameSyntax = objectCreationExpressionSyntax.Type as QualifiedNameSyntax;
58+
if (qualifiedNameSyntax == null)
59+
return false;
60+
61+
nameSyntax = qualifiedNameSyntax.Right as TNameSyntax;
62+
if (nameSyntax == null)
63+
return false;
64+
}
65+
66+
return string.Equals(nameSyntax.Identifier.Text, TaskCompletionSourceName);
67+
}
68+
5469
private static bool IsRunContinuationsAsynchronously(ExpressionSyntax expression)
5570
{
5671
var memberAccessExpressionSyntax = expression as MemberAccessExpressionSyntax;

0 commit comments

Comments
 (0)