@@ -1185,7 +1185,7 @@ class TemplateTypeParmDecl final : public TypeDecl,
1185
1185
1186
1186
// / The default template argument, if any.
1187
1187
using DefArgStorage =
1188
- DefaultArgStorage<TemplateTypeParmDecl, TypeSourceInfo *>;
1188
+ DefaultArgStorage<TemplateTypeParmDecl, TemplateArgumentLoc *>;
1189
1189
DefArgStorage DefaultArgument;
1190
1190
1191
1191
TemplateTypeParmDecl (DeclContext *DC, SourceLocation KeyLoc,
@@ -1225,13 +1225,9 @@ class TemplateTypeParmDecl final : public TypeDecl,
1225
1225
bool hasDefaultArgument () const { return DefaultArgument.isSet (); }
1226
1226
1227
1227
// / 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;
1235
1231
}
1236
1232
1237
1233
// / Retrieves the location of the default argument declaration.
@@ -1244,9 +1240,8 @@ class TemplateTypeParmDecl final : public TypeDecl,
1244
1240
}
1245
1241
1246
1242
// / 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);
1250
1245
1251
1246
// / Set that this default argument was inherited from another
1252
1247
// / parameter.
0 commit comments