Index: pkg/analyzer/lib/src/summary/summarize_ast.dart |
diff --git a/pkg/analyzer/lib/src/summary/summarize_ast.dart b/pkg/analyzer/lib/src/summary/summarize_ast.dart |
index 646eed89bbb07a13773bb02c7fad1e11fab781ce..b81fe880eae2a20c4dc997f82c030105c9f29571 100644 |
--- a/pkg/analyzer/lib/src/summary/summarize_ast.dart |
+++ b/pkg/analyzer/lib/src/summary/summarize_ast.dart |
@@ -624,7 +624,8 @@ class _SummarizeAstVisitor extends RecursiveAstVisitor { |
NodeList<Annotation> annotations, |
TypeParameterList typeParameters, |
bool isExternal, |
- bool serializeBodyExpr) { |
+ bool serializeBodyExpr, |
+ bool serializeBody) { |
int oldScopesLength = scopes.length; |
_TypeParameterScope typeParameterScope = new _TypeParameterScope(); |
scopes.add(typeParameterScope); |
@@ -682,7 +683,7 @@ class _SummarizeAstVisitor extends RecursiveAstVisitor { |
_parameterNames.addAll(formalParameters.parameters |
.map((FormalParameter p) => p.identifier.name)); |
} |
- serializeFunctionBody(b, null, body, serializeBodyExpr); |
+ serializeFunctionBody(b, null, body, serializeBodyExpr, serializeBody); |
_parameterNames = oldParameterNames; |
scopes.removeLast(); |
assert(scopes.length == oldScopesLength); |
@@ -709,7 +710,8 @@ class _SummarizeAstVisitor extends RecursiveAstVisitor { |
UnlinkedExecutableBuilder b, |
List<ConstructorInitializer> initializers, |
AstNode body, |
- bool serializeBodyExpr) { |
+ bool serializeBodyExpr, |
+ bool serializeBody) { |
if (body is BlockFunctionBody || body is ExpressionFunctionBody) { |
for (UnlinkedParamBuilder parameter in b.parameters) { |
parameter.visibleOffset = body.offset; |
@@ -731,7 +733,9 @@ class _SummarizeAstVisitor extends RecursiveAstVisitor { |
initializer.accept(this); |
} |
} |
- body.accept(this); |
+ if (serializeBody) { |
+ body.accept(this); |
+ } |
if (serializeBodyExpr) { |
if (body is Expression) { |
b.bodyExpr = |
@@ -787,7 +791,8 @@ class _SummarizeAstVisitor extends RecursiveAstVisitor { |
} |
UnlinkedExecutableBuilder initializer = |
new UnlinkedExecutableBuilder(nameOffset: expression.offset); |
- serializeFunctionBody(initializer, null, expression, serializeBodyExpr); |
+ serializeFunctionBody( |
+ initializer, null, expression, serializeBodyExpr, true); |
initializer.inferredReturnTypeSlot = assignSlot(); |
return initializer; |
} |
@@ -1096,7 +1101,7 @@ class _SummarizeAstVisitor extends RecursiveAstVisitor { |
b.annotations = serializeAnnotations(node.metadata); |
b.codeRange = serializeCodeRange(node); |
Map<int, int> localClosureIndexMap = serializeFunctionBody( |
- b, node.initializers, node.body, node.constKeyword != null); |
+ b, node.initializers, node.body, node.constKeyword != null, false); |
if (node.constKeyword != null) { |
Set<String> constructorParameterNames = |
node.parameters.parameters.map((p) => p.identifier.name).toSet(); |
@@ -1214,7 +1219,8 @@ class _SummarizeAstVisitor extends RecursiveAstVisitor { |
node.metadata, |
node.functionExpression.typeParameters, |
node.externalKeyword != null, |
- false)); |
+ false, |
+ node.parent is FunctionDeclarationStatement)); |
} |
@override |
@@ -1238,7 +1244,8 @@ class _SummarizeAstVisitor extends RecursiveAstVisitor { |
null, |
node.typeParameters, |
false, |
- _serializeClosureBodyExprs)); |
+ _serializeClosureBodyExprs, |
+ true)); |
} |
} |
@@ -1339,6 +1346,7 @@ class _SummarizeAstVisitor extends RecursiveAstVisitor { |
node.metadata, |
node.typeParameters, |
node.externalKeyword != null, |
+ false, |
false)); |
} |