summaryrefslogtreecommitdiffstats
path: root/clang/lib/ASTMatchers/Dynamic/Registry.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/ASTMatchers/Dynamic/Registry.cpp')
-rw-r--r--clang/lib/ASTMatchers/Dynamic/Registry.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/clang/lib/ASTMatchers/Dynamic/Registry.cpp b/clang/lib/ASTMatchers/Dynamic/Registry.cpp
index 34a230b8728..6e543fc8504 100644
--- a/clang/lib/ASTMatchers/Dynamic/Registry.cpp
+++ b/clang/lib/ASTMatchers/Dynamic/Registry.cpp
@@ -148,6 +148,23 @@ DynTypedMatcher *Registry::constructMatcher(StringRef MatcherName,
return it->second->run(NameRange, Args, Error);
}
+// static
+DynTypedMatcher *Registry::constructBoundMatcher(StringRef MatcherName,
+ const SourceRange &NameRange,
+ StringRef BindID,
+ ArrayRef<ParserValue> Args,
+ Diagnostics *Error) {
+ OwningPtr<DynTypedMatcher> Out(
+ constructMatcher(MatcherName, NameRange, Args, Error));
+ if (!Out) return NULL;
+ DynTypedMatcher *Bound = Out->tryBind(BindID);
+ if (!Bound) {
+ Error->pushErrorFrame(NameRange, Error->ET_RegistryNotBindable);
+ return NULL;
+ }
+ return Bound;
+}
+
} // namespace dynamic
} // namespace ast_matchers
} // namespace clang
OpenPOWER on IntegriCloud