protected ShowMethodCallsBulbActionBase(IMethodDeclaration methodDeclaration, ShowCallsType callsType) { var declaredElement = methodDeclaration.DeclaredElement; Assertion.AssertNotNull(declaredElement, "declared is null, should be impossible"); myMethod = new DeclaredElementInstance <IClrDeclaredElement>(declaredElement); CallsType = callsType; }
public static string GetPerformanceCriticalShowCallsText(ShowCallsType type) { switch (type) { case ShowCallsType.INCOMING: return(INCOMING_CALLS_MESSAGE); case ShowCallsType.OUTGOING: return(OUTGOING_CALLS_MESSAGE); default: throw new ArgumentOutOfRangeException(nameof(type), type, null); } }
public static Func <CallHierarchyFindResult, bool> GetSimpleFilter( ISolution solution, ICallGraphContextProvider provider, ShowCallsType type) { switch (type) { case ShowCallsType.INCOMING: { return(result => { solution.Locks.AssertReadAccessAllowed(); var referenceElement = result.ReferenceElement; var csharpTreeNode = referenceElement as ICSharpTreeNode; var containing = csharpTreeNode?.GetContainingFunctionLikeDeclarationOrClosure(); var declaredElement = containing?.DeclaredElement; return provider.IsMarkedGlobal(declaredElement); }); } case ShowCallsType.OUTGOING: { return(result => { solution.Locks.AssertReadAccessAllowed(); var referenceElement = result.ReferenceElement; var identifier = referenceElement as ICSharpIdentifier; var referenceExpression = ReferenceExpressionNavigator.GetByNameIdentifier(identifier); var declaredElement = referenceExpression?.Reference.Resolve().DeclaredElement; if (declaredElement == null) { var referenceName = referenceElement as IReferenceName; var objectCreationExpression = ObjectCreationExpressionNavigator.GetByTypeName(referenceName); declaredElement = objectCreationExpression?.Reference?.Resolve().DeclaredElement; } return provider.IsMarkedGlobal(declaredElement); }); } default: throw new ArgumentOutOfRangeException(nameof(type), type, null); } }
private void ShowCalls(CallHierarchyExplorerViewManager manager, Func <CallHierarchyFindResult, bool> filter, DeclaredElementInstance <IClrDeclaredElement> start, ShowCallsType callType) { var text = Text; switch (callType) { case ShowCallsType.INCOMING: text += " to " + start.Element.ShortName; manager.ShowIncoming(start, text, filter); break; case ShowCallsType.OUTGOING: text += " from " + start.Element.ShortName; manager.ShowOutgoing(start, text, filter); break; default: throw new ArgumentOutOfRangeException(); } }
public ShowBurstCallsBulbAction([NotNull] IMethodDeclaration methodDeclaration, ShowCallsType type) : base(methodDeclaration, type) { }
public ShowExpensiveCallsBulbAction(IMethodDeclaration methodDeclaration, ShowCallsType callsType) : base(methodDeclaration, callsType) { }
public ShowPerformanceCriticalCallsBulbAction(IMethodDeclaration methodDeclaration, ShowCallsType callsType) : base(methodDeclaration, callsType) { }