[PATCH] D93341: [FileCheck] Do not skip end of line in diagnostics

Thomas Preud'homme via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 3 08:42:21 PST 2021


thopre added inline comments.


================
Comment at: llvm/utils/FileCheck/FileCheck.cpp:666
         if (*InputFilePtr == '\n')
           Newline = true;
         else
----------------
jdenny wrote:
> thopre wrote:
> > jdenny wrote:
> > > There should be a `COS << ' ';` here.
> > I'm not sure this is a good idea because people might wonder why there's a space in the input. Right now the shown input matches the actual input in that regards.
> > 
> > I don't know what to think about the ~ marks though. How do annotations even work for a single CHECK directive that matches several lines (e.g. CHECK: foo{{[\n]}}bar)?
> > I'm not sure this is a good idea because people might wonder why there's a space in the input. Right now the shown input matches the actual input in that regards.
> 
> Good point.  I was trying to ensure that unmatched text highlighting would also apply to newlines, but maybe it's not worth it.
> 
> > I don't know what to think about the ~ marks though. How do annotations even work for a single CHECK directive that matches several lines (e.g. CHECK: foo{{[\n]}}bar)?
> 
> Search ranges and match ranges are the same in that regard:
> 
> ```
> <<<<<<
>          1: FOO 
> check:1     ^~~~
>          2: BAR 
> check:1     ~~~
> >>>>>>
> ```
> 
> I do not think there should be an inconsistency between whether newlines are annotated at the beginning of a range (`^`, `X`, etc.) and whether they're annotated somewhere within a range (`~`), especially at the end of a range.
> 
> For example, where `$[[:space:]]` is a little known way to exclusively match a newline (the `\n` in your patch summary doesn't work for me):
> 
> ```
> $ cat check
> CHECK: {{FOO[[:space:]]*}}
> CHECK: {{$[[:space:]]BAR}}
> 
> $ FileCheck -vv check < input  |& tail -6
> <<<<<<
>          1: FOO
> check:1     ^~~
>          2: BAR
> check:2     X~~ error: no match found
> >>>>>>
> ```
> 
> Why did the second directive skip the newline on line 1?  An extra tilde at the end of line 1 would make it clearer.
Sorry for the late reply. I'm not sure how to read your answer. Do you agree about not putting a space at the end of each input line? I'm not sure what you refer by "unmatched text highlighting".


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D93341/new/

https://reviews.llvm.org/D93341



More information about the llvm-commits mailing list