protected override EvaluationResult EvaluateImpl(SyntaxNode node)
{
var memberAccess = (MemberAccessExpressionSyntax)node;
if (memberAccess.Expression.IsKind(SyntaxKind.IdentifierName)
&& memberAccess.Name.Identifier.ValueText == "Wait")
{
var invokedVariable = memberAccess.Expression as IdentifierNameSyntax;
if (invokedVariable != null)
{
var variableName = invokedVariable.Identifier.ValueText;
var methodParent = FindMethodParent(node);
var variableAssignment = methodParent == null ? null : FindVariableAssignment(methodParent, variableName);
if (variableAssignment != null)
{
var childNodes = memberAccess.Parent.Parent.Parent.ChildNodes().Select(n => n.WithLeadingTrivia().WithTrailingTrivia().ToString()).AsArray();
var assignmentIndex = Array.IndexOf(childNodes, variableAssignment.Parent.WithLeadingTrivia().WithTrailingTrivia() + ";");
var invocationIndex = Array.IndexOf(childNodes, memberAccess.Parent.WithLeadingTrivia().WithTrailingTrivia() + ";");
if (invocationIndex == assignmentIndex + 1)
{
var snippet = methodParent.ToFullString();
return new EvaluationResult
{
Snippet = snippet
};
}
}
}
}
return null;
}