41 lines · plain
1// RUN: rm -rf %t2// RUN: mkdir %t3// RUN: split-file %s %t4//5// RUN: %clang_cc1 -std=c++20 %t/interface.cppm -emit-module-interface \6// RUN: -o %t/m.pcm7// RUN: %clang_cc1 -std=c++20 %t/implementation.cpp -fmodule-file=m=%t/m.pcm \8// RUN: -fsyntax-only -verify9 10// Test again with reduced BMI.11// RUN: %clang_cc1 -std=c++20 %t/interface.cppm -emit-reduced-module-interface \12// RUN: -o %t/m.pcm13// RUN: %clang_cc1 -std=c++20 %t/implementation.cpp -fmodule-file=m=%t/m.pcm \14// RUN: -fsyntax-only -verify15 16//--- invisible.h17#pragma once // This breaks things.18const int kInvisibleSymbol = 0;19struct invisible_struct20{};21#define INVISIBLE_DEFINE22 23//--- visible.h24#include "invisible.h"25const int kSadlyUndeclaredSymbol = kInvisibleSymbol;26using unfortunately_still_invisible_struct = invisible_struct;27#ifndef INVISIBLE_DEFINE28# error "Still not defined."29#endif30 31//--- interface.cppm32module;33#include "visible.h"34export module m;35 36//--- implementation.cpp37// expected-no-diagnostics38module;39#include "visible.h"40module m;41