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:
@@ -41,26 +41,30 @@ void main() {
|
||||
|
||||
/// Pump a themed context, run [body] with a controller already
|
||||
/// given tokens from the active theme.
|
||||
Future<void> withController(
|
||||
WidgetTester tester,
|
||||
SyntaxTextController c,
|
||||
Future<void> Function(BuildContext ctx) body,
|
||||
) async {
|
||||
Future<void> withController(WidgetTester tester, SyntaxTextController c, Future<void> Function(BuildContext ctx) body) async {
|
||||
late BuildContext ctx;
|
||||
await tester.pumpWidget(harness(f, Builder(builder: (context) {
|
||||
ctx = context;
|
||||
return const SizedBox();
|
||||
})));
|
||||
await tester.pumpWidget(
|
||||
harness(
|
||||
f,
|
||||
Builder(
|
||||
builder: (context) {
|
||||
ctx = context;
|
||||
return const SizedBox();
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
c.tokens = ClideTheme.of(ctx).surface;
|
||||
await body(ctx);
|
||||
}
|
||||
|
||||
testWidgets('renders highlighted spans as styled TextSpan children', (tester) async {
|
||||
final c = SyntaxTextController(
|
||||
syntax: _FakeSyntax(const [
|
||||
SyntaxSpan(start: 0, end: 5, role: 'keyword'), // "class"
|
||||
SyntaxSpan(start: 6, end: 9, role: 'type'), // "Foo"
|
||||
]));
|
||||
syntax: _FakeSyntax(const [
|
||||
SyntaxSpan(start: 0, end: 5, role: 'keyword'), // "class"
|
||||
SyntaxSpan(start: 6, end: 9, role: 'type'), // "Foo"
|
||||
]),
|
||||
);
|
||||
await withController(tester, c, (ctx) async {
|
||||
c.text = 'class Foo {}';
|
||||
c.updatePath('a.dart');
|
||||
@@ -76,9 +80,10 @@ void main() {
|
||||
// '😀' is a surrogate pair (4 UTF-8 bytes). A span after it must
|
||||
// still land on the right character offset.
|
||||
final c = SyntaxTextController(
|
||||
syntax: _FakeSyntax(const [
|
||||
SyntaxSpan(start: 5, end: 8, role: 'type'), // "Foo" after "😀 "
|
||||
]));
|
||||
syntax: _FakeSyntax(const [
|
||||
SyntaxSpan(start: 5, end: 8, role: 'type'), // "Foo" after "😀 "
|
||||
]),
|
||||
);
|
||||
await withController(tester, c, (ctx) async {
|
||||
c.text = '😀 Foo';
|
||||
c.updatePath('a.dart');
|
||||
|
||||
Reference in New Issue
Block a user