Map nullptr type to void* instead of the invalid type name null#734
Merged
tannergooding merged 2 commits intoJul 13, 2026
Merged
Conversation
A macro such as `#define VK_NULL_HANDLE nullptr` resolved its `CXType_NullPtr` type to the literal string `null`, emitting the uncompilable `public static readonly null VK_NULL_HANDLE = null;`. Map it to `void*` instead, matching how a `(void*)0` macro is already handled (including triggering the `unsafe` modifier on the containing class). Fixes dotnet#601 Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…ptr-macro-void-type
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.
Fixes #601.
A macro such as
#define VK_NULL_HANDLE nullptrwas resolving itsCXType_NullPtrtype to the literal stringnull, so--generate-macro-bindingsemitted uncompilable code:nullis not a valid type name. This mapsCXType_NullPtrtovoid*instead, which is exactly how an equivalent#define X ((void*)0)macro is already handled -- it also correctly triggers theunsafemodifier on the containing class via the existingIsUnsafecheck:Added
NullPtrMacroBindingTestcovering the macro-binding case. Full generator suite is green (3719 passed, 0 failed) with zero golden churn.Note
This PR was authored with the assistance of Copilot.