Skip to content

Conversation

@kzu
Copy link
Member

@kzu kzu commented Dec 6, 2024

A given type may match more than once when using convention registrations (i.e. typeof(IDisposable) and separately, by regex).

Ideally there should be no overlap for the same concrete type, as that may cause weird lifetime bugs due to the first one to register the implementation type to "win" (since we use TryAddXXX). So it should be a warning to have a case where this happens.

Fixes #115

@kzu kzu added the enhancement New feature or request label Dec 6, 2024
@kzu kzu enabled auto-merge (rebase) December 6, 2024 18:39
@devlooped-bot
Copy link
Member

devlooped-bot commented Dec 6, 2024

36 passed 36 passed

🧪 Details on Ubuntu 22.04.5 LTS

✅ Tests.CodeAnalysis.AddServicesAnalyzerTests.NoWarningIfAddServicesPresent
✅ Tests.CodeAnalysis.AddServicesAnalyzerTests.NoWarningIfNoServiceCollectionCalls
✅ Tests.CodeAnalysis.AddServicesAnalyzerTests.WarnIfAddServicesMissing
✅ Tests.CodeAnalysis.AddServicesAnalyzerTests.WarnIfAddServicesMissingMultipleLocations
✅ Tests.CodeAnalysis.ConventionAnalyzerTests.ErrorIfNonTypeOf
✅ Tests.CodeAnalysis.ConventionAnalyzerTests.NoErrorOnTypeOfAndLifetime
✅ Tests.CodeAnalysis.ConventionAnalyzerTests.WarnIfAmbiguousLifetime
✅ Tests.CodeAnalysis.ConventionAnalyzerTests.WarnIfOpenGeneric
✅ Tests.ComponentModel.ComponentModelTests.Composition
✅ Tests.ComponentModel.ComponentModelTests.RegisterSingletonService
✅ Tests.ComponentModel.ComponentModelTests.RegisterTransientService
✅ Tests.ComponentModel.ComponentModelTests.ResolvesDependency
✅ Tests.Composition.CompositionTests.CompositionLifetimes
✅ Tests.Composition.CompositionTests.RegisterKeyedService
✅ Tests.Composition.CompositionTests.RegisterSingletonService
✅ Tests.Composition.CompositionTests.RegisterTransientService
✅ Tests.Composition.CompositionTests.ResolvesDependency
✅ Tests.DependencyInjection.ConventionsTests.RegisterGenericServices
✅ Tests.DependencyInjection.ConventionsTests.RegisterRepositoryServices
✅ Tests.DependencyInjection.ConventionsTests.RegisterServiceByRegex
✅ Tests.DependencyInjection.GenerationTests.RegisterInternalService
✅ Tests.DependencyInjection.GenerationTests.RegisterKeyedScopedService
✅ Tests.DependencyInjection.GenerationTests.RegisterKeyedSingletonService
✅ Tests.DependencyInjection.GenerationTests.RegisterKeyedTransientService
✅ Tests.DependencyInjection.GenerationTests.RegisterScopedService
✅ Tests.DependencyInjection.GenerationTests.RegisterSingletonService
✅ Tests.DependencyInjection.GenerationTests.RegisterTransientService
✅ Tests.DependencyInjection.GenerationTests.RegisterWithCustomServiceAttribute
✅ Tests.DependencyInjection.GenerationTests.RegisterWithGenericOutParameterHierarchy
✅ Tests.DependencyInjection.GenerationTests.ResolveMultipleKeys
✅ Tests.DependencyInjection.GenerationTests.ResolvesDependency
✅ Tests.DependencyInjection.GenerationTests.ResolvesKeyedDependency
✅ Tests.DependencyInjection.GenerationTests.ResolvesKeyedDependencyForNonKeyed
✅ Tests.DependencyInjection.GenerationTests.ResolvesKeyedFromContracts
✅ Tests.DependencyInjection.GenerationTests.ResolvesKeyedTransientDependency
✅ Tests.DependencyInjection.GenerationTests.RetrieveMany

from dotnet-retest v0.6.3 on .NET 8.0.11 with 💜

@kzu kzu force-pushed the dev/inconsistent branch 2 times, most recently from 529d225 to 633f848 Compare December 6, 2024 18:52
A given type may match more than once when using convention registrations (i.e. typeof(IDisposable) and separately, by regex).

Ideally there should be no overlap for the same concrete type, as that may cause weird lifetime bugs due to the first one to register the implementation type to "win" (since we use TryAddXXX). So it should be a warning to have a case where this happens.

Fixes #115
@kzu kzu force-pushed the dev/inconsistent branch from 633f848 to 21cde11 Compare December 6, 2024 18:55
@kzu kzu merged commit 48aab1e into main Dec 6, 2024
7 checks passed
@kzu kzu deleted the dev/inconsistent branch December 6, 2024 18:57
@devlooped devlooped locked and limited conversation to collaborators Jan 6, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Report inconsistent lifetime registrations in conventions

3 participants