A few TemplateArgumentLoc clean-ups.  Try to remember the Expr for a declaration.
Provide an API for getting the SourceRange of a TAL and use it judiciously.



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@85520 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/AST/TemplateBase.cpp b/lib/AST/TemplateBase.cpp
index b136fe0..94e1ca1 100644
--- a/lib/AST/TemplateBase.cpp
+++ b/lib/AST/TemplateBase.cpp
@@ -78,20 +78,20 @@
 // TemplateArgumentLoc Implementation
 //===----------------------------------------------------------------------===//
 
-SourceLocation TemplateArgumentLoc::getLocation() const {
+SourceRange TemplateArgumentLoc::getSourceRange() const {
   switch (Argument.getKind()) {
   case TemplateArgument::Expression:
-    return getSourceExpression()->getExprLoc();
-  case TemplateArgument::Type:
-    return getSourceDeclaratorInfo()->
-      getTypeLoc().getFullSourceRange().getBegin();
+    return getSourceExpression()->getSourceRange();
   case TemplateArgument::Declaration:
+    return getSourceDeclExpression()->getSourceRange();
+  case TemplateArgument::Type:
+    return getSourceDeclaratorInfo()->getTypeLoc().getFullSourceRange();
   case TemplateArgument::Integral:
   case TemplateArgument::Pack:
   case TemplateArgument::Null:
-    return SourceLocation();
+    return SourceRange();
   }
 
   // Silence bonus gcc warning.
-  return SourceLocation();
+  return SourceRange();
 }