From f46e5f1c9a75fa22d13c50e51c6b2e6158f9e825 Mon Sep 17 00:00:00 2001 From: Samuel Benzaquen Date: Mon, 21 Oct 2013 18:40:51 +0000 Subject: Refactor DynTypedMatcher into a value type class, just like Matcher. Summary: Refactor DynTypedMatcher into a value type class, just like Matcher. This simplifies its usage and removes the virtual hierarchy from Matcher. It also enables planned changes to replace MatcherInteface. Too many instantiaions of this class hierarchy has been causing Registry.cpp.o to bloat in size and number of symbols. Reviewers: klimek CC: cfe-commits, revane Differential Revision: http://llvm-reviews.chandlerc.com/D1661 llvm-svn: 193100 --- clang/lib/ASTMatchers/Dynamic/Parser.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'clang/lib/ASTMatchers/Dynamic/Parser.cpp') diff --git a/clang/lib/ASTMatchers/Dynamic/Parser.cpp b/clang/lib/ASTMatchers/Dynamic/Parser.cpp index 37e6c10478c..df9596e9b93 100644 --- a/clang/lib/ASTMatchers/Dynamic/Parser.cpp +++ b/clang/lib/ASTMatchers/Dynamic/Parser.cpp @@ -390,29 +390,29 @@ bool Parser::parseExpression(StringRef Code, Sema *S, return true; } -DynTypedMatcher *Parser::parseMatcherExpression(StringRef Code, - Diagnostics *Error) { +llvm::Optional +Parser::parseMatcherExpression(StringRef Code, Diagnostics *Error) { RegistrySema S; return parseMatcherExpression(Code, &S, Error); } -DynTypedMatcher *Parser::parseMatcherExpression(StringRef Code, - Parser::Sema *S, - Diagnostics *Error) { +llvm::Optional +Parser::parseMatcherExpression(StringRef Code, Parser::Sema *S, + Diagnostics *Error) { VariantValue Value; if (!parseExpression(Code, S, &Value, Error)) - return NULL; + return llvm::Optional(); if (!Value.isMatcher()) { Error->addError(SourceRange(), Error->ET_ParserNotAMatcher); - return NULL; + return llvm::Optional(); } - const DynTypedMatcher *Result; - if (!Value.getMatcher().getSingleMatcher(Result)) { + llvm::Optional Result = + Value.getMatcher().getSingleMatcher(); + if (!Result.hasValue()) { Error->addError(SourceRange(), Error->ET_ParserOverloadedType) << Value.getTypeAsString(); - return NULL; } - return Result->clone(); + return Result; } } // namespace dynamic -- cgit v1.2.3