Refactor ioc#39
Merged
AndyElessar merged 22 commits intomainfrom Apr 29, 2026
Merged
Conversation
… type extraction - Simplified service type extraction logic in `AnalyzerHelpers` and `ContainerAnalyzer`. - Enhanced `TransformExtensions` to normalize wrapper kinds and handle nested wrappers. - Introduced `WrapperInfo` struct for better wrapper classification. - Added new methods in `RoslynExtensions` to classify wrapper types and extract element types. - Updated tests to cover new scenarios for service type recognition and async initialization.
…o generate Co-authored-by: Copilot <copilot@github.com>
- Introduced new methods to generate resolver method names for KVP and Lazy types. - Replaced intermediate entry types (ContainerKvpEntry, ContainerLazyEntry, etc.) with direct usage of ContainerEntry models. - Updated the logic for collecting KVP and Lazy entries to utilize new service lookup structures. - Enhanced documentation to reflect changes in the registration and entry models. - Removed obsolete code related to previous entry types and their handling. Co-authored-by: Copilot <copilot@github.com>
…ance Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
Co-authored-by: Copilot <copilot@github.com>
There was a problem hiding this comment.
Pull request overview
Note
Copilot was unable to run its full agentic suite in this review.
Refactors the IoC source generator/analyzer implementation by extracting shared transform logic and new Roslyn helper extensions, while updating generator snapshots/spec docs to reflect the new emitted code shape.
Changes:
- Extracted registration/container transform logic into new focused files and shared
TransformExtensionshelpers. - Added new Roslyn utilities for wrapper detection,
nameofresolution, identifier/value formatting, and generic type substitution. - Updated analyzer tests, generator specs, and many snapshot baselines to match the refactored emitter behavior.
Reviewed changes
Copilot reviewed 136 out of 215 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/InjectionTests.Container_WithMethodInjection_GeneratesMethodCall.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/InjectionTests.Container_WithFieldInjection_GeneratesFieldAssignment.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/InjectionTests.Container_FieldInjectFeatureDisabled_IgnoresFieldInjection.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/GenericServiceContainerTests.Container_WithOpenGenerics_UseSwitchStatement_FallbacksToProviderForGenericTypes.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/GenericServiceContainerTests.Container_WithOpenGenerics_NoIntegrateServiceProvider_FallbacksToProviderForGenericTypes.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/GenericFactoryContainerTests.Container_WithGenericFactory_WithServiceProvider_GeneratesProviderParameter.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/GenericFactoryContainerTests.Container_WithGenericFactory_ReversedTypeParameterMapping_GeneratesCorrectOrder.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/GenericFactoryContainerTests.Container_WithGenericFactory_RegisterImplWin.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/GenericFactoryContainerTests.Container_WithGenericFactory_MultipleTypeParameters_GeneratesCorrectFactoryCall.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/GenericFactoryContainerTests.Container_WithGenericFactory_MultipleDiscoveries_GeneratesMultipleFactoryCalls.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/GenericFactoryContainerTests.Container_WithGenericFactory_GeneratesCorrectFactoryCall.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/GenericFactoryContainerTests.Container_WithGenericFactory_AlsoSpecifiedImpls.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/FactoryAndInstanceContainerTests.Container_WithFactoryRegistration_UsesFactoryMethod.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/EagerResolveOptionsTests.Container_WithEagerSingletonAndDependencies_ResolvesDependenciesFirst.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/EagerResolveOptionsTests.Container_WithEagerResolveOptionsSingletonAndScoped_EagerBoth.verified.txt | Updates snapshot for eager singleton/scoped init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/EagerResolveOptionsTests.Container_WithEagerResolveOptionsScoped_EagerScoped.verified.txt | Updates snapshot for eager scoped init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/EagerResolveOptionsTests.Container_WithDefaultEagerResolveOptions_EagerSingletons.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/DecoratorContainerTests.Container_WithDecorators_HavingClosedGenericDependency_GeneratesDirectResolverCalls.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/DecoratorContainerTests.Container_WithDecoratorInjectionMembers_GeneratesPropertyAndMethodInjection.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/ContainerOptionsTests.Container_WithoutDIPackage_DoesNotGenerateIServiceProviderFactory.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/ContainerOptionsTests.Container_WithMultipleInterfaceRegistration_GeneratesAllResolutions.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/ContainerOptionsTests.Container_WithIntegrateServiceProviderFalse_DoesNotGenerateServiceProviderFactory.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/ContainerOptionsTests.Container_WithIncludeTags_OnlyIncludesMatchingTaggedServices.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/ContainerOptionsTests.Container_WithExplicitOnlyMode_OnlyIncludesExplicitRegistrations.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/ContainerOptionsTests.Container_WithExplicitOnlyMode_GenericAttributeWorks.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/ContainerOptionsTests.Container_WithExplicitOnlyAndIncludeTags_ExplicitOnlyTakesPrecedence.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/CollectionResolutionContainerTests.Container_WithCollectionResolution_GeneratesReadOnlyCollectionAndArrayServices.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/CollectionResolutionContainerTests.Container_WithCollectionResolution_GeneratesEnumerableService.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/BasicContainerTests.SimpleContainer_GeneratesBasicContainer.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/BasicContainerTests.Container_WithMultipleLifetimes_GeneratesCorrectContainer.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/BasicContainerTests.Container_WithDependencyInjection_GeneratesConstructorInjection.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/BasicContainerTests.Container_InNestedNamespace_GeneratesCorrectNamespace.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/BasicContainerTests.Container_InGlobalNamespace_GeneratesWithoutNamespace.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/AsyncMethodInjectTests.AsyncMethodInject_WithDecorator_GeneratesAsyncResolverWithDecoratorApplication.verified.txt | Updates snapshot to eagerly kick off async init via _ = Get...Async() |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/AsyncMethodInjectTests.AsyncMethodInject_TransientWithAsyncInit_GeneratesAsyncCreateMethod.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/AsyncMethodInjectTests.AsyncMethodInject_TaskDependency_AsyncInitService_UsesAsyncResolver.verified.txt | Updates snapshot to eagerly kick off async init via _ = Get...Async() |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/AsyncMethodInjectTests.AsyncMethodInject_SingletonWithAsyncInit_GeneratesAsyncResolver_SemaphoreSlim.verified.txt | Updates snapshot to eagerly kick off async init via _ = Get...Async() |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/AsyncMethodInjectTests.AsyncMethodInject_SingletonWithAsyncInit_GeneratesAsyncResolver_None.verified.txt | Updates snapshot to eagerly kick off async init via _ = Get...Async() |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/AsyncMethodInjectTests.AsyncMethodInject_PartialTaskAccessor_GeneratesAsyncMethod.verified.txt | Updates snapshot to eagerly kick off async init via _ = Get...Async() |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/AsyncMethodInjectTests.AsyncMethodInject_MultipleServiceTypes_ShareSingleTaskField.verified.txt | Updates snapshot to eagerly kick off async init via _ = Get...Async() |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/AsyncMethodInjectTests.AsyncMethodInject_MixedInjection_GeneratesAllCallsInOrder.verified.txt | Updates snapshot to eagerly kick off async init via _ = Get...Async() |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/AsyncMethodInjectTests.AsyncMethodInject_AsyncService_ExcludedFromEagerInit.verified.txt | Updates snapshot ordering/shape for eager init with async service present |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/AsyncMethodInjectTests.AsyncMethodInject_AsyncService_ExcludedFromCollectionResolver.verified.txt | Updates snapshot to eagerly kick off async init via _ = Get...Async() |
| src/Ioc/test/SourceGen.Ioc.Test/ContainerSourceGeneratorSnapshot/ActivatorContainerTests.Container_WithRegisteredComponent_GeneratesComponentWithPropertyInjection.verified.txt | Updates snapshot for eager singleton init to call resolver without field assignment |
| src/Ioc/test/SourceGen.Ioc.Test/Analyzer/SGIOC030Tests.cs | Adds analyzer tests for SGIOC030 service-type recognition scenarios |
| src/Ioc/test/SourceGen.Ioc.Test/Analyzer/SGIOC021Tests.cs | Adds analyzer tests for partial accessor validation scenarios |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Transforms/TransformRegister.cs | Extracts registration transform methods into a dedicated file |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Transforms/TransformRegister.Extraction.cs | Removes transform wrappers, leaving extraction-focused logic |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Transforms/TransformImportModule.cs | Refactors module import transform to use shared attribute helpers |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Transforms/TransformExtensions.Parameters.cs | Adds shared parameter attribute/key extraction helper |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Transforms/TransformExtensions.KeyInfo.cs | Adds shared key parsing and nameof type resolution helper |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Transforms/TransformExtensions.InjectionMembers.cs | Adds shared injected-member discovery helper |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Transforms/TransformExtensions.FactoryMethod.cs | Adds factory-method extraction and generic-mapping helpers |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Transforms/TransformExtensions.DefaultSettings.cs | Adds default-settings extraction helpers |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Transforms/TransformExtensions.DecoratorInjection.cs | Adds decorator injection-member extraction helpers |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Transforms/TransformExtensions.Constructors.cs | Adds unified constructor selection + parameter extraction helpers |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Transforms/TransformContainer.cs | Refactors imported-module extraction to shared helper |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Spec/SPEC.spec.md | Adds/relocates generator architecture/spec index documentation |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Roslyn/TypeParameterSubstitution.cs | Adds string-based generic type-parameter substitution utility |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Roslyn/RoslynExtensions.Wrappers.cs | Adds wrapper detection + nesting downgrade rules |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Roslyn/RoslynExtensions.ValueFormatting.cs | Adds primitive/enum/default-value formatting helpers |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Roslyn/RoslynExtensions.SymbolDisplay.cs | Adds FullAccessPath and FullyQualifiedName helpers |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Roslyn/RoslynExtensions.NameofResolution.cs | Adds nameof symbol/method resolution helpers |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Roslyn/RoslynExtensions.Misc.cs | Adds small helper extensions (Task return check, Index()) |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Roslyn/RoslynExtensions.Identifiers.cs | Adds safe identifier/namespace generators |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Roslyn/RoslynExtensions.GenericTypes.cs | Adds generic parameter detection and assignability helpers |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Roslyn/RoslynExtensions.Constructors.cs | Adds primary/most-params constructor helpers |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Roslyn/RoslynExtensions.AttributeArguments.cs | Adds attribute argument parsing + nameof extraction helpers |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Processing/ProcessSingleRegistration.Parameters.cs | Refactors closed-generic dependency extraction logic |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Processing/ProcessSingleRegistration.Defaults.cs | Extracts defaults matching/merge helpers |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Processing/CombineAndResolveClosedGenerics.cs | Refactors and pre-sizes collections for perf |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Models/TypeData.cs | Adds WrapperInfo and ValueTask wrapper kind |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Models/MsBuildProperties.cs | Removes DefaultLifetime from MSBuild properties record |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Models/IocFeatures.cs | Removes file-level #nullable enable directive |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Models/ContainerWithGroups.cs | Removes old container grouping model definitions from this file |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/IocSourceGenerator.ConfigProviders.cs | Extracts config/compilation providers from Initialize() |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Grouping/RegisterGroupingModels.cs | Adds register grouping record models |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Grouping/GroupRegistrationsForRegister.cs | Adds registration grouping implementation for register output |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Grouping/ContainerGroupingModels.cs | Adds new container grouping model definition |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/GlobalUsings.cs | Adds global using for type parameter substitution |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Emit/Shared/SourceWriterExtensions.cs | Adds shared emission helpers on SourceWriter |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Emit/Shared/CodeGenHelpers.cs | Adds shared codegen helper functions |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Emit/Register/WrapperRegistrationEntries.cs | Introduces wrapper registration record structs |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Emit/Register/RegisterOutputModel.cs | Introduces register output model record |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Emit/Register/RegisterInstanceWriters.cs | Refactors shared instance + injection writing |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Emit/Register/RegisterFactoryPatternWriters.cs | Adds dedicated factory registration line helper |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Emit/Register/RegisterDecoratorWriters.cs | Adds/refactors decorator registration writer |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Emit/Register/LazyRegistrationHelper.cs | Refactors lazy wrapper registrations + container wrapper entries |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Emit/Register/GenerateRegisterOutput.cs | Introduces register output generator |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Emit/Container/ResolvedDependency.cs | Introduces base model for resolved container deps |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Emit/Container/GenerateContainerOutput.cs | Extracts container output emission entry point |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Emit/Container/ContainerInjectionWriters.cs | Adds helper to categorize injection members |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Emit/Container/ContainerAsyncResolverWriters.cs | Adds async resolver name helpers + strategy selection |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Analyzer/Spec/SPEC.spec.md | Expands analyzer architecture/spec documentation |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Analyzer/RegisterAnalyzer.cs | Updates analyzer to use shared service-type enumeration |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Analyzer/RegisterAnalyzer.UnresolvableMembers.cs | Removes unused usings after refactor |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Analyzer/RegisterAnalyzer.ServiceCollection.cs | Updates analyzer to use shared service-type enumeration |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Analyzer/RegisterAnalyzer.DependencyAnalysis.cs | Removes unused usings after refactor |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Analyzer/IocAttributeSymbols.cs | Extracts attribute symbol cache into its own file |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Analyzer/ContainerAnalyzer.cs | Refactors wrapper unwrapping logic to shared wrapper helpers |
| src/Ioc/src/SourceGen.Ioc.SourceGenerator/Analyzer/AnalyzerHelpers.cs | Refactors service-type extraction + wrapper logic to shared helpers |
| src/Ioc/AGENTS.md | Fixes generator spec link path |
| AGENTS.md | Expands PolyType.Roslyn utilities list |
| .github/instructions/project-structure.instructions.md | Removes .github/context/ row from project structure doc |
| .github/instructions/memory-policy.instructions.md | Clarifies memory tool rules and delegation prompt pattern |
| .github/agents/Spec.agent.md | Updates model + adds tool boundary clause |
| .github/agents/Review.agent.md | Adds target: vscode + adds tool boundary clause |
| .github/agents/PlanReview.agent.md | Adds target: vscode + adds tool boundary clause |
| .github/agents/Orchestrator.agent.md | Updates model + adds target: vscode + adds tool boundary clause |
| .github/agents/Implement.agent.md | Updates model + adds target: vscode + adds tool boundary clause |
| .github/agents/Explore.agent.md | Updates model + adds target: vscode + adds tool boundary clause |
| .github/agents/DocReview.agent.md | Adds target: vscode + adds tool boundary clause |
| .github/agents/Doc.agent.md | Updates model + adds target: vscode + adds tool boundary clause |
| .github/agents/DevOps.agent.md | Adds target: vscode + adds tool boundary clause |
| .github/context/project-map.context.md | Removes project map context helper file |
| .github/context/ioc-architecture.context.md | Removes IoC architecture context helper file |
Comments suppressed due to low confidence (1)
src/Ioc/src/SourceGen.Ioc.SourceGenerator/Models/TypeData.cs:368
- The enum-level comment states “Each value has a corresponding sealed TypeData derived type”, but
ValueTaskappears to be analyzer-only (per its own comment) and there’s no correspondingValueTaskTypeDatashown in this diff. Either add the missingTypeDatasubtype (if generator will model it) or adjust the documentation to avoid implying a 1:1 mapping for analyzer-only wrapper kinds.
/// <summary>
/// Represents the kind of wrapper for DI injection purposes.
/// Each value has a corresponding sealed TypeData derived type.
/// </summary>
Co-authored-by: Copilot <copilot@github.com>
…ntainer - Updated tag condition generation to use escaped literals for proper handling of special characters. - Clarified comments regarding eager resolution for async-init services, ensuring they are always fire-and-forget. - Added tests to verify that async-init services are pre-started in constructors, regardless of eager resolution options. - Removed obsolete test file for async-init exclusion from eager resolution. - Introduced new tests to confirm correct behavior for scoped async services and special character tag handling. Co-authored-by: Copilot <copilot@github.com>
…ResolveOptions` Co-authored-by: Copilot <copilot@github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Refactor Ioc for better readability , performance and share logic.
Change Async init service initialize timming, now will use fire-and-forget pattern in constructor
Related Issue
Implement #25
Type of Change
Checklist
Testing
All tests are passed