mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 20:23:11 +01:00
2c0468b550
Currently a CHECK-NOT directive succeeds whenever the corresponding match fails. However match can fail due to an error rather than a lack of match, for instance if a variable is undefined. This commit makes match error a failure for CHECK-NOT. Reviewed By: jdenny Differential Revision: https://reviews.llvm.org/D86222
68 lines
2.6 KiB
Plaintext
68 lines
2.6 KiB
Plaintext
; Check handling of match-time diagnostics for invalid patterns (e.g.,
|
|
; substitution overflow) in the case of excluded patterns (e.g., CHECK-NOT).
|
|
;
|
|
; At one time, FileCheck's exit status was zero for this case. Moreover, it
|
|
; printed the error diagnostic only if -vv was specified and input dumps were
|
|
; disabled. Test every combination as the logic is hard to get right.
|
|
|
|
RUN: echo > %t.chk \
|
|
RUN: 'CHECK-NOT: [[#0x8000000000000000+0x8000000000000000]] [[UNDEFVAR]]'
|
|
RUN: echo > %t.in '10000000000000000'
|
|
|
|
ERR-NOT:{{.}}
|
|
ERR-VV:{{.*}}: remark: implicit EOF: expected string found in input
|
|
ERR-VV-NEXT:CHECK-NOT: {{.*}}
|
|
ERR-VV-NEXT:{{ *}}^
|
|
ERR-VV-NEXT:{{.*}}: note: found here
|
|
ERR-VV-EMPTY:
|
|
ERR-VV-NEXT:^
|
|
ERR-NOT:{{.}}
|
|
ERR:{{.*}}: error: unable to substitute variable or numeric expression: overflow error
|
|
ERR-NEXT:CHECK-NOT: {{.*}}
|
|
ERR-NEXT:{{ *}}^
|
|
ERR-NEXT:{{.*}}: error: undefined variable: UNDEFVAR
|
|
ERR-NEXT:{{CHECK-NOT: \[\[#0x8000000000000000\+0x8000000000000000\]\] \[\[UNDEFVAR\]\]}}
|
|
ERR-NEXT:^
|
|
ERR-NOT:{{error|note|remark}}:
|
|
|
|
DUMP:<<<<<<
|
|
DUMP-NEXT: 1: 10000000000000000
|
|
DUMP-NEXT:not:1'0 X~~~~~~~~~~~~~~~~~ error: match failed for invalid pattern
|
|
DUMP-NEXT:not:1'1 unable to substitute variable or numeric expression: overflow error
|
|
DUMP-NEXT:not:1'2 undefined variable: UNDEFVAR
|
|
DUMP-VV-NEXT: 2:
|
|
DUMP-VV-NEXT:eof:1 ^
|
|
DUMP-NEXT:>>>>>>
|
|
|
|
;--------------------------------------------------
|
|
; Check -dump-input=never cases.
|
|
;--------------------------------------------------
|
|
|
|
RUN: %ProtectFileCheckOutput \
|
|
RUN: not FileCheck -dump-input=never %t.chk < %t.in 2>&1 \
|
|
RUN: | FileCheck %s -match-full-lines -check-prefixes=ERR
|
|
|
|
RUN: %ProtectFileCheckOutput \
|
|
RUN: not FileCheck -dump-input=never -v %t.chk < %t.in 2>&1 \
|
|
RUN: | FileCheck %s -match-full-lines -check-prefixes=ERR
|
|
|
|
RUN: %ProtectFileCheckOutput \
|
|
RUN: not FileCheck -dump-input=never -vv %t.chk < %t.in 2>&1 \
|
|
RUN: | FileCheck %s -match-full-lines -check-prefixes=ERR,ERR-VV
|
|
|
|
;--------------------------------------------------
|
|
; Check -dump-input=fail cases.
|
|
;--------------------------------------------------
|
|
|
|
RUN: %ProtectFileCheckOutput \
|
|
RUN: not FileCheck -dump-input=fail %t.chk < %t.in 2>&1 \
|
|
RUN: | FileCheck %s -match-full-lines -check-prefixes=ERR,DUMP
|
|
|
|
RUN: %ProtectFileCheckOutput \
|
|
RUN: not FileCheck -dump-input=fail -v %t.chk < %t.in 2>&1 \
|
|
RUN: | FileCheck %s -match-full-lines -check-prefixes=ERR,DUMP
|
|
|
|
RUN: %ProtectFileCheckOutput \
|
|
RUN: not FileCheck -dump-input=fail -vv %t.chk < %t.in 2>&1 \
|
|
RUN: | FileCheck %s -match-full-lines -check-prefixes=ERR,DUMP,DUMP-VV
|