42 lines · cpp
1// RUN: rm -rf %t2// RUN: split-file %s %t3 4 5// RUN: %clang_cc1 -std=c++20 -verify -emit-module-interface %t/mod.cpp -o %t/mod.pcm6// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify -fmodule-file=M=%t/mod.pcm %t/main1.cpp7// RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify -fmodule-file=M=%t/mod.pcm %t/main2.cpp8 9//--- mod.cpp10// expected-no-diagnostics11module;12#include "A.h"13export module M;14export A f() {return A{};}15 16//--- A.h17// expected-no-diagnostics18#ifndef X19#define X20 21struct A{};22 23#endif24 25//--- main1.cpp26// expected-no-diagnostics27#include "A.h"28import M;29 30extern "C++" int main() {31 A a;32}33 34//--- main2.cpp35// expected-no-diagnostics36import M;37#include "A.h"38 39extern "C++" int main() {40 A a;41}42