brintos

brintos / llvm-project-archived public Read only

0
0
Text · 967 B · 32329d0 Raw
42 lines · cpp
1// RUN: %clang_cc1 -fmodules -std=c++14 %s -verify2// expected-no-diagnostics3 4#pragma clang module build A5module A {}6#pragma clang module contents7#pragma clang module begin A8template<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 &) {}11};12#pragma clang module end13#pragma clang module endbuild14 15#pragma clang module build B16module B {}17#pragma clang module contents18#pragma clang module begin B19#pragma clang module import A20inline void f() { A<int> a; }21#pragma clang module end22#pragma clang module endbuild23 24#pragma clang module build C25module C {}26#pragma clang module contents27#pragma clang module begin C28#pragma clang module import A29inline void g() { A<int> a; }30#pragma clang module end31#pragma clang module endbuild32 33#pragma clang module import A34#pragma clang module import B35#pragma clang module import C36 37void h() {38  A<int> a;39  a + a;40  func_1(a, 0);41}42