34 lines
793 B
C++
34 lines
793 B
C++
// RUN: rm -rf %t
|
|
// RUN: mkdir %t
|
|
// RUN: split-file %s %t
|
|
//
|
|
// RUN: %clang_cc1 -std=c++20 %t/interface.cppm -emit-module-interface \
|
|
// RUN: -o %t/m.pcm
|
|
// RUN: %clang_cc1 -std=c++20 %t/implementation.cpp -fmodule-file=m=%t/m.pcm \
|
|
// RUN: -fsyntax-only -verify
|
|
|
|
//--- invisible.h
|
|
#pragma once // This breaks things.
|
|
const int kInvisibleSymbol = 0;
|
|
struct invisible_struct
|
|
{};
|
|
#define INVISIBLE_DEFINE
|
|
|
|
//--- visible.h
|
|
#include "invisible.h"
|
|
const int kSadlyUndeclaredSymbol = kInvisibleSymbol;
|
|
using unfortunately_still_invisible_struct = invisible_struct;
|
|
#ifndef INVISIBLE_DEFINE
|
|
# error "Still not defined."
|
|
#endif
|
|
|
|
//--- interface.cppm
|
|
module;
|
|
#include "visible.h"
|
|
export module m;
|
|
|
|
//--- implementation.cpp
|
|
// expected-no-diagnostics
|
|
module;
|
|
#include "visible.h"
|
|
module m;
|