Prevent silgen for macro expansions with type errors (#81396) #81409
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.
There is a bug in type checking where function bodies in macro expansions originating on nodes imported from clang (such as _SwiftifyImport) are not type checked. If such a function in a macro expansion has a type error and is called, no error will be emitted, and the compiler will crash in silgen. While we need to fix the type checker eventually, for now we are working around it by specifically type checking these functions right before silgen, and stopping if an error has occurred.
This will only affect code using the new MacrosOnImports feature, meaning they either use SafeInteropWrappers, or manually add a call to a swift macro using
__attribute__((swift_attr("@my_macro")))
.rdar://150940383
Prevent silgen for macro expansions with type errors #81396)'
This should only affect code that would otherwise cause a crash.
Lit tests, manual testing
@DougGregor