Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(76)

Unified Diff: pkg/analyzer/lib/src/summary/summarize_ast.dart

Issue 2779993002: Store literal values and invocations arguments only for constants and untyped literals. (Closed)
Patch Set: Update IDL documentation. Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 321e9aa10bbec70655c19a433663c3fb31aa8538..36fda8bf5558699dacda38a28d35b093fdf7d74c 100644
--- a/pkg/analyzer/lib/src/summary/summarize_ast.dart
+++ b/pkg/analyzer/lib/src/summary/summarize_ast.dart
@@ -43,8 +43,9 @@ class _ConstExprSerializer extends AbstractConstExprSerializer {
*/
final Set<String> parameterNames;
- _ConstExprSerializer(
- this.visitor, this.localClosureIndexMap, this.parameterNames);
+ _ConstExprSerializer(bool forConst, this.visitor, this.localClosureIndexMap,
+ this.parameterNames)
+ : super(forConst);
@override
bool isParameterName(String name) {
@@ -413,7 +414,7 @@ class _SummarizeAstVisitor extends RecursiveAstVisitor {
// localClosureIndexMap.
Map<int, int> localClosureIndexMap = null;
_ConstExprSerializer serializer =
- new _ConstExprSerializer(this, localClosureIndexMap, null);
+ new _ConstExprSerializer(true, this, localClosureIndexMap, null);
try {
serializer.serializeAnnotation(a);
} on StateError {
@@ -549,10 +550,10 @@ class _SummarizeAstVisitor extends RecursiveAstVisitor {
* Serialize the given [expression], creating an [UnlinkedExprBuilder].
*/
UnlinkedExprBuilder serializeConstExpr(
- Map<int, int> localClosureIndexMap, Expression expression,
+ bool forConst, Map<int, int> localClosureIndexMap, Expression expression,
[Set<String> parameterNames]) {
- _ConstExprSerializer serializer =
- new _ConstExprSerializer(this, localClosureIndexMap, parameterNames);
+ _ConstExprSerializer serializer = new _ConstExprSerializer(
+ forConst, this, localClosureIndexMap, parameterNames);
serializer.serialize(expression);
return serializer.toBuilder();
}
@@ -692,7 +693,8 @@ class _SummarizeAstVisitor extends RecursiveAstVisitor {
_parameterNames.addAll(formalParameters.parameters
.map((FormalParameter p) => p.identifier.name));
}
- serializeFunctionBody(b, null, body, serializeBodyExpr, serializeBody);
+ serializeFunctionBody(
+ b, null, body, serializeBodyExpr, serializeBody, false);
_parameterNames = oldParameterNames;
scopes.removeLast();
assert(scopes.length == oldScopesLength);
@@ -720,7 +722,8 @@ class _SummarizeAstVisitor extends RecursiveAstVisitor {
List<ConstructorInitializer> initializers,
AstNode body,
bool serializeBodyExpr,
- bool serializeBody) {
+ bool serializeBody,
+ bool forConst) {
if (body is BlockFunctionBody || body is ExpressionFunctionBody) {
for (UnlinkedParamBuilder parameter in b.parameters) {
if (!parameter.isInitializingFormal) {
@@ -749,11 +752,11 @@ class _SummarizeAstVisitor extends RecursiveAstVisitor {
}
if (serializeBodyExpr) {
if (body is Expression) {
- b.bodyExpr =
- serializeConstExpr(_localClosureIndexMap, body, _parameterNames);
+ b.bodyExpr = serializeConstExpr(
+ forConst, _localClosureIndexMap, body, _parameterNames);
} else if (body is ExpressionFunctionBody) {
b.bodyExpr = serializeConstExpr(
- _localClosureIndexMap, body.expression, _parameterNames);
+ forConst, _localClosureIndexMap, body.expression, _parameterNames);
} else {
// TODO(paulberry): serialize other types of function bodies.
}
@@ -816,14 +819,14 @@ class _SummarizeAstVisitor extends RecursiveAstVisitor {
* in [UnlinkedExecutableBuilder.bodyExpr].
*/
UnlinkedExecutableBuilder serializeInitializerFunction(
- Expression expression, bool serializeBodyExpr) {
+ Expression expression, bool serializeBodyExpr, bool forConst) {
if (expression == null) {
return null;
}
UnlinkedExecutableBuilder initializer =
new UnlinkedExecutableBuilder(nameOffset: expression.offset);
serializeFunctionBody(
- initializer, null, expression, serializeBodyExpr, true);
+ initializer, null, expression, serializeBodyExpr, true, forConst);
initializer.inferredReturnTypeSlot = assignSlot();
return initializer;
}
@@ -1023,8 +1026,8 @@ class _SummarizeAstVisitor extends RecursiveAstVisitor {
bool serializeBodyExpr = variable.isConst ||
variable.isFinal && isField && !isDeclaredStatic ||
variables.type == null;
- b.initializer =
- serializeInitializerFunction(variable.initializer, serializeBodyExpr);
+ b.initializer = serializeInitializerFunction(
+ variable.initializer, serializeBodyExpr, b.isConst);
if (isField && !isDeclaredStatic && !variables.isFinal) {
b.inheritsCovariantSlot = assignSlot();
}
@@ -1126,7 +1129,7 @@ class _SummarizeAstVisitor extends RecursiveAstVisitor {
// don't need a localClosureIndexMap.
Map<int, int> localClosureIndexMap = null;
b.redirectedConstructor =
- new _ConstExprSerializer(this, localClosureIndexMap, null)
+ new _ConstExprSerializer(true, this, localClosureIndexMap, null)
.serializeConstructorRef(null, typeName.name,
typeName.typeArguments, node.redirectedConstructor.name);
}
@@ -1147,16 +1150,16 @@ class _SummarizeAstVisitor extends RecursiveAstVisitor {
b.documentationComment = serializeDocumentation(node.documentationComment);
b.annotations = serializeAnnotations(node.metadata);
b.codeRange = serializeCodeRange(node);
- Map<int, int> localClosureIndexMap = serializeFunctionBody(
- b, node.initializers, node.body, node.constKeyword != null, false);
+ Map<int, int> localClosureIndexMap = serializeFunctionBody(b,
+ node.initializers, node.body, node.constKeyword != null, false, false);
if (node.constKeyword != null) {
Set<String> constructorParameterNames =
node.parameters.parameters.map((p) => p.identifier.name).toSet();
b.constantInitializers = node.initializers
.map((ConstructorInitializer initializer) =>
serializeConstructorInitializer(initializer, (Expression expr) {
- return serializeConstExpr(
- localClosureIndexMap, expr, constructorParameterNames);
+ return serializeConstExpr(true, localClosureIndexMap, expr,
+ constructorParameterNames);
}))
.toList();
}
@@ -1168,7 +1171,7 @@ class _SummarizeAstVisitor extends RecursiveAstVisitor {
DefaultFormalParameter node) {
UnlinkedParamBuilder b =
node.parameter.accept(this) as UnlinkedParamBuilder;
- b.initializer = serializeInitializerFunction(node.defaultValue, true);
+ b.initializer = serializeInitializerFunction(node.defaultValue, true, true);
if (node.defaultValue != null) {
b.defaultValueCode = node.defaultValue.toSource();
}

Powered by Google App Engine
This is Rietveld 408576698