[WIP] Fix DAM annotations applied to never-instantiated types in GetType() calls #123456
+35
−5
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
DAM annotations on types are applied when
GetType()is called on parameters, even when those types are never instantiated. This keeps unnecessary members in trimmed applications.Changes
Core Fix:
HandleCallAction.cs: CheckIsInstantiated()before callingApplyDynamicallyAccessedMembersToTypeHierarchy()in Object_GetType handlerTests:
ObjectGetTypeDataflow.cs: Updated expectations forInstantiatedGenericAsSource(IL2075 instead of IL2112)NeverInstantiatedTypetest caseKnown Issue - Timing
IsInstantiated()may return false during dataflow analysis even for types that will be instantiated, because:Recommendation
Investigate
OptimizeTypeHierarchyAnnotations- the existing feature designed for this scenario. May need to enable by default or fix implementation bugs rather than adding new timing-sensitive checks.Testing
Original prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.