Fix generic marshaller names in generated projections - #2581
Open
Sergio Pedri (Sergio0694) wants to merge 2 commits into
Open
Sergio Pedri (Sergio0694) wants to merge 2 commits into
Sergio Pedri (Sergio0694) wants to merge 2 commits into
Conversation
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
Azure Pipelines: There may be pipelines that require an authorized user to comment /azp run to run. |
Sergio Pedri (Sergio0694)
requested a review
from Manodasan Wignarajah (manodasanW)
September 18, 2026 23:13
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.
Summary
Align generated projection accessors with the type names emitted into
WinRT.Interop.dll. Preserve the existing source WinMD filename-stem convention and include the#corlibmarker when encodingGuidgeneric arguments.Motivation
Generated
UnsafeAccessorTypetargets must match interop type names ordinally. The projection writer previously used declared assembly names where the interop generator used recorded WinMD filename stems, and encoded nestedGuidarguments without their assembly marker. Both discrepancies could causeTypeLoadExceptioneven when the required marshaller and methods existed.This is a conservative implementation-only fix: it preserves public/reference projection output and does not require republishing third-party reference-projection packages.
Changes
src\WinRT.Projection.Writer\: share filename-stem resolution between metadata entries and accessor names, propagate the metadata context through generic, array, IID, event-source, constructor and mapped-interface paths, and retainGuid's#corlibmarker inside constructed types.src\Tests\ProjectionWriterTest\: generate real projection and interop assemblies and verify exact target types, members and signatures. Cover filename casing and renamed/dotted stems, overloads, nestedGuidgenerics, arrays, events, reference-source invariance, and isolated native-backed CoreCLR roundtrips. Add an opt-in Native AOT run of the same consumer viaCSWINRT_TEST_GENERIC_MARSHALLERS_AOT=1..github\skills\interop-generator\references\name-mangling-scheme.md: document the shared naming contract and the need to regenerate affected precompiled SDK implementation projections when packaging updated tooling.Validation
Guidmarker corrections in 13 files.