89 lines
3.6 KiB
Plaintext
89 lines
3.6 KiB
Plaintext
; Check handling of diagnostics for problematic matches (e.g., variable capture
|
|
; overflow) in the case of excluded patterns (e.g., CHECK-NOT).
|
|
;
|
|
; At one time, FileCheck's exit status for the following example was zero even
|
|
; though the excluded pattern does match (it's just capturing that fails).
|
|
; 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.
|
|
;
|
|
; TODO: Capturing from an excluded pattern probably shouldn't be permitted
|
|
; because it seems useless: it's captured only if the pattern matches, but then
|
|
; FileCheck fails. The helpfulness of reporting overflow from that capture is
|
|
; perhaps questionable then, but it doesn't seem harmful either. Anyway, the
|
|
; goal of this test is simply to exercise the error propagation mechanism for a
|
|
; matched excluded pattern. In the future, if we have a more interesting error
|
|
; to exercise in that case, we should instead use it in this test, and then we
|
|
; might want to think more about where that error should be presented in the
|
|
; list of diagnostics.
|
|
|
|
RUN: echo > %t.chk 'CHECK-NOT: [[#122+1]] [[STR:abc]] [[#NUM:]]'
|
|
RUN: echo > %t.in '123 abc 1000000000000000000000000000000000000000000000000000'
|
|
|
|
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: CHECK-NOT: excluded string found in input
|
|
ERR-NEXT:CHECK-NOT: {{.*}}
|
|
ERR-NEXT:{{ *}}^
|
|
ERR-NEXT:<stdin>:1:1: note: found here
|
|
ERR-NEXT:123 abc 10{{0*}}
|
|
ERR-NEXT:^~~~~~~~~{{~*}}
|
|
ERR-NEXT:<stdin>:1:1: note: with "122+1" equal to "123"
|
|
ERR-NEXT:123 abc 10{{0*}}
|
|
ERR-NEXT:^
|
|
ERR-NEXT:<stdin>:1:5: note: captured var "STR"
|
|
ERR-NEXT:123 abc 10{{0*}}
|
|
ERR-NEXT: ^~~
|
|
ERR-NEXT:<stdin>:1:9: error: unable to represent numeric value
|
|
ERR-NEXT:123 abc 10{{0*}}
|
|
ERR-NEXT: ^
|
|
ERR-NOT:{{error|note|remark}}:
|
|
|
|
DUMP:<<<<<<
|
|
DUMP-NEXT: 1: 123 abc 10{{0*}}
|
|
DUMP-NEXT:not:1'0 !~~~~~~~~~{{~*}} error: no match expected
|
|
DUMP-NEXT:not:1'1 with "122+1" equal to "123"
|
|
DUMP-NEXT:not:1'2 !~~ captured var "STR"
|
|
DUMP-NEXT:not:1'3 !~{{~*}} error: unable to represent numeric value
|
|
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
|