@@ -118,7 +118,7 @@ namespace {
118
118
const TemplateParameterList *Params);
119
119
void printTemplateArguments (llvm::ArrayRef<TemplateArgumentLoc> Args,
120
120
const TemplateParameterList *Params);
121
- enum class AttrPosAsWritten { Default = 0 , Left, Right };
121
+ enum class AttrPosAsWritten { Unknown = 0 , Default , Left, Right };
122
122
void
123
123
prettyPrintAttributes (const Decl *D,
124
124
AttrPosAsWritten Pos = AttrPosAsWritten::Default);
@@ -244,7 +244,7 @@ static DeclPrinter::AttrPosAsWritten getPosAsWritten(const Attr *A,
244
244
SourceLocation DLoc = D->getLocation ();
245
245
const ASTContext &C = D->getASTContext ();
246
246
if (ALoc.isInvalid () || DLoc.isInvalid ())
247
- return DeclPrinter::AttrPosAsWritten::Default ;
247
+ return DeclPrinter::AttrPosAsWritten::Unknown ;
248
248
249
249
if (C.getSourceManager ().isBeforeInTranslationUnit (ALoc, DLoc))
250
250
return DeclPrinter::AttrPosAsWritten::Left;
@@ -268,7 +268,9 @@ void DeclPrinter::prettyPrintAttributes(const Decl *D,
268
268
#include " clang/Basic/AttrList.inc"
269
269
break ;
270
270
default :
271
- if (Pos == AttrPosAsWritten::Default || Pos == getPosAsWritten (A, D)) {
271
+ AttrPosAsWritten APos = getPosAsWritten (A, D);
272
+ assert (APos != AttrPosAsWritten::Unknown && " Implicit attribute!" );
273
+ if (Pos == AttrPosAsWritten::Default || Pos == APos) {
272
274
if (Pos != AttrPosAsWritten::Left)
273
275
Out << " " ;
274
276
A->printPretty (Out, Policy);
0 commit comments