; RUN: FileCheck -input-file %s %s 2>&1 | FileCheck -check-prefix QUIET --allow-empty %s
; RUN: FileCheck -v -input-file %s %s 2>&1 | FileCheck -check-prefix V %s
; RUN: FileCheck -vv -input-file %s %s 2>&1 | FileCheck -check-prefixes V,VV %s

foo
bar
CHECK: foo
CHECK-NOT: raboof
CHECK-NEXT: bar

V:      verbose.txt:[[@LINE-4]]:8: remark: {{C}}HECK: expected string found in input
V-NEXT: {{C}}HECK: foo{{$}}
V-NEXT:  {{^       \^$}}
V-NEXT: verbose.txt:[[@LINE-9]]:1: note: found here
V-NEXT: {{^}}foo{{$}}
V-NEXT: {{^}}^~~{{$}}

V-NEXT: verbose.txt:[[@LINE-9]]:13: remark: {{C}}HECK-NEXT: expected string found in input
V-NEXT: {{C}}HECK-NEXT: bar{{$}}
V-NEXT:  {{^            \^$}}
V-NEXT: verbose.txt:[[@LINE-15]]:1: note: found here
V-NEXT: {{^}}bar{{$}}
V-NEXT: {{^}}^~~{{$}}

VV-NEXT: verbose.txt:[[@LINE-17]]:12: remark: {{C}}HECK-NOT: excluded string not found in input
VV-NEXT: {{C}}HECK-NOT: raboof{{$}}
VV-NEXT:  {{^           \^$}}
VV-NEXT: verbose.txt:[[@LINE-22]]:1: note: scanning from here
VV-NEXT: {{^}}bar{{$}}
VV-NEXT: {{^}}^{{$}}

before empty

after empty
CHECK: before empty
CHECK-EMPTY:
CHECK-NEXT: after empty

V:      verbose.txt:[[@LINE-4]]:8: remark: {{C}}HECK: expected string found in input
V-NEXT: {{C}}HECK: before empty{{$}}
V-NEXT:  {{^       \^$}}
V-NEXT: verbose.txt:[[@LINE-10]]:1: note: found here
V-NEXT: {{^}}before empty{{$}}
V-NEXT: {{^}}^~~~~~~~~~~~{{$}}

V-NEXT:  verbose.txt:[[@LINE-10]]:13: remark: {{C}}HECK-EMPTY: expected string found in input
V-NEXT:  {{C}}HECK-EMPTY:{{$}}
V-NEXT:   {{^            \^$}}
V-NEXT:  verbose.txt:[[@LINE-16]]:1: note: found here
V-EMPTY:
V-NEXT:  {{^}}^{{$}}

V-NEXT: verbose.txt:[[@LINE-16]]:13: remark: {{C}}HECK-NEXT: expected string found in input
V-NEXT: {{C}}HECK-NEXT: after empty{{$}}
V-NEXT:  {{^            \^$}}
V-NEXT: verbose.txt:[[@LINE-22]]:1: note: found here
V-NEXT: {{^}}after empty{{$}}
V-NEXT: {{^}}^~~~~~~~~~~{{$}}

abcdef
abcdef
CHECK-DAG: abcdef
CHECK-DAG: def

V-NEXT: verbose.txt:[[@LINE-3]]:12: remark: {{C}}HECK-DAG: expected string found in input
V-NEXT: {{C}}HECK-DAG: abcdef
V-NEXT:  {{^           \^$}}
V-NEXT: verbose.txt:[[@LINE-8]]:1: note: found here
V-NEXT: {{^}}abcdef{{$}}
V-NEXT: {{^}}^~~~~~{{$}}

VV-NEXT: verbose.txt:[[@LINE-9]]:12: remark: {{C}}HECK-DAG: expected string found in input
VV-NEXT: {{C}}HECK-DAG: def
VV-NEXT:  {{^           \^$}}
VV-NEXT: verbose.txt:[[@LINE-15]]:4: note: found here
VV-NEXT: {{^abcdef$}}
VV-NEXT: {{^   \^~~$}}
VV-NEXT: verbose.txt:[[@LINE-18]]:1: note: match discarded, overlaps earlier DAG match here
VV-NEXT: {{^}}abcdef{{$}}
VV-NEXT: {{^}}^~~~~~{{$}}

V-NEXT: verbose.txt:[[@LINE-19]]:12: remark: {{C}}HECK-DAG: expected string found in input
V-NEXT: {{C}}HECK-DAG: def
V-NEXT:  {{^           \^$}}
V-NEXT: verbose.txt:[[@LINE-24]]:4: note: found here
V-NEXT: {{^abcdef$}}
V-NEXT: {{^   \^~~$}}

xyz
CHECK: xyz
CHECK-NOT: {{z}}yx

V:      verbose.txt:[[@LINE-3]]:8: remark: {{C}}HECK: expected string found in input
V-NEXT: {{C}}HECK: xyz{{$}}
V-NEXT:  {{^       \^$}}
V-NEXT: verbose.txt:[[@LINE-7]]:1: note: found here
V-NEXT: {{^}}xyz{{$}}
V-NEXT: {{^}}^~~{{$}}

VV-NEXT: verbose.txt:[[@LINE-9]]:19: remark: implicit EOF: expected string found in input
VV-NEXT: {{C}}HECK-NOT: {{[{][{]z[}][}]yx$}}
VV-NEXT:   {{^                 \^$}}
VV-NEXT: verbose.txt:[[@LINE+13]]:1: note: found here
VV-NOT:  {{.}}
VV:      {{^\^$}}

VV-NEXT: verbose.txt:[[@LINE-16]]:12: remark: {{C}}HECK-NOT: excluded string not found in input
VV-NEXT: {{C}}HECK-NOT: {{[{][{]z[}][}]yx$}}
VV-NEXT:  {{^           \^$}}
VV-NEXT: verbose.txt:[[@LINE-20]]:1: note: scanning from here
VV-NEXT: {{^C}}HECK: xyz{{$}}
VV-NEXT: {{^\^$}}

QUIET-NOT: {{.}}
V-NOT: {{.}}
