chore: adopt Dart 3.9 toolchain — honest floor + tall-style reformat (T-353)
Raise the declared minimums in pubspec.yaml to what our deps already require: Flutter >=3.35.0 / Dart >=3.9.0 (was 3.19.0 / 3.5.0). alchemist 0.12 needs Flutter 3.32; Dart 3.9 first ships in Flutter 3.35, so 3.35 is the binding floor. Pin the exact build toolchain in .fvmrc (Flutter 3.44.1). Moving to the Dart 3.9 language level switches `dart format` to the new "tall" style and enables two new lints. This commit is the resulting mechanical churn, isolated from any behaviour change: - whole-tree `dart format` reformat (tall style) - `dart fix` for unnecessary_underscores + use_null_aware_elements No runtime behaviour change; `make test` green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -25,10 +25,7 @@ void main() {
|
||||
});
|
||||
|
||||
test('StatusItemContribution pins the statusbar slot', () {
|
||||
final s = StatusItemContribution(
|
||||
id: 'ipc-status.indicator',
|
||||
build: (_) => const SizedBox.shrink(),
|
||||
);
|
||||
final s = StatusItemContribution(id: 'ipc-status.indicator', build: (_) => const SizedBox.shrink());
|
||||
expect(s.slot, Slots.statusbar);
|
||||
});
|
||||
|
||||
@@ -42,20 +39,12 @@ void main() {
|
||||
});
|
||||
|
||||
test('TrayItemContribution pins the tray slot', () {
|
||||
final t = TrayItemContribution(
|
||||
id: 't',
|
||||
label: 'Label',
|
||||
onSelected: () {},
|
||||
);
|
||||
final t = TrayItemContribution(id: 't', label: 'Label', onSelected: () {});
|
||||
expect(t.slot, Slots.tray);
|
||||
});
|
||||
|
||||
test('ToolbarButtonContribution pins the toolbar slot', () {
|
||||
final b = ToolbarButtonContribution(
|
||||
id: 'save',
|
||||
label: 'Save',
|
||||
onPressed: () {},
|
||||
);
|
||||
final b = ToolbarButtonContribution(id: 'save', label: 'Save', onPressed: () {});
|
||||
expect(b.slot, Slots.toolbar);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -53,11 +53,13 @@ void main() {
|
||||
|
||||
test('publish + subscribe round-trip through the message bus', () async {
|
||||
Message? received;
|
||||
f.services.extensions.register(_SugarExt((ctx) async {
|
||||
final first = ctx.subscribe(channel: 'greet').first;
|
||||
ctx.publish('greet', {'hello': 'world'});
|
||||
received = await first;
|
||||
}));
|
||||
f.services.extensions.register(
|
||||
_SugarExt((ctx) async {
|
||||
final first = ctx.subscribe(channel: 'greet').first;
|
||||
ctx.publish('greet', {'hello': 'world'});
|
||||
received = await first;
|
||||
}),
|
||||
);
|
||||
await f.services.extensions.activate('sugar.ext');
|
||||
expect(received, isNotNull);
|
||||
expect(received!.publisher, 'sugar.ext');
|
||||
@@ -68,10 +70,12 @@ void main() {
|
||||
test('t + tr resolve against the extension namespace', () async {
|
||||
String? t;
|
||||
String? tr;
|
||||
f.services.extensions.register(_SugarExt((ctx) async {
|
||||
t = ctx.t('missing.key');
|
||||
tr = ctx.tr('missing.key', replacers: const []);
|
||||
}));
|
||||
f.services.extensions.register(
|
||||
_SugarExt((ctx) async {
|
||||
t = ctx.t('missing.key');
|
||||
tr = ctx.tr('missing.key', replacers: const []);
|
||||
}),
|
||||
);
|
||||
await f.services.extensions.activate('sugar.ext');
|
||||
// No catalog loaded for this namespace → i18n falls back, but the
|
||||
// sugar getters still execute and return a non-null string.
|
||||
|
||||
@@ -46,24 +46,15 @@ depends_on: [builtin.git, 42, builtin.diff]
|
||||
});
|
||||
|
||||
test('missing id throws FormatException', () {
|
||||
expect(
|
||||
() => ExtensionManifest.fromYamlString('title: Floating'),
|
||||
throwsA(isA<FormatException>()),
|
||||
);
|
||||
expect(() => ExtensionManifest.fromYamlString('title: Floating'), throwsA(isA<FormatException>()));
|
||||
});
|
||||
|
||||
test('empty id throws FormatException', () {
|
||||
expect(
|
||||
() => ExtensionManifest.fromYamlString('id: ""'),
|
||||
throwsA(isA<FormatException>()),
|
||||
);
|
||||
expect(() => ExtensionManifest.fromYamlString('id: ""'), throwsA(isA<FormatException>()));
|
||||
});
|
||||
|
||||
test('non-map root throws FormatException', () {
|
||||
expect(
|
||||
() => ExtensionManifest.fromYamlString('- just a list'),
|
||||
throwsA(isA<FormatException>()),
|
||||
);
|
||||
expect(() => ExtensionManifest.fromYamlString('- just a list'), throwsA(isA<FormatException>()));
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user