Add toString to Substitution

Change-Id: I7fb82f781aeafb4ef4a037c405a7201e9b52ba1a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/96651
Reviewed-by: Aske Simon Christensen <askesc@google.com>
diff --git a/pkg/kernel/lib/type_algebra.dart b/pkg/kernel/lib/type_algebra.dart
index 094bd2f..a8d41d4 100644
--- a/pkg/kernel/lib/type_algebra.dart
+++ b/pkg/kernel/lib/type_algebra.dart
@@ -275,6 +275,9 @@
 
   @override
   Supertype substituteSupertype(Supertype node) => node;
+
+  @override
+  String toString() => "Substitution.empty";
 }
 
 class _MapSubstitution extends Substitution {
@@ -286,6 +289,9 @@
   DartType getSubstitute(TypeParameter parameter, bool upperBound) {
     return upperBound ? upper[parameter] : lower[parameter];
   }
+
+  @override
+  String toString() => "_MapSubstitution($upper, $lower)";
 }
 
 class _TopSubstitutor extends _TypeSubstitutor {