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:
2026-06-11 12:11:53 +02:00
co-authored by Claude Opus 4.8
parent bcea5f15b7
commit 6d0ebab721
444 changed files with 7587 additions and 12849 deletions
+6 -28
View File
@@ -12,13 +12,7 @@ import 'dart:io';
/// Serializable result of tool resolution (crosses isolate boundary).
class ResolvedPaths {
const ResolvedPaths({
this.git,
this.pql,
this.tmux,
this.shell,
this.gitEnv,
});
const ResolvedPaths({this.git, this.pql, this.tmux, this.shell, this.gitEnv});
final String? git;
final String? pql;
@@ -66,11 +60,7 @@ class _StaticToolchain implements ToolchainView {
@override
bool get allOk => missing.isEmpty;
@override
List<String> get missing => [
if (_paths.git == null) 'git',
if (_paths.pql == null) 'pql',
if (_paths.tmux == null) 'tmux',
];
List<String> get missing => [if (_paths.git == null) 'git', if (_paths.pql == null) 'pql', if (_paths.tmux == null) 'tmux'];
}
/// Top-level function for compute/isolate use. Returns a plain-data
@@ -88,10 +78,7 @@ ResolvedPaths resolveToolchainPaths() {
if (dugiteGit != null) {
git = dugiteGit;
final dugiteRoot = File(dugiteGit).parent.parent.path;
gitEnv = {
'GIT_EXEC_PATH': '$dugiteRoot/libexec/git-core',
'GIT_TEMPLATE_DIR': '$dugiteRoot/share/git-core/templates',
};
gitEnv = {'GIT_EXEC_PATH': '$dugiteRoot/libexec/git-core', 'GIT_TEMPLATE_DIR': '$dugiteRoot/share/git-core/templates'};
} else {
git = _findOnPath('git');
}
@@ -145,12 +132,8 @@ String? _firstExisting(List<String> candidates) {
}
/// Build expanded PATH inline — must be self-contained for isolate use.
String _expandedPath() => expandToolPath(
Platform.environment['PATH'] ?? '',
isMac: Platform.isMacOS,
isLinux: Platform.isLinux,
home: Platform.environment['HOME'],
);
String _expandedPath() =>
expandToolPath(Platform.environment['PATH'] ?? '', isMac: Platform.isMacOS, isLinux: Platform.isLinux, home: Platform.environment['HOME']);
/// Pure PATH-expansion logic, extracted so it's testable without touching the
/// process environment.
@@ -164,12 +147,7 @@ String _expandedPath() => expandToolPath(
String expandToolPath(String base, {required bool isMac, required bool isLinux, String? home}) {
if (!isMac && !isLinux) return base;
final h = home ?? '';
final extras = <String>[
if (h.isNotEmpty) '$h/.local/bin',
if (isMac) '/opt/homebrew/bin',
if (isMac) '/opt/homebrew/sbin',
'/usr/local/bin',
];
final extras = <String>[if (h.isNotEmpty) '$h/.local/bin', if (isMac) '/opt/homebrew/bin', if (isMac) '/opt/homebrew/sbin', '/usr/local/bin'];
final existing = base.split(':').toSet();
final missing = extras.where((p) => !existing.contains(p));
if (missing.isEmpty) return base;