@@ -113,6 +113,17 @@ namespace {
113
113
}
114
114
};
115
115
116
+ class PrettySupplementalDeclNameTrace : public llvm ::PrettyStackTraceEntry {
117
+ DeclName name;
118
+ public:
119
+ PrettySupplementalDeclNameTrace (DeclName name)
120
+ : name(name) { }
121
+
122
+ void print (raw_ostream &os) const override {
123
+ os << " ...decl is named '" << name << " '\n " ;
124
+ }
125
+ };
126
+
116
127
class PrettyXRefTrace :
117
128
public llvm::PrettyStackTraceEntry,
118
129
public XRefTracePath {
@@ -2419,6 +2430,7 @@ class DeclDeserializer {
2419
2430
rawAccessLevel, dependencyIDs);
2420
2431
2421
2432
Identifier name = MF.getIdentifier (nameID);
2433
+ PrettySupplementalDeclNameTrace trace (name);
2422
2434
2423
2435
for (TypeID dependencyID : dependencyIDs) {
2424
2436
auto dependency = MF.getTypeChecked (dependencyID);
@@ -2549,6 +2561,7 @@ class DeclDeserializer {
2549
2561
rawInheritedAndDependencyIDs);
2550
2562
2551
2563
Identifier name = MF.getIdentifier (nameID);
2564
+ PrettySupplementalDeclNameTrace trace (name);
2552
2565
2553
2566
for (TypeID dependencyID :
2554
2567
rawInheritedAndDependencyIDs.slice (numInheritedTypes)) {
@@ -2626,6 +2639,7 @@ class DeclDeserializer {
2626
2639
for (auto argNameID : argNameAndDependencyIDs.slice (0 , numArgNames))
2627
2640
argNames.push_back (MF.getIdentifier (argNameID));
2628
2641
DeclName name (ctx, DeclBaseName::createConstructor (), argNames);
2642
+ PrettySupplementalDeclNameTrace trace (name);
2629
2643
2630
2644
Optional<swift::CtorInitializerKind> initKind =
2631
2645
getActualCtorInitializerKind (storedInitKind);
@@ -2756,6 +2770,7 @@ class DeclDeserializer {
2756
2770
arrayFieldIDs);
2757
2771
2758
2772
Identifier name = MF.getIdentifier (nameID);
2773
+ PrettySupplementalDeclNameTrace trace (name);
2759
2774
2760
2775
auto getErrorFlags = [&]() {
2761
2776
// Stored properties in classes still impact class object layout because
@@ -2926,6 +2941,10 @@ class DeclDeserializer {
2926
2941
interfaceTypeID, isIUO, isVariadic,
2927
2942
isAutoClosure, rawDefaultArg);
2928
2943
2944
+ auto argName = MF.getIdentifier (argNameID);
2945
+ auto paramName = MF.getIdentifier (paramNameID);
2946
+ PrettySupplementalDeclNameTrace trace (paramName);
2947
+
2929
2948
auto DC = MF.getDeclContext (contextID);
2930
2949
if (declOrOffset.isComplete ())
2931
2950
return declOrOffset;
@@ -2935,10 +2954,8 @@ class DeclDeserializer {
2935
2954
if (!specifier)
2936
2955
MF.fatal ();
2937
2956
2938
- auto param = MF.createDecl <ParamDecl>(SourceLoc (), SourceLoc (),
2939
- MF.getIdentifier (argNameID),
2940
- SourceLoc (),
2941
- MF.getIdentifier (paramNameID), DC);
2957
+ auto param = MF.createDecl <ParamDecl>(SourceLoc (), SourceLoc (), argName,
2958
+ SourceLoc (), paramName, DC);
2942
2959
param->setSpecifier (*specifier);
2943
2960
2944
2961
declOrOffset = param;
@@ -3070,6 +3087,7 @@ class DeclDeserializer {
3070
3087
dependencyIDs = nameAndDependencyIDs.drop_front ();
3071
3088
}
3072
3089
}
3090
+ PrettySupplementalDeclNameTrace trace (name);
3073
3091
3074
3092
Expected<Decl *> overriddenOrError = MF.getDeclChecked (overriddenID);
3075
3093
Decl *overridden;
@@ -3331,6 +3349,7 @@ class DeclDeserializer {
3331
3349
rawInheritedAndDependencyIDs);
3332
3350
3333
3351
Identifier name = MF.getIdentifier (nameID);
3352
+ PrettySupplementalDeclNameTrace trace (name);
3334
3353
3335
3354
for (TypeID dependencyID :
3336
3355
rawInheritedAndDependencyIDs.slice (numInheritedTypes)) {
@@ -3390,6 +3409,10 @@ class DeclDeserializer {
3390
3409
3391
3410
OperatorLayout::readRecord (scratch, nameID, contextID,
3392
3411
designatedNominalTypeDeclIDs);
3412
+
3413
+ Identifier name = MF.getIdentifier (nameID);
3414
+ PrettySupplementalDeclNameTrace trace (name);
3415
+
3393
3416
auto DC = MF.getDeclContext (contextID);
3394
3417
3395
3418
SmallVector<NominalTypeDecl *, 1 > designatedNominalTypes;
@@ -3401,7 +3424,7 @@ class DeclDeserializer {
3401
3424
}
3402
3425
3403
3426
auto result = MF.createDecl <OperatorDecl>(
3404
- DC, SourceLoc (), MF. getIdentifier (nameID) , SourceLoc (),
3427
+ DC, SourceLoc (), name , SourceLoc (),
3405
3428
ctx.AllocateCopy (designatedNominalTypes));
3406
3429
3407
3430
declOrOffset = result;
@@ -3430,6 +3453,8 @@ class DeclDeserializer {
3430
3453
decls_block::InfixOperatorLayout::readRecord (scratch, nameID, contextID,
3431
3454
precedenceGroupID,
3432
3455
designatedNominalTypeDeclIDs);
3456
+ Identifier name = MF.getIdentifier (nameID);
3457
+ PrettySupplementalDeclNameTrace trace (name);
3433
3458
3434
3459
Expected<Decl *> precedenceGroup = MF.getDeclChecked (precedenceGroupID);
3435
3460
if (!precedenceGroup)
@@ -3446,7 +3471,7 @@ class DeclDeserializer {
3446
3471
}
3447
3472
3448
3473
auto result = MF.createDecl <InfixOperatorDecl>(
3449
- DC, SourceLoc (), MF. getIdentifier (nameID) , SourceLoc (), SourceLoc (),
3474
+ DC, SourceLoc (), name , SourceLoc (), SourceLoc (),
3450
3475
ArrayRef<Identifier>{}, ArrayRef<SourceLoc>{});
3451
3476
result->setDesignatedNominalTypes (ctx.AllocateCopy (designatedNominalTypes));
3452
3477
ctx.evaluator .cacheOutput (
@@ -3537,6 +3562,7 @@ class DeclDeserializer {
3537
3562
rawInheritedAndDependencyIDs);
3538
3563
3539
3564
Identifier name = MF.getIdentifier (nameID);
3565
+ PrettySupplementalDeclNameTrace trace (name);
3540
3566
3541
3567
for (TypeID dependencyID :
3542
3568
rawInheritedAndDependencyIDs.slice (numInheritedTypes)) {
@@ -3610,6 +3636,8 @@ class DeclDeserializer {
3610
3636
return declOrOffset;
3611
3637
3612
3638
Identifier name = MF.getIdentifier (nameID);
3639
+ PrettySupplementalDeclNameTrace trace (name);
3640
+
3613
3641
for (TypeID dependencyID :
3614
3642
rawInheritedAndDependencyIDs.slice (numInherited)) {
3615
3643
auto dependency = MF.getTypeChecked (dependencyID);
@@ -3688,6 +3716,7 @@ class DeclDeserializer {
3688
3716
argNames.push_back (MF.getIdentifier (argNameID));
3689
3717
DeclName compoundName (ctx, baseName, argNames);
3690
3718
DeclName name = argNames.empty () ? baseName : compoundName;
3719
+ PrettySupplementalDeclNameTrace trace (name);
3691
3720
3692
3721
for (TypeID dependencyID : argNameAndDependencyIDs.slice (numArgNames)) {
3693
3722
auto dependency = MF.getTypeChecked (dependencyID);
@@ -3780,6 +3809,8 @@ class DeclDeserializer {
3780
3809
for (auto argNameID : argNameAndDependencyIDs.slice (0 , numArgNames))
3781
3810
argNames.push_back (MF.getIdentifier (argNameID));
3782
3811
DeclName name (ctx, DeclBaseName::createSubscript (), argNames);
3812
+ PrettySupplementalDeclNameTrace trace (name);
3813
+
3783
3814
argNameAndDependencyIDs = argNameAndDependencyIDs.slice (numArgNames);
3784
3815
3785
3816
// Exctract the accessor IDs.
0 commit comments