diff options
author | Peter Collingbourne <peter@pcc.me.uk> | 2013-11-23 01:13:16 +0000 |
---|---|---|
committer | Peter Collingbourne <peter@pcc.me.uk> | 2013-11-23 01:13:16 +0000 |
commit | 00cba4f6dda891c5f3e7fd904a6f6d992e9e0702 (patch) | |
tree | b1203080cee2f2ea18d7300ae01907a36e81528b /clang/unittests/ASTMatchers/Dynamic/RegistryTest.cpp | |
parent | 28eace65c09a51e24fb5651ee035e2c6c102da69 (diff) | |
download | bcm5719-llvm-00cba4f6dda891c5f3e7fd904a6f6d992e9e0702.tar.gz bcm5719-llvm-00cba4f6dda891c5f3e7fd904a6f6d992e9e0702.zip |
Split registry matcher resolution into a lookup phase and a construction phase.
The looked-up matchers will be used during code completion.
Differential Revision: http://llvm-reviews.chandlerc.com/D2207
llvm-svn: 195534
Diffstat (limited to 'clang/unittests/ASTMatchers/Dynamic/RegistryTest.cpp')
-rw-r--r-- | clang/unittests/ASTMatchers/Dynamic/RegistryTest.cpp | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/clang/unittests/ASTMatchers/Dynamic/RegistryTest.cpp b/clang/unittests/ASTMatchers/Dynamic/RegistryTest.cpp index 8694c642cd5..5f3079017ab 100644 --- a/clang/unittests/ASTMatchers/Dynamic/RegistryTest.cpp +++ b/clang/unittests/ASTMatchers/Dynamic/RegistryTest.cpp @@ -36,12 +36,24 @@ public: return Out; } + llvm::Optional<MatcherCtor> lookupMatcherCtor(StringRef MatcherName, + Diagnostics *Error = 0) { + Diagnostics DummyError; + if (!Error) Error = &DummyError; + llvm::Optional<MatcherCtor> Ctor = + Registry::lookupMatcherCtor(MatcherName, SourceRange(), Error); + EXPECT_EQ("", DummyError.toStringFull()); + return Ctor; + } + VariantMatcher constructMatcher(StringRef MatcherName, Diagnostics *Error = NULL) { Diagnostics DummyError; if (!Error) Error = &DummyError; - const VariantMatcher Out = - Registry::constructMatcher(MatcherName, SourceRange(), Args(), Error); + llvm::Optional<MatcherCtor> Ctor = lookupMatcherCtor(MatcherName, Error); + VariantMatcher Out; + if (Ctor) + Out = Registry::constructMatcher(*Ctor, SourceRange(), Args(), Error); EXPECT_EQ("", DummyError.toStringFull()); return Out; } @@ -51,8 +63,10 @@ public: Diagnostics *Error = NULL) { Diagnostics DummyError; if (!Error) Error = &DummyError; - const VariantMatcher Out = Registry::constructMatcher( - MatcherName, SourceRange(), Args(Arg1), Error); + llvm::Optional<MatcherCtor> Ctor = lookupMatcherCtor(MatcherName, Error); + VariantMatcher Out; + if (Ctor) + Out = Registry::constructMatcher(*Ctor, SourceRange(), Args(Arg1), Error); EXPECT_EQ("", DummyError.toStringFull()); return Out; } @@ -63,8 +77,11 @@ public: Diagnostics *Error = NULL) { Diagnostics DummyError; if (!Error) Error = &DummyError; - const VariantMatcher Out = Registry::constructMatcher( - MatcherName, SourceRange(), Args(Arg1, Arg2), Error); + llvm::Optional<MatcherCtor> Ctor = lookupMatcherCtor(MatcherName, Error); + VariantMatcher Out; + if (Ctor) + Out = Registry::constructMatcher(*Ctor, SourceRange(), Args(Arg1, Arg2), + Error); EXPECT_EQ("", DummyError.toStringFull()); return Out; } |