提交 a947b6cd 编写于 作者: M Manish Vasani

Fixes

上级 21a46d15
...@@ -1211,7 +1211,7 @@ static ImmutableHashSet<ISymbol> computeGeneratedCodeSymbolsInTree(SyntaxTree tr ...@@ -1211,7 +1211,7 @@ static ImmutableHashSet<ISymbol> 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)) if (!SuppressedAnalyzersForTreeMap.TryGetValue(tree, out var suppressedAnalyzers))
{ {
...@@ -1221,7 +1221,7 @@ private bool IsAnalyzerSuppressedForTree(DiagnosticAnalyzer analyzer, SyntaxTree ...@@ -1221,7 +1221,7 @@ private bool IsAnalyzerSuppressedForTree(DiagnosticAnalyzer analyzer, SyntaxTree
return suppressedAnalyzers.Contains(analyzer); return suppressedAnalyzers.Contains(analyzer);
} }
private ImmutableHashSet<DiagnosticAnalyzer> ComputeSuppressedAnalyzersForTree(SyntaxTree tree, SyntaxTreeOptionsProvider options) private ImmutableHashSet<DiagnosticAnalyzer> ComputeSuppressedAnalyzersForTree(SyntaxTree tree, SyntaxTreeOptionsProvider? options)
{ {
if (options is null) if (options is null)
{ {
......
...@@ -68,7 +68,11 @@ internal partial class AnalyzerExecutor ...@@ -68,7 +68,11 @@ internal partial class AnalyzerExecutor
private Func<IOperation, ControlFlowGraph> GetControlFlowGraph private Func<IOperation, ControlFlowGraph> GetControlFlowGraph
=> _lazyGetControlFlowGraph ??= GetControlFlowGraphImpl; => _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);
}
/// <summary> /// <summary>
/// Creates <see cref="AnalyzerExecutor"/> to execute analyzer actions with given arguments /// Creates <see cref="AnalyzerExecutor"/> to execute analyzer actions with given arguments
...@@ -690,10 +694,8 @@ public void MarkSymbolEndAnalysisComplete(ISymbol symbol, DiagnosticAnalyzer ana ...@@ -690,10 +694,8 @@ public void MarkSymbolEndAnalysisComplete(ISymbol symbol, DiagnosticAnalyzer ana
AnalyzerStateData? analyzerState, AnalyzerStateData? analyzerState,
bool isGeneratedCode) bool isGeneratedCode)
{ {
Debug.Assert(_isAnalyzerSuppressedForTree != null);
if (isGeneratedCode && _shouldSkipAnalysisOnGeneratedCode(analyzer) || if (isGeneratedCode && _shouldSkipAnalysisOnGeneratedCode(analyzer) ||
_isAnalyzerSuppressedForTree(analyzer, semanticModel.SyntaxTree, SyntaxTreeOptions)) IsAnalyzerSuppressedForTree(analyzer, semanticModel.SyntaxTree))
{ {
return; return;
} }
...@@ -774,11 +776,10 @@ public void MarkSymbolEndAnalysisComplete(ISymbol symbol, DiagnosticAnalyzer ana ...@@ -774,11 +776,10 @@ public void MarkSymbolEndAnalysisComplete(ISymbol symbol, DiagnosticAnalyzer ana
bool isGeneratedCode) bool isGeneratedCode)
{ {
Debug.Assert(file.SourceTree != null); Debug.Assert(file.SourceTree != null);
Debug.Assert(_isAnalyzerSuppressedForTree != null);
var tree = file.SourceTree; var tree = file.SourceTree;
if (isGeneratedCode && _shouldSkipAnalysisOnGeneratedCode(analyzer) || if (isGeneratedCode && _shouldSkipAnalysisOnGeneratedCode(analyzer) ||
_isAnalyzerSuppressedForTree(analyzer, tree, SyntaxTreeOptions)) IsAnalyzerSuppressedForTree(analyzer, tree))
{ {
return; return;
} }
...@@ -1060,10 +1061,9 @@ public void MarkSymbolEndAnalysisComplete(ISymbol symbol, DiagnosticAnalyzer ana ...@@ -1060,10 +1061,9 @@ public void MarkSymbolEndAnalysisComplete(ISymbol symbol, DiagnosticAnalyzer ana
Debug.Assert(CanHaveExecutableCodeBlock(declaredSymbol)); Debug.Assert(CanHaveExecutableCodeBlock(declaredSymbol));
Debug.Assert(startActions.Any() || endActions.Any() || actions.Any()); Debug.Assert(startActions.Any() || endActions.Any() || actions.Any());
Debug.Assert(!executableBlocks.IsEmpty); Debug.Assert(!executableBlocks.IsEmpty);
Debug.Assert(_isAnalyzerSuppressedForTree != null);
if (isGeneratedCode && _shouldSkipAnalysisOnGeneratedCode(analyzer) || if (isGeneratedCode && _shouldSkipAnalysisOnGeneratedCode(analyzer) ||
_isAnalyzerSuppressedForTree(analyzer, declaredNode.SyntaxTree, SyntaxTreeOptions)) IsAnalyzerSuppressedForTree(analyzer, declaredNode.SyntaxTree))
{ {
return; return;
} }
...@@ -1316,10 +1316,8 @@ public void MarkSymbolEndAnalysisComplete(ISymbol symbol, DiagnosticAnalyzer ana ...@@ -1316,10 +1316,8 @@ public void MarkSymbolEndAnalysisComplete(ISymbol symbol, DiagnosticAnalyzer ana
bool isGeneratedCode) bool isGeneratedCode)
where TLanguageKindEnum : struct where TLanguageKindEnum : struct
{ {
Debug.Assert(_isAnalyzerSuppressedForTree != null);
if (isGeneratedCode && _shouldSkipAnalysisOnGeneratedCode(analyzer) || if (isGeneratedCode && _shouldSkipAnalysisOnGeneratedCode(analyzer) ||
_isAnalyzerSuppressedForTree(analyzer, model.SyntaxTree, SyntaxTreeOptions)) IsAnalyzerSuppressedForTree(analyzer, model.SyntaxTree))
{ {
return; return;
} }
...@@ -1456,10 +1454,8 @@ public void MarkSymbolEndAnalysisComplete(ISymbol symbol, DiagnosticAnalyzer ana ...@@ -1456,10 +1454,8 @@ public void MarkSymbolEndAnalysisComplete(ISymbol symbol, DiagnosticAnalyzer ana
OperationAnalyzerStateData? analyzerState, OperationAnalyzerStateData? analyzerState,
bool isGeneratedCode) bool isGeneratedCode)
{ {
Debug.Assert(_isAnalyzerSuppressedForTree != null);
if (isGeneratedCode && _shouldSkipAnalysisOnGeneratedCode(analyzer) || if (isGeneratedCode && _shouldSkipAnalysisOnGeneratedCode(analyzer) ||
_isAnalyzerSuppressedForTree(analyzer, model.SyntaxTree, SyntaxTreeOptions)) IsAnalyzerSuppressedForTree(analyzer, model.SyntaxTree))
{ {
return; return;
} }
...@@ -2014,12 +2010,10 @@ private ControlFlowGraph GetControlFlowGraphImpl(IOperation operation) ...@@ -2014,12 +2010,10 @@ private ControlFlowGraph GetControlFlowGraphImpl(IOperation operation)
private bool IsAnalyzerSuppressedForSymbol(DiagnosticAnalyzer analyzer, ISymbol symbol) private bool IsAnalyzerSuppressedForSymbol(DiagnosticAnalyzer analyzer, ISymbol symbol)
{ {
Debug.Assert(_isAnalyzerSuppressedForTree != null);
foreach (var location in symbol.Locations) foreach (var location in symbol.Locations)
{ {
if (location.SourceTree != null && if (location.SourceTree != null &&
!_isAnalyzerSuppressedForTree(analyzer, location.SourceTree, SyntaxTreeOptions)) IsAnalyzerSuppressedForTree(analyzer, location.SourceTree))
{ {
return false; return false;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册