1e03a6545SRichard Smith// RUN: %clang_cc1 -std=c++1z -fmodules-ts %s -verify 2e03a6545SRichard Smith// expected-no-diagnostics 3e03a6545SRichard Smithexport module M; 4e03a6545SRichard Smith 5e03a6545SRichard Smithexport int external_linkage_var; 6e03a6545SRichard Smithint module_linkage_var; 7e03a6545SRichard Smithstatic int internal_linkage_var; 8e03a6545SRichard Smith 9e03a6545SRichard Smithexport void external_linkage_fn() {} 10e03a6545SRichard Smithvoid module_linkage_fn() {} 11e03a6545SRichard Smithstatic void internal_linkage_fn() {} 12e03a6545SRichard Smith 13e03a6545SRichard Smithexport struct external_linkage_class {}; 14e03a6545SRichard Smithstruct module_linkage_class {}; 15e03a6545SRichard Smithnamespace { 16e03a6545SRichard Smithstruct internal_linkage_class {}; 17*9db81628SChuanqi Xu} // namespace 18e03a6545SRichard Smith 19e03a6545SRichard Smithvoid use() { 20e03a6545SRichard Smith external_linkage_fn(); 21e03a6545SRichard Smith module_linkage_fn(); 22e03a6545SRichard Smith internal_linkage_fn(); 23e03a6545SRichard Smith (void)external_linkage_class{}; 24e03a6545SRichard Smith (void)module_linkage_class{}; 25e03a6545SRichard Smith (void)internal_linkage_class{}; 26e03a6545SRichard Smith (void)external_linkage_var; 27e03a6545SRichard Smith (void)module_linkage_var; 28e03a6545SRichard Smith (void)internal_linkage_var; 29e03a6545SRichard Smith} 30