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..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.write(';'); - } - 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.write(';'); - } - 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.write(';'); - } - out.writeln(); - } + _visitMethods(spec.methods, out); out.writeln(' }'); return out; } 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';