]> granicus.if.org Git - clang/commitdiff
Revert change accidentally committed in r160240.
authorRichard Smith <richard-llvm@metafoo.co.uk>
Sun, 15 Jul 2012 23:30:50 +0000 (23:30 +0000)
committerRichard Smith <richard-llvm@metafoo.co.uk>
Sun, 15 Jul 2012 23:30:50 +0000 (23:30 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@160241 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/Type.cpp

index eacf505442cc327b59cf46383013eb2477e0e38c..4fef11f2a8b0c5a3cca36671a3a3ac1807d87a5e 100644 (file)
@@ -1862,7 +1862,8 @@ TemplateSpecializationType(TemplateName T,
          Canon.isNull()? T.isDependent() 
                        : Canon->isInstantiationDependentType(),
          false,
-         T.containsUnexpandedParameterPack()),
+         Canon.isNull()? T.containsUnexpandedParameterPack()
+                       : Canon->containsUnexpandedParameterPack()),
     Template(T), NumArgs(NumArgs), TypeAlias(!AliasedType.isNull()) {
   assert(!T.getAsDependentTemplateName() && 
          "Use DependentTemplateSpecializationType for dependent template-name");
@@ -1887,8 +1888,6 @@ TemplateSpecializationType(TemplateName T,
     // arguments is. Given:
     //   template<typename T> using U = int;
     // U<T> is always non-dependent, irrespective of the type T.
-    // However, U<Ts> contains an unexpanded parameter pack, even though
-    // its expansion (and thus its desugared type) doesn't.
     if (Canon.isNull() && Args[Arg].isDependent())
       setDependent();
     else if (Args[Arg].isInstantiationDependent())
@@ -1897,7 +1896,7 @@ TemplateSpecializationType(TemplateName T,
     if (Args[Arg].getKind() == TemplateArgument::Type &&
         Args[Arg].getAsType()->isVariablyModifiedType())
       setVariablyModified();
-    if (Args[Arg].containsUnexpandedParameterPack())
+    if (Canon.isNull() && Args[Arg].containsUnexpandedParameterPack())
       setContainsUnexpandedParameterPack();
 
     new (&TemplateArgs[Arg]) TemplateArgument(Args[Arg]);