xref: /llvm-project/clang/test/Interpreter/fail.cpp (revision fd5f06eb6d8d8b05846c8d7bd2431079ef707b37)
19caee577SJun Zhang // REQUIRES: host-supports-jit
29caee577SJun Zhang // UNSUPPORTED: system-aix
3*fd5f06ebSVassil Vassilev // clang-repl can be called from the prompt in non-interactive mode as a
4*fd5f06ebSVassil Vassilev // calculator in shell scripts, for example. In that case if there is an error
5*fd5f06ebSVassil Vassilev // we should set the exit code as failure.
6*fd5f06ebSVassil Vassilev // RUN: not clang-repl "int x = 10;" "int y=7; err;" "int y = 10;"
7*fd5f06ebSVassil Vassilev 
8*fd5f06ebSVassil Vassilev // In interactive (REPL) mode, we can have errors but we should exit with
9*fd5f06ebSVassil Vassilev // success because errors in the input code are part of the interactive use.
10*fd5f06ebSVassil Vassilev // RUN: cat %s | clang-repl | FileCheck %s
11*fd5f06ebSVassil Vassilev 
12*fd5f06ebSVassil Vassilev // However, interactive mode should fail when we specified -verify and there
13*fd5f06ebSVassil Vassilev // was a diagnostic mismatches. This will make the testsuite fail as intended.
14*fd5f06ebSVassil Vassilev // RUN: cat %s | not clang-repl -Xcc -Xclang -Xcc -verify | FileCheck %s
15*fd5f06ebSVassil Vassilev 
16*fd5f06ebSVassil Vassilev BOOM! // expected-error {{intended to fail the -verify test}}
179caee577SJun Zhang extern "C" int printf(const char *, ...);
189caee577SJun Zhang int i = 42;
199caee577SJun Zhang auto r1 = printf("i = %d\n", i);
209caee577SJun Zhang // CHECK: i = 42
219caee577SJun Zhang %quit
22