diff --git a/src/Microsoft.NetCore.Analyzers/Core/Runtime/DisposeObjectsBeforeLosingScope.cs b/src/Microsoft.NetCore.Analyzers/Core/Runtime/DisposeObjectsBeforeLosingScope.cs index bf6dd40b14..6f6bbc0d46 100644 --- a/src/Microsoft.NetCore.Analyzers/Core/Runtime/DisposeObjectsBeforeLosingScope.cs +++ b/src/Microsoft.NetCore.Analyzers/Core/Runtime/DisposeObjectsBeforeLosingScope.cs @@ -136,6 +136,18 @@ public override void Initialize(AnalysisContext context) } } + if (!notDisposedDiagnostics.Any() && !mayBeNotDisposedDiagnostics.Any()) + { + return; + } + + if (disposeAnalysisResult.ControlFlowGraph.OriginalOperation.HasAnyOperationDescendant(o => o.Kind == OperationKind.None)) + { + // Workaround for https://github.com/dotnet/roslyn/issues/32100 + // Bail out in presence of OperationKind.None - not implemented IOperation. + return; + } + // Report diagnostics preferring *not* disposed diagnostics over may be not disposed diagnostics // and avoiding duplicates. foreach (var diagnostic in notDisposedDiagnostics.Concat(mayBeNotDisposedDiagnostics))