[PATCH] Change semantics of regex expectations in the diagnostic verifier

Hans Wennborg hans at chromium.org
Wed Dec 11 12:07:10 PST 2013


Hi rsmith, rnk,

Currently, a line like

  // expected-error-re {{foo}}

treats the entirety of foo as a regex. This is inconvenient when matching type names containing regex characters. For example, to match "void *(class test8::A::*)(void)" inside such a regex, one would have to type "void \*\(class test8::A::\*\)\(void\)".

This patch changes the semantics of expected-error-re to only treat the parts of the directive wrapped in double curly braces as regexes. This avoids the escaping problem and leads to nicer patterns for those cases; see e.g. the change to test/Sema/format-strings-scanf.c.

(The balanced search for closing }} of a directive also makes us handle the full directive in test\SemaCXX\constexpr-printing.cpp:41 and :53.)

The motivation for this change is that I plan to touch a bunch of tests that print out function types, and I don't want to have to add tons of escaping to do some regex stuff there.

http://llvm-reviews.chandlerc.com/D2388

Files:
  include/clang/Frontend/VerifyDiagnosticConsumer.h
  lib/Frontend/VerifyDiagnosticConsumer.cpp
  test/Analysis/analyzer-stats.c
  test/CXX/dcl.dcl/dcl.spec/dcl.constexpr/p1.cpp
  test/CXX/drs/dr14xx.cpp
  test/CXX/special/class.copy/implicit-move.cpp
  test/Lexer/hexfloat.cpp
  test/Misc/verify.c
  test/Parser/attributes.mm
  test/Sema/format-strings-scanf.c
  test/Sema/ms-wchar.c
  test/Sema/thread-specifier.c
  test/SemaCXX/addr-of-overloaded-function.cpp
  test/SemaCXX/member-expr.cpp
  test/SemaCXX/nested-name-spec.cpp
  test/SemaCXX/operator-arrow-depth.cpp
  test/SemaCXX/pr13394-crash-on-invalid.cpp
  test/SemaCXX/qualified-id-lookup.cpp
  test/SemaCXX/typo-correction-pt2.cpp
  test/SemaCXX/typo-correction.cpp
  test/SemaTemplate/dependent-names.cpp
  test/SemaTemplate/ms-lookup-template-base-classes.cpp
  test/SemaTemplate/typename-specifier.cpp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D2388.1.patch
Type: text/x-patch
Size: 27710 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20131211/84ff43f4/attachment.bin>


More information about the cfe-commits mailing list