32
32
// RUN: %target-swift-frontend -typecheck %t/ClientOfClangModules.swift -I %t \
33
33
// RUN: -package-name pkg -Rmodule-api-import \
34
34
// RUN: -enable-upcoming-feature InternalImportsByDefault -verify
35
+ // RUN: %target-swift-frontend -typecheck %t/ClientOfClangReexportedSubmodules.swift -I %t \
36
+ // RUN: -package-name pkg -Rmodule-api-import \
37
+ // RUN: -enable-upcoming-feature InternalImportsByDefault -verify
35
38
// RUN: %target-swift-frontend -typecheck %t/Client_Swift5.swift -I %t \
36
39
// RUN: -swift-version 5 -verify
37
40
@@ -285,6 +288,21 @@ module ClangTopModule {
285
288
}
286
289
}
287
290
291
+ module ClangReexportedSubmodulePublic {
292
+ header " ClangReexportedSubmodulePublic.h "
293
+ module ClangReexportedSubmodulePublicSub {
294
+ header " ClangReexportedSubmodulePublicSub.h "
295
+ export *
296
+ }
297
+ }
298
+
299
+ module ClangReexportedSubmoduleTop {
300
+ header " ClangReexportedSubmoduleTop.h "
301
+ module ClangReexportedSubmoduleSub {
302
+ header " ClangReexportedSubmoduleSub.h "
303
+ }
304
+ }
305
+
288
306
//--- ClangSimpleUnused.h
289
307
//--- ClangSimple.h
290
308
struct ClangSimpleType { } ;
@@ -300,6 +318,15 @@ struct ClangSubmoduleSubmoduleType {};
300
318
struct ClangTopModuleType { } ;
301
319
//--- ClangTopModuleSubmodule.h
302
320
321
+ //--- ClangReexportedSubmodulePublic.h
322
+ //--- ClangReexportedSubmodulePublicSub.h
323
+ #include < ClangReexportedSubmoduleSub. h>
324
+
325
+ //--- ClangReexportedSubmoduleTop.h
326
+ //--- ClangReexportedSubmoduleSub.h
327
+ typedef struct _TypedefTypeUnderlying {
328
+ } TypedefType;
329
+
303
330
//--- ClientOfClangModules.swift
304
331
public import ClangSimple
305
332
public import ClangSimpleUnused // expected-warning {{public import of 'ClangSimpleUnused' was not used in public declarations or inlinable code}}
@@ -312,3 +339,9 @@ public import ClangTopModule.ClangTopModuleSubmodule
312
339
public func clangUser( a: ClangSimpleType ) { } // expected-remark {{struct 'ClangSimpleType' is imported via 'ClangSimple'}}
313
340
public func clangUser( a: ClangSubmoduleSubmoduleType ) { } // expected-remark {{struct 'ClangSubmoduleSubmoduleType' is imported via 'ClangSubmodule'}}
314
341
public func clangUser( a: ClangTopModuleType ) { } // expected-remark {{struct 'ClangTopModuleType' is imported via 'ClangTopModule'}}
342
+
343
+ //--- ClientOfClangReexportedSubmodules.swift
344
+ public import ClangReexportedSubmodulePublic. ClangReexportedSubmodulePublicSub
345
+
346
+ public func useTypedefed( a: TypedefType ) { } // expected-remark 2 {{typealias underlying type struct '_TypedefTypeUnderlying' is imported via 'ClangReexportedSubmodulePublicSub', which reexports definition from 'ClangReexportedSubmoduleTop'}}
347
+ // expected-remark @-1 {{type alias 'TypedefType' is imported via 'ClangReexportedSubmodulePublicSub', which reexports definition from 'ClangReexportedSubmoduleTop'}}
0 commit comments