/// <summary> /// Checks rule: Modify {0} so that it calls Dispose(false) and then returns. /// </summary> private static void CheckFinalizeImplementationRule(IMethodSymbol method, INamedTypeSymbol type, ImmutableArray <IOperation> operationBlocks, OperationBlockAnalysisContext context) { var validator = new FinalizeImplementationValidator(type); if (!validator.Validate(operationBlocks)) { context.ReportDiagnostic(method.CreateDiagnostic(FinalizeImplementationRule, $"{type.Name}.{method.Name}")); } }
/// <summary> /// Checks rule: Modify {0} so that it calls Dispose(false) and then returns. /// </summary> private static void CheckFinalizeImplementationRule(IMethodSymbol method, INamedTypeSymbol type, ImmutableArray <IOperation> operationBlocks, OperationBlockAnalysisContext context) { // Bail out if any base type also provides a finalizer - we will fire CheckFinalizeOverrideRule for that case. if (GetFirstBaseTypeWithFinalizerOrDefault(type) != null) { return; } var validator = new FinalizeImplementationValidator(type); if (!validator.Validate(operationBlocks)) { context.ReportDiagnostic(method.CreateDiagnostic(FinalizeImplementationRule, $"{type.Name}.{method.Name}")); } }