diff options
author | Zhanyong Wan <wan@google.com> | 2010-09-03 23:50:56 +0000 |
---|---|---|
committer | Zhanyong Wan <wan@google.com> | 2010-09-03 23:50:56 +0000 |
commit | f38ef0c63a39306e835a91fd989cf30182a592e2 (patch) | |
tree | 80e95d362728ecfb52783fa2be3df1e3d8315663 | |
parent | e8d7bebc0dd037516dd695ee1ac2eb0923753b46 (diff) |
fix a crash in RecursiveASTVisitor's child classes (PR8403); reviewed by chandlerc.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113038 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/AST/TemplateBase.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/lib/AST/TemplateBase.cpp b/lib/AST/TemplateBase.cpp index 351aebe3f8..a3bf1459c2 100644 --- a/lib/AST/TemplateBase.cpp +++ b/lib/AST/TemplateBase.cpp @@ -125,19 +125,22 @@ SourceRange TemplateArgumentLoc::getSourceRange() const { switch (Argument.getKind()) { case TemplateArgument::Expression: return getSourceExpression()->getSourceRange(); - + case TemplateArgument::Declaration: return getSourceDeclExpression()->getSourceRange(); - + case TemplateArgument::Type: - return getTypeSourceInfo()->getTypeLoc().getSourceRange(); - + if (TypeSourceInfo *TSI = getTypeSourceInfo()) + return TSI->getTypeLoc().getSourceRange(); + else + return SourceRange(); + case TemplateArgument::Template: if (getTemplateQualifierRange().isValid()) return SourceRange(getTemplateQualifierRange().getBegin(), getTemplateNameLoc()); return SourceRange(getTemplateNameLoc()); - + case TemplateArgument::Integral: case TemplateArgument::Pack: case TemplateArgument::Null: |