diff --git a/src/Compilers/Core/Portable/DiagnosticAnalyzer/AnalyzerDriver.cs b/src/Compilers/Core/Portable/DiagnosticAnalyzer/AnalyzerDriver.cs index debadb16a9ccb6ae5938b1177219f0cc99a3a725..1ea2010aee43e261da534e248a392256d8cb389d 100644 --- a/src/Compilers/Core/Portable/DiagnosticAnalyzer/AnalyzerDriver.cs +++ b/src/Compilers/Core/Portable/DiagnosticAnalyzer/AnalyzerDriver.cs @@ -1211,7 +1211,7 @@ static ImmutableHashSet computeGeneratedCodeSymbolsInTree(SyntaxTree tr } } - private bool IsAnalyzerSuppressedForTree(DiagnosticAnalyzer analyzer, SyntaxTree tree, SyntaxTreeOptionsProvider options) + private bool IsAnalyzerSuppressedForTree(DiagnosticAnalyzer analyzer, SyntaxTree tree, SyntaxTreeOptionsProvider? options) { if (!SuppressedAnalyzersForTreeMap.TryGetValue(tree, out var suppressedAnalyzers)) { @@ -1221,7 +1221,7 @@ private bool IsAnalyzerSuppressedForTree(DiagnosticAnalyzer analyzer, SyntaxTree return suppressedAnalyzers.Contains(analyzer); } - private ImmutableHashSet ComputeSuppressedAnalyzersForTree(SyntaxTree tree, SyntaxTreeOptionsProvider options) + private ImmutableHashSet ComputeSuppressedAnalyzersForTree(SyntaxTree tree, SyntaxTreeOptionsProvider? options) { if (options is null) { diff --git a/src/Compilers/Core/Portable/DiagnosticAnalyzer/AnalyzerExecutor.cs b/src/Compilers/Core/Portable/DiagnosticAnalyzer/AnalyzerExecutor.cs index 3f2c21b30eeba250035cfe90fbfebde27dbb9265..90f89b9c8754df9e7ce0ba2103a2c6ed358b633f 100644 --- a/src/Compilers/Core/Portable/DiagnosticAnalyzer/AnalyzerExecutor.cs +++ b/src/Compilers/Core/Portable/DiagnosticAnalyzer/AnalyzerExecutor.cs @@ -68,7 +68,11 @@ internal partial class AnalyzerExecutor private Func GetControlFlowGraph => _lazyGetControlFlowGraph ??= GetControlFlowGraphImpl; - private SyntaxTreeOptionsProvider SyntaxTreeOptions => _compilation.Options.SyntaxTreeOptionsProvider; + private bool IsAnalyzerSuppressedForTree(DiagnosticAnalyzer analyzer, SyntaxTree tree) + { + Debug.Assert(_isAnalyzerSuppressedForTree != null); + return _isAnalyzerSuppressedForTree(analyzer, tree, Compilation.Options.SyntaxTreeOptionsProvider); + } /// /// Creates to execute analyzer actions with given arguments @@ -690,10 +694,8 @@ public void MarkSymbolEndAnalysisComplete(ISymbol symbol, DiagnosticAnalyzer ana AnalyzerStateData? analyzerState, bool isGeneratedCode) { - Debug.Assert(_isAnalyzerSuppressedForTree != null); - if (isGeneratedCode && _shouldSkipAnalysisOnGeneratedCode(analyzer) || - _isAnalyzerSuppressedForTree(analyzer, semanticModel.SyntaxTree, SyntaxTreeOptions)) + IsAnalyzerSuppressedForTree(analyzer, semanticModel.SyntaxTree)) { return; } @@ -774,11 +776,10 @@ public void MarkSymbolEndAnalysisComplete(ISymbol symbol, DiagnosticAnalyzer ana bool isGeneratedCode) { Debug.Assert(file.SourceTree != null); - Debug.Assert(_isAnalyzerSuppressedForTree != null); var tree = file.SourceTree; if (isGeneratedCode && _shouldSkipAnalysisOnGeneratedCode(analyzer) || - _isAnalyzerSuppressedForTree(analyzer, tree, SyntaxTreeOptions)) + IsAnalyzerSuppressedForTree(analyzer, tree)) { return; } @@ -1060,10 +1061,9 @@ public void MarkSymbolEndAnalysisComplete(ISymbol symbol, DiagnosticAnalyzer ana Debug.Assert(CanHaveExecutableCodeBlock(declaredSymbol)); Debug.Assert(startActions.Any() || endActions.Any() || actions.Any()); Debug.Assert(!executableBlocks.IsEmpty); - Debug.Assert(_isAnalyzerSuppressedForTree != null); if (isGeneratedCode && _shouldSkipAnalysisOnGeneratedCode(analyzer) || - _isAnalyzerSuppressedForTree(analyzer, declaredNode.SyntaxTree, SyntaxTreeOptions)) + IsAnalyzerSuppressedForTree(analyzer, declaredNode.SyntaxTree)) { return; } @@ -1316,10 +1316,8 @@ public void MarkSymbolEndAnalysisComplete(ISymbol symbol, DiagnosticAnalyzer ana bool isGeneratedCode) where TLanguageKindEnum : struct { - Debug.Assert(_isAnalyzerSuppressedForTree != null); - if (isGeneratedCode && _shouldSkipAnalysisOnGeneratedCode(analyzer) || - _isAnalyzerSuppressedForTree(analyzer, model.SyntaxTree, SyntaxTreeOptions)) + IsAnalyzerSuppressedForTree(analyzer, model.SyntaxTree)) { return; } @@ -1456,10 +1454,8 @@ public void MarkSymbolEndAnalysisComplete(ISymbol symbol, DiagnosticAnalyzer ana OperationAnalyzerStateData? analyzerState, bool isGeneratedCode) { - Debug.Assert(_isAnalyzerSuppressedForTree != null); - if (isGeneratedCode && _shouldSkipAnalysisOnGeneratedCode(analyzer) || - _isAnalyzerSuppressedForTree(analyzer, model.SyntaxTree, SyntaxTreeOptions)) + IsAnalyzerSuppressedForTree(analyzer, model.SyntaxTree)) { return; } @@ -2014,12 +2010,10 @@ private ControlFlowGraph GetControlFlowGraphImpl(IOperation operation) private bool IsAnalyzerSuppressedForSymbol(DiagnosticAnalyzer analyzer, ISymbol symbol) { - Debug.Assert(_isAnalyzerSuppressedForTree != null); - foreach (var location in symbol.Locations) { if (location.SourceTree != null && - !_isAnalyzerSuppressedForTree(analyzer, location.SourceTree, SyntaxTreeOptions)) + IsAnalyzerSuppressedForTree(analyzer, location.SourceTree)) { return false; }