252
|
1 // Test the output from -module-file-info about C++20 Modules
|
|
2 // can reflect macros definitions correctly.
|
|
3 // RUN: rm -rf %t
|
|
4 // RUN: mkdir -p %t
|
|
5 // RUN: split-file %s %t
|
|
6 //
|
|
7 // RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header %t/foo.h -o %t/foo.pcm
|
|
8 // RUN: %clang_cc1 -module-file-info %t/foo.pcm | FileCheck %t/foo.h
|
|
9 //
|
|
10 // RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header %t/include_foo.h -o %t/include_foo.pcm
|
|
11 // RUN: %clang_cc1 -module-file-info %t/include_foo.pcm | FileCheck %t/include_foo.h
|
|
12
|
|
13 // RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header -fmodule-file=%t/foo.pcm \
|
|
14 // RUN: %t/import_foo.h -o %t/import_foo.pcm
|
|
15 // RUN: %clang_cc1 -module-file-info %t/import_foo.pcm | FileCheck %t/import_foo.h
|
|
16 //
|
|
17 // RUN: %clang_cc1 -std=c++20 %t/named_module.cppm -emit-module-interface -o %t/M.pcm
|
|
18 // RUN: %clang_cc1 -module-file-info %t/M.pcm | FileCheck %t/named_module.cppm
|
|
19
|
|
20 //--- foo.h
|
|
21 #pragma once
|
|
22 #define FOO
|
|
23 #define CONSTANT 43
|
|
24 #define FUNC_Macro(X) (X+1)
|
|
25 #define TO_BE_UNDEF
|
|
26 #undef TO_BE_UNDEF
|
|
27
|
|
28 #ifndef FOO
|
|
29 #define CONDITIONAL_DEF
|
|
30 #endif
|
|
31
|
|
32 #define REDEFINE
|
|
33 #define REDEFINE
|
|
34
|
|
35 // CHECK: Macro Definitions:
|
|
36 // CHECK-DAG: REDEFINE
|
|
37 // CHECK-DAG: FUNC_Macro
|
|
38 // CHECK-DAG: CONSTANT
|
|
39 // CHECK-DAG: FOO
|
|
40 // CHECK-NEXT: ===
|
|
41
|
|
42 //--- include_foo.h
|
|
43 #include "foo.h"
|
|
44 #undef REDEFINE
|
|
45 // CHECK: Macro Definitions:
|
|
46 // CHECK-DAG: CONSTANT
|
|
47 // CHECK-DAG: FUNC_Macro
|
|
48 // CHECK-DAG: FOO
|
|
49 // CHECK-NEXT: ===
|
|
50
|
|
51 //--- import_foo.h
|
|
52 import "foo.h";
|
|
53 #undef REDEFINE
|
|
54 // CHECK: Macro Definitions:
|
|
55 // CHECK-DAG: CONSTANT
|
|
56 // CHECK-DAG: FUNC_Macro
|
|
57 // CHECK-DAG: FOO
|
|
58 // CHECK-NEXT: ===
|
|
59
|
|
60 //--- named_module.cppm
|
|
61 module;
|
|
62 #include "foo.h"
|
|
63 export module M;
|
|
64 #define M_Module 43
|
|
65 // CHECK-NOT: Macro Definitions:
|