From 461a67fa15370a9ec88f8f8a240bf7c123bb2029 Mon Sep 17 00:00:00 2001 From: Dimitry Andric Date: Mon, 18 Dec 2017 20:11:37 +0000 Subject: Vendor import of clang trunk r321017: https://llvm.org/svn/llvm-project/cfe/trunk@321017 --- test/Modules/adl.cpp | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 test/Modules/adl.cpp (limited to 'test/Modules/adl.cpp') diff --git a/test/Modules/adl.cpp b/test/Modules/adl.cpp new file mode 100644 index 0000000000000..a1055a889d002 --- /dev/null +++ b/test/Modules/adl.cpp @@ -0,0 +1,40 @@ +// RUN: %clang_cc1 -fmodules -verify -fno-modules-error-recovery -fno-spell-checking %s +// RUN: %clang_cc1 -fmodules -verify -fno-modules-error-recovery -DONLY_Y %s + +#pragma clang module build a +module a { + explicit module x {} + explicit module y {} +} +#pragma clang module contents +#pragma clang module begin a.x +namespace N { + template extern int f(T) { return 0; } +} +#pragma clang module end + +#pragma clang module begin a.y +#pragma clang module import a.x +using N::f; +#pragma clang module end +#pragma clang module endbuild + +namespace N { struct A {}; } +struct B {}; + +#ifndef ONLY_Y +#pragma clang module import a.x +void test1() { + f(N::A()); + f(B()); // expected-error {{use of undeclared identifier 'f'}} +} +#else +// expected-no-diagnostics +#endif + +#pragma clang module import a.y +void test2() { + // These are OK even if a.x is not imported. + f(N::A()); + f(B()); +} -- cgit v1.3