From 48f3ce4cc58f51430ac9bd7598823d6593f32566 Mon Sep 17 00:00:00 2001 From: Stuart Turner Date: Fri, 17 Jul 2026 12:52:22 -0500 Subject: [PATCH] Ignore `IDisposable` --- src/Common/ITypeSymbolExtensions.cs | 12 ++++++++++++ .../ImmediateInjectionsGenerator.Transform.cs | 1 + 2 files changed, 13 insertions(+) diff --git a/src/Common/ITypeSymbolExtensions.cs b/src/Common/ITypeSymbolExtensions.cs index c2a60e5..814b14e 100644 --- a/src/Common/ITypeSymbolExtensions.cs +++ b/src/Common/ITypeSymbolExtensions.cs @@ -46,6 +46,18 @@ typeSymbol is INamedTypeSymbol TypeArguments: [{ SpecialType: SpecialType.System_String }], }; + public bool IsIDisposable => + typeSymbol is INamedTypeSymbol + { + Arity: 0, + Name: "IDisposable" or "IAsyncDisposable", + ContainingNamespace: + { + Name: "System", + ContainingNamespace.IsGlobalNamespace: true, + }, + }; + public bool IsReadOnlySpan => typeSymbol is INamedTypeSymbol { diff --git a/src/Immediate.Injections.Generators/ImmediateInjectionsGenerator.Transform.cs b/src/Immediate.Injections.Generators/ImmediateInjectionsGenerator.Transform.cs index e80a973..ffb641e 100644 --- a/src/Immediate.Injections.Generators/ImmediateInjectionsGenerator.Transform.cs +++ b/src/Immediate.Injections.Generators/ImmediateInjectionsGenerator.Transform.cs @@ -207,6 +207,7 @@ private static EquatableReadOnlyList TransformRegisterClass0(Gene return targetSymbol .AllInterfaces + .Where(i => !i.IsIDisposable) .Select(i => BuildRegistration( i,