Skip to content

Commit fabc394

Browse files
authored
Add more information to various asserts. (dart-lang#3787)
1 parent 64982f8 commit fabc394

File tree

2 files changed

+23
-5
lines changed

2 files changed

+23
-5
lines changed

lib/src/model/inheritable.dart

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,12 @@ mixin Inheritable on ContainerMember {
9292
definingEnclosingContainer.isPublic) {
9393
assert(
9494
definingEnclosingContainer == found,
95-
'For $element, expected $definingEnclosingContainer to be Object '
96-
'or $found, but was neither.');
95+
"For '$element' (${element.hashCode}) "
96+
"(search element: '$searchElement', ${searchElement?.hashCode}, in "
97+
"'${searchElement?.enclosingElement}'), expected "
98+
"'$definingEnclosingContainer', which is canonical, to be '$found',"
99+
"but was not. Here's the inheritance chain: "
100+
'${inheritance.reversed}.');
97101
}
98102
if (found != null) {
99103
return found;
@@ -112,8 +116,19 @@ mixin Inheritable on ContainerMember {
112116
];
113117
var object = packageGraph.specialClasses[SpecialClass.object]!;
114118

115-
assert(definingEnclosingContainer == object ||
116-
inheritance.contains(definingEnclosingContainer));
119+
assert(
120+
definingEnclosingContainer == object ||
121+
inheritance.contains(definingEnclosingContainer), () {
122+
var inheritanceDescriptions = inheritance
123+
.map((e) =>
124+
"'$e' (hashCode: ${e.hashCode}, in library '${e.library}')")
125+
.toList();
126+
return "Given '$this', on '$enclosingElement' in library '$library', "
127+
"the defining enclosing container, '$definingEnclosingContainer' "
128+
'(hashCode: ${definingEnclosingContainer.hashCode}, '
129+
"in library '${definingEnclosingContainer.library}'), should have "
130+
'been Object or contained in: $inheritanceDescriptions';
131+
}());
117132
// Unless the code explicitly extends dart:core's Object, we won't get
118133
// an entry here. So add it.
119134
if (inheritance.last != object) {

test/extensions_test.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,10 @@ class ExtensionMethodsExportTest extends DartdocTestBase {
7070
var fFunction = package.functions.named('f');
7171
var reference = getMatchingLinkElement(referenceText, fFunction)
7272
.commentReferable as ModelElement;
73-
expect(identical(reference.canonicalModelElement, expected), isTrue);
73+
expect(identical(reference.canonicalModelElement, expected), isTrue,
74+
reason: '$expected (${expected.hashCode}) is not '
75+
'${reference.canonicalModelElement} '
76+
'(${reference.canonicalModelElement.hashCode})');
7477
expect(expected.isCanonical, isTrue);
7578
expect(expected.href, endsWith(href));
7679
}

0 commit comments

Comments
 (0)