1- // rdar://101431096
2- // XFAIL: *
3-
41// RUN: %empty-directory(%t)
52// RUN: split-file %s %t
63
@@ -70,6 +67,10 @@ namespace ns {
7067 }
7168
7269 using ImmortalCInt = ImmortalTemplate < int > ;
70+
71+ using NonTrivialTemplateInt = NonTrivialTemplate < int > ;
72+
73+ using NonTrivialTemplateTrivial = NonTrivialTemplate < TrivialinNS > ;
7374}
7475
7576//--- module.modulemap
@@ -92,13 +93,13 @@ public func retImmortalTemplate() -> ns.ImmortalCInt {
9293}
9394
9495@_expose ( Cxx)
95- public func retNonTrivial( ) -> ns . NonTrivialTemplate < CInt > {
96- return ns . NonTrivialTemplate < CInt > ( )
96+ public func retNonTrivial( ) -> ns . NonTrivialTemplateInt {
97+ return ns. NonTrivialTemplateInt ( )
9798}
9899
99100@_expose ( Cxx)
100- public func retNonTrivial2( ) -> ns . NonTrivialTemplate < ns . TrivialinNS > {
101- return ns . NonTrivialTemplate < ns . TrivialinNS > ( )
101+ public func retNonTrivial2( ) -> ns . NonTrivialTemplateTrivial {
102+ return ns. NonTrivialTemplateTrivial ( )
102103}
103104
104105@_expose ( Cxx)
@@ -125,7 +126,7 @@ public func takeImmortalTemplate(_ x: ns.ImmortalCInt) {
125126}
126127
127128@_expose ( Cxx)
128- public func takeNonTrivial2( _ x: ns . NonTrivialTemplate < ns . TrivialinNS > ) {
129+ public func takeNonTrivial2( _ x: ns . NonTrivialTemplateTrivial ) {
129130}
130131
131132@_expose ( Cxx)
@@ -161,7 +162,7 @@ public func takeTrivialInout(_ x: inout Trivial) {
161162// CHECK-NEXT: namespace swift {
162163// CHECK-NEXT: namespace _impl {
163164// CHECK-EMPTY:
164- // CHECK-NEXT: // Type metadata accessor for __CxxTemplateInstN2ns18NonTrivialTemplateIiEE
165+ // CHECK-NEXT: // Type metadata accessor for NonTrivialTemplateInt
165166// CHECK-NEXT: SWIFT_EXTERN swift::_impl::MetadataResponseTy $sSo2nsO033__CxxTemplateInstN2ns18NonTrivialC4IiEEVMa(swift::_impl::MetadataRequestTy) SWIFT_NOEXCEPT SWIFT_CALL;
166167// CHECK-EMPTY:
167168// CHECK-EMPTY:
@@ -170,21 +171,21 @@ public func takeTrivialInout(_ x: inout Trivial) {
170171// CHECK-NEXT: #pragma clang diagnostic push
171172// CHECK-NEXT: #pragma clang diagnostic ignored "-Wc++17-extensions"
172173// CHECK-NEXT: template<>
173- // CHECK-NEXT: static inline const constexpr bool isUsableInGenericContext<ns::NonTrivialTemplate<int> > = true;
174+ // CHECK-NEXT: static inline const constexpr bool isUsableInGenericContext<ns::NonTrivialTemplateInt > = true;
174175// CHECK-NEXT: template<>
175- // CHECK-NEXT: struct TypeMetadataTrait<ns::NonTrivialTemplate<int> > {
176+ // CHECK-NEXT: struct TypeMetadataTrait<ns::NonTrivialTemplateInt > {
176177// CHECK-NEXT: static inline void * _Nonnull getTypeMetadata() {
177178// CHECK-NEXT: return _impl::$sSo2nsO033__CxxTemplateInstN2ns18NonTrivialC4IiEEVMa(0)._0;
178179// CHECK-NEXT: }
179180// CHECK-NEXT: };
180181// CHECK-NEXT: namespace _impl{
181182// CHECK-NEXT: template<>
182- // CHECK-NEXT: static inline const constexpr bool isSwiftBridgedCxxRecord<ns::NonTrivialTemplate<int> > = true;
183+ // CHECK-NEXT: static inline const constexpr bool isSwiftBridgedCxxRecord<ns::NonTrivialTemplateInt > = true;
183184// CHECK-NEXT: } // namespace
184185// CHECK-NEXT: #pragma clang diagnostic pop
185186// CHECK-NEXT: } // namespace swift
186187// CHECK-EMPTY:
187- // CHECK-NEXT: namespace UseCxxTy {
188+ // CHECK-NEXT: namespace UseCxxTy __attribute__((swift_private)) {
188189
189190// CHECK: inline ns::NonTrivialTemplate<int> retNonTrivial() noexcept SWIFT_WARN_UNUSED_RESULT {
190191// CHECK-NEXT: alignas(alignof(ns::NonTrivialTemplate<int>)) char storage[sizeof(ns::NonTrivialTemplate<int>)];
@@ -200,7 +201,7 @@ public func takeTrivialInout(_ x: inout Trivial) {
200201// CHECK-NEXT: namespace swift {
201202// CHECK-NEXT: namespace _impl {
202203// CHECK-EMPTY:
203- // CHECK-NEXT: // Type metadata accessor for __CxxTemplateInstN2ns18NonTrivialTemplateINS_11TrivialinNSEEE
204+ // CHECK-NEXT: // Type metadata accessor for NonTrivialTemplateTrivial
204205// CHECK-NEXT: SWIFT_EXTERN swift::_impl::MetadataResponseTy $sSo2nsO033__CxxTemplateInstN2ns18NonTrivialC20INS_11TrivialinNSEEEVMa(swift::_impl::MetadataRequestTy) SWIFT_NOEXCEPT SWIFT_CALL;
205206// CHECK-EMPTY:
206207// CHECK-EMPTY:
@@ -209,21 +210,21 @@ public func takeTrivialInout(_ x: inout Trivial) {
209210// CHECK-NEXT: #pragma clang diagnostic push
210211// CHECK-NEXT: #pragma clang diagnostic ignored "-Wc++17-extensions"
211212// CHECK-NEXT: template<>
212- // CHECK-NEXT: static inline const constexpr bool isUsableInGenericContext<ns::NonTrivialTemplate<ns::TrivialinNS> > = true;
213+ // CHECK-NEXT: static inline const constexpr bool isUsableInGenericContext<ns::NonTrivialTemplateTrivial > = true;
213214// CHECK-NEXT: template<>
214- // CHECK-NEXT: struct TypeMetadataTrait<ns::NonTrivialTemplate<ns::TrivialinNS> > {
215+ // CHECK-NEXT: struct TypeMetadataTrait<ns::NonTrivialTemplateTrivial > {
215216// CHECK-NEXT: static inline void * _Nonnull getTypeMetadata() {
216217// CHECK-NEXT: return _impl::$sSo2nsO033__CxxTemplateInstN2ns18NonTrivialC20INS_11TrivialinNSEEEVMa(0)._0;
217218// CHECK-NEXT: }
218219// CHECK-NEXT: };
219220// CHECK-NEXT: namespace _impl{
220221// CHECK-NEXT: template<>
221- // CHECK-NEXT: static inline const constexpr bool isSwiftBridgedCxxRecord<ns::NonTrivialTemplate<ns::TrivialinNS> > = true;
222+ // CHECK-NEXT: static inline const constexpr bool isSwiftBridgedCxxRecord<ns::NonTrivialTemplateTrivial > = true;
222223// CHECK-NEXT: } // namespace
223224// CHECK-NEXT: #pragma clang diagnostic pop
224225// CHECK-NEXT: } // namespace swift
225226// CHECK-EMPTY:
226- // CHECK-NEXT: namespace UseCxxTy {
227+ // CHECK-NEXT: namespace UseCxxTy __attribute__((swift_private)) {
227228// CHECK-EMPTY:
228229// CHECK-NEXT: inline ns::NonTrivialTemplate<ns::TrivialinNS> retNonTrivial2() noexcept SWIFT_WARN_UNUSED_RESULT {
229230// CHECK-NEXT: alignas(alignof(ns::NonTrivialTemplate<ns::TrivialinNS>)) char storage[sizeof(ns::NonTrivialTemplate<ns::TrivialinNS>)];
0 commit comments