diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2014-10-17 20:56:14 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2014-10-17 20:56:14 +0000 |
commit | bc2e9718032727cc26dd9f589d7548e07d380f9d (patch) | |
tree | 88d5e73f94d799fdeac0fa92a3fda112efb53416 /clang/lib/AST/TemplateBase.cpp | |
parent | fa1d0a7dbf5b11fae1e987bca2e1b227fd185853 (diff) | |
download | bcm5719-llvm-bc2e9718032727cc26dd9f589d7548e07d380f9d.tar.gz bcm5719-llvm-bc2e9718032727cc26dd9f589d7548e07d380f9d.zip |
Fix the rest of PR21289: a pack expansion that we can't expand yet makes a
template specialization type dependent, even if it has no dependent template
arguments. I've filed a corresponding bug against the C++ standard.
llvm-svn: 220088
Diffstat (limited to 'clang/lib/AST/TemplateBase.cpp')
-rw-r--r-- | clang/lib/AST/TemplateBase.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/clang/lib/AST/TemplateBase.cpp b/clang/lib/AST/TemplateBase.cpp index 929fdfc7ceb..f07b18e7c12 100644 --- a/clang/lib/AST/TemplateBase.cpp +++ b/clang/lib/AST/TemplateBase.cpp @@ -90,7 +90,8 @@ bool TemplateArgument::isDependent() const { llvm_unreachable("Should not have a NULL template argument"); case Type: - return getAsType()->isDependentType(); + return getAsType()->isDependentType() || + isa<PackExpansionType>(getAsType()); case Template: return getAsTemplate().isDependent(); @@ -111,7 +112,8 @@ bool TemplateArgument::isDependent() const { return false; case Expression: - return (getAsExpr()->isTypeDependent() || getAsExpr()->isValueDependent()); + return (getAsExpr()->isTypeDependent() || getAsExpr()->isValueDependent() || + isa<PackExpansionExpr>(getAsExpr())); case Pack: for (const auto &P : pack_elements()) |