Change semantics of regex expectations in the diagnostic verifier

Previously, 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.)

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

llvm-svn: 197092
diff --git a/clang/test/Parser/attributes.mm b/clang/test/Parser/attributes.mm
index d92e3d3..024606b 100644
--- a/clang/test/Parser/attributes.mm
+++ b/clang/test/Parser/attributes.mm
@@ -14,11 +14,11 @@
 @interface EXP I @end // expected-error {{postfix attributes are not allowed on Objective-C directives, place them in front of '@interface'}}
 EXP @interface I2 @end
 
-@implementation EXP I @end // expected-error-re {{postfix attributes are not allowed on Objective-C directives$}}
+@implementation EXP I @end // expected-error-re {{postfix attributes are not allowed on Objective-C directives{{$}}}}
 // FIXME: Prefix attribute recovery skips until ';'
 EXP @implementation I2 @end; // expected-error {{prefix attribute must be followed by an interface or protocol}}
 
-@class EXP OC; // expected-error-re {{postfix attributes are not allowed on Objective-C directives$}}
+@class EXP OC; // expected-error-re {{postfix attributes are not allowed on Objective-C directives{{$}}}}
 EXP @class OC2; // expected-error {{prefix attribute must be followed by an interface or protocol}}
 
 @protocol EXP P @end // expected-error {{postfix attributes are not allowed on Objective-C directives, place them in front of '@protocol'}}