@@ -1185,7 +1185,7 @@ class TemplateTypeParmDecl final : public TypeDecl,
11851185
11861186 // / The default template argument, if any.
11871187 using DefArgStorage =
1188- DefaultArgStorage<TemplateTypeParmDecl, TypeSourceInfo *>;
1188+ DefaultArgStorage<TemplateTypeParmDecl, TemplateArgumentLoc *>;
11891189 DefArgStorage DefaultArgument;
11901190
11911191 TemplateTypeParmDecl (DeclContext *DC, SourceLocation KeyLoc,
@@ -1225,13 +1225,9 @@ class TemplateTypeParmDecl final : public TypeDecl,
12251225 bool hasDefaultArgument () const { return DefaultArgument.isSet (); }
12261226
12271227 // / Retrieve the default argument, if any.
1228- QualType getDefaultArgument () const {
1229- return DefaultArgument.get ()->getType ();
1230- }
1231-
1232- // / Retrieves the default argument's source information, if any.
1233- TypeSourceInfo *getDefaultArgumentInfo () const {
1234- return DefaultArgument.get ();
1228+ const TemplateArgumentLoc &getDefaultArgument () const {
1229+ static const TemplateArgumentLoc NoneLoc;
1230+ return DefaultArgument.isSet () ? *DefaultArgument.get () : NoneLoc;
12351231 }
12361232
12371233 // / Retrieves the location of the default argument declaration.
@@ -1244,9 +1240,8 @@ class TemplateTypeParmDecl final : public TypeDecl,
12441240 }
12451241
12461242 // / Set the default argument for this template parameter.
1247- void setDefaultArgument (TypeSourceInfo *DefArg) {
1248- DefaultArgument.set (DefArg);
1249- }
1243+ void setDefaultArgument (const ASTContext &C,
1244+ const TemplateArgumentLoc &DefArg);
12501245
12511246 // / Set that this default argument was inherited from another
12521247 // / parameter.
0 commit comments