private static bool VariableAwaitsJoinAsyncMethod()

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;
        }