; 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::1:1: note: found here ERR-NEXT:123 abc 10{{0*}} ERR-NEXT:^~~~~~~~~{{~*}} ERR-NEXT::1:1: note: with "122+1" equal to "123" ERR-NEXT:123 abc 10{{0*}} ERR-NEXT:^ ERR-NEXT::1:5: note: captured var "STR" ERR-NEXT:123 abc 10{{0*}} ERR-NEXT: ^~~ ERR-NEXT::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