summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZhanyong Wan <wan@google.com>2010-09-03 23:50:56 +0000
committerZhanyong Wan <wan@google.com>2010-09-03 23:50:56 +0000
commitf38ef0c63a39306e835a91fd989cf30182a592e2 (patch)
tree80e95d362728ecfb52783fa2be3df1e3d8315663
parente8d7bebc0dd037516dd695ee1ac2eb0923753b46 (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.cpp13
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: