; Check handling of match-time diagnostics for invalid patterns (e.g.,
; substitution overflow) in the case of expected patterns (e.g., CHECK) that
; also have other errors.

RUN: echo > %t.chk \
RUN:      'CHECK: [[#0x0 - 0x1]] [[UNDEFVAR]]'
RUN: echo > %t.in '-1'

  ERR-NOT:{{.}}
      ERR:{{.*}}: error: unable to substitute variable or numeric expression: overflow error
 ERR-NEXT:CHECK: {{.*}}
 ERR-NEXT:{{ *}}^
 ERR-NEXT:{{.*}}: error: undefined variable: UNDEFVAR
 ERR-NEXT:{{CHECK: \[\[#0x0 - 0x1\]\] \[\[UNDEFVAR\]\]}}
 ERR-NEXT:{{ *}}^
  ERR-NOT:{{error|note|remark|<stdin>}}:

     DUMP:<<<<<<
DUMP-NEXT:           1: -1 
DUMP-NEXT:check:1'0    {   } search range (exclusive bounds)
DUMP-NEXT:check:1'1          error: match failed for invalid pattern
DUMP-NEXT:check:1'2          unable to substitute variable or numeric expression: overflow error
DUMP-NEXT:check:1'3          undefined variable: UNDEFVAR
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

;--------------------------------------------------
; 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
