// Test check that processing headers as C++20 units allows #pragma once. // RUN: rm -rf %t // RUN: mkdir -p %t // RUN: split-file %s %t // RUN: cd %t // RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header hu-01.h \ // RUN: -Werror -o hu-01.pcm // RUN: %clang_cc1 -std=c++20 -emit-header-unit -xc++-user-header hu-02.h \ // RUN: -fmodule-file=%t/hu-01.pcm -o hu-02.pcm // RUN: %clang_cc1 -std=c++20 -fsyntax-only imports-01.cpp \ // RUN: -fmodule-file=%t/hu-01.pcm // RUN: %clang_cc1 -std=c++20 -fsyntax-only imports-02.cpp \ // RUN: -fmodule-file=%t/hu-02.pcm // RUN: %clang_cc1 -std=c++20 -fsyntax-only imports-03.cpp \ // RUN: -fmodule-file=%t/hu-02.pcm //--- hu-01.h #pragma once struct HU { int a; }; // expected-no-diagnostics //--- hu-02.h export import "hu-01.h"; // expected-no-diagnostics //--- imports-01.cpp import "hu-01.h"; HU foo(int x) { return {x}; } // expected-no-diagnostics //--- imports-02.cpp import "hu-02.h"; HU foo(int x) { return {x}; } // expected-no-diagnostics //--- imports-03.cpp import "hu-01.h"; import "hu-02.h"; HU foo(int x) { return {x}; } // expected-no-diagnostics