22 lines
826 B
C++
22 lines
826 B
C++
// RUN: rm -rf %t
|
|
// RUN: mkdir -p %t
|
|
// RUN: split-file %s %t
|
|
//
|
|
// Test that duplicate inline function definitions in different partitions
|
|
// of the same named module are diagnosed as ODR violations.
|
|
// See https://github.com/llvm/llvm-project/issues/186603
|
|
//
|
|
// Case 1: Module interface imports partition and redefines inline function
|
|
// RUN: %clang_cc1 -std=c++20 -emit-reduced-module-interface %t/partition1.cppm -o %t/A-P1.pcm
|
|
// RUN: %clang_cc1 -std=c++20 -emit-reduced-module-interface %t/module1.cppm \
|
|
// RUN: -fmodule-file=A:P1=%t/A-P1.pcm -o %t/A.pcm -verify
|
|
|
|
//--- partition1.cppm
|
|
export module A:P1;
|
|
export inline void x() {}
|
|
|
|
//--- module1.cppm
|
|
export module A;
|
|
import :P1;
|
|
export inline void x() {} // expected-error {{redefinition of 'x'}}
|
|
// expected-note@partition1.cppm:* {{previous definition is here}}
|