Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 11 additions & 25 deletions pkgs/code_assets/doc/schema/shared/shared_definitions.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -239,19 +239,12 @@
"properties": {
"type": {
"type": "string",
"anyOf": [
{
"enum": [
"dynamic_loading_bundle",
"dynamic_loading_executable",
"dynamic_loading_process",
"dynamic_loading_system",
"static"
]
},
{
"type": "string"
}
"enum": [
"dynamic_loading_bundle",
"dynamic_loading_executable",
"dynamic_loading_process",
"dynamic_loading_system",
"static"
]
}
},
Expand All @@ -278,18 +271,11 @@
},
"LinkModePreference": {
"type": "string",
"anyOf": [
{
"enum": [
"dynamic",
"prefer_dynamic",
"prefer_static",
"static"
]
},
{
"type": "string"
}
"enum": [
"dynamic",
"prefer_dynamic",
"prefer_static",
"static"
]
},
"MacOSCodeConfig": {
Expand Down
7 changes: 3 additions & 4 deletions pkgs/code_assets/lib/src/code_assets/link_mode.dart
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import 'syntax.g.dart';
/// * [DynamicLoadingSystem]
///
/// See the documentation on the above classes.
abstract final class LinkMode {
sealed class LinkMode {
const LinkMode._();

/// Constructs a [LinkMode] from the given [json].
Expand Down Expand Up @@ -46,7 +46,6 @@ extension LinkModeSyntaxExtension on LinkMode {
final DynamicLoadingSystem system => DynamicLoadingSystemLinkModeSyntax(
uri: system.uri,
),
_ => throw UnimplementedError('The link mode "$this" is not known'),
};

/// Converts a [LinkModeSyntax] to its corresponding [LinkMode]
Expand All @@ -59,7 +58,7 @@ extension LinkModeSyntaxExtension on LinkMode {
_ when linkMode.isDynamicLoadingSystemLinkMode => DynamicLoadingSystem(
linkMode.asDynamicLoadingSystemLinkMode.uri,
),
_ => throw FormatException('The link mode "${linkMode.type}" is not known'),
_ => throw FormatException('Unknown LinkMode type: ${linkMode.type}'),
};
}

Expand All @@ -72,7 +71,7 @@ extension LinkModeSyntaxExtension on LinkMode {
/// Note: Dynamic loading is not equal to dynamic linking. Dynamic linking
/// would have to run the linker at compile-time, which is currently not
/// supported in the Dart and Flutter SDK.
abstract final class DynamicLoading extends LinkMode {
sealed class DynamicLoading extends LinkMode {
DynamicLoading._() : super._();
}

Expand Down
11 changes: 9 additions & 2 deletions pkgs/code_assets/lib/src/code_assets/link_mode_preference.dart
Original file line number Diff line number Diff line change
Expand Up @@ -50,21 +50,28 @@ final class LinkModePreference {
/// All possible values for [LinkModePreference].
static const values = [dynamic, static, preferDynamic, preferStatic];

@override
bool operator ==(Object other) =>
other is LinkModePreference && other.name == name;

@override
int get hashCode => name.hashCode;

@override
String toString() => name;
}

/// Extension methods for [LinkModePreference] to convert to and from the
/// syntax model.
extension LinkModePreferenceSyntaxExtension on LinkModePreference {
static const _toSyntax = {
static final _toSyntax = {
LinkModePreference.dynamic: LinkModePreferenceSyntax.dynamic,
LinkModePreference.preferDynamic: LinkModePreferenceSyntax.preferDynamic,
LinkModePreference.preferStatic: LinkModePreferenceSyntax.preferStatic,
LinkModePreference.static: LinkModePreferenceSyntax.static,
};

static const _fromSyntax = {
static final _fromSyntax = {
LinkModePreferenceSyntax.dynamic: LinkModePreference.dynamic,
LinkModePreferenceSyntax.preferDynamic: LinkModePreference.preferDynamic,
LinkModePreferenceSyntax.preferStatic: LinkModePreference.preferStatic,
Expand Down
Loading
Loading