public override LocalList <IDeclaredElement> GetRootMarksFromNode(ITreeNode currentNode, IDeclaredElement containingFunction) { var result = base.GetRootMarksFromNode(currentNode, containingFunction); // it means we are in functional type member like methodDeclaration if (containingFunction == null) { return(result); } var declaration = currentNode as IDeclaration; var declaredElement = declaration?.DeclaredElement; if (declaredElement == null || !UnityCallGraphUtil.IsFunctionNode(declaration)) { return(result); } using (var processor = new ExpensiveCodeProcessor(declaration)) { declaration.ProcessThisAndDescendants(processor); if (processor.ProcessingIsFinished) { result.Add(declaredElement); } } return(result); }
public override LocalList <IDeclaredElement> GetRootMarksFromNode(ITreeNode currentNode, IDeclaredElement containingFunction) { var result = new LocalList <IDeclaredElement>(); if (containingFunction == null) { return(result); } var declaration = currentNode as IDeclaration; var declaredElement = declaration?.DeclaredElement; if (!ReferenceEquals(containingFunction, declaredElement)) { return(result); } var processor = new ExpensiveCodeProcessor(); declaration.ProcessDescendants(processor); if (processor.IsExpensiveCodeFound) { result.Add(declaredElement); } return(result); }
public override LocalList <IDeclaredElement> GetRootMarksFromNode(ITreeNode currentNode, IDeclaredElement containingFunction) { var result = new LocalList <IDeclaredElement>(); // it means we are in functional type member like methodDeclaration if (containingFunction == null) { return(result); } var declaration = currentNode as IDeclaration; var declaredElement = declaration?.DeclaredElement; if (declaredElement == null || !UnityCallGraphUtil.IsFunctionNode(declaration)) { return(result); } var hasComment = false; if (declaration is IFunctionDeclaration functionDeclaration) { hasComment = UnityCallGraphUtil.HasAnalysisComment(functionDeclaration, MarkId, ReSharperControlConstruct.Kind.Restore); } if (hasComment) { result.Add(declaredElement); } else { using (var processor = new ExpensiveCodeProcessor(declaration)) { declaration.ProcessThisAndDescendants(processor); if (processor.ProcessingIsFinished) { result.Add(declaredElement); } } } return(result); }