diff options
author | Sam Panzer <espanz@gmail.com> | 2012-08-24 22:04:44 +0000 |
---|---|---|
committer | Sam Panzer <espanz@gmail.com> | 2012-08-24 22:04:44 +0000 |
commit | e16acd3817e501ee2bcf5f631b6911021fa88ba7 (patch) | |
tree | 2a5aaf2ca9434e17173e7949b33473acac1509e1 /unittests/ASTMatchers/ASTMatchersTest.cpp | |
parent | 56d7f2348a182002563700db2158da0c6fc115a5 (diff) |
New matcher for MaterializeTemporaryExpr
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162609 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'unittests/ASTMatchers/ASTMatchersTest.cpp')
-rw-r--r-- | unittests/ASTMatchers/ASTMatchersTest.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/unittests/ASTMatchers/ASTMatchersTest.cpp b/unittests/ASTMatchers/ASTMatchersTest.cpp index 81f6808208..951bca9a30 100644 --- a/unittests/ASTMatchers/ASTMatchersTest.cpp +++ b/unittests/ASTMatchers/ASTMatchersTest.cpp @@ -1296,6 +1296,41 @@ TEST(Matcher, BindTemporaryExpression) { TempExpression)); } +TEST(MaterializeTemporaryExpr, MatchesTemporary) { + std::string ClassString = + "class string { public: string(); int length(); }; "; + + EXPECT_TRUE( + matches(ClassString + + "string GetStringByValue();" + "void FunctionTakesString(string s);" + "void run() { FunctionTakesString(GetStringByValue()); }", + materializeTemporaryExpr())); + + EXPECT_TRUE( + notMatches(ClassString + + "string* GetStringPointer(); " + "void FunctionTakesStringPtr(string* s);" + "void run() {" + " string* s = GetStringPointer();" + " FunctionTakesStringPtr(GetStringPointer());" + " FunctionTakesStringPtr(s);" + "}", + materializeTemporaryExpr())); + + EXPECT_TRUE( + notMatches(ClassString + + "string GetStringByValue();" + "void run() { int k = GetStringByValue().length(); }", + materializeTemporaryExpr())); + + EXPECT_TRUE( + notMatches(ClassString + + "string GetStringByValue();" + "void run() { GetStringByValue(); }", + materializeTemporaryExpr())); +} + TEST(ConstructorDeclaration, SimpleCase) { EXPECT_TRUE(matches("class Foo { Foo(int i); };", constructorDecl(ofClass(hasName("Foo"))))); |