internal static bool TryGetIdentifierAndRegisteredName(ArgumentSyntax callback, SemanticModel semanticModel, CancellationToken cancellationToken, out IdentifierNameSyntax identifier, out string registeredName) { registeredName = null; if (!ValidateValueCallback.TryGetName(callback, semanticModel, cancellationToken, out identifier, out string _)) { return(false); } return(ValidateValueCallback.TryGetRegisteredName(callback, semanticModel, cancellationToken, out registeredName)); }
private static void HandleInvocation(SyntaxNodeAnalysisContext context) { var invocation = context.Node as InvocationExpressionSyntax; if (invocation == null || invocation.IsMissing) { return; } ArgumentSyntax callback; if (!ValidateValueCallback.TryGetValidateValueCallback( invocation, context.SemanticModel, context.CancellationToken, out callback)) { return; } IdentifierNameSyntax nameExpression; string registeredName; if (TryGetIdentifierAndRegisteredName( callback, context.SemanticModel, context.CancellationToken, out nameExpression, out registeredName)) { if (!nameExpression.Identifier.ValueText.IsParts(registeredName, "ValidateValue")) { context.ReportDiagnostic(Diagnostic.Create(Descriptor, nameExpression.GetLocation(), nameExpression, $"{registeredName}ValidateValue")); } } }