This patch implements annotations for diagnostics reporting CHECK-NOT
failed matches. These diagnostics are enabled by -vv. As for
diagnostics reporting failed matches for other directives, these
annotations mark the search ranges using `X~~`. The difference here
is that failed matches for CHECK-NOT are successes not errors, so they
are green not red when colors are enabled.
For example:
```
$ FileCheck -dump-input=help
The following description was requested by -dump-input=help to
explain the input annotations printed by -dump-input=always and
-dump-input=fail:
- L: labels line number L of the input file
- T:L labels the only match result for a pattern of type T from line L of
the check file
- T:L'N labels the Nth match result for a pattern of type T from line L of
the check file
- ^~~ marks good match (reported if -v)
- !~~ marks bad match, such as:
- CHECK-NEXT on same line as previous match (error)
- CHECK-NOT found (error)
- CHECK-DAG overlapping match (discarded, reported if -vv)
- X~~ marks search range when no match is found, such as:
- CHECK-NEXT not found (error)
- CHECK-NOT not found (success, reported if -vv)
- CHECK-DAG not found after discarded matches (error)
- ? marks fuzzy match when no match is found
- colors success, error, fuzzy match, discarded match, unmatched input
If you are not seeing color above or in input dumps, try: -color
$ FileCheck -vv -dump-input=always check5 < input5 |& sed -n '/^<<<</,$p'
<<<<<<
1: abcdef
check:1 ^~~
not:2 X~~
2: ghijkl
not:2 ~~~
check:3 ^~~
3: mnopqr
not:4 X~~~~~
4: stuvwx
not:4 ~~~~~~
5:
eof:4 ^
>>>>>>
$ cat check5
CHECK: abc
CHECK-NOT: foobar
CHECK: jkl
CHECK-NOT: foobar
$ cat input5
abcdef
ghijkl
mnopqr
stuvwx
```Details
Diff Detail
Event Timeline
Adjust comment, as suggested by probinson.
Remove MatchTypeCount, which is unused as of this patch.
What do we see if a Counted match doesn't have enough matches? I'm not seeing a test that covers that case.
| llvm/test/FileCheck/dump-input-annotations.txt | ||
|---|---|---|
| 63–64 | To be clear, I originally meant MatchTypeCount to be a count of the MatchType members, so it's not actually related to your question below. In this version of the patch series, that wasn't even it's role anymore. I should have named it something more like MatchTypeUndefined. Sorry about that. Anyway, this final patch removes it.
I'm responding as an inline comment in the test that covers it. (Don't be misled: the error isn't reported twice as CNT-Q and CNT-V are not active at the same time.) Do you feel we need a separate MatchType and a more specific note for this case? | |
| llvm/test/FileCheck/dump-input-annotations.txt | ||
|---|---|---|
| 63–64 | Thanks for pointing it out, and no I think what you have is fine. | |
To be clear, I originally meant MatchTypeCount to be a count of the MatchType members, so it's not actually related to your question below. In this version of the patch series, that wasn't even it's role anymore. I should have named it something more like MatchTypeUndefined. Sorry about that. Anyway, this final patch removes it.
I'm responding as an inline comment in the test that covers it. (Don't be misled: the error isn't reported twice as CNT-Q and CNT-V are not active at the same time.)
Do you feel we need a separate MatchType and a more specific note for this case?