56 lines
1,001 B
Text
56 lines
1,001 B
Text
|
// From https://github.com/llvm/llvm-project/issues/61065
|
||
|
// RUN: rm -rf %t
|
||
|
// RUN: mkdir -p %t
|
||
|
// RUN: split-file %s %t
|
||
|
//
|
||
|
// RUN: %clang_cc1 -std=c++20 %t/a.cppm -emit-module-interface -o %t/a.pcm
|
||
|
// RUN: %clang_cc1 -std=c++20 %t/b.cppm -emit-module-interface -o %t/b.pcm \
|
||
|
// RUN: -fprebuilt-module-path=%t
|
||
|
// DISABLED: %clang_cc1 -std=c++20 %t/c.cppm -emit-module-interface -o %t/c.pcm \
|
||
|
// DISABLED: -fprebuilt-module-path=%t
|
||
|
// DISABLED: %clang_cc1 -std=c++20 %t/d.cpp -fsyntax-only -verify -fprebuilt-module-path=%t
|
||
|
|
||
|
//--- a.cppm
|
||
|
export module a;
|
||
|
|
||
|
struct base {
|
||
|
base(int) {}
|
||
|
};
|
||
|
|
||
|
export struct a : base {
|
||
|
using base::base;
|
||
|
};
|
||
|
|
||
|
//--- b.cppm
|
||
|
export module b;
|
||
|
|
||
|
import a;
|
||
|
|
||
|
a b() {
|
||
|
return a(1);
|
||
|
}
|
||
|
|
||
|
//--- c.cppm
|
||
|
export module c;
|
||
|
|
||
|
import a;
|
||
|
import b;
|
||
|
|
||
|
struct noncopyable {
|
||
|
noncopyable(noncopyable const &) = delete;
|
||
|
noncopyable() = default;
|
||
|
};
|
||
|
|
||
|
export struct c {
|
||
|
noncopyable c0;
|
||
|
a c1 = 43;
|
||
|
c() = default;
|
||
|
};
|
||
|
|
||
|
//--- d.cpp
|
||
|
// expected-no-diagnostics
|
||
|
import c;
|
||
|
void d() {
|
||
|
c _;
|
||
|
}
|