in build_runner_core/lib/src/asset_graph/graph.dart [181:219]
Set<AssetId> _removeRecursive(AssetId id, {Set<AssetId>? removedIds}) {
removedIds ??= <AssetId>{};
var node = get(id);
if (node == null) return removedIds;
removedIds.add(id);
for (var anchor in node.anchorOutputs.toList()) {
_removeRecursive(anchor, removedIds: removedIds);
}
for (var output in node.primaryOutputs.toList()) {
_removeRecursive(output, removedIds: removedIds);
}
for (var output in node.outputs) {
var inputsNode = get(output) as NodeWithInputs?;
if (inputsNode != null) {
inputsNode.inputs.remove(id);
if (inputsNode is GlobAssetNode) {
inputsNode.results?.remove(id);
}
}
}
if (node is NodeWithInputs) {
for (var input in node.inputs) {
var inputNode = get(input);
// We may have already removed this node entirely.
if (inputNode != null) {
inputNode.outputs.remove(id);
inputNode.primaryOutputs.remove(id);
}
}
if (node is GeneratedAssetNode) {
get(node.builderOptionsId)!.outputs.remove(id);
}
}
// Synthetic nodes need to be kept to retain dependency tracking.
if (node is! SyntheticSourceAssetNode) {
_nodesByPackage[id.package]!.remove(id.path);
}
return removedIds;
}