[clang] Implement lifetime analysis for lifetime_capture_by(X) (#115921)
[llvm-project.git] / clang / test / Modules / ctor.arg.dep.cppm
blob10924bfe0f1bdcec5c20909a9ebf452e77e06e1a
1 // RUN: rm -rf %t
2 // RUN: split-file %s %t
3 // RUN: cd %t
4 //
5 // RUN: %clang_cc1 -std=c++20 %t/A.cppm -I%t -emit-module-interface -o %t/A.pcm
6 // RUN: %clang_cc1 -std=c++20 -fprebuilt-module-path=%t %t/Use.cpp -verify -fsyntax-only
7 //
8 // RUN: rm %t/A.pcm
9 // RUN: %clang_cc1 -std=c++20 %t/A.cppm -I%t -emit-reduced-module-interface -o %t/A.pcm
10 // RUN: %clang_cc1 -std=c++20 -fprebuilt-module-path=%t %t/Use.cpp -verify -fsyntax-only
12 //--- foo.h
14 namespace ns {
16 struct T {
17     T(void*);
20 struct A {
21     template <typename F>
22     A(F f) : t(&f)  {}
24     T t;
27 template <typename T>
28 void foo(T) {
29     auto f = [](){};
30     ns::A a(f);
34 //--- A.cppm
35 module;
36 #include "foo.h"
37 export module A;
38 export namespace ns {
39     using ns::A;
40     using ns::foo;
43 //--- Use.cpp
44 // expected-no-diagnostics
45 import A;
46 void test() {
47     ns::foo(5);