brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.3 KiB · 6a2c675 Raw
72 lines · plain
1// RUN: rm -rf %t2// RUN: mkdir %t3// RUN: split-file %s %t4 5// RUN: %clang_cc1 -std=c++20 %t/M.cppm -verify6// RUN: %clang_cc1 -std=c++20 %t/M.cppm -emit-module-interface -o %t/M.pcm7// RUN: %clang_cc1 -std=c++20 -fmodule-file=M=%t/M.pcm %t/M.cpp -verify8//9// RUN: %clang_cc1 -std=c++20 -fmodule-file=M=%t/M.pcm %t/user.cpp -verify10 11//--- M.cppm12// expected-no-diagnostics13export module M;14 15export int external_linkage_var;16int module_linkage_var;17static int internal_linkage_var;18 19export void external_linkage_fn() {}20void module_linkage_fn() {}21static void internal_linkage_fn() {}22 23export struct external_linkage_class {};24struct module_linkage_class {};25namespace {26struct internal_linkage_class {};27} // namespace28 29void use() {30  external_linkage_fn();31  module_linkage_fn();32  internal_linkage_fn();33  (void)external_linkage_class{};34  (void)module_linkage_class{};35  (void)internal_linkage_class{};36  (void)external_linkage_var;37  (void)module_linkage_var;38  (void)internal_linkage_var;39}40 41//--- M.cpp42 43module M;44 45void use_from_module_impl() {46  external_linkage_fn();47  module_linkage_fn();48  internal_linkage_fn(); // expected-error {{use of undeclared identifier 'internal_linkage_fn'}} // expected-note@* {{}}49  (void)external_linkage_class{};50  (void)module_linkage_class{};51  (void)external_linkage_var;52  (void)module_linkage_var;53 54  (void)internal_linkage_class{}; // expected-error {{use of undeclared identifier 'internal_linkage_class'}} // expected-note@* {{}}55  (void)internal_linkage_var; // expected-error {{use of undeclared identifier 'internal_linkage_var'}}56}57 58//--- user.cpp59import M;60 61void use_from_module_impl() {62  external_linkage_fn();63  module_linkage_fn();   // expected-error {{use of undeclared identifier 'module_linkage_fn'}}64  internal_linkage_fn(); // expected-error {{use of undeclared identifier 'internal_linkage_fn'}}65  (void)external_linkage_class{};66  (void)module_linkage_class{}; // expected-error {{undeclared identifier}} expected-error 0+{{}} // expected-note@* {{}}67  (void)internal_linkage_class{}; // expected-error {{undeclared identifier}} expected-error 0+{{}} // expected-note@* {{}}68  (void)external_linkage_var;69  (void)module_linkage_var; // expected-error {{undeclared identifier}}70  (void)internal_linkage_var; // expected-error {{undeclared identifier}}71}72