[lit] Add the ability to parse regexes in Lit boolean expressions
authorLouis Dionne <ldionne.2@gmail.com>
Fri, 18 Jun 2021 17:33:14 +0000 (13:33 -0400)
committerLouis Dionne <ldionne.2@gmail.com>
Wed, 30 Jun 2021 14:52:16 +0000 (10:52 -0400)
commitfec521a7b206815ad995f7247e671a8f25d144fc
tree88a693b0d0c05a27fdbc2e823658cc9da30c2384
parent90f244c8432357337a12b2582b20e2aedeb3e742
[lit] Add the ability to parse regexes in Lit boolean expressions

This patch augments Lit with the ability to parse regular expressions
in boolean expressions. This includes REQUIRES:, XFAIL:, UNSUPPORTED:,
and all other special Lit markup that evaluates to a boolean expression.

Regular expressions can be specified by enclosing them in {{...}},
similarly to how FileCheck handles such regular expressions. The regular
expression can either be on its own, or it can be part of an identifier.
For example, a match expression like {{.+}}-apple-darwin{{.+}} would match
the following variables:

     x86_64-apple-darwin20.0
     arm64-apple-darwin20.0
     arm64-apple-darwin22.0
     etc...

In the long term, this could be used to remove the need to handle the
target triple specially when parsing boolean expressions.

Differential Revision: https://reviews.llvm.org/D104572
llvm/docs/TestingGuide.rst
llvm/utils/lit/lit/BooleanExpression.py
llvm/utils/lit/lit/Test.py
llvm/utils/lit/tests/Inputs/show-used-features/mixed.txt
llvm/utils/lit/tests/show-used-features.py