xref: /llvm-project/clang/test/Preprocessor/file_test.c (revision 490990bb1f6578276ae7675f09e26e6c6bd3f59a)
17a8edcb2SSylvain Audi // UNSUPPORTED: system-windows
26c92cdffSDan McGregor // RUN: %clang -E -ffile-prefix-map=%p=/UNLIKELY_PATH/empty -c -o - %s | FileCheck %s
36c92cdffSDan McGregor // RUN: %clang -E -fmacro-prefix-map=%p=/UNLIKELY_PATH/empty -c -o - %s | FileCheck %s
46c92cdffSDan McGregor // RUN: %clang -E -fmacro-prefix-map=%p=/UNLIKELY_PATH=empty -c -o - %s | FileCheck %s -check-prefix CHECK-EVIL
56c92cdffSDan McGregor // RUN: %clang -E -fmacro-prefix-map=%p/= -c -o - %s | FileCheck %s --check-prefix CHECK-REMOVE
66398f3f2SAlan Zhao // RUN: %clang -E -fno-file-reproducible -fmacro-prefix-map=%p/= -target x86_64-pc-win32 -c -o - %s | FileCheck %s --check-prefix CHECK-REMOVE
76398f3f2SAlan Zhao // RUN: %clang -E -fno-file-reproducible -ffile-prefix-map=%p/= -target x86_64-pc-win32 -c -o - %s | FileCheck %s --check-prefix CHECK-REMOVE
86398f3f2SAlan Zhao // RUN: %clang -E -fmacro-prefix-map=%p/= -target x86_64-pc-win32 -c -o - %s | FileCheck %s --check-prefix CHECK-WINDOWS
96398f3f2SAlan Zhao // RUN: %clang -E -ffile-prefix-map=%p/= -target x86_64-pc-win32 -c -o - %s | FileCheck %s --check-prefix CHECK-WINDOWS
106398f3f2SAlan Zhao // RUN: %clang -E -ffile-reproducible -target x86_64-pc-win32 -c -o - %s | FileCheck %s --check-prefix CHECK-WINDOWS-REPRODUCIBLE
11*490990bbSPaul Pluzhnikov // RUN: %clang -E -ffile-reproducible -target x86_64-pc-linux-gnu -c -o - %s | FileCheck %s --check-prefix CHECK-LINUX-REPRODUCIBLE
12*490990bbSPaul Pluzhnikov 
13*490990bbSPaul Pluzhnikov /// Clang-format wants to do something unreasonable to this file.
14*490990bbSPaul Pluzhnikov // clang-format off
156c92cdffSDan McGregor 
166c92cdffSDan McGregor filename: __FILE__
17*490990bbSPaul Pluzhnikov 
18*490990bbSPaul Pluzhnikov /// This line tests that the __FILE__ in included header is canonicalized
19*490990bbSPaul Pluzhnikov /// (has "./" removed).
20*490990bbSPaul Pluzhnikov #include "./Inputs/./include-file-test/file_test.h"
216c92cdffSDan McGregor 
227a8edcb2SSylvain Audi // CHECK: filename: "/UNLIKELY_PATH/empty/file_test.c"
237a8edcb2SSylvain Audi // CHECK: filename: "/UNLIKELY_PATH/empty/Inputs/include-file-test/file_test.h"
247a8edcb2SSylvain Audi // CHECK: basefile: "/UNLIKELY_PATH/empty/file_test.c"
256c92cdffSDan McGregor // CHECK-NOT: filename:
266c92cdffSDan McGregor 
277a8edcb2SSylvain Audi // CHECK-EVIL: filename: "/UNLIKELY_PATH=empty/file_test.c"
287a8edcb2SSylvain Audi // CHECK-EVIL: filename: "/UNLIKELY_PATH=empty/Inputs/include-file-test/file_test.h"
297a8edcb2SSylvain Audi // CHECK-EVIL: basefile: "/UNLIKELY_PATH=empty/file_test.c"
306c92cdffSDan McGregor // CHECK-EVIL-NOT: filename:
316c92cdffSDan McGregor 
326c92cdffSDan McGregor // CHECK-REMOVE: filename: "file_test.c"
33*490990bbSPaul Pluzhnikov // CHECK-REMOVE: filename: "{{.*}}Inputs/{{.*}}include-file-test/file_test.h"
346c92cdffSDan McGregor // CHECK-REMOVE: basefile: "file_test.c"
356c92cdffSDan McGregor // CHECK-REMOVE-NOT: filename:
366398f3f2SAlan Zhao 
376398f3f2SAlan Zhao // CHECK-WINDOWS: filename: "file_test.c"
386398f3f2SAlan Zhao // CHECK-WINDOWS: filename: "Inputs\\include-file-test\\file_test.h"
396398f3f2SAlan Zhao // CHECK-WINDOWS: basefile: "file_test.c"
406398f3f2SAlan Zhao // CHECK-WINDOWS-NOT: filename:
416398f3f2SAlan Zhao 
42*490990bbSPaul Pluzhnikov // CHECK-WINDOWS-REPRODUCIBLE: filename: "{{.*}}\\file_test.c"
43*490990bbSPaul Pluzhnikov // CHECK-WINDOWS-REPRODUCIBLE: filename: "{{.*}}\\Inputs\\include-file-test\\file_test.h"
44*490990bbSPaul Pluzhnikov // CHECK-WINDOWS-REPRODUCIBLE: basefile: "{{.*}}\\file_test.c"
456398f3f2SAlan Zhao // CHECK-WINDOWS-REPRODUCIBLE-NOT: filename:
46*490990bbSPaul Pluzhnikov 
47*490990bbSPaul Pluzhnikov // CHECK-LINUX-REPRODUCIBLE: filename: "{{.*}}/file_test.c"
48*490990bbSPaul Pluzhnikov // CHECK-LINUX-REPRODUCIBLE: filename: "{{.*}}/Inputs/include-file-test/file_test.h"
49*490990bbSPaul Pluzhnikov // CHECK-LINUX-REPRODUCIBLE: basefile: "{{.*}}/file_test.c"
50*490990bbSPaul Pluzhnikov // CHECK-LINUX-REPRODUCIBLE-NOT: filename:
51