public static bool IsReferencedAsMethodGroup( SyntaxNode node, IMethodSymbol methodSymbol, SemanticModel semanticModel, CancellationToken cancellationToken) { bool result = false; MethodReferencedAsMethodGroupWalker walker = null; try { walker = GetInstance(); Debug.Assert(walker.Symbol == null, ""); Debug.Assert(walker.SemanticModel == null, ""); walker.Symbol = methodSymbol; walker.SemanticModel = semanticModel; walker.CancellationToken = cancellationToken; walker.Visit(node); } finally { if (walker != null) { result = walker.Result; Free(walker); } } return(result); }
private static void Free(MethodReferencedAsMethodGroupWalker walker) { walker.Result = false; walker.Symbol = null; walker.SemanticModel = null; walker.CancellationToken = default; _cachedInstance = walker; }
public static MethodReferencedAsMethodGroupWalker GetInstance() { MethodReferencedAsMethodGroupWalker walker = _cachedInstance; if (walker != null) { _cachedInstance = null; return(walker); } return(new MethodReferencedAsMethodGroupWalker()); }
private static MethodReferencedAsMethodGroupWalker GetInstance() { MethodReferencedAsMethodGroupWalker walker = _cachedInstance; if (walker != null) { Debug.Assert(walker.Symbol == null); Debug.Assert(walker.SemanticModel == null); Debug.Assert(walker.CancellationToken == default); _cachedInstance = null; return(walker); } return(new MethodReferencedAsMethodGroupWalker()); }