xref: /llvm-project/flang/test/Driver/input-from-stdin/input-from-stdin.f90 (revision 9edcf7a28eee1e3b2d22bd3aed9e405e17beacce)
1! Verify that reading from stdin works as expected - Fortran input
2
3!--------------------------
4! FLANG DRIVER (flang)
5!--------------------------
6! Input type is implicit
7! RUN: cat %s | %flang -E -cpp - | FileCheck %s --check-prefix=PP-NOT-DEFINED
8! RUN: cat %s | %flang -DNEW -E -cpp - | FileCheck %s --check-prefix=PP-DEFINED
9! RUN: cat %s | %flang -DNEW -E - | FileCheck %s --check-prefix=PP-NOT-DEFINED
10! RUN: cat %s | %flang -DNEW -E -nocpp - | FileCheck %s --check-prefix=PP-NOT-DEFINED
11
12! Input type is explicit
13! RUN: cat %s | %flang -E -cpp -x f95-cpp-input - | FileCheck %s --check-prefix=PP-NOT-DEFINED
14! RUN: cat %s | %flang -DNEW -E -cpp -x f95-cpp-input - | FileCheck %s --check-prefix=PP-DEFINED
15
16!---------------------------------------
17! FLANG FRONTEND DRIVER (flang -fc1)
18!---------------------------------------
19! Test `-E`: for the corresponding frontend actions the driver relies on the prescanner API to handle file I/O
20! RUN: cat %s | %flang_fc1 -E -cpp | FileCheck %s --check-prefix=PP-NOT-DEFINED
21! RUN: cat %s | %flang_fc1 -DNEW -E -cpp | FileCheck %s --check-prefix=PP-DEFINED
22
23! Test `-test-io`: for the corresponding frontend action (`InputOutputTestAction`) the driver handles the file I/O on its own
24! the corresponding action (`PrintPreprocessedAction`)
25! RUN: cat %s | %flang_fc1 -test-io -cpp | FileCheck %s --check-prefix=IO --match-full-lines
26! RUN: cat %s | %flang_fc1 -DNEW -cpp -test-io | FileCheck %s --check-prefix=IO --match-full-lines
27
28! PP-NOT-DEFINED: Program B
29! PP-DEFINED: Program A
30
31! IO: #ifdef NEW
32! IO-NEXT:   Program A
33! IO-NEXT: #else
34! IO-NEXT:   Program B
35! IO-NEXT: #endif
36
37#ifdef NEW
38  Program A
39#else
40  Program B
41#endif
42