Skip to content

Commit 7a0ff5c

Browse files
committed
AST: Add SubstitutionMap::DumpStyle::NoConformances and use it by default for opaque types
1 parent 97ce526 commit 7a0ff5c

File tree

2 files changed

+19
-11
lines changed

2 files changed

+19
-11
lines changed

include/swift/AST/SubstitutionMap.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ class SubstitutionMap {
217217

218218
/// Whether to dump the full substitution map, or just a minimal useful subset
219219
/// (on a single line).
220-
enum class DumpStyle { Minimal, Full };
220+
enum class DumpStyle { Minimal, NoConformances, Full };
221221
/// Dump the contents of this substitution map for debugging purposes.
222222
void dump(llvm::raw_ostream &out, DumpStyle style = DumpStyle::Full,
223223
unsigned indent = 0) const;

lib/AST/ASTDumper.cpp

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1255,13 +1255,19 @@ namespace {
12551255

12561256
/// Print a substitution map as a child node.
12571257
void printRec(SubstitutionMap map, Label label) {
1258+
printRec(map, SubstitutionMap::DumpStyle::Full, label);
1259+
}
1260+
1261+
/// Print a substitution map as a child node.
1262+
void printRec(SubstitutionMap map, SubstitutionMap::DumpStyle style,
1263+
Label label) {
12581264
SmallPtrSet<const ProtocolConformance *, 4> Dumped;
1259-
printRec(map, Dumped, label);
1265+
printRec(map, style, Dumped, label);
12601266
}
12611267

12621268
/// Print a substitution map as a child node.
1263-
void printRec(SubstitutionMap map, VisitedConformances &visited,
1264-
Label label);
1269+
void printRec(SubstitutionMap map, SubstitutionMap::DumpStyle style,
1270+
VisitedConformances &visited, Label label);
12651271

12661272
/// Print a substitution map as a child node.
12671273
void printRec(const ProtocolConformanceRef &conf,
@@ -5807,7 +5813,8 @@ class PrintConformance : public PrintBase {
58075813
if (!shouldPrintDetails)
58085814
break;
58095815

5810-
printRec(conf->getSubstitutionMap(), visited,
5816+
printRec(conf->getSubstitutionMap(),
5817+
SubstitutionMap::DumpStyle::Full, visited,
58115818
Label::optional("substitutions"));
58125819
if (auto condReqs = conf->getConditionalRequirementsIfAvailableOrCached(/*computeIfPossible=*/false)) {
58135820
printList(*condReqs, [&](auto subReq, Label label) {
@@ -5906,7 +5913,7 @@ class PrintConformance : public PrintBase {
59065913

59075914
// A minimal dump doesn't need the details about the conformances, a lot of
59085915
// that info can be inferred from the signature.
5909-
if (style == SubstitutionMap::DumpStyle::Minimal)
5916+
if (style != SubstitutionMap::DumpStyle::Full)
59105917
return;
59115918

59125919
auto conformances = map.getConformances();
@@ -5925,13 +5932,12 @@ class PrintConformance : public PrintBase {
59255932
}
59265933
};
59275934

5928-
void PrintBase::printRec(SubstitutionMap map, VisitedConformances &visited,
5929-
Label label) {
5935+
void PrintBase::printRec(SubstitutionMap map, SubstitutionMap::DumpStyle style,
5936+
VisitedConformances &visited, Label label) {
59305937
printRecArbitrary(
59315938
[&](Label label) {
59325939
PrintConformance(Writer, MemberLoading)
5933-
.visitSubstitutionMap(map, SubstitutionMap::DumpStyle::Full,
5934-
visited, label);
5940+
.visitSubstitutionMap(map, style, visited, label);
59355941
},
59365942
label);
59375943
}
@@ -6354,7 +6360,9 @@ namespace {
63546360

63556361
printArchetypeCommonRec(T);
63566362
if (!T->getSubstitutions().empty()) {
6357-
printRec(T->getSubstitutions(), Label::optional("substitutions"));
6363+
printRec(T->getSubstitutions(),
6364+
SubstitutionMap::DumpStyle::NoConformances,
6365+
Label::optional("substitutions"));
63586366
}
63596367

63606368
printFoot();

0 commit comments

Comments
 (0)