diff options
Diffstat (limited to 'unittests/ASTMatchers/Dynamic/ParserTest.cpp')
-rw-r--r-- | unittests/ASTMatchers/Dynamic/ParserTest.cpp | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/unittests/ASTMatchers/Dynamic/ParserTest.cpp b/unittests/ASTMatchers/Dynamic/ParserTest.cpp index 0c4c7dfd78023..d670e3129b80e 100644 --- a/unittests/ASTMatchers/Dynamic/ParserTest.cpp +++ b/unittests/ASTMatchers/Dynamic/ParserTest.cpp @@ -186,8 +186,8 @@ using ast_matchers::internal::Matcher; Parser::NamedValueMap getTestNamedValues() { Parser::NamedValueMap Values; Values["nameX"] = llvm::StringRef("x"); - Values["hasParamA"] = - VariantMatcher::SingleMatcher(hasParameter(0, hasName("a"))); + Values["hasParamA"] = VariantMatcher::SingleMatcher( + functionDecl(hasParameter(0, hasName("a")))); return Values; } @@ -236,6 +236,17 @@ TEST(ParserTest, FullParserTest) { Error.toStringFull()); } +TEST(ParserTest, VariadicMatchTest) { + Diagnostics Error; + llvm::Optional<DynTypedMatcher> OM(Parser::parseMatcherExpression( + "stmt(objcMessageExpr(hasAnySelector(\"methodA\", \"methodB:\")))", + &Error)); + EXPECT_EQ("", Error.toStringFull()); + auto M = OM->unconditionalConvertTo<Stmt>(); + EXPECT_TRUE(matchesObjC("@interface I @end " + "void foo(I* i) { [i methodA]; }", M)); +} + std::string ParseWithError(StringRef Code) { Diagnostics Error; VariantValue Value; @@ -329,16 +340,17 @@ TEST(ParserTest, CompletionNamedValues) { EXPECT_LT(0u, Comps.size()); // Can complete names and registry together. - Code = "cxxMethodDecl(hasP"; + Code = "functionDecl(hasP"; Comps = Parser::completeExpression(Code, Code.size(), nullptr, &NamedValues); ASSERT_EQ(3u, Comps.size()); - EXPECT_EQ("aramA", Comps[0].TypedText); - EXPECT_EQ("Matcher<FunctionDecl> hasParamA", Comps[0].MatcherDecl); - EXPECT_EQ("arameter(", Comps[1].TypedText); + EXPECT_EQ("arameter(", Comps[0].TypedText); EXPECT_EQ( "Matcher<FunctionDecl> hasParameter(unsigned, Matcher<ParmVarDecl>)", - Comps[1].MatcherDecl); + Comps[0].MatcherDecl); + + EXPECT_EQ("aramA", Comps[1].TypedText); + EXPECT_EQ("Matcher<Decl> hasParamA", Comps[1].MatcherDecl); EXPECT_EQ("arent(", Comps[2].TypedText); EXPECT_EQ( |