X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=blobdiff_plain;f=docs%2FCommandGuide%2FFileCheck.rst;h=03c8829767760120a3cb82430fc1104aa29fb653;hp=a71007b61616d9485f56d39f7606ebef98f99b25;hb=e56023a059e5fafa97f0df32c65cf31cfc33ba17;hpb=f02062f8896cfb6b684320fc8248d0e5c96035b3 diff --git a/docs/CommandGuide/FileCheck.rst b/docs/CommandGuide/FileCheck.rst index a71007b6161..03c88297677 100644 --- a/docs/CommandGuide/FileCheck.rst +++ b/docs/CommandGuide/FileCheck.rst @@ -30,11 +30,13 @@ OPTIONS .. option:: --check-prefix prefix - FileCheck searches the contents of ``match-filename`` for patterns to match. - By default, these patterns are prefixed with "``CHECK:``". If you'd like to - use a different prefix (e.g. because the same input file is checking multiple - different tool or options), the :option:`--check-prefix` argument allows you - to specify a specific prefix to match. + FileCheck searches the contents of ``match-filename`` for patterns to + match. By default, these patterns are prefixed with "``CHECK:``". + If you'd like to use a different prefix (e.g. because the same input + file is checking multiple different tool or options), the + :option:`--check-prefix` argument allows you to specify one or more + prefixes to match. Multiple prefixes are useful for tests which might + change for different run options, but most lines remain the same. .. option:: --input-file filename @@ -47,6 +49,17 @@ OPTIONS The :option:`--strict-whitespace` argument disables this behavior. End-of-line sequences are canonicalized to UNIX-style ``\n`` in all modes. +.. option:: --implicit-check-not check-pattern + + Adds implicit negative checks for the specified patterns between positive + checks. The option allows writing stricter tests without stuffing them with + ``CHECK-NOT``\ s. + + For example, "``--implicit-check-not warning:``" can be useful when testing + diagnostic messages from tools that don't have an option similar to ``clang + -verify``. With this option FileCheck will verify that input does not contain + warnings not covered by any ``CHECK:`` patterns. + .. option:: -version Show the version number of this program. @@ -172,6 +185,31 @@ For example, something like this works as you'd expect: newline between it and the previous directive. A "``CHECK-NEXT:``" cannot be the first directive in a file. +The "CHECK-SAME:" directive +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Sometimes you want to match lines and would like to verify that matches happen +on the same line as the previous match. In this case, you can use "``CHECK:``" +and "``CHECK-SAME:``" directives to specify this. If you specified a custom +check prefix, just use "``-SAME:``". + +"``CHECK-SAME:``" is particularly powerful in conjunction with "``CHECK-NOT:``" +(described below). + +For example, the following works like you'd expect: + +.. code-block:: llvm + + !0 = !DILocation(line: 5, scope: !1, inlinedAt: !2) + + ; CHECK: !DILocation(line: 5, + ; CHECK-NOT: column: + ; CHECK-SAME: scope: ![[SCOPE:[0-9]+]] + +"``CHECK-SAME:``" directives reject the input if there are any newlines between +it and the previous directive. A "``CHECK-SAME:``" cannot be the first +directive in a file. + The "CHECK-NOT:" directive ~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -326,7 +364,7 @@ simply uniquely match a single line in the file being verified. FileCheck Pattern Matching Syntax ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -The "``CHECK:``" and "``CHECK-NOT:``" directives both take a pattern to match. +All FileCheck directives take a pattern to match. For most uses of FileCheck, fixed string matching is perfectly sufficient. For some things, a more flexible form of matching is desired. To support this, FileCheck allows you to specify regular expressions in matching strings,