@@ -2429,6 +2429,13 @@ Type EquivalenceClass::getTypeInContext(GenericSignatureBuilder &builder,
2429
2429
2430
2430
void EquivalenceClass::dump (llvm::raw_ostream &out,
2431
2431
GenericSignatureBuilder *builder) const {
2432
+ auto dumpSource = [&](const RequirementSource *source) {
2433
+ source->dump (out, &builder->getASTContext ().SourceMgr , 4 );
2434
+ if (source->isDerivedRequirement ())
2435
+ out << " [derived]" ;
2436
+ out << " \n " ;
2437
+ };
2438
+
2432
2439
out << " Equivalence class represented by "
2433
2440
<< members.front ()->getRepresentative ()->getDebugName () << " :\n " ;
2434
2441
out << " Members: " ;
@@ -2442,29 +2449,41 @@ void EquivalenceClass::dump(llvm::raw_ostream &out,
2442
2449
for (auto entry : conformsTo) {
2443
2450
out << " " << entry.first ->getNameStr () << " \n " ;
2444
2451
for (auto constraint : entry.second ) {
2445
- constraint.source ->dump (out, &builder->getASTContext ().SourceMgr , 4 );
2446
- if (constraint.source ->isDerivedRequirement ())
2447
- out << " [derived]" ;
2448
- out << " \n " ;
2452
+ dumpSource (constraint.source );
2449
2453
}
2450
2454
}
2451
2455
2452
2456
out << " Same-type constraints:\n " ;
2453
2457
for (auto constraint : sameTypeConstraints) {
2454
2458
out << " " << constraint.getSubjectDependentType ({})
2455
2459
<< " == " << constraint.value << " \n " ;
2456
- constraint.source ->dump (out, &builder->getASTContext ().SourceMgr , 4 );
2457
- if (constraint.source ->isDerivedRequirement ())
2458
- out << " [derived]" ;
2459
- out << " \n " ;
2460
+ dumpSource (constraint.source );
2460
2461
}
2461
2462
2462
- if (concreteType)
2463
+ if (concreteType) {
2463
2464
out << " Concrete type: " << concreteType.getString () << " \n " ;
2464
- if (superclass)
2465
+ for (auto constraint : concreteTypeConstraints) {
2466
+ out << " " << constraint.getSubjectDependentType ({})
2467
+ << " == " << constraint.value << " \n " ;
2468
+ dumpSource (constraint.source );
2469
+ }
2470
+ }
2471
+ if (superclass) {
2465
2472
out << " Superclass: " << superclass.getString () << " \n " ;
2466
- if (layout)
2473
+ for (auto constraint : superclassConstraints) {
2474
+ out << " " << constraint.getSubjectDependentType ({})
2475
+ << " : " << constraint.value << " \n " ;
2476
+ dumpSource (constraint.source );
2477
+ }
2478
+ }
2479
+ if (layout) {
2467
2480
out << " Layout: " << layout.getString () << " \n " ;
2481
+ for (auto constraint : layoutConstraints) {
2482
+ out << " " << constraint.getSubjectDependentType ({})
2483
+ << " : " << constraint.value << " \n " ;
2484
+ dumpSource (constraint.source );
2485
+ }
2486
+ }
2468
2487
2469
2488
if (!delayedRequirements.empty ()) {
2470
2489
out << " Delayed requirements:\n " ;
0 commit comments