diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-12-21 22:10:26 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-12-21 22:10:26 +0000 |
commit | 08f4e8097a27b5bbf7bc866ef38678c6be46060d (patch) | |
tree | 3b031b312875c5717940d97adcd3beb928621697 /clang/lib/AST/TemplateBase.cpp | |
parent | a94e36bbeea731ba06b4a80d86062a79857d59c6 (diff) | |
download | bcm5719-llvm-08f4e8097a27b5bbf7bc866ef38678c6be46060d.tar.gz bcm5719-llvm-08f4e8097a27b5bbf7bc866ef38678c6be46060d.zip |
Add a hack to work around the lack of proper type-source info in a pack expansion TypeLoc
llvm-svn: 122367
Diffstat (limited to 'clang/lib/AST/TemplateBase.cpp')
-rw-r--r-- | clang/lib/AST/TemplateBase.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/clang/lib/AST/TemplateBase.cpp b/clang/lib/AST/TemplateBase.cpp index fd1146c084d..bfc834f0900 100644 --- a/clang/lib/AST/TemplateBase.cpp +++ b/clang/lib/AST/TemplateBase.cpp @@ -295,8 +295,15 @@ TemplateArgumentLoc::getPackExpansionPattern(SourceLocation &Ellipsis, switch (Argument.getKind()) { case TemplateArgument::Type: { + // FIXME: We shouldn't ever have to worry about missing + // type-source info! + TypeSourceInfo *ExpansionTSInfo = getTypeSourceInfo(); + if (!ExpansionTSInfo) + ExpansionTSInfo = Context.getTrivialTypeSourceInfo( + getArgument().getAsType(), + Ellipsis); PackExpansionTypeLoc Expansion - = cast<PackExpansionTypeLoc>(getTypeSourceInfo()->getTypeLoc()); + = cast<PackExpansionTypeLoc>(ExpansionTSInfo->getTypeLoc()); Ellipsis = Expansion.getEllipsisLoc(); TypeLoc Pattern = Expansion.getPatternLoc(); |