Files
clang-p2996/clang/test/Modules/pr126373.cppm
Chuanqi Xu 569e94f8f1 [C++20] [Modules] Don't diagnose duplicated declarations in different modules which is not in file scope
Close https://github.com/llvm/llvm-project/issues/126373

Although the root problems should be we shouldn't place the friend
declaration to the incorrect module, let's avoid bleeding the edge by
stoping diagnosing declarations not in file scope.
2025-02-11 14:12:32 +08:00

35 lines
851 B
C++

// RUN: rm -rf %t
// RUN: mkdir -p %t
// RUN: split-file %s %t
//
// RUN: %clang_cc1 -std=c++20 %t/module1.cppm -emit-module-interface -o %t/module1.pcm
// RUN: %clang_cc1 -std=c++20 -fmodule-file=module1=%t/module1.pcm %t/module2.cppm \
// RUN: -emit-module-interface -o %t/module2.pcm
// RUN: %clang_cc1 -std=c++20 %t/module2.pcm -fmodule-file=module1=%t/module1.pcm \
// RUN: -emit-llvm -o - | FileCheck %t/module2.cppm
//--- test.h
template<typename T>
struct Test {
template<typename U>
friend class Test;
};
//--- module1.cppm
module;
#include "test.h"
export module module1;
export void f1(Test<int>) {}
//--- module2.cppm
module;
#include "test.h"
export module module2;
import module1;
export void f2(Test<float>) {}
extern "C" void func() {}
// Fine enough to check the IR is emitted correctly.
// CHECK: define{{.*}}@func