Commit Graph

6 Commits

Author SHA1 Message Date
Becca Royal-Gordon
05b9aecf3b Don’t crash from circular swift_name attributes
If a swift_name attribute’s context referred to the same declaration it was attached to, or a different declaration whose own swift_name referred to the current one, we would recurse infinitely and eventually overflow the stack. This commit makes us instead detect the cycle, diagnose it with a warning, and drop the affected declaration.

Fixes rdar://79370809.
2021-06-15 18:58:37 -07:00
Pavel Yaskevich
094949a461 [ClangImporter] Forward generic parameters while importing generic @compatibility_alias
When importing @compatibility_alias declarations check if underlying declaration
is generic and if so, forward generic environment and generic parameters (if any)
to newly created typealias declaration, otherwise there is going to be a mismatch
between type associated with typealias and its declaration which leads to crashes.

Resolves: rdar://problem/39849926
2018-06-13 14:59:34 -07:00
Jordan Rose
cb33d5b59b [Mangling] Handle imported @compatibility_alias decls too
These aren't clang::TypedefNameDecls, but they should be treated like
them. There's not a great way to test this because the imported type
is a typealias and therefore not canonical, but fortunately debug info
preserves sugar.
2018-01-09 17:55:24 -08:00
Saleem Abdulrasool
bdb7901a1c test: modernise nullability attributes (NFC)
Use the modern spelling for the nullability attributes in the test mock
headers.  Currently, this was relying on the predefined macros from
clang to work.  However, those are only available on Darwin targets.
This is needed to make the mock environments more portable.
2017-11-01 23:27:33 -07:00
Jordan Rose
dab6d49596 [ClangImporter] Don't crash on empty initial selector pieces. (#6284)
Yes, ':' is a valid selector, as are '::' and ':seriously:'.

rdar://problem/28448188
2016-12-15 14:41:19 -08:00
Jordan Rose
61798ff6ec [test] Rename test/ClangModules to test/ClangImporter. (#5618)
...to match the component in include/ and lib/. No content change.
2016-11-02 18:00:53 -07:00