Skip to content

Commit 725bdd7

Browse files
committed
Make resources nullable
1 parent c24e422 commit 725bdd7

File tree

5 files changed

+24
-17
lines changed

5 files changed

+24
-17
lines changed

pkgs/native_assets_builder/test_data/treeshaking_native_assets/hook/link.dart

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,21 +11,23 @@ const packageName = 'treeshaking_native_assets';
1111
void main(List<String> arguments) async {
1212
await link(arguments, (config, output) async {
1313
final usedSymbols =
14-
config.resources.map((resource) => resource.metadata.toString());
14+
config.resources?.map((resource) => resource.metadata.toString());
1515
final dynamicLibrary = config.assets.firstWhere((asset) =>
1616
asset.id == 'package:$packageName/src/${packageName}_bindings.dart');
1717
final staticLibrary = config.assets
1818
.firstWhere((asset) => asset.id == 'package:$packageName/staticlib');
1919

20-
final linkerScript = await _writeLinkerScript(usedSymbols);
21-
await _treeshakeStaticLibrary(
22-
usedSymbols,
23-
linkerScript,
24-
dynamicLibrary,
25-
staticLibrary,
26-
);
27-
output.addAsset(dynamicLibrary);
28-
output.addDependency(config.packageRoot.resolve('hook/link.dart'));
20+
if (usedSymbols != null) {
21+
final linkerScript = await _writeLinkerScript(usedSymbols);
22+
await _treeshakeStaticLibrary(
23+
usedSymbols,
24+
linkerScript,
25+
dynamicLibrary,
26+
staticLibrary,
27+
);
28+
output.addAsset(dynamicLibrary);
29+
output.addDependency(config.packageRoot.resolve('hook/link.dart'));
30+
}
2931
});
3032
}
3133

pkgs/native_assets_cli/example/link/package_with_assets/hook/link.dart

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@ import 'package:native_assets_cli/native_assets_cli.dart';
77
void main(List<String> args) async {
88
await link(args, (config, output) async {
99
final assetsWithResource = config.assets.whereType<DataAsset>().where(
10-
(asset) => config.resources
11-
.any((resource) => resource.metadata == asset.name));
10+
(asset) =>
11+
config.resources
12+
?.any((resource) => resource.metadata == asset.name) ??
13+
true);
1214
output.addAssets(assetsWithResource);
1315
});
1416
}

pkgs/native_assets_cli/lib/src/api/link.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ import 'link_config.dart';
1717
///
1818
/// As the linking runs after kernel compilation, you can use treeshaking
1919
/// information provided through [LinkConfig.resources] to decide which assets
20-
/// to include.
20+
/// to include. The resources are only collected in AOT mode, therefore the
21+
/// field is null in JIT mode.
2122
///
2223
///
2324
/// ```dart

pkgs/native_assets_cli/lib/src/api/link_config.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@ abstract class LinkConfig implements HookConfig {
3535
/// A collection of methods annotated with `@ResourceIdentifier`, which are
3636
/// called in the tree-shaken Dart code. This information can be used to
3737
/// dispose unused [assets].
38-
List<Resource> get resources;
38+
///
39+
/// This is `null` in JIT mode, where no resources are collected.
40+
List<Resource>? get resources;
3941

4042
/// Generate the [LinkConfig] from the input arguments to the linking script.
4143
factory LinkConfig.fromArguments(List<String> arguments) =>

pkgs/native_assets_cli/lib/src/model/link_config.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class LinkConfigImpl extends HookConfigImpl implements LinkConfig {
1919
final BuildConfigImpl _buildConfig;
2020

2121
@override
22-
final List<Resource> resources;
22+
final List<Resource>? resources;
2323

2424
final _LinkConfigArgs _args;
2525

@@ -99,8 +99,8 @@ class LinkConfigImpl extends HookConfigImpl implements LinkConfig {
9999
static Version latestVersion = Version(1, 0, 0);
100100
}
101101

102-
List<Resource> fromIdentifiers(ResourceIdentifiers? resourceIdentifiers) =>
103-
(resourceIdentifiers?.identifiers ?? [])
102+
List<Resource>? fromIdentifiers(ResourceIdentifiers? resourceIdentifiers) =>
103+
resourceIdentifiers?.identifiers
104104
.map((e) => Resource(name: e.name, metadata: e.id))
105105
.toList();
106106

0 commit comments

Comments
 (0)