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