summaryrefslogtreecommitdiffstats
path: root/clang/lib/ASTMatchers/Dynamic/VariantValue.cpp
diff options
context:
space:
mode:
authorSamuel Benzaquen <sbenza@google.com>2013-06-20 14:28:32 +0000
committerSamuel Benzaquen <sbenza@google.com>2013-06-20 14:28:32 +0000
commit81ef929b8f0fc5bbbe6d7edbde38670bd26f8a5e (patch)
treecf62c7e9897b154061b7c94e4e65b8c1bd23639c /clang/lib/ASTMatchers/Dynamic/VariantValue.cpp
parentca692609d0547908b95e884b881a6bb2f985126b (diff)
downloadbcm5719-llvm-81ef929b8f0fc5bbbe6d7edbde38670bd26f8a5e.tar.gz
bcm5719-llvm-81ef929b8f0fc5bbbe6d7edbde38670bd26f8a5e.zip
Enhancements for the DynTypedMatcher system.
- Added conversion routines and checks in Matcher<T> that take a DynTypedMatcher. - Added type information on the error messages for the marshallers. - Allows future work on Polymorphic/overloaded matchers. We should be able to disambiguate at runtime and choose the appropriate overload. llvm-svn: 184429
Diffstat (limited to 'clang/lib/ASTMatchers/Dynamic/VariantValue.cpp')
-rw-r--r--clang/lib/ASTMatchers/Dynamic/VariantValue.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/clang/lib/ASTMatchers/Dynamic/VariantValue.cpp b/clang/lib/ASTMatchers/Dynamic/VariantValue.cpp
index 6fcbe7fc495..912858f5485 100644
--- a/clang/lib/ASTMatchers/Dynamic/VariantValue.cpp
+++ b/clang/lib/ASTMatchers/Dynamic/VariantValue.cpp
@@ -14,6 +14,8 @@
#include "clang/ASTMatchers/Dynamic/VariantValue.h"
+#include "clang/Basic/LLVM.h"
+
namespace clang {
namespace ast_matchers {
namespace dynamic {
@@ -123,6 +125,18 @@ void VariantValue::takeMatcher(DynTypedMatcher *NewValue) {
Value.Matcher = NewValue;
}
+std::string VariantValue::getTypeAsString() const {
+ switch (Type) {
+ case VT_String: return "String";
+ case VT_Matcher:
+ return (Twine("Matcher<") + getMatcher().getSupportedKind().asStringRef() +
+ ">").str();
+ case VT_Unsigned: return "Unsigned";
+ case VT_Nothing: return "Nothing";
+ }
+ llvm_unreachable("Invalid Type");
+}
+
} // end namespace dynamic
} // end namespace ast_matchers
} // end namespace clang
OpenPOWER on IntegriCloud