Revamp our representation of C++ nested-name-specifiers. We now have a
uniqued representation that should both save some memory and make it
far easier to properly build canonical types for types involving
dependent nested-name-specifiers, e.g., "typename T::Nested::type".

This approach will greatly simplify the representation of
CXXScopeSpec. That'll be next.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67799 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/Sema.h b/lib/Sema/Sema.h
index 9d71cf3..8c8cae2 100644
--- a/lib/Sema/Sema.h
+++ b/lib/Sema/Sema.h
@@ -1940,11 +1940,11 @@
                            ClassTemplateSpecializationDecl *ClassTemplateSpec,
                            bool ExplicitInstantiation);
 
-  CXXScopeSpec InstantiateScopeSpecifier(const NestedNameSpecifier *Components,
-                                         unsigned NumComponents,
-                                         SourceRange Range,
-                                         const TemplateArgument *TemplateArgs,
-                                         unsigned NumTemplateArgs);
+  NestedNameSpecifier *
+  InstantiateNestedNameSpecifier(NestedNameSpecifier *NNS,
+                                 SourceRange Range,
+                                 const TemplateArgument *TemplateArgs,
+                                 unsigned NumTemplateArgs);
 
   // Simple function for cloning expressions.
   template<typename T>