252
|
1 // RUN: rm -rf %t
|
|
2 // RUN: mkdir %t
|
|
3 // RUN: split-file %s %t
|
|
4 //
|
|
5 // RUN: %clang_cc1 -std=c++20 %t/interface.cppm -emit-module-interface \
|
|
6 // RUN: -o %t/m.pcm
|
|
7 // RUN: %clang_cc1 -std=c++20 %t/implementation.cpp -fmodule-file=m=%t/m.pcm \
|
|
8 // RUN: -fsyntax-only -verify
|
|
9
|
|
10 //--- invisible.h
|
|
11 #pragma once // This breaks things.
|
|
12 const int kInvisibleSymbol = 0;
|
|
13 struct invisible_struct
|
|
14 {};
|
|
15 #define INVISIBLE_DEFINE
|
|
16
|
|
17 //--- visible.h
|
|
18 #include "invisible.h"
|
|
19 const int kSadlyUndeclaredSymbol = kInvisibleSymbol;
|
|
20 using unfortunately_still_invisible_struct = invisible_struct;
|
|
21 #ifndef INVISIBLE_DEFINE
|
|
22 # error "Still not defined."
|
|
23 #endif
|
|
24
|
|
25 //--- interface.cppm
|
|
26 module;
|
|
27 #include "visible.h"
|
|
28 export module m;
|
|
29
|
|
30 //--- implementation.cpp
|
|
31 // expected-no-diagnostics
|
|
32 module;
|
|
33 #include "visible.h"
|
|
34 module m;
|