debugAssertConsistent method
void
debugAssertConsistent()
Debug-only: verifies the forward and reverse maps agree and that
every freed nid has a null reverse entry. Throws StateError on any
inconsistency. Wrapped in assert at call sites so release builds
pay nothing.
Implementation
void debugAssertConsistent() {
assert(() {
for (final entry in _keyToNid.entries) {
final key = entry.key;
final nid = entry.value;
if (nid < 0 || nid >= _nidToKey.length) {
throw StateError(
"nid $nid for key $key out of range [0, ${_nidToKey.length})",
);
}
if (_nidToKey[nid] != key) {
throw StateError(
"nid $nid reverse mismatch: nidToKey[$nid] = ${_nidToKey[nid]}, "
"expected $key",
);
}
}
for (final freed in _freeNids) {
if (freed < 0 || freed >= _nidToKey.length) {
throw StateError("freed nid $freed out of range");
}
if (_nidToKey[freed] != null) {
throw StateError(
"freed nid $freed still has key ${_nidToKey[freed]}",
);
}
}
return true;
}());
}