[clang] Implement lifetime analysis for lifetime_capture_by(X) (#115921)
[llvm-project.git] / clang / test / Modules / cxx20-hu-03.cpp
blob81916e97aaa16340f8937f0dd44c2cba3e310de0
1 // Test check that processing headers as C++20 units allows #pragma once.
3 // RUN: rm -rf %t
4 // RUN: mkdir -p %t
5 // RUN: split-file %s %t
6 // RUN: cd %t
8 // RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header hu-01.h \
9 // RUN: -Werror -o hu-01.pcm
11 // RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header hu-02.h \
12 // RUN: -fmodule-file=%t/hu-01.pcm -o hu-02.pcm
14 // RUN: %clang_cc1 -std=c++20 -fsyntax-only imports-01.cpp \
15 // RUN: -fmodule-file=%t/hu-01.pcm
17 // RUN: %clang_cc1 -std=c++20 -fsyntax-only imports-02.cpp \
18 // RUN: -fmodule-file=%t/hu-02.pcm
20 // RUN: %clang_cc1 -std=c++20 -fsyntax-only imports-03.cpp \
21 // RUN: -fmodule-file=%t/hu-02.pcm
23 //--- hu-01.h
24 #pragma once
25 struct HU {
26 int a;
28 // expected-no-diagnostics
30 //--- hu-02.h
31 export import "hu-01.h";
32 // expected-no-diagnostics
34 //--- imports-01.cpp
35 import "hu-01.h";
37 HU foo(int x) {
38 return {x};
40 // expected-no-diagnostics
42 //--- imports-02.cpp
43 import "hu-02.h";
45 HU foo(int x) {
46 return {x};
48 // expected-no-diagnostics
50 //--- imports-03.cpp
51 import "hu-01.h";
52 import "hu-02.h";
54 HU foo(int x) {
55 return {x};
57 // expected-no-diagnostics