diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 26e8d2c..f5a4de1 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -7921,7 +7921,7 @@
   FunctionElement get initializer {
     if (_initializer == null) {
       if (linkedNode != null) {
-        if (linkedContext.readInitializer(linkedNode) != null) {
+        if (linkedContext.hasInitializer(linkedNode)) {
           _initializer = new FunctionElementImpl('', -1)
             ..isSynthetic = true
             .._type = FunctionTypeImpl.synthetic(type, [], []);
@@ -8244,7 +8244,7 @@
   FunctionElement get initializer {
     if (_initializer == null) {
       if (linkedNode != null) {
-        if (linkedContext.readInitializer(linkedNode) != null) {
+        if (linkedContext.hasDefaultValue(linkedNode)) {
           _initializer = new FunctionElementImpl('', -1)..isSynthetic = true;
         }
       }
diff --git a/pkg/analyzer/lib/src/summary2/lazy_ast.dart b/pkg/analyzer/lib/src/summary2/lazy_ast.dart
index b6b54c2..14aab50 100644
--- a/pkg/analyzer/lib/src/summary2/lazy_ast.dart
+++ b/pkg/analyzer/lib/src/summary2/lazy_ast.dart
@@ -784,6 +784,15 @@
     return LazyAst.getTypeInferenceError(node);
   }
 
+  static bool hasDefaultValue(DefaultFormalParameter node) {
+    var lazy = LazyFormalParameter.get(node);
+    if (lazy != null) {
+      return lazy.data.defaultFormalParameter_defaultValue != null;
+    } else {
+      return node.defaultValue != null;
+    }
+  }
+
   static void readDefaultValue(
     AstBinaryReader reader,
     DefaultFormalParameter node,
@@ -1754,6 +1763,15 @@
     return LazyAst.getTypeInferenceError(node);
   }
 
+  static bool hasInitializer(VariableDeclaration node) {
+    var lazy = get(node);
+    if (lazy != null) {
+      return lazy.data.variableDeclaration_initializer != null;
+    } else {
+      return node.initializer != null;
+    }
+  }
+
   static void readInitializer(
     AstBinaryReader reader,
     VariableDeclaration node,
diff --git a/pkg/analyzer/lib/src/summary2/linked_unit_context.dart b/pkg/analyzer/lib/src/summary2/linked_unit_context.dart
index 5890831..d37d6bd 100644
--- a/pkg/analyzer/lib/src/summary2/linked_unit_context.dart
+++ b/pkg/analyzer/lib/src/summary2/linked_unit_context.dart
@@ -703,6 +703,13 @@
     }
   }
 
+  bool hasDefaultValue(FormalParameter node) {
+    if (node is DefaultFormalParameter) {
+      return LazyFormalParameter.hasDefaultValue(node);
+    }
+    return false;
+  }
+
   bool hasImplicitReturnType(AstNode node) {
     if (node is FunctionDeclaration) {
       LazyFunctionDeclaration.readFunctionExpression(_astReader, node);
@@ -728,6 +735,10 @@
     return false;
   }
 
+  bool hasInitializer(VariableDeclaration node) {
+    return LazyVariableDeclaration.hasInitializer(node);
+  }
+
   bool hasOverrideInferenceDone(AstNode node) {
     // Only nodes in the libraries being linked might be not inferred yet.
     if (_astReader.isLazy) return true;
