[clang] b826567 - [C++20][Modules] Add a testcase for [basic.link] p10 [NFC].

Iain Sandoe via cfe-commits cfe-commits at lists.llvm.org
Mon Jul 25 04:20:26 PDT 2022


Author: Iain Sandoe
Date: 2022-07-25T12:20:02+01:00
New Revision: b826567136e391095b7731d5121e2be2a8fdc9ee

URL: https://github.com/llvm/llvm-project/commit/b826567136e391095b7731d5121e2be2a8fdc9ee
DIFF: https://github.com/llvm/llvm-project/commit/b826567136e391095b7731d5121e2be2a8fdc9ee.diff

LOG: [C++20][Modules] Add a testcase for [basic.link] p10 [NFC].

This adds a testcase based on example 2 from the basic.link section of the
standard.

Added: 
    clang/test/CXX/basic/basic.link/p10-ex2.cpp

Modified: 
    

Removed: 
    


################################################################################
diff  --git a/clang/test/CXX/basic/basic.link/p10-ex2.cpp b/clang/test/CXX/basic/basic.link/p10-ex2.cpp
new file mode 100644
index 0000000000000..322785ecbbf12
--- /dev/null
+++ b/clang/test/CXX/basic/basic.link/p10-ex2.cpp
@@ -0,0 +1,35 @@
+// RUN: rm -rf %t
+// RUN: mkdir -p %t
+// RUN: split-file %s %t
+// RUN: cd %t
+//
+// RUN: %clang_cc1 -std=c++20 M.cpp -fsyntax-only -DTEST_INTERFACE -verify
+// RUN: %clang_cc1 -std=c++20 M.cpp -emit-module-interface -o M.pcm
+// RUN: %clang_cc1 -std=c++20 useM.cpp -fsyntax-only -fmodule-file=M.pcm -verify
+
+//--- decls.h
+int f(); // #1, attached to the global module
+int g(); // #2, attached to the global module
+
+//--- M.cpp
+module;
+#include "decls.h"
+export module M;
+export using ::f; // OK, does not declare an entity, exports #1
+#if TEST_INTERFACE
+// error: matches #2, but attached to M
+int g(); // expected-error {{declaration of 'g' in module M follows declaration in the global module}}
+// expected-note at decls.h:2 {{previous declaration is here}}
+#endif
+export int h(); // #3
+export int k(); // #4
+
+//--- useM.cpp
+import M;
+// error: matches #3
+static int h(); // expected-error {{static declaration of 'h' follows non-static declaration}}
+// expected-note at M.cpp:10 {{previous declaration is here}}
+
+// error: matches #4
+int k(); // expected-error {{declaration of 'k' in the global module follows declaration in module M}}
+// expected-note at M.cpp:11 {{previous declaration is here}}


        


More information about the cfe-commits mailing list