diff --git a/pkg/analyzer/lib/src/summary2/ast_binary_flags.dart b/pkg/analyzer/lib/src/summary2/ast_binary_flags.dart
index 5f973e1..95a829f 100644
--- a/pkg/analyzer/lib/src/summary2/ast_binary_flags.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_binary_flags.dart
@@ -24,6 +24,11 @@
     VariableDeclaration,
   );
 
+  static final _hasName = _checkBit(
+    5,
+    ConstructorDeclaration,
+  );
+
   static final _hasNot = _checkBit(
     0,
     IsExpression,
@@ -217,6 +222,7 @@
     bool hasAwait: false,
     bool hasEqual: false,
     bool hasInitializer: false,
+    bool hasName: false,
     bool hasNot: false,
     bool hasPeriod: false,
     bool hasPeriod2: false,
@@ -260,6 +266,9 @@
     if (hasInitializer) {
       result |= _hasInitializer;
     }
+    if (hasName) {
+      result |= _hasName;
+    }
     if (hasNot) {
       result |= _hasNot;
     }
@@ -371,6 +380,10 @@
     return (flags & _hasInitializer) != 0;
   }
 
+  static bool hasName(int flags) {
+    return (flags & _hasName) != 0;
+  }
+
   static bool hasNot(int flags) {
     return (flags & _hasNot) != 0;
   }
diff --git a/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart b/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
index 4121ee3..46f9ec4 100644
--- a/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_binary_reader.dart
@@ -384,6 +384,16 @@
     returnType.token.offset =
         informativeData?.constructorDeclaration_returnTypeOffset ?? 0;
 
+    Token periodToken;
+    SimpleIdentifier nameIdentifier;
+    if (AstBinaryFlags.hasName(data.flags)) {
+      periodToken = Token(
+        TokenType.PERIOD,
+        informativeData?.constructorDeclaration_periodOffset ?? 0,
+      );
+      nameIdentifier = _declaredIdentifier(data);
+    }
+
     var node = astFactory.constructorDeclaration(
       _readDocumentationComment(data),
       _readNodeListLazy(data.annotatedNode_metadata),
@@ -391,13 +401,8 @@
       AstBinaryFlags.isConst(data.flags) ? _Tokens.CONST : null,
       AstBinaryFlags.isFactory(data.flags) ? _Tokens.FACTORY : null,
       returnType,
-      data.name.isNotEmpty
-          ? Token(
-              TokenType.PERIOD,
-              informativeData?.constructorDeclaration_periodOffset ?? 0,
-            )
-          : null,
-      data.name.isNotEmpty ? _declaredIdentifier(data) : null,
+      periodToken,
+      nameIdentifier,
       _readNodeLazy(data.constructorDeclaration_parameters),
       _Tokens.choose(
         AstBinaryFlags.hasSeparatorColon(data.flags),
diff --git a/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart b/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart
index 5d3ce26..3e362e7 100644
--- a/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart
+++ b/pkg/analyzer/lib/src/summary2/ast_binary_writer.dart
@@ -315,6 +315,7 @@
       informativeId: getInformativeId(node),
     );
     builder.flags = AstBinaryFlags.encode(
+      hasName: node.name != null,
       hasSeparatorColon: node.separator?.type == TokenType.COLON,
       hasSeparatorEquals: node.separator?.type == TokenType.EQ,
       isAbstract: node.body is EmptyFunctionBody,
diff --git a/pkg/analyzer/test/generated/invalid_code_test.dart b/pkg/analyzer/test/generated/invalid_code_test.dart
index 73fb3ef..6b501b9 100644
--- a/pkg/analyzer/test/generated/invalid_code_test.dart
+++ b/pkg/analyzer/test/generated/invalid_code_test.dart
@@ -32,6 +32,22 @@
 ''');
   }
 
+  test_constructorDeclaration_named_missingName() async {
+    await _assertCanBeAnalyzed('''
+class C {
+  C.();
+}
+''');
+  }
+
+  test_constructorDeclaration_named_missingName_factory() async {
+    await _assertCanBeAnalyzed('''
+class C {
+  factory C.();
+}
+''');
+  }
+
   test_genericFunction_asTypeArgument_ofUnresolvedClass() async {
     await _assertCanBeAnalyzed(r'''
 C<int Function()> c;
