From: Hans-Peter Nilsson Date: Fri, 24 Feb 2023 19:07:23 +0000 (+0100) Subject: testsuite: Provide means to regexp in multiline patterns X-Git-Tag: basepoints/gcc-14~698 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=82318c57607ca983742630c9884e5d30920a3ce1;p=thirdparty%2Fgcc.git testsuite: Provide means to regexp in multiline patterns Those multi-line-patterns are literal. Sometimes a regexp needs to be matched. This is a start: just three elements are supported: "(" ")" and the compound ")?" (and on second thought, it can be argued that "(...)" alone is not useful). Note that Tcl "string map" is documented to have the desired effect: a once-over but no re-recognitions of previously replaced mapped elements. Also, drop a doubled "containing". testsuite: * lib/multiline.exp (_build_multiline_regex): Map "{re:" to "(", similarly ")?" from ":re?}" and the same without question mark. --- diff --git a/gcc/testsuite/lib/multiline.exp b/gcc/testsuite/lib/multiline.exp index cfd928f6e28a..73621a0bdbdc 100644 --- a/gcc/testsuite/lib/multiline.exp +++ b/gcc/testsuite/lib/multiline.exp @@ -297,7 +297,7 @@ proc _get_lines { filename first_line last_line } { # Convert $multiline from a list of strings to a multiline regex # We need to support matching arbitrary followup text on each line, -# to deal with comments containing containing DejaGnu directives. +# to deal with comments containing DejaGnu directives. proc _build_multiline_regex { multiline index } { verbose "_build_multiline_regex: $multiline $index" 4 @@ -307,7 +307,10 @@ proc _build_multiline_regex { multiline index } { verbose " line: $line" 4 # We need to escape "^" and other regexp metacharacters. - set line [string map {"^" "\\^" + set line [string map {"\{re:" "(" + ":re?\}" ")?" + ":re\}" ")" + "^" "\\^" "(" "\\(" ")" "\\)" "[" "\\["