private CompilationWithAnalyzers GetCompilationWithAnalyzers(Compilation compilation) { Contract.ThrowIfFalse(_project.SupportsCompilation); return(_owner.HostAnalyzerManager.GetOrCreateCompilationWithAnalyzers(_project, p => { var analyzers = _owner .GetAnalyzers(p) .Where(a => !CompilationWithAnalyzers.IsDiagnosticAnalyzerSuppressed(a, compilation.Options, _analysisOptions.OnAnalyzerException)) .ToImmutableArray() .Distinct(); return new CompilationWithAnalyzers(compilation, analyzers, _analysisOptions); })); }
private CompilationWithAnalyzers GetCompilationWithAnalyzers(Compilation compilation) { Contract.ThrowIfFalse(_project.SupportsCompilation); if (_lazyCompilationWithAnalyzers == null) { var analyzers = _owner .GetAnalyzers(_project) .Where(a => !CompilationWithAnalyzers.IsDiagnosticAnalyzerSuppressed(a, compilation.Options, _analysisOptions.OnAnalyzerException)) .ToImmutableArray() .Distinct(); Interlocked.CompareExchange(ref _lazyCompilationWithAnalyzers, new CompilationWithAnalyzers(compilation, analyzers, _analysisOptions), null); } return(_lazyCompilationWithAnalyzers); }