public void Save(AnalysisKind kind, DocumentAnalysisData data) { Contract.ThrowIfFalse(data.OldItems.IsDefault); switch (kind) { case AnalysisKind.Syntax: _syntax = data; return; case AnalysisKind.Semantic: _semantic = data; return; default: throw ExceptionUtilities.UnexpectedValue(kind); } }
public void Save(AnalysisKind kind, DocumentAnalysisData data) { Contract.ThrowIfFalse(data.OldItems.IsDefault); switch (kind) { case AnalysisKind.Syntax: _syntax = data; return; case AnalysisKind.Semantic: _semantic = data; return; default: Contract.Fail("Shouldn't reach here"); return; } }
static bool IsAnalyzerEnabledForDocument( DiagnosticAnalyzer analyzer, DocumentAnalysisData previousData, BackgroundAnalysisScope analysisScope, CompilerDiagnosticsScope compilerDiagnosticsScope, bool isActiveDocument, bool isVisibleDocument, bool isOpenDocument, bool isGeneratedRazorDocument) { Debug.Assert(!isActiveDocument || isOpenDocument || isGeneratedRazorDocument); if (isGeneratedRazorDocument) { // This is a generated Razor document, and they always want all analyzer diagnostics. return(true); } if (analyzer.IsCompilerAnalyzer()) { return(compilerDiagnosticsScope switch { // Compiler diagnostics are disabled for all documents. CompilerDiagnosticsScope.None => false, // Compiler diagnostics are enabled for visible documents and open documents which had errors/warnings in prior snapshot. CompilerDiagnosticsScope.VisibleFilesAndFilesWithPreviouslyReportedDiagnostics => isVisibleDocument || (isOpenDocument && !previousData.Items.IsEmpty), // Compiler diagnostics are enabled for all open documents. CompilerDiagnosticsScope.OpenFiles => isOpenDocument, // Compiler diagnostics are enabled for all documents. CompilerDiagnosticsScope.FullSolution => true, _ => throw ExceptionUtilities.UnexpectedValue(analysisScope) });
public void ResetVersion() { // reset version of cached data so that we can recalculate new data (ex, OnDocumentReset) _syntax = new DocumentAnalysisData(VersionStamp.Default, _syntax.Items); _semantic = new DocumentAnalysisData(VersionStamp.Default, _semantic.Items); }