mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 20:23:11 +01:00
ec018a8846
For example, given `-dump-input-context=3 -vv`, the following now shows more leading context for the error than requested because a leading ellipsis would occupy the same number of lines as it would elide: ``` <<<<<< 1: foo6 2: foo5 3: foo4 4: foo3 5: foo2 6: foo1 7: hello world check:1 ^~~~~ check:2 X~~~~ error: no match found 8: foo1 check:2 ~~~~ 9: foo2 check:2 ~~~~ 10: foo3 check:2 ~~~~ . . . >>>>>> ``` Reviewed By: mehdi_amini Differential Revision: https://reviews.llvm.org/D83526
294 lines
11 KiB
Plaintext
294 lines
11 KiB
Plaintext
;--------------------------------------------------
|
|
; Input file, check file, and directives for checking the size of the context.
|
|
;
|
|
; These are designed to be used with -dump-input=fail -vv.
|
|
;
|
|
; In the resulting input dump, there are three potential ellipses:
|
|
;
|
|
; - S: At the start of the input.
|
|
; - M: Between two input lines included by the filter.
|
|
; - E: At the end of the input.
|
|
;
|
|
; They are all present at -dump-input-context=4. One becomes useless each time
|
|
; -dump-input-context is incremented beyond that because then that ellipsis
|
|
; becomes equal to or larger than the input lines it elides.
|
|
;--------------------------------------------------
|
|
|
|
; RUN: echo foo8 > %t.in
|
|
; RUN: echo foo7 >> %t.in
|
|
; RUN: echo foo6 >> %t.in
|
|
; RUN: echo foo5 >> %t.in
|
|
; RUN: echo foo4 >> %t.in
|
|
; RUN: echo foo3 >> %t.in
|
|
; RUN: echo foo2 >> %t.in
|
|
; RUN: echo foo1 >> %t.in
|
|
; RUN: echo lab1 hello >> %t.in
|
|
; RUN: echo foo1 >> %t.in
|
|
; RUN: echo foo2 >> %t.in
|
|
; RUN: echo foo3 >> %t.in
|
|
; RUN: echo foo4 >> %t.in
|
|
; RUN: echo foo5 >> %t.in
|
|
; RUN: echo foo6 >> %t.in
|
|
; RUN: echo foo7 >> %t.in
|
|
; RUN: echo foo7 >> %t.in
|
|
; RUN: echo foo6 >> %t.in
|
|
; RUN: echo foo5 >> %t.in
|
|
; RUN: echo foo4 >> %t.in
|
|
; RUN: echo foo3 >> %t.in
|
|
; RUN: echo foo2 >> %t.in
|
|
; RUN: echo foo1 >> %t.in
|
|
; RUN: echo lab2 world >> %t.in
|
|
; RUN: echo foo1 >> %t.in
|
|
; RUN: echo foo2 >> %t.in
|
|
; RUN: echo foo3 >> %t.in
|
|
; RUN: echo foo4 >> %t.in
|
|
; RUN: echo foo5 >> %t.in
|
|
; RUN: echo foo6 >> %t.in
|
|
; RUN: echo foo7 >> %t.in
|
|
; RUN: echo foo8 >> %t.in
|
|
; RUN: echo foo9 >> %t.in
|
|
; RUN: echo foo0 >> %t.in
|
|
|
|
; RUN: echo 'CHECK-LABEL: lab1' > %t.chk
|
|
; RUN: echo ' CHECK-NEXT: hello' >> %t.chk
|
|
; RUN: echo 'CHECK-LABEL: lab2' >> %t.chk
|
|
; RUN: echo ' CHECK-NEXT: world' >> %t.chk
|
|
|
|
; C0: <<<<<<
|
|
; CS-NEXT: .
|
|
; CS-NEXT: .
|
|
; CS-NEXT: .
|
|
; C5-NEXT: 1: foo8
|
|
; C5-NEXT: 2: foo7
|
|
; C5-NEXT: 3: foo6
|
|
; C5-NEXT: 4: foo5
|
|
; C4-NEXT: 5: foo4
|
|
; C3-NEXT: 6: foo3
|
|
; C2-NEXT: 7: foo2
|
|
; C1-NEXT: 8: foo1
|
|
; C0-NEXT: 9: lab1 hello
|
|
; C0-NEXT: label:1'0 ^~~~
|
|
; C0-NEXT: label:1'1 ^~~~
|
|
; C0-NEXT: next:2 !~~~~ error: match on wrong line
|
|
; C1-NEXT: 10: foo1
|
|
; C2-NEXT: 11: foo2
|
|
; C3-NEXT: 12: foo3
|
|
; C4-NEXT: 13: foo4
|
|
; C5-NEXT: 14: foo5
|
|
; C6-NEXT: 15: foo6
|
|
; C6-NEXT: 16: foo7
|
|
; CM-NEXT: .
|
|
; CM-NEXT: .
|
|
; CM-NEXT: .
|
|
; C6-NEXT: 17: foo7
|
|
; C6-NEXT: 18: foo6
|
|
; C5-NEXT: 19: foo5
|
|
; C4-NEXT: 20: foo4
|
|
; C3-NEXT: 21: foo3
|
|
; C2-NEXT: 22: foo2
|
|
; C1-NEXT: 23: foo1
|
|
; C0-NEXT: 24: lab2 world
|
|
; C0-NEXT: label:3 ^~~~
|
|
; C0-NEXT: next:4 !~~~~ error: match on wrong line
|
|
; C1-NEXT: 25: foo1
|
|
; C2-NEXT: 26: foo2
|
|
; C3-NEXT: 27: foo3
|
|
; C4-NEXT: 28: foo4
|
|
; C5-NEXT: 29: foo5
|
|
; C6-NEXT: 30: foo6
|
|
; C7-NEXT: 31: foo7
|
|
; C7-NEXT: 32: foo8
|
|
; C7-NEXT: 33: foo9
|
|
; C7-NEXT: 34: foo0
|
|
; CE-NEXT: .
|
|
; CE-NEXT: .
|
|
; CE-NEXT: .
|
|
; C0-NEXT: >>>>>>
|
|
|
|
; Now build an alternate set of checks where input lines that might be elided by
|
|
; ellipses have annotations.
|
|
|
|
; RUN: cp %t.in %t.wide.in
|
|
; RUN: echo 'CHECK-LABEL: lab1' > %t.wide.chk
|
|
; RUN: echo ' CHECK: hello' >> %t.wide.chk
|
|
; RUN: echo ' CHECK: goodbye' >> %t.wide.chk
|
|
; RUN: echo 'CHECK-LABEL: lab2' >> %t.wide.chk
|
|
; RUN: echo ' CHECK-NEXT: world' >> %t.wide.chk
|
|
|
|
; W5: <<<<<<
|
|
; W5: 9: lab1 hello
|
|
; W5-NEXT: label:1'0 ^~~~
|
|
; W5-NEXT: label:1'1 ^~~~
|
|
; W5-NEXT: check:2 ^~~~~
|
|
; W5-NEXT: 10: foo1
|
|
; W5-NEXT: check:3 X~~~ error: no match found
|
|
; W5-NEXT: 11: foo2
|
|
; W5-NEXT: check:3 ~~~~
|
|
; W5-NEXT: 12: foo3
|
|
; W5-NEXT: check:3 ~~~~
|
|
; W5-NEXT: 13: foo4
|
|
; W5-NEXT: check:3 ~~~~
|
|
; W5-NEXT: 14: foo5
|
|
; W5-NEXT: check:3 ~~~~
|
|
; W5-NEXT: 15: foo6
|
|
; W5-NEXT: check:3 ~~~~
|
|
; W6-NEXT: 16: foo7
|
|
; W6-NEXT: check:3 ~~~~
|
|
; WM-NEXT: .
|
|
; WM-NEXT: .
|
|
; WM-NEXT: .
|
|
; W6-NEXT: 17: foo7
|
|
; W6-NEXT: check:3 ~~~~
|
|
; W6-NEXT: 18: foo6
|
|
; W6-NEXT: check:3 ~~~~
|
|
; W5-NEXT: 19: foo5
|
|
; W5-NEXT: check:3 ~~~~
|
|
; W5-NEXT: 20: foo4
|
|
; W5-NEXT: check:3 ~~~~
|
|
; W5-NEXT: 21: foo3
|
|
; W5-NEXT: check:3 ~~~~
|
|
; W5-NEXT: 22: foo2
|
|
; W5-NEXT: check:3 ~~~~
|
|
; W5-NEXT: 23: foo1
|
|
; W5-NEXT: check:3 ~~~~
|
|
; W5-NEXT: 24: lab2 world
|
|
; W5-NEXT: label:4 ^~~~
|
|
; W5-NEXT: check:3 ~~~~
|
|
; W5-NEXT: next:5 !~~~~ error: match on wrong line
|
|
|
|
;--------------------------------------------------
|
|
; Check -dump-input-context=<bad value>.
|
|
;--------------------------------------------------
|
|
|
|
; RUN: %ProtectFileCheckOutput \
|
|
; RUN: not FileCheck -dump-input=fail -vv %t.chk < %t.in 2>&1 \
|
|
; RUN: -dump-input-context=-1 \
|
|
; RUN: | FileCheck %s -match-full-lines -check-prefix=BADVAL -DVAL=-1
|
|
|
|
; RUN: %ProtectFileCheckOutput \
|
|
; RUN: not FileCheck -dump-input=fail -vv %t.chk < %t.in 2>&1 \
|
|
; RUN: -dump-input-context=foobar \
|
|
; RUN: | FileCheck %s -match-full-lines -check-prefix=BADVAL -DVAL=foobar
|
|
|
|
BADVAL: {{F|f}}ile{{C|c}}heck{{.*}}: for the --dump-input-context option: '[[VAL]]' value invalid for uint argument!
|
|
|
|
;--------------------------------------------------
|
|
; Check -dump-input-context explicit values.
|
|
;--------------------------------------------------
|
|
|
|
; 0 is an important boundary case.
|
|
; RUN: %ProtectFileCheckOutput \
|
|
; RUN: not FileCheck -dump-input=fail -vv %t.chk < %t.in 2>&1 \
|
|
; RUN: -dump-input-context=0 \
|
|
; RUN: | FileCheck %s -match-full-lines -check-prefixes=C0,CS,CM,CE
|
|
|
|
; 1 is an important boundary case.
|
|
; RUN: %ProtectFileCheckOutput \
|
|
; RUN: not FileCheck -dump-input=fail -vv %t.chk < %t.in 2>&1 \
|
|
; RUN: -dump-input-context=1 \
|
|
; RUN: | FileCheck %s -match-full-lines -check-prefixes=C0,C1,CS,CM,CE
|
|
|
|
; 4 is the boundary case at which all ellipses are present in our test.
|
|
; RUN: %ProtectFileCheckOutput \
|
|
; RUN: not FileCheck -dump-input=fail -vv %t.chk < %t.in 2>&1 \
|
|
; RUN: -dump-input-context=4 \
|
|
; RUN: | FileCheck %s -match-full-lines -check-prefixes=C0,C1,C2,C3,C4,CS,CM,CE
|
|
|
|
; 5 is the boundary case at which the start ellipsis is useless.
|
|
; RUN: %ProtectFileCheckOutput \
|
|
; RUN: not FileCheck -dump-input=fail -vv %t.chk < %t.in 2>&1 \
|
|
; RUN: -dump-input-context=5 \
|
|
; RUN: | FileCheck %s -match-full-lines -check-prefixes=C0,C1,C2,C3,C4,C5,CM,CE
|
|
|
|
; 6 is the boundary case at which the middle ellipsis is useless.
|
|
; RUN: %ProtectFileCheckOutput \
|
|
; RUN: not FileCheck -dump-input=fail -vv %t.chk < %t.in 2>&1 \
|
|
; RUN: -dump-input-context=6 \
|
|
; RUN: | FileCheck %s -match-full-lines -check-prefixes=C0,C1,C2,C3,C4,C5,C6,CE
|
|
|
|
; 7 is the boundary case at which the end ellipsis is useless.
|
|
; RUN: %ProtectFileCheckOutput \
|
|
; RUN: not FileCheck -dump-input=fail -vv %t.chk < %t.in 2>&1 \
|
|
; RUN: -dump-input-context=7 \
|
|
; RUN: | FileCheck %s -match-full-lines -check-prefixes=C0,C1,C2,C3,C4,C5,C6,C7
|
|
|
|
; Make sure all is fine when -dump-input-context is far larger than the input.
|
|
; RUN: %ProtectFileCheckOutput \
|
|
; RUN: not FileCheck -dump-input=fail -vv %t.chk < %t.in 2>&1 \
|
|
; RUN: -dump-input-context=200 \
|
|
; RUN: | FileCheck %s -match-full-lines -check-prefixes=C0,C1,C2,C3,C4,C5,C6,C7
|
|
|
|
;--------------------------------------------------
|
|
; Check that -dump-input-context default is 5.
|
|
;--------------------------------------------------
|
|
|
|
; RUN: %ProtectFileCheckOutput \
|
|
; RUN: not FileCheck -dump-input=fail -vv %t.chk < %t.in 2>&1 \
|
|
; RUN: | FileCheck %s -match-full-lines -check-prefixes=C0,C1,C2,C3,C4,C5,CM,CE
|
|
|
|
;--------------------------------------------------
|
|
; Check multiple -dump-input-context options.
|
|
;
|
|
; This might occur when a test author specifies -dump-input-context on a
|
|
; specific FileCheck call while a test runner specifies -dump-input-context in
|
|
; FILECHECK_OPTS, but check the behavior generally.
|
|
;
|
|
; The largest value wins because it provides the most information.
|
|
;--------------------------------------------------
|
|
|
|
;- - - - - - - - - - - - - - - - - - - - - - - - -
|
|
; Check duplicate.
|
|
;- - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
; RUN: %ProtectFileCheckOutput \
|
|
; RUN: not FileCheck -dump-input=fail -vv %t.chk < %t.in 2>&1 \
|
|
; RUN: -dump-input-context=1 -dump-input-context=1 \
|
|
; RUN: | FileCheck %s -match-full-lines -check-prefixes=C0,C1,CS,CM,CE
|
|
|
|
;- - - - - - - - - - - - - - - - - - - - - - - - -
|
|
; Check precedence.
|
|
;- - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
; RUN: %ProtectFileCheckOutput \
|
|
; RUN: not FileCheck -dump-input=fail -vv %t.chk < %t.in 2>&1 \
|
|
; RUN: -dump-input-context=0 -dump-input-context=1 \
|
|
; RUN: | FileCheck %s -match-full-lines -check-prefixes=C0,C1,CS,CM,CE
|
|
|
|
; RUN: %ProtectFileCheckOutput \
|
|
; RUN: not FileCheck -dump-input=fail -vv %t.chk < %t.in 2>&1 \
|
|
; RUN: -dump-input-context=1 -dump-input-context=0 \
|
|
; RUN: | FileCheck %s -match-full-lines -check-prefixes=C0,C1,CS,CM,CE
|
|
|
|
;- - - - - - - - - - - - - - - - - - - - - - - - -
|
|
; Check that FILECHECK_OPTS isn't handled differently.
|
|
;- - - - - - - - - - - - - - - - - - - - - - - - -
|
|
|
|
; RUN: %ProtectFileCheckOutput FILECHECK_OPTS=-dump-input-context=0 \
|
|
; RUN: not FileCheck -dump-input=fail -vv %t.chk < %t.in 2>&1 \
|
|
; RUN: -dump-input-context=1 \
|
|
; RUN: | FileCheck %s -match-full-lines -check-prefixes=C0,C1,CS,CM,CE
|
|
|
|
; RUN: %ProtectFileCheckOutput FILECHECK_OPTS=-dump-input-context=1 \
|
|
; RUN: not FileCheck -dump-input=fail -vv %t.chk < %t.in 2>&1 \
|
|
; RUN: -dump-input-context=0 \
|
|
; RUN: | FileCheck %s -match-full-lines -check-prefixes=C0,C1,CS,CM,CE
|
|
|
|
;--------------------------------------------------
|
|
; Check how annotations on input lines that might be elided by ellipses affect
|
|
; whether they are actually elided.
|
|
;--------------------------------------------------
|
|
|
|
; At -dump-input-context=5, the ellipsis is useful but only when annotations on
|
|
; elided input lines are considered.
|
|
; RUN: %ProtectFileCheckOutput \
|
|
; RUN: not FileCheck -dump-input=fail -vv %t.wide.chk < %t.wide.in 2>&1 \
|
|
; RUN: -dump-input-context=5 \
|
|
; RUN: | FileCheck %s -match-full-lines -check-prefixes=W5,WM
|
|
|
|
; At -dump-input-context=6, the ellipsis is not useful even when annotations on
|
|
; elided input lines are considered.
|
|
; RUN: %ProtectFileCheckOutput \
|
|
; RUN: not FileCheck -dump-input=fail -vv %t.wide.chk < %t.wide.in 2>&1 \
|
|
; RUN: -dump-input-context=6 \
|
|
; RUN: | FileCheck %s -match-full-lines -check-prefixes=W5,W6
|