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

Fixes

上级 21a46d15
......@@ -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))
{
......@@ -1221,7 +1221,7 @@ private bool IsAnalyzerSuppressedForTree(DiagnosticAnalyzer analyzer, SyntaxTree
return suppressedAnalyzers.Contains(analyzer);
}
private ImmutableHashSet<DiagnosticAnalyzer> ComputeSuppressedAnalyzersForTree(SyntaxTree tree, SyntaxTreeOptionsProvider options)
private ImmutableHashSet<DiagnosticAnalyzer> ComputeSuppressedAnalyzersForTree(SyntaxTree tree, SyntaxTreeOptionsProvider? options)
{
if (options is null)
{
......
......@@ -68,7 +68,11 @@ internal partial class AnalyzerExecutor
private Func<IOperation, ControlFlowGraph> 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);
}
/// <summary>
/// Creates <see cref="AnalyzerExecutor"/> 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;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册