private static void AnalyzeInstanceInvocation(IMethodSymbol methodSymbol, PXContext pxContext, SyntaxNodeAnalysisContext syntaxContext, InvocationExpressionSyntax invocationNode) { ExpressionSyntax accessExpression = invocationNode.GetAccessNodeFromInvocationNode(); if (accessExpression == null || syntaxContext.CancellationToken.IsCancellationRequested) { return; } int?argsCount = GetBqlArgumentsCount(methodSymbol, pxContext, syntaxContext, invocationNode); if (argsCount == null || syntaxContext.CancellationToken.IsCancellationRequested) { return; } ITypeSymbol containingType = GetContainingTypeForInstanceCall(pxContext, syntaxContext, accessExpression); if (containingType == null) { return; } BqlParameterMismatchAnalyzer.ParametersCounterSymbolWalker walker = new BqlParameterMismatchAnalyzer.ParametersCounterSymbolWalker(syntaxContext, pxContext); if (!walker.CountParametersInTypeSymbol(containingType)) { return; } VerifyBqlArgumentsCount(argsCount.Value, walker.ParametersCounter, syntaxContext, invocationNode, methodSymbol); }
private static void AnalyzeDerivedBqlStaticCall(IMethodSymbol methodSymbol, PXContext pxContext, SyntaxNodeAnalysisContext syntaxContext) { INamedTypeSymbol containingType = methodSymbol.ContainingType; if (containingType.IsUnboundGenericType || !containingType.IsBqlCommand() || containingType.IsCustomBqlCommand(pxContext) || syntaxContext.CancellationToken.IsCancellationRequested) { return; } var invocationNode = syntaxContext.Node as InvocationExpressionSyntax; int?argsCount = GetBqlArgumentsCount(methodSymbol, pxContext, syntaxContext, invocationNode); if (argsCount == null || syntaxContext.CancellationToken.IsCancellationRequested) { return; } BqlParameterMismatchAnalyzer.ParametersCounterSymbolWalker walker = new BqlParameterMismatchAnalyzer.ParametersCounterSymbolWalker(syntaxContext, pxContext); if (!walker.CountParametersInTypeSymbol(containingType)) { return; } VerifyBqlArgumentsCount(argsCount.Value, walker.ParametersCounter, syntaxContext, invocationNode, methodSymbol); }