@@ -7624,7 +7624,7 @@ NamedDecl *Sema::ActOnVariableDeclarator(
7624
7624
if (NewVD->getType().hasNonTrivialToPrimitiveDestructCUnion() &&
7625
7625
NewVD->hasLocalStorage())
7626
7626
checkNonTrivialCUnion(NewVD->getType(), NewVD->getLocation(),
7627
- NTCUC_AutoVar , NTCUK_Destruct);
7627
+ NonTrivialCUnionContext::AutoVar , NTCUK_Destruct);
7628
7628
} else {
7629
7629
bool Invalid = false;
7630
7630
// Match up the template parameter lists with the scope specifier, then
@@ -10529,9 +10529,9 @@ Sema::ActOnFunctionDeclarator(Scope *S, Declarator &D, DeclContext *DC,
10529
10529
10530
10530
if (NewFD->getReturnType().hasNonTrivialToPrimitiveDestructCUnion() ||
10531
10531
NewFD->getReturnType().hasNonTrivialToPrimitiveCopyCUnion())
10532
- checkNonTrivialCUnion(NewFD->getReturnType(),
10533
- NewFD->getReturnTypeSourceRange().getBegin(),
10534
- NTCUC_FunctionReturn , NTCUK_Destruct| NTCUK_Copy);
10532
+ checkNonTrivialCUnion(
10533
+ NewFD->getReturnType(), NewFD->getReturnTypeSourceRange().getBegin(),
10534
+ NonTrivialCUnionContext::FunctionReturn , NTCUK_Destruct | NTCUK_Copy);
10535
10535
} else {
10536
10536
// C++11 [replacement.functions]p3:
10537
10537
// The program's definitions shall not be specified as inline.
@@ -13188,15 +13188,17 @@ void Sema::checkNonTrivialCUnionInInitializer(const Expr *Init,
13188
13188
13189
13189
if (isa<ImplicitValueInitExpr>(Init)) {
13190
13190
if (InitType.hasNonTrivialToPrimitiveDefaultInitializeCUnion())
13191
- checkNonTrivialCUnion(InitType, Loc, NTCUC_DefaultInitializedObject,
13191
+ checkNonTrivialCUnion(InitType, Loc,
13192
+ NonTrivialCUnionContext::DefaultInitializedObject,
13192
13193
NTCUK_Init);
13193
13194
} else {
13194
13195
// Assume all other explicit initializers involving copying some existing
13195
13196
// object.
13196
13197
// TODO: ignore any explicit initializers where we can guarantee
13197
13198
// copy-elision.
13198
13199
if (InitType.hasNonTrivialToPrimitiveCopyCUnion())
13199
- checkNonTrivialCUnion(InitType, Loc, NTCUC_CopyInit, NTCUK_Copy);
13200
+ checkNonTrivialCUnion(InitType, Loc, NonTrivialCUnionContext::CopyInit,
13201
+ NTCUK_Copy);
13200
13202
}
13201
13203
}
13202
13204
@@ -13220,7 +13222,7 @@ struct DiagNonTrivalCUnionDefaultInitializeVisitor
13220
13222
13221
13223
DiagNonTrivalCUnionDefaultInitializeVisitor(
13222
13224
QualType OrigTy, SourceLocation OrigLoc,
13223
- Sema:: NonTrivialCUnionContext UseContext, Sema &S)
13225
+ NonTrivialCUnionContext UseContext, Sema &S)
13224
13226
: OrigTy(OrigTy), OrigLoc(OrigLoc), UseContext(UseContext), S(S) {}
13225
13227
13226
13228
void visitWithKind(QualType::PrimitiveDefaultInitializeKind PDIK, QualType QT,
@@ -13274,7 +13276,7 @@ struct DiagNonTrivalCUnionDefaultInitializeVisitor
13274
13276
// non-trivial C union.
13275
13277
QualType OrigTy;
13276
13278
SourceLocation OrigLoc;
13277
- Sema:: NonTrivialCUnionContext UseContext;
13279
+ NonTrivialCUnionContext UseContext;
13278
13280
Sema &S;
13279
13281
};
13280
13282
@@ -13283,9 +13285,10 @@ struct DiagNonTrivalCUnionDestructedTypeVisitor
13283
13285
using Super =
13284
13286
DestructedTypeVisitor<DiagNonTrivalCUnionDestructedTypeVisitor, void>;
13285
13287
13286
- DiagNonTrivalCUnionDestructedTypeVisitor(
13287
- QualType OrigTy, SourceLocation OrigLoc,
13288
- Sema::NonTrivialCUnionContext UseContext, Sema &S)
13288
+ DiagNonTrivalCUnionDestructedTypeVisitor(QualType OrigTy,
13289
+ SourceLocation OrigLoc,
13290
+ NonTrivialCUnionContext UseContext,
13291
+ Sema &S)
13289
13292
: OrigTy(OrigTy), OrigLoc(OrigLoc), UseContext(UseContext), S(S) {}
13290
13293
13291
13294
void visitWithKind(QualType::DestructionKind DK, QualType QT,
@@ -13341,7 +13344,7 @@ struct DiagNonTrivalCUnionDestructedTypeVisitor
13341
13344
// non-trivial C union.
13342
13345
QualType OrigTy;
13343
13346
SourceLocation OrigLoc;
13344
- Sema:: NonTrivialCUnionContext UseContext;
13347
+ NonTrivialCUnionContext UseContext;
13345
13348
Sema &S;
13346
13349
};
13347
13350
@@ -13350,8 +13353,7 @@ struct DiagNonTrivalCUnionCopyVisitor
13350
13353
using Super = CopiedTypeVisitor<DiagNonTrivalCUnionCopyVisitor, false, void>;
13351
13354
13352
13355
DiagNonTrivalCUnionCopyVisitor(QualType OrigTy, SourceLocation OrigLoc,
13353
- Sema::NonTrivialCUnionContext UseContext,
13354
- Sema &S)
13356
+ NonTrivialCUnionContext UseContext, Sema &S)
13355
13357
: OrigTy(OrigTy), OrigLoc(OrigLoc), UseContext(UseContext), S(S) {}
13356
13358
13357
13359
void visitWithKind(QualType::PrimitiveCopyKind PCK, QualType QT,
@@ -13415,7 +13417,7 @@ struct DiagNonTrivalCUnionCopyVisitor
13415
13417
// non-trivial C union.
13416
13418
QualType OrigTy;
13417
13419
SourceLocation OrigLoc;
13418
- Sema:: NonTrivialCUnionContext UseContext;
13420
+ NonTrivialCUnionContext UseContext;
13419
13421
Sema &S;
13420
13422
};
13421
13423
@@ -14214,8 +14216,8 @@ void Sema::ActOnUninitializedDecl(Decl *RealDecl) {
14214
14216
if (!Var->isInvalidDecl() && DefKind != VarDecl::DeclarationOnly &&
14215
14217
Var->getType().hasNonTrivialToPrimitiveDefaultInitializeCUnion())
14216
14218
checkNonTrivialCUnion(Var->getType(), Var->getLocation(),
14217
- NTCUC_DefaultInitializedObject, NTCUK_Init);
14218
-
14219
+ NonTrivialCUnionContext::DefaultInitializedObject,
14220
+ NTCUK_Init);
14219
14221
14220
14222
switch (DefKind) {
14221
14223
case VarDecl::Definition:
@@ -15487,7 +15489,8 @@ ParmVarDecl *Sema::CheckParameter(DeclContext *DC, SourceLocation StartLoc,
15487
15489
if (New->getType().hasNonTrivialToPrimitiveDestructCUnion() ||
15488
15490
New->getType().hasNonTrivialToPrimitiveCopyCUnion())
15489
15491
checkNonTrivialCUnion(New->getType(), New->getLocation(),
15490
- NTCUC_FunctionParam, NTCUK_Destruct|NTCUK_Copy);
15492
+ NonTrivialCUnionContext::FunctionParam,
15493
+ NTCUK_Destruct | NTCUK_Copy);
15491
15494
15492
15495
// Parameter declarators cannot be interface types. All ObjC objects are
15493
15496
// passed by reference.
0 commit comments