xref: /llvm-project/clang/test/Modules/predefined.cpp (revision da00c60dae0040185dc45039c4397f6e746548e9)
1878e5905SArthur Eubanks // RUN: rm -rf %t
2878e5905SArthur Eubanks // RUN: split-file %s %t
3878e5905SArthur Eubanks // RUN: cd %t
4878e5905SArthur Eubanks 
5878e5905SArthur Eubanks // RUN: %clang_cc1 -x c++ -std=c++20 -emit-module-interface a.h -o a.pcm -fms-extensions -verify
6878e5905SArthur Eubanks // RUN: %clang_cc1 -std=c++20 a.cpp -fmodule-file=A=a.pcm -fms-extensions -fsyntax-only -verify
7878e5905SArthur Eubanks 
8*da00c60dSChuanqi Xu // RUN: %clang_cc1 -x c++ -std=c++20 -emit-reduced-module-interface a.h -o a.pcm -fms-extensions -verify
9*da00c60dSChuanqi Xu // RUN: %clang_cc1 -std=c++20 a.cpp -fmodule-file=A=a.pcm -fms-extensions -fsyntax-only -verify
10*da00c60dSChuanqi Xu 
11878e5905SArthur Eubanks //--- a.h
12878e5905SArthur Eubanks 
13878e5905SArthur Eubanks // expected-no-diagnostics
14878e5905SArthur Eubanks 
15878e5905SArthur Eubanks export module A;
16878e5905SArthur Eubanks 
17878e5905SArthur Eubanks export template <typename T>
f()18878e5905SArthur Eubanks void f() {
19878e5905SArthur Eubanks     char a[] = __func__;
20878e5905SArthur Eubanks }
21878e5905SArthur Eubanks 
22878e5905SArthur Eubanks //--- a.cpp
23878e5905SArthur Eubanks 
24878e5905SArthur Eubanks // expected-warning@a.h:8 {{initializing an array from a '__func__' predefined identifier is a Microsoft extension}}
25878e5905SArthur Eubanks 
26878e5905SArthur Eubanks import A;
27878e5905SArthur Eubanks 
g()28878e5905SArthur Eubanks void g() {
29878e5905SArthur Eubanks     f<int>(); // expected-note {{in instantiation of function template specialization 'f<int>' requested here}}
30878e5905SArthur Eubanks }
31