diff options
author | John McCall <rjmccall@apple.com> | 2010-01-13 20:03:27 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2010-01-13 20:03:27 +0000 |
commit | cfb708c354e2f30ccc5cba9d644650f408a1ec3e (patch) | |
tree | 35ed94a6ce17a46eeb0a747887f809c7f780bccb /lib/AST/TypeLoc.cpp | |
parent | b89e8f64e63aa1a76452e505c6432e0de93fa7cb (diff) |
Add type source information for both kinds of typeof types.
Patch by Enea Zaffanella.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93344 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/TypeLoc.cpp')
-rw-r--r-- | lib/AST/TypeLoc.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/AST/TypeLoc.cpp b/lib/AST/TypeLoc.cpp index 3ccb7a9cc6..0840c52b4c 100644 --- a/lib/AST/TypeLoc.cpp +++ b/lib/AST/TypeLoc.cpp @@ -13,6 +13,7 @@ #include "llvm/Support/raw_ostream.h" #include "clang/AST/TypeLocVisitor.h" +#include "clang/AST/Expr.h" using namespace clang; //===----------------------------------------------------------------------===// @@ -123,3 +124,14 @@ bool TypeSpecTypeLoc::classof(const TypeLoc *TL) { if (TL->getType().hasLocalQualifiers()) return false; return TSTChecker().Visit(*TL); } + +// Reimplemented to account for GNU/C++ extension +// typeof unary-expression +// where there are no parentheses. +SourceRange TypeOfExprTypeLoc::getSourceRange() const { + if (getRParenLoc().isValid()) + return SourceRange(getTypeofLoc(), getRParenLoc()); + else + return SourceRange(getTypeofLoc(), + getUnderlyingExpr()->getSourceRange().getEnd()); +} |