Skip to content

Commit 1f27ea2

Browse files
committed
Hacking.
1 parent ec6d434 commit 1f27ea2

21 files changed

+606
-77
lines changed

build/lib/src/internal.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ library;
88

99
export 'library_cycle_graph/asset_deps.dart';
1010
export 'library_cycle_graph/asset_deps_loader.dart';
11+
export 'library_cycle_graph/asset_set.dart';
1112
export 'library_cycle_graph/library_cycle.dart';
1213
export 'library_cycle_graph/library_cycle_graph.dart';
1314
export 'library_cycle_graph/library_cycle_graph_loader.dart';
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// Copyright (c) 2025, the Dart project authors. Please see the AUTHORS file
2+
// for details. All rights reserved. Use of this source code is governed by a
3+
// BSD-style license that can be found in the LICENSE file.
4+
5+
import 'package:built_collection/built_collection.dart';
6+
import 'package:built_value/built_value.dart';
7+
import 'package:built_value/serializer.dart';
8+
9+
import '../asset/id.dart';
10+
import 'library_cycle_graph.dart';
11+
12+
part 'asset_set.g.dart';
13+
14+
abstract class AssetSet implements Built<AssetSet, AssetSetBuilder> {
15+
static Serializer<AssetSet> get serializer => _$assetSetSerializer;
16+
17+
BuiltSet<AssetId> get assets;
18+
BuiltList<LibraryCycleGraph> get graphs;
19+
20+
factory AssetSet([void Function(AssetSetBuilder) updates]) = _$AssetSet;
21+
AssetSet._();
22+
23+
AssetSet difference(Set<AssetId> other) {
24+
throw UnimplementedError();
25+
}
26+
27+
Iterable<AssetId> get iterable sync* {
28+
final seenAssets = assets.toSet();
29+
yield* assets;
30+
31+
for (final graph in graphs) {
32+
for (final id in graph.transitiveDeps) {
33+
if (seenAssets.add(id)) yield id;
34+
}
35+
}
36+
}
37+
}

build/lib/src/library_cycle_graph/asset_set.g.dart

Lines changed: 199 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build/lib/src/library_cycle_graph/library_cycle.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import 'package:built_collection/built_collection.dart';
66
import 'package:built_value/built_value.dart';
7+
import 'package:built_value/serializer.dart';
78

89
import '../asset/id.dart';
910

@@ -14,6 +15,8 @@ part 'library_cycle.g.dart';
1415
/// This means they have to be compiled as a single unit.
1516
abstract class LibraryCycle
1617
implements Built<LibraryCycle, LibraryCycleBuilder> {
18+
static Serializer<LibraryCycle> get serializer => _$libraryCycleSerializer;
19+
1720
BuiltSet<AssetId> get ids;
1821

1922
factory LibraryCycle([void Function(LibraryCycleBuilder) updates]) =

build/lib/src/library_cycle_graph/library_cycle.g.dart

Lines changed: 60 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

build/lib/src/library_cycle_graph/library_cycle_graph.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import 'package:built_collection/built_collection.dart';
66
import 'package:built_value/built_value.dart';
7+
import 'package:built_value/serializer.dart';
78

89
import '../asset/id.dart';
910
import 'library_cycle.dart';
@@ -13,6 +14,9 @@ part 'library_cycle_graph.g.dart';
1314
/// A directed acyclic graph of [LibraryCycle]s.
1415
abstract class LibraryCycleGraph
1516
implements Built<LibraryCycleGraph, LibraryCycleGraphBuilder> {
17+
static Serializer<LibraryCycleGraph> get serializer =>
18+
_$libraryCycleGraphSerializer;
19+
1620
LibraryCycle get root;
1721
BuiltList<LibraryCycleGraph> get children;
1822

0 commit comments

Comments
 (0)