Cherry-pick [ClangImporter] Look through bounds attributes for template matching #82076 #82193
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.
When instantiating templated functions with pointers to the templated type, the ClangImporter does not strip type sugar. This strips type sugar for bounds attributes, to make sure that they import the same regardless of whether they are parsed or not.
This affects code compiled with SafeInteropWrappers, as that enables parsing bounds safety attributes. Only templated functions are affected. These functions do not get safe interop wrappers, as that currently does not support templated functions, but without this change even the original function cannot be called, which is a regression compared to when bounds attributes are ignored.
rdar://151041990
[ClangImporter] Look through bounds attributes for template matching #82076
Low - although the template instantiation logic should very likely strip all sugar types, this change minimises risk by only stripping the bounds attribute sugar.
Added regression tests
@Xazax-hun