Skip to content

Commit 43c7ad7

Browse files
authored
Merge pull request #34864 from zoecarver/cxx/fix/friends
[cxx-interop] Support forward declared records inside other records.
2 parents a50f05d + f6a31e0 commit 43c7ad7

File tree

2 files changed

+42
-0
lines changed

2 files changed

+42
-0
lines changed

test/Interop/Cxx/class/Inputs/nested-records.h

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,4 +65,27 @@ struct HasForwardDeclaredTemplateChild {
6565

6666
// TODO: Nested class templates (SR-13853).
6767

68+
namespace NestedDeclIsAFirstForwardDeclaration {
69+
70+
struct ForwardDeclaresFriend {
71+
friend struct ForwardDeclaredFriend;
72+
friend void takesFriend(struct ForwardDeclaredFriend f);
73+
};
74+
75+
struct ForwardDeclaredFriend { };
76+
77+
inline void takesFriend(ForwardDeclaredFriend b) { }
78+
79+
struct HasNestedForwardDeclaration {
80+
struct IsNestedForwardDeclaration;
81+
};
82+
83+
struct HasNestedForwardDeclaration::IsNestedForwardDeclaration {
84+
int a;
85+
};
86+
87+
inline void takesHasNestedForwardDeclaration(HasNestedForwardDeclaration) { }
88+
89+
}
90+
6891
#endif // TEST_INTEROP_CXX_CLASS_INPUTS_NESTED_RECORDS_H

test/Interop/Cxx/class/nested-records-module-interface.swift

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,3 +74,22 @@
7474
// CHECK: }
7575
// CHECK: init()
7676
// CHECK: }
77+
78+
// CHECK: extension NestedDeclIsAFirstForwardDeclaration {
79+
// CHECK: struct ForwardDeclaresFriend {
80+
// CHECK: init()
81+
// CHECK: }
82+
// CHECK: struct ForwardDeclaredFriend {
83+
// CHECK: init()
84+
// CHECK: }
85+
// CHECK: static func takesFriend(_ b: NestedDeclIsAFirstForwardDeclaration.ForwardDeclaredFriend)
86+
// CHECK: struct HasNestedForwardDeclaration {
87+
// CHECK: struct IsNestedForwardDeclaration {
88+
// CHECK: var a: Int32
89+
// CHECK: init()
90+
// CHECK: init(a: Int32)
91+
// CHECK: }
92+
// CHECK: init()
93+
// CHECK: }
94+
// CHECK: static func takesHasNestedForwardDeclaration(_: NestedDeclIsAFirstForwardDeclaration.HasNestedForwardDeclaration)
95+
// CHECK: }

0 commit comments

Comments
 (0)