[clang] Implement lifetime analysis for lifetime_capture_by(X) (#115921)
[llvm-project.git] / clang / test / Modules / friend-definition.cpp
blob32329d0e3e1c5b8f35dfbec61f6c4b46a099e05c
1 // RUN: %clang_cc1 -fmodules -std=c++14 %s -verify
2 // expected-no-diagnostics
4 #pragma clang module build A
5 module A {}
6 #pragma clang module contents
7 #pragma clang module begin A
8 template<typename T> struct A {
9 friend A operator+(const A&, const A&) { return {}; }
10 template<typename T2> friend void func_1(const A&, const T2 &) {}
12 #pragma clang module end
13 #pragma clang module endbuild
15 #pragma clang module build B
16 module B {}
17 #pragma clang module contents
18 #pragma clang module begin B
19 #pragma clang module import A
20 inline void f() { A<int> a; }
21 #pragma clang module end
22 #pragma clang module endbuild
24 #pragma clang module build C
25 module C {}
26 #pragma clang module contents
27 #pragma clang module begin C
28 #pragma clang module import A
29 inline void g() { A<int> a; }
30 #pragma clang module end
31 #pragma clang module endbuild
33 #pragma clang module import A
34 #pragma clang module import B
35 #pragma clang module import C
37 void h() {
38 A<int> a;
39 a + a;
40 func_1(a, 0);