public static string ExtractVariabeName(InvocationExpressionSyntax invocation) { var variableExtractor = new VariableNameExtractor(); invocation.Accept(variableExtractor); return(variableExtractor.VariableName); }
public override CasesAndOr VisitInvocationExpression(InvocationExpressionSyntax node) { var visitor = node.Accept(_RangeVisitor); if (visitor?.Root != null) { return(new CasesAndOr(_CasesExpression, _ParameterNameExpression, GetParameterName(), new RangeAnalysis(visitor.Root, visitor.IsError), visitor.IsError)); } return(base.VisitInvocationExpression(node)); }
private const string CachePersistDeletedMethodName = "PersistDeleted"; // PXCache.PersistDeleted public static SaveOperationKind GetSaveOperationKind(IMethodSymbol symbol, InvocationExpressionSyntax syntaxNode, SemanticModel semanticModel, PXContext pxContext) { symbol.ThrowOnNull(nameof(symbol)); syntaxNode.ThrowOnNull(nameof(syntaxNode)); semanticModel.ThrowOnNull(nameof(semanticModel)); pxContext.ThrowOnNull(nameof(pxContext)); var containingType = symbol.ContainingType?.OriginalDefinition; if (containingType != null) { switch (symbol.Name) { // PXGraph.Actions.PressSave case PressSaveMethodName when containingType.InheritsFromOrEquals(pxContext.PXActionCollection): return(SaveOperationKind.PressSave); // PXSave.press case PressMethodName when containingType.InheritsFromOrEquals(pxContext.PXAction.Type): var walker = new SavePressWalker(semanticModel, pxContext); syntaxNode.Accept(walker); return(walker.Found ? SaveOperationKind.PressSave : SaveOperationKind.None); // PXGraph.Persist case GraphPersistMethodName when containingType.IsPXGraph(): return(SaveOperationKind.GraphPersist); // PXCache.Persist / PXCache.PersistInserted / PXCache.PersistUpdated / PXCache.PersistDeleted case CachePersistMethodName: case CachePersistInsertedMethodName: case CachePersistUpdatedMethodName: case CachePersistDeletedMethodName: if (containingType.InheritsFromOrEquals(pxContext.PXCache.Type)) { return(SaveOperationKind.CachePersist); } break; } } return(SaveOperationKind.None); }
public override void VisitInvocationExpression(InvocationExpressionSyntax invocationExpression) { base.VisitInvocationExpression(invocationExpression); var selectExpressions = new Dictionary <string, ExpressionSyntax>(); var visitor = new CaptureSelectExpressionsAndNewFieldNamesVisitor(false, new HashSet <string>(), selectExpressions); invocationExpression.Accept(visitor); var memberAccessExpression = invocationExpression.Expression as MemberAccessExpressionSyntax; if (memberAccessExpression == null) { base.VisitInvocationExpression(invocationExpression); return; } if (memberAccessExpression.Name.Identifier.ValueText == "Where") { _indexData.HasWhere = true; } _indexData.SelectExpressions = selectExpressions; _indexData.InvocationExpression = invocationExpression; _indexData.FromIdentifier = (invocationExpression.ArgumentList.Arguments[0].Expression as SimpleLambdaExpressionSyntax)?.Parameter.Identifier.ValueText; if (memberAccessExpression.Expression is IdentifierNameSyntax identifierNameSyntax) { _indexData.Collection = identifierNameSyntax.Identifier.ValueText; return; } if (memberAccessExpression.Expression is MemberAccessExpressionSyntax innerMemberAccessExpression) { _indexData.Collection = innerMemberAccessExpression.Name.Identifier.ValueText; } }