Skip to content

Commit 9878212

Browse files
authored
Merge pull request #30759 from brentdax/i-need-to-see-some-identification
[NFC] Add names of deserialized decls to pretty stack traces
2 parents 1d423e4 + 25d3bbd commit 9878212

File tree

1 file changed

+37
-6
lines changed

1 file changed

+37
-6
lines changed

lib/Serialization/Deserialization.cpp

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,17 @@ namespace {
113113
}
114114
};
115115

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+
116127
class PrettyXRefTrace :
117128
public llvm::PrettyStackTraceEntry,
118129
public XRefTracePath {
@@ -2419,6 +2430,7 @@ class DeclDeserializer {
24192430
rawAccessLevel, dependencyIDs);
24202431

24212432
Identifier name = MF.getIdentifier(nameID);
2433+
PrettySupplementalDeclNameTrace trace(name);
24222434

24232435
for (TypeID dependencyID : dependencyIDs) {
24242436
auto dependency = MF.getTypeChecked(dependencyID);
@@ -2549,6 +2561,7 @@ class DeclDeserializer {
25492561
rawInheritedAndDependencyIDs);
25502562

25512563
Identifier name = MF.getIdentifier(nameID);
2564+
PrettySupplementalDeclNameTrace trace(name);
25522565

25532566
for (TypeID dependencyID :
25542567
rawInheritedAndDependencyIDs.slice(numInheritedTypes)) {
@@ -2626,6 +2639,7 @@ class DeclDeserializer {
26262639
for (auto argNameID : argNameAndDependencyIDs.slice(0, numArgNames))
26272640
argNames.push_back(MF.getIdentifier(argNameID));
26282641
DeclName name(ctx, DeclBaseName::createConstructor(), argNames);
2642+
PrettySupplementalDeclNameTrace trace(name);
26292643

26302644
Optional<swift::CtorInitializerKind> initKind =
26312645
getActualCtorInitializerKind(storedInitKind);
@@ -2756,6 +2770,7 @@ class DeclDeserializer {
27562770
arrayFieldIDs);
27572771

27582772
Identifier name = MF.getIdentifier(nameID);
2773+
PrettySupplementalDeclNameTrace trace(name);
27592774

27602775
auto getErrorFlags = [&]() {
27612776
// Stored properties in classes still impact class object layout because
@@ -2926,6 +2941,10 @@ class DeclDeserializer {
29262941
interfaceTypeID, isIUO, isVariadic,
29272942
isAutoClosure, rawDefaultArg);
29282943

2944+
auto argName = MF.getIdentifier(argNameID);
2945+
auto paramName = MF.getIdentifier(paramNameID);
2946+
PrettySupplementalDeclNameTrace trace(paramName);
2947+
29292948
auto DC = MF.getDeclContext(contextID);
29302949
if (declOrOffset.isComplete())
29312950
return declOrOffset;
@@ -2935,10 +2954,8 @@ class DeclDeserializer {
29352954
if (!specifier)
29362955
MF.fatal();
29372956

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);
29422959
param->setSpecifier(*specifier);
29432960

29442961
declOrOffset = param;
@@ -3070,6 +3087,7 @@ class DeclDeserializer {
30703087
dependencyIDs = nameAndDependencyIDs.drop_front();
30713088
}
30723089
}
3090+
PrettySupplementalDeclNameTrace trace(name);
30733091

30743092
Expected<Decl *> overriddenOrError = MF.getDeclChecked(overriddenID);
30753093
Decl *overridden;
@@ -3331,6 +3349,7 @@ class DeclDeserializer {
33313349
rawInheritedAndDependencyIDs);
33323350

33333351
Identifier name = MF.getIdentifier(nameID);
3352+
PrettySupplementalDeclNameTrace trace(name);
33343353

33353354
for (TypeID dependencyID :
33363355
rawInheritedAndDependencyIDs.slice(numInheritedTypes)) {
@@ -3390,6 +3409,10 @@ class DeclDeserializer {
33903409

33913410
OperatorLayout::readRecord(scratch, nameID, contextID,
33923411
designatedNominalTypeDeclIDs);
3412+
3413+
Identifier name = MF.getIdentifier(nameID);
3414+
PrettySupplementalDeclNameTrace trace(name);
3415+
33933416
auto DC = MF.getDeclContext(contextID);
33943417

33953418
SmallVector<NominalTypeDecl *, 1> designatedNominalTypes;
@@ -3401,7 +3424,7 @@ class DeclDeserializer {
34013424
}
34023425

34033426
auto result = MF.createDecl<OperatorDecl>(
3404-
DC, SourceLoc(), MF.getIdentifier(nameID), SourceLoc(),
3427+
DC, SourceLoc(), name, SourceLoc(),
34053428
ctx.AllocateCopy(designatedNominalTypes));
34063429

34073430
declOrOffset = result;
@@ -3430,6 +3453,8 @@ class DeclDeserializer {
34303453
decls_block::InfixOperatorLayout::readRecord(scratch, nameID, contextID,
34313454
precedenceGroupID,
34323455
designatedNominalTypeDeclIDs);
3456+
Identifier name = MF.getIdentifier(nameID);
3457+
PrettySupplementalDeclNameTrace trace(name);
34333458

34343459
Expected<Decl *> precedenceGroup = MF.getDeclChecked(precedenceGroupID);
34353460
if (!precedenceGroup)
@@ -3446,7 +3471,7 @@ class DeclDeserializer {
34463471
}
34473472

34483473
auto result = MF.createDecl<InfixOperatorDecl>(
3449-
DC, SourceLoc(), MF.getIdentifier(nameID), SourceLoc(), SourceLoc(),
3474+
DC, SourceLoc(), name, SourceLoc(), SourceLoc(),
34503475
ArrayRef<Identifier>{}, ArrayRef<SourceLoc>{});
34513476
result->setDesignatedNominalTypes(ctx.AllocateCopy(designatedNominalTypes));
34523477
ctx.evaluator.cacheOutput(
@@ -3537,6 +3562,7 @@ class DeclDeserializer {
35373562
rawInheritedAndDependencyIDs);
35383563

35393564
Identifier name = MF.getIdentifier(nameID);
3565+
PrettySupplementalDeclNameTrace trace(name);
35403566

35413567
for (TypeID dependencyID :
35423568
rawInheritedAndDependencyIDs.slice(numInheritedTypes)) {
@@ -3610,6 +3636,8 @@ class DeclDeserializer {
36103636
return declOrOffset;
36113637

36123638
Identifier name = MF.getIdentifier(nameID);
3639+
PrettySupplementalDeclNameTrace trace(name);
3640+
36133641
for (TypeID dependencyID :
36143642
rawInheritedAndDependencyIDs.slice(numInherited)) {
36153643
auto dependency = MF.getTypeChecked(dependencyID);
@@ -3688,6 +3716,7 @@ class DeclDeserializer {
36883716
argNames.push_back(MF.getIdentifier(argNameID));
36893717
DeclName compoundName(ctx, baseName, argNames);
36903718
DeclName name = argNames.empty() ? baseName : compoundName;
3719+
PrettySupplementalDeclNameTrace trace(name);
36913720

36923721
for (TypeID dependencyID : argNameAndDependencyIDs.slice(numArgNames)) {
36933722
auto dependency = MF.getTypeChecked(dependencyID);
@@ -3780,6 +3809,8 @@ class DeclDeserializer {
37803809
for (auto argNameID : argNameAndDependencyIDs.slice(0, numArgNames))
37813810
argNames.push_back(MF.getIdentifier(argNameID));
37823811
DeclName name(ctx, DeclBaseName::createSubscript(), argNames);
3812+
PrettySupplementalDeclNameTrace trace(name);
3813+
37833814
argNameAndDependencyIDs = argNameAndDependencyIDs.slice(numArgNames);
37843815

37853816
// Exctract the accessor IDs.

0 commit comments

Comments
 (0)