; Check handling of match-time diagnostics for invalid patterns (e.g.,
; substitution overflow) in the case of excluded patterns (e.g., CHECK-NOT) that
; otherwise have no errors.

RUN: echo > %t.chk 'CHECK-NOT: [[#122+1]] [[STR:abc]] [[#NUM:0x0 - 0x1]]'
RUN: echo > %t.in '123 abc -1'

     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:<stdin>:1:1: note: with "122+1" equal to "123"
    ERR-NEXT:123 abc -1
    ERR-NEXT:^
    ERR-NEXT:<stdin>:1:1: note: pattern attempts to capture variables: "STR", "NUM"
    ERR-NEXT:123 abc -1
    ERR-NEXT:^
     ERR-NOT:{{error|note|remark|<stdin>}}:

        DUMP:<<<<<<
   DUMP-NEXT:         1: 123 abc -1 
   DUMP-NEXT:not:1'0    {           } search range (exclusive bounds)
   DUMP-NEXT:not:1'1                  error: match failed for invalid pattern
   DUMP-NEXT:not:1'2                  unable to substitute variable or numeric expression: overflow error
   DUMP-NEXT:not:1'3                  with "122+1" equal to "123"
   DUMP-NEXT:not:1'4                  pattern attempts to capture variables: "STR", "NUM"
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
