Support newInstanceNamed with empty name (#1194)

Co-authored-by: Moritz <mosum@google.com>
diff --git a/pkgs/code_builder/CHANGELOG.md b/pkgs/code_builder/CHANGELOG.md
index 471f72f..1d86e5c 100644
--- a/pkgs/code_builder/CHANGELOG.md
+++ b/pkgs/code_builder/CHANGELOG.md
@@ -2,6 +2,7 @@
 
 * 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
 
 ## 4.10.1
 
diff --git a/pkgs/code_builder/lib/src/specs/expression.dart b/pkgs/code_builder/lib/src/specs/expression.dart
index b9193e6..aa06de2 100644
--- a/pkgs/code_builder/lib/src/specs/expression.dart
+++ b/pkgs/code_builder/lib/src/specs/expression.dart
@@ -578,10 +578,10 @@
     final out = output ??= StringBuffer();
     return _writeConstExpression(out, expression.isConst, () {
       expression.target.accept(this, out);
-      if (expression.name != null) {
+      if (expression.name case final name? when name.isNotEmpty) {
         out
           ..write('.')
-          ..write(expression.name);
+          ..write(name);
       }
       if (expression.typeArguments.isNotEmpty) {
         out.write('<');
diff --git a/pkgs/code_builder/test/specs/code/expression_test.dart b/pkgs/code_builder/test/specs/code/expression_test.dart
index 4ce9eba..7a424fd 100644
--- a/pkgs/code_builder/test/specs/code/expression_test.dart
+++ b/pkgs/code_builder/test/specs/code/expression_test.dart
@@ -251,6 +251,13 @@
     );
   });
 
+  test('should emit invoking unnamed constructor when name is empty', () {
+    expect(
+      refer('Foo').newInstanceNamed('', []),
+      equalsDart('Foo()'),
+    );
+  });
+
   test('should emit invoking const Type()', () {
     expect(
       refer('Object').constInstance([]),