@@ -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 {
@@ -2375,6 +2386,7 @@ class DeclDeserializer {
2375
2386
rawAccessLevel, dependencyIDs);
2376
2387
2377
2388
Identifier name = MF.getIdentifier (nameID);
2389
+ PrettySupplementalDeclNameTrace trace (name);
2378
2390
2379
2391
for (TypeID dependencyID : dependencyIDs) {
2380
2392
auto dependency = MF.getTypeChecked (dependencyID);
@@ -2505,6 +2517,7 @@ class DeclDeserializer {
2505
2517
rawInheritedAndDependencyIDs);
2506
2518
2507
2519
Identifier name = MF.getIdentifier (nameID);
2520
+ PrettySupplementalDeclNameTrace trace (name);
2508
2521
2509
2522
for (TypeID dependencyID :
2510
2523
rawInheritedAndDependencyIDs.slice (numInheritedTypes)) {
@@ -2582,6 +2595,7 @@ class DeclDeserializer {
2582
2595
for (auto argNameID : argNameAndDependencyIDs.slice (0 , numArgNames))
2583
2596
argNames.push_back (MF.getIdentifier (argNameID));
2584
2597
DeclName name (ctx, DeclBaseName::createConstructor (), argNames);
2598
+ PrettySupplementalDeclNameTrace trace (name);
2585
2599
2586
2600
Optional<swift::CtorInitializerKind> initKind =
2587
2601
getActualCtorInitializerKind (storedInitKind);
@@ -2712,6 +2726,7 @@ class DeclDeserializer {
2712
2726
arrayFieldIDs);
2713
2727
2714
2728
Identifier name = MF.getIdentifier (nameID);
2729
+ PrettySupplementalDeclNameTrace trace (name);
2715
2730
2716
2731
auto getErrorFlags = [&]() {
2717
2732
// Stored properties in classes still impact class object layout because
@@ -2879,6 +2894,10 @@ class DeclDeserializer {
2879
2894
interfaceTypeID, isIUO, isVariadic,
2880
2895
isAutoClosure, rawDefaultArg);
2881
2896
2897
+ auto argName = MF.getIdentifier (argNameID);
2898
+ auto paramName = MF.getIdentifier (paramNameID);
2899
+ PrettySupplementalDeclNameTrace trace (paramName);
2900
+
2882
2901
auto DC = MF.getDeclContext (contextID);
2883
2902
if (declOrOffset.isComplete ())
2884
2903
return declOrOffset;
@@ -2888,10 +2907,8 @@ class DeclDeserializer {
2888
2907
if (!specifier)
2889
2908
MF.fatal ();
2890
2909
2891
- auto param = MF.createDecl <ParamDecl>(SourceLoc (), SourceLoc (),
2892
- MF.getIdentifier (argNameID),
2893
- SourceLoc (),
2894
- MF.getIdentifier (paramNameID), DC);
2910
+ auto param = MF.createDecl <ParamDecl>(SourceLoc (), SourceLoc (), argName,
2911
+ SourceLoc (), paramName, DC);
2895
2912
param->setSpecifier (*specifier);
2896
2913
2897
2914
declOrOffset = param;
@@ -3023,6 +3040,7 @@ class DeclDeserializer {
3023
3040
dependencyIDs = nameAndDependencyIDs.drop_front ();
3024
3041
}
3025
3042
}
3043
+ PrettySupplementalDeclNameTrace trace (name);
3026
3044
3027
3045
Expected<Decl *> overriddenOrError = MF.getDeclChecked (overriddenID);
3028
3046
Decl *overridden;
@@ -3281,6 +3299,7 @@ class DeclDeserializer {
3281
3299
rawInheritedAndDependencyIDs);
3282
3300
3283
3301
Identifier name = MF.getIdentifier (nameID);
3302
+ PrettySupplementalDeclNameTrace trace (name);
3284
3303
3285
3304
for (TypeID dependencyID :
3286
3305
rawInheritedAndDependencyIDs.slice (numInheritedTypes)) {
@@ -3340,6 +3359,10 @@ class DeclDeserializer {
3340
3359
3341
3360
OperatorLayout::readRecord (scratch, nameID, contextID,
3342
3361
designatedNominalTypeDeclIDs);
3362
+
3363
+ Identifier name = MF.getIdentifier (nameID);
3364
+ PrettySupplementalDeclNameTrace trace (name);
3365
+
3343
3366
auto DC = MF.getDeclContext (contextID);
3344
3367
3345
3368
SmallVector<NominalTypeDecl *, 1 > designatedNominalTypes;
@@ -3351,7 +3374,7 @@ class DeclDeserializer {
3351
3374
}
3352
3375
3353
3376
auto result = MF.createDecl <OperatorDecl>(
3354
- DC, SourceLoc (), MF. getIdentifier (nameID) , SourceLoc (),
3377
+ DC, SourceLoc (), name , SourceLoc (),
3355
3378
ctx.AllocateCopy (designatedNominalTypes));
3356
3379
3357
3380
declOrOffset = result;
@@ -3380,6 +3403,8 @@ class DeclDeserializer {
3380
3403
decls_block::InfixOperatorLayout::readRecord (scratch, nameID, contextID,
3381
3404
precedenceGroupID,
3382
3405
designatedNominalTypeDeclIDs);
3406
+ Identifier name = MF.getIdentifier (nameID);
3407
+ PrettySupplementalDeclNameTrace trace (name);
3383
3408
3384
3409
Expected<Decl *> precedenceGroup = MF.getDeclChecked (precedenceGroupID);
3385
3410
if (!precedenceGroup)
@@ -3396,7 +3421,7 @@ class DeclDeserializer {
3396
3421
}
3397
3422
3398
3423
auto result = MF.createDecl <InfixOperatorDecl>(
3399
- DC, SourceLoc (), MF. getIdentifier (nameID) , SourceLoc (), SourceLoc (),
3424
+ DC, SourceLoc (), name , SourceLoc (), SourceLoc (),
3400
3425
ArrayRef<Identifier>{}, ArrayRef<SourceLoc>{});
3401
3426
result->setDesignatedNominalTypes (ctx.AllocateCopy (designatedNominalTypes));
3402
3427
ctx.evaluator .cacheOutput (
@@ -3487,6 +3512,7 @@ class DeclDeserializer {
3487
3512
rawInheritedAndDependencyIDs);
3488
3513
3489
3514
Identifier name = MF.getIdentifier (nameID);
3515
+ PrettySupplementalDeclNameTrace trace (name);
3490
3516
3491
3517
for (TypeID dependencyID :
3492
3518
rawInheritedAndDependencyIDs.slice (numInheritedTypes)) {
@@ -3560,6 +3586,8 @@ class DeclDeserializer {
3560
3586
return declOrOffset;
3561
3587
3562
3588
Identifier name = MF.getIdentifier (nameID);
3589
+ PrettySupplementalDeclNameTrace trace (name);
3590
+
3563
3591
for (TypeID dependencyID :
3564
3592
rawInheritedAndDependencyIDs.slice (numInherited)) {
3565
3593
auto dependency = MF.getTypeChecked (dependencyID);
@@ -3638,6 +3666,7 @@ class DeclDeserializer {
3638
3666
argNames.push_back (MF.getIdentifier (argNameID));
3639
3667
DeclName compoundName (ctx, baseName, argNames);
3640
3668
DeclName name = argNames.empty () ? baseName : compoundName;
3669
+ PrettySupplementalDeclNameTrace trace (name);
3641
3670
3642
3671
for (TypeID dependencyID : argNameAndDependencyIDs.slice (numArgNames)) {
3643
3672
auto dependency = MF.getTypeChecked (dependencyID);
@@ -3730,6 +3759,8 @@ class DeclDeserializer {
3730
3759
for (auto argNameID : argNameAndDependencyIDs.slice (0 , numArgNames))
3731
3760
argNames.push_back (MF.getIdentifier (argNameID));
3732
3761
DeclName name (ctx, DeclBaseName::createSubscript (), argNames);
3762
+ PrettySupplementalDeclNameTrace trace (name);
3763
+
3733
3764
argNameAndDependencyIDs = argNameAndDependencyIDs.slice (numArgNames);
3734
3765
3735
3766
// Exctract the accessor IDs.
0 commit comments