Skip to content

Commit d0e09ea

Browse files
fishythefishCommit Queue
authored andcommitted
[dart2js] Print powerset value in typemask toString methods.
We may find it useful later to add a more verbose stringification that writes out the properties expressed by the powerset. For now, just printing the int value is sufficient to debug e.g. test failures, and it's relatively straightforward to manually convert an int to a set of properties by looking at the definitions of the powerset domains. Change-Id: I2397ffd83a6e86830f67c7f1ef811e33c0b7ff3c Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/405567 Reviewed-by: Nate Biggs <[email protected]>
1 parent 389ac92 commit d0e09ea

File tree

165 files changed

+4452
-4120
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

165 files changed

+4452
-4120
lines changed

pkg/compiler/lib/src/inferrer/typemasks/container_type_mask.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ class ContainerTypeMask extends AllocationTypeMask {
121121

122122
@override
123123
String toString() {
124-
return 'Container($forwardTo, element: $elementType, length: $length)';
124+
return 'Container($forwardTo, element: $elementType, length: $length, '
125+
'powerset: ${TypeMask.powersetToString(powerset)})';
125126
}
126127
}

pkg/compiler/lib/src/inferrer/typemasks/dictionary_type_mask.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ class DictionaryTypeMask extends MapTypeMask {
143143

144144
@override
145145
String toString() {
146-
return 'Dictionary($forwardTo, key: $keyType, '
147-
'value: $valueType, map: $_typeMap)';
146+
return 'Dictionary($forwardTo, key: $keyType, value: $valueType, '
147+
'map: $_typeMap, powerset: ${TypeMask.powersetToString(powerset)})';
148148
}
149149
}

pkg/compiler/lib/src/inferrer/typemasks/flat_type_mask.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -879,6 +879,7 @@ class FlatTypeMask extends TypeMask {
879879
if (isExact) 'exact=${base!.name}',
880880
if (isSubclass) 'subclass=${base!.name}',
881881
if (isSubtype) 'subtype=${base!.name}',
882+
'powerset=${TypeMask.powersetToString(powerset)}',
882883
], '|');
883884
buffer.write(']');
884885
return buffer.toString();

pkg/compiler/lib/src/inferrer/typemasks/map_type_mask.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ class MapTypeMask extends AllocationTypeMask {
134134

135135
@override
136136
String toString() {
137-
return 'Map($forwardTo, key: $keyType, value: $valueType)';
137+
return 'Map($forwardTo, key: $keyType, value: $valueType, '
138+
'powerset: ${TypeMask.powersetToString(powerset)})';
138139
}
139140
}

pkg/compiler/lib/src/inferrer/typemasks/record_type_mask.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,8 @@ class RecordTypeMask extends TypeMask {
445445

446446
@override
447447
String toString() {
448-
return '[Record($shape, $types)]';
448+
return '[Record($shape, $types, '
449+
'powerset: ${TypeMask.powersetToString(powerset)})]';
449450
}
450451

451452
@override

pkg/compiler/lib/src/inferrer/typemasks/set_type_mask.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,5 +95,7 @@ class SetTypeMask extends AllocationTypeMask {
9595
int get hashCode => Hashing.objectHash(elementType, super.hashCode);
9696

9797
@override
98-
String toString() => 'Set($forwardTo, element: $elementType)';
98+
String toString() =>
99+
'Set($forwardTo, element: $elementType, '
100+
'powerset: ${TypeMask.powersetToString(powerset)})';
99101
}

pkg/compiler/lib/src/inferrer/typemasks/type_mask.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -552,4 +552,6 @@ abstract class TypeMask implements AbstractValue {
552552
MemberHierarchyBuilder memberHierarchyBuilder,
553553
JClosedWorld closedWorld,
554554
);
555+
556+
static String powersetToString(Bitset powerset) => '$powerset';
555557
}

pkg/compiler/lib/src/inferrer/typemasks/union_type_mask.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -488,7 +488,8 @@ class UnionTypeMask extends TypeMask {
488488
if (hasLateSentinel) 'sentinel',
489489
...disjointMasks.map((TypeMask mask) => mask.toString()).toList()..sort(),
490490
].join(", ");
491-
return 'Union($masksString)';
491+
return 'Union($masksString, '
492+
'powerset: ${TypeMask.powersetToString(powerset)})';
492493
}
493494

494495
@override

pkg/compiler/lib/src/inferrer/typemasks/value_type_mask.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ class ValueTypeMask extends ForwardingTypeMask {
7070

7171
@override
7272
String toString() {
73-
return 'Value($forwardTo, value: ${value.toDartText(null)})';
73+
return 'Value($forwardTo, value: ${value.toDartText(null)}, '
74+
'powerset: ${TypeMask.powersetToString(powerset)})';
7475
}
7576
}

0 commit comments

Comments
 (0)