From af5b1d40e3443c22aa0c96826eadebdd4badcae3 Mon Sep 17 00:00:00 2001 From: Nate Bosch Date: Thu, 14 Aug 2025 21:50:37 +0000 Subject: [PATCH 1/3] Consistent blank after => members in class-likes The `class` emitter already used `writeln` following a `=>` method to include blank lines between members. Make this consistent for enums, extensions, and mixins. Sort changelog with user-facing changes at the top. --- pkgs/code_builder/CHANGELOG.md | 6 ++++-- pkgs/code_builder/lib/src/emitter.dart | 6 +++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/pkgs/code_builder/CHANGELOG.md b/pkgs/code_builder/CHANGELOG.md index f8459a322..893d23f50 100644 --- a/pkgs/code_builder/CHANGELOG.md +++ b/pkgs/code_builder/CHANGELOG.md @@ -1,9 +1,11 @@ ## 4.10.2-wip +* Support `Expression.newInstanceNamed` with empty name +* Consistently add blank lines between `=>` in class-like definitions. +* Fixed bug: Fields declared with `static` and `external` now produce code with + correct order * Upgrade `dart_style` and `source_gen` to remove `package:macros` dependency. * Require Dart `^3.6.0` due to the upgrades. -* Support `Expression.newInstanceNamed` with empty name -* Fixed bug: Fields declared with `static` and `external` now produce code with correct order ## 4.10.1 diff --git a/pkgs/code_builder/lib/src/emitter.dart b/pkgs/code_builder/lib/src/emitter.dart index 64e2aa46c..9d01130b2 100644 --- a/pkgs/code_builder/lib/src/emitter.dart +++ b/pkgs/code_builder/lib/src/emitter.dart @@ -204,7 +204,7 @@ class DartEmitter extends Object for (var m in spec.methods) { visitMethod(m, out); if (_isLambdaMethod(m)) { - out.write(';'); + out.writeln(';'); } out.writeln(); } @@ -329,7 +329,7 @@ class DartEmitter extends Object for (var m in spec.methods) { visitMethod(m, out); if (_isLambdaMethod(m)) { - out.write(';'); + out.writeln(';'); } out.writeln(); } @@ -910,7 +910,7 @@ class DartEmitter extends Object for (var m in spec.methods) { visitMethod(m, out); if (_isLambdaMethod(m)) { - out.write(';'); + out.writeln(';'); } out.writeln(); } From fdbd2e0dda182ab04258abb732e08e7ef34a565a Mon Sep 17 00:00:00 2001 From: Nate Bosch Date: Thu, 14 Aug 2025 21:57:56 +0000 Subject: [PATCH 2/3] Extract a _visitMethods method Was going to hold off on refactors in favor of cleaning up the whole library in the future - but no reason not to clean up the bits we're editing. --- pkgs/code_builder/lib/src/emitter.dart | 50 ++++++++------------------ 1 file changed, 15 insertions(+), 35 deletions(-) diff --git a/pkgs/code_builder/lib/src/emitter.dart b/pkgs/code_builder/lib/src/emitter.dart index 9d01130b2..5d94eb929 100644 --- a/pkgs/code_builder/lib/src/emitter.dart +++ b/pkgs/code_builder/lib/src/emitter.dart @@ -162,13 +162,7 @@ class DartEmitter extends Object visitField(f, out); out.writeln(); } - for (var m in spec.methods) { - visitMethod(m, out); - if (_isLambdaMethod(m)) { - out.writeln(';'); - } - out.writeln(); - } + _visitMethods(spec.methods, out); out.writeln(' }'); return out; } @@ -201,13 +195,7 @@ class DartEmitter extends Object visitField(f, out); out.writeln(); } - for (var m in spec.methods) { - visitMethod(m, out); - if (_isLambdaMethod(m)) { - out.writeln(';'); - } - out.writeln(); - } + _visitMethods(spec.methods, out); out.write(' }'); return out; } @@ -326,13 +314,7 @@ class DartEmitter extends Object visitField(f, out); out.writeln(); } - for (var m in spec.methods) { - visitMethod(m, out); - if (_isLambdaMethod(m)) { - out.writeln(';'); - } - out.writeln(); - } + _visitMethods(spec.methods, out); out.writeln(' }'); return out; } @@ -372,13 +354,7 @@ class DartEmitter extends Object visitField(f, out); out.writeln(); } - for (var m in spec.methods) { - visitMethod(m, out); - if (_isLambdaMethod(m)) { - out.writeln(';'); - } - out.writeln(); - } + _visitMethods(spec.methods, out); out.writeln('}'); return out; } @@ -800,6 +776,16 @@ class DartEmitter extends Object } } + void _visitMethods(Iterable methods, StringSink out) { + for (final m in methods) { + visitMethod(m, out); + if (_isLambdaMethod(m)) { + out.writeln(';'); + } + out.writeln(); + } + } + @override StringSink visitReference(Reference spec, [StringSink? output]) => (output ??= StringBuffer())..write(allocator.allocate(spec)); @@ -907,13 +893,7 @@ class DartEmitter extends Object visitField(f, out); out.writeln(); } - for (var m in spec.methods) { - visitMethod(m, out); - if (_isLambdaMethod(m)) { - out.writeln(';'); - } - out.writeln(); - } + _visitMethods(spec.methods, out); out.writeln(' }'); return out; } From a8dad21246a748daac9e531bdc808495f9ed43a9 Mon Sep 17 00:00:00 2001 From: Nate Bosch Date: Thu, 14 Aug 2025 22:00:26 +0000 Subject: [PATCH 3/3] Fix enum test --- pkgs/code_builder/test/specs/enum_test.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/code_builder/test/specs/enum_test.dart b/pkgs/code_builder/test/specs/enum_test.dart index 5a0b19a27..3a8238a52 100644 --- a/pkgs/code_builder/test/specs/enum_test.dart +++ b/pkgs/code_builder/test/specs/enum_test.dart @@ -373,6 +373,7 @@ void main() { c; int get myInt => 123; + Iterable myStrings() sync* { yield 'a'; yield 'b';