From 51da1426b5ec43b6ac42777b2f28f89e3d3b3dca Mon Sep 17 00:00:00 2001
From: Enea Zaffanella <zaffanella@cs.unipr.it>
Date: Mon, 8 Jul 2013 14:50:30 +0000
Subject: [PATCH] Fixed testcase failing under MS by adding
 "-fno-delayed-template-parsing", as suggested by Takumi. To this end, added a
 MatchVerifier::match() overload accepting a vector of invocation arguments.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@185827 91177308-0d34-0410-b5e6-96231b3b80d8
---
 unittests/AST/MatchVerifier.h        | 19 +++++++++++++++----
 unittests/AST/SourceLocationTest.cpp |  9 +++------
 2 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/unittests/AST/MatchVerifier.h b/unittests/AST/MatchVerifier.h
index 56dcc68f202..bc8bf9ea347 100644
--- a/unittests/AST/MatchVerifier.h
+++ b/unittests/AST/MatchVerifier.h
@@ -34,12 +34,23 @@ public:
   template <typename MatcherType>
   testing::AssertionResult match(const std::string &Code,
                                  const MatcherType &AMatcher) {
-    return match(Code, AMatcher, Lang_CXX);
+    std::vector<std::string> Args;
+    return match(Code, AMatcher, Args, Lang_CXX);
   }
 
   template <typename MatcherType>
   testing::AssertionResult match(const std::string &Code,
-                                 const MatcherType &AMatcher, Language L);
+                                 const MatcherType &AMatcher,
+                                 Language L) {
+    std::vector<std::string> Args;
+    return match(Code, AMatcher, Args, L);
+  }
+
+  template <typename MatcherType>
+  testing::AssertionResult match(const std::string &Code,
+                                 const MatcherType &AMatcher,
+                                 std::vector<std::string>& Args,
+                                 Language L);
 
 protected:
   virtual void run(const MatchFinder::MatchResult &Result);
@@ -64,13 +75,13 @@ private:
 /// verifier for the matched node.
 template <typename NodeType> template <typename MatcherType>
 testing::AssertionResult MatchVerifier<NodeType>::match(
-    const std::string &Code, const MatcherType &AMatcher, Language L) {
+    const std::string &Code, const MatcherType &AMatcher,
+    std::vector<std::string>& Args, Language L) {
   MatchFinder Finder;
   Finder.addMatcher(AMatcher.bind(""), this);
   OwningPtr<tooling::FrontendActionFactory> Factory(
       tooling::newFrontendActionFactory(&Finder));
 
-  std::vector<std::string> Args;
   StringRef FileName;
   switch (L) {
   case Lang_C:
diff --git a/unittests/AST/SourceLocationTest.cpp b/unittests/AST/SourceLocationTest.cpp
index 4a4250710a9..95ef2c425b5 100644
--- a/unittests/AST/SourceLocationTest.cpp
+++ b/unittests/AST/SourceLocationTest.cpp
@@ -211,21 +211,18 @@ TEST(CXXFunctionalCastExpr, SourceRange) {
       functionalCastExpr(), Lang_CXX11));
 }
 
-#if !defined(_MSC_VER)
-// FIXME: It could pass if MS-compatible mode were disabled.
-// Args.push_back("-fno-delayed-template-parsing");
-
 TEST(CXXUnresolvedConstructExpr, SourceRange) {
   RangeVerifier<CXXUnresolvedConstructExpr> Verifier;
   Verifier.expectRange(3, 10, 3, 12);
+  std::vector<std::string> Args;
+  Args.push_back("-fno-delayed-template-parsing");
   EXPECT_TRUE(Verifier.match(
       "template <typename U>\n"
       "U foo() {\n"
       "  return U{};\n"
       "}",
-      unresolvedConstructExpr(), Lang_CXX11));
+      unresolvedConstructExpr(), Args, Lang_CXX11));
 }
-#endif
 
 } // end namespace ast_matchers
 } // end namespace clang
-- 
GitLab