in src/Microsoft.VisualStudio.SDK.Analyzers/VSSDK007ThreadHelperJTFRunAsync.cs [313:340]
private static bool VariableAwaitsJoinAsyncMethod(string variableName, AwaitExpressionSyntax awaitExpr)
{
if (string.IsNullOrEmpty(variableName))
{
return false;
}
IEnumerable<MemberAccessExpressionSyntax>? memberAccessList = awaitExpr.DescendantNodes().OfType<MemberAccessExpressionSyntax>();
if (memberAccessList.Count() != 1)
{
return false;
}
MemberAccessExpressionSyntax? memberAccess = memberAccessList.First();
IEnumerable<IdentifierNameSyntax>? childIdentifiers = memberAccess.ChildNodes().OfType<IdentifierNameSyntax>();
if (!childIdentifiers.Any())
{
return false;
}
if (childIdentifiers.First().Identifier.ValueText != variableName)
{
return false;
}
return childIdentifiers.ElementAt(1).Identifier.ValueText == Types.JoinableTask.JoinAsync;
}