brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · d55bdfb Raw
65 lines · plain
1// https://github.com/llvm/llvm-project/issues/544572//3// RUN: rm -rf %t4// RUN: mkdir %t5// RUN: split-file %s %t6//7// RUN: %clang_cc1 -std=c++20 %t/A.cppm -verify -S -o -8// RUN: %clang_cc1 -std=c++20 %t/B.cppm -verify -S -o -9// RUN: %clang_cc1 -std=c++20 %t/C.cppm -emit-module-interface -o %t/C.pcm10// RUN: %clang_cc1 -std=c++20 %t/UseC.cppm -fprebuilt-module-path=%t -verify -S -o -11 12// RUN: %clang_cc1 -std=c++20 %t/C.cppm -emit-reduced-module-interface -o %t/C.pcm13// RUN: %clang_cc1 -std=c++20 %t/UseC.cppm -fprebuilt-module-path=%t -verify -S -o -14 15//--- A.cppm16// expected-no-diagnostics17export module A;18 19export template<typename T>20struct s {21	friend s f(s) {22		return s();23	}24};25 26void g() {27	f(s<int>());28}29 30//--- B.cppm31// expected-no-diagnostics32export module B;33 34export template<typename T>35struct s {36	friend constexpr auto f(s) -> s {37		return s();38	}39};40 41void g() {42	constexpr auto first = f(s<int>());43}44 45//--- C.cppm46// expected-no-diagnostics47export module C;48 49export template<typename StandardCharT, int N>50struct basic_symbol_text {51  template<int N2>52  constexpr friend basic_symbol_text operator+(53    const basic_symbol_text&, const basic_symbol_text<char, N2>&) noexcept54  {55    return basic_symbol_text{};56  }57};58 59constexpr auto xxx = basic_symbol_text<char, 1>{} + basic_symbol_text<char, 1>{};60 61//--- UseC.cppm62// expected-no-diagnostics63import C;64void foo() {}65