Use a Set.identity to track parents
diff --git a/pkgs/yaml/lib/src/equality.dart b/pkgs/yaml/lib/src/equality.dart index 957f05e..7aea77d 100644 --- a/pkgs/yaml/lib/src/equality.dart +++ b/pkgs/yaml/lib/src/equality.dart
@@ -103,7 +103,7 @@ int deepHashCode(Object? obj) => _deepHasher(obj); int Function(Object?) get _deepHasher { - var parents = <Object?>[]; + final parents = Set<Object?>.identity(); int deepHashCodeInner(Object? value) { if (value is YamlMap && value.isSelfReferential) { @@ -112,7 +112,7 @@ if (value is YamlList && value.isSelfReferential) { return identityHashCode(value); } - if (parents.any((parent) => identical(parent, value))) return -1; + if (parents.contains(value)) return -1; parents.add(value); try { @@ -129,7 +129,7 @@ return value.hashCode; } } finally { - parents.removeLast(); + parents.remove(value); } }