public static ImmutableArray <ExpressionSyntax> GetExpressionsAndRelease(ReturnTaskInsteadOfNullWalker walker) { List <ExpressionSyntax> expressions = walker.Expressions; Release(walker); return((expressions == null) ? ImmutableArray <ExpressionSyntax> .Empty : ImmutableArray.CreateRange(expressions)); }
public static ReturnTaskInsteadOfNullWalker Acquire() { ReturnTaskInsteadOfNullWalker walker = _cachedInstance; if (walker != null) { _cachedInstance = null; walker.Clear(); return(walker); } return(new ReturnTaskInsteadOfNullWalker()); }
private static void AnalyzeBlock(SyntaxNodeAnalysisContext context, BlockSyntax body) { if (body == null) { return; } ReturnTaskInsteadOfNullWalker walker = ReturnTaskInsteadOfNullWalkerCache.Acquire(); walker.VisitBlock(body); foreach (ExpressionSyntax expression in ReturnTaskInsteadOfNullWalkerCache.GetExpressionsAndRelease(walker)) { ReportDiagnostic(context, expression); } }
public static void Release(ReturnTaskInsteadOfNullWalker walker) { _cachedInstance = walker; }