1// RUN: rm -rf %t 2// RUN: mkdir %t 3// RUN: split-file %s %t 4// 5// RUN: %clang_cc1 -std=c++20 %t/A.cppm -emit-module-interface -o %t/A.pcm 6// RUN: %clang_cc1 -std=c++20 %t/B.cppm -emit-module-interface -o %t/B.pcm 7// RUN: %clang_cc1 -std=c++20 %t/use.cppm -fprebuilt-module-path=%t -fsyntax-only -verify 8 9// RUN: %clang_cc1 -std=c++20 %t/A.cppm -emit-reduced-module-interface -o %t/A.pcm 10// RUN: %clang_cc1 -std=c++20 %t/B.cppm -emit-reduced-module-interface -o %t/B.pcm 11// RUN: %clang_cc1 -std=c++20 %t/use.cppm -fprebuilt-module-path=%t -fsyntax-only -verify 12 13//--- lambda.h 14inline auto cmp = [](auto l, auto r) { 15 return l < r; 16}; 17 18//--- A.cppm 19module; 20#include "lambda.h" 21 22export module A; 23export auto c1 = cmp; 24export using ::cmp; 25 26//--- B.cppm 27module; 28#include "lambda.h" 29 30export module B; 31export auto c2 = cmp; 32export using ::cmp; 33 34//--- use.cppm 35// expected-no-diagnostics 36module; 37 38export module use; 39 40import A; 41import B; 42 43static_assert(__is_same(decltype(c1), decltype(c2))); // should succeed. 44auto x = cmp; // cmp must not be ambiguous, 45