Skip to content

Refactor ioc#39

Merged
AndyElessar merged 22 commits intomainfrom
refactor-ioc
Apr 29, 2026
Merged

Refactor ioc#39
AndyElessar merged 22 commits intomainfrom
refactor-ioc

Conversation

@AndyElessar
Copy link
Copy Markdown
Owner

@AndyElessar AndyElessar commented Apr 25, 2026

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

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)
  • Documentation update
  • Refactoring (no functional changes)

Checklist

  • My code follows the project's coding guidelines
  • I have added tests that prove my fix is effective or that my feature works
  • All new and existing tests pass
  • I have updated the documentation accordingly
  • I have added XML documentation for public APIs

Testing

All tests are passed

AndyElessar and others added 18 commits April 4, 2026 08:52
… 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>
Copilot AI review requested due to automatic review settings April 25, 2026 08:33
@AndyElessar AndyElessar linked an issue Apr 25, 2026 that may be closed by this pull request
@AndyElessar AndyElessar self-assigned this Apr 25, 2026
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 TransformExtensions helpers.
  • Added new Roslyn utilities for wrapper detection, nameof resolution, 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 ValueTask appears to be analyzer-only (per its own comment) and there’s no corresponding ValueTaskTypeData shown in this diff. Either add the missing TypeData subtype (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>

Comment thread src/Ioc/src/SourceGen.Ioc.SourceGenerator/Models/TypeData.cs
@AndyElessar AndyElessar requested a review from Copilot April 25, 2026 09:52
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 136 out of 215 changed files in this pull request and generated 3 comments.

Comment thread src/Ioc/src/SourceGen.Ioc.SourceGenerator/Emit/Register/GenerateRegisterOutput.cs Outdated
AndyElessar and others added 3 commits April 30, 2026 02:03
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>
Copilot AI review requested due to automatic review settings April 29, 2026 20:40
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot wasn't able to review this pull request because it exceeds the maximum number of lines (20,000). Try reducing the number of changed lines and requesting a review from Copilot again.

@AndyElessar AndyElessar merged commit 20da4be into main Apr 29, 2026
5 checks passed
@AndyElessar AndyElessar deleted the refactor-ioc branch April 29, 2026 20:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Refactor Ioc Generator and Analyzer

2 participants