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

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

Issue 1678753002: Summarize constructor initializers. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Updates for review comments. Created 4 years, 10 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 14190950df5cd5debe89f9de7ccf23944a35ff3a..95728c5d1569b0b3030382b5712db1ba5848f508 100644
--- a/pkg/analyzer/lib/src/summary/summarize_ast.dart
+++ b/pkg/analyzer/lib/src/summary/summarize_ast.dart
@@ -27,7 +27,18 @@ UnlinkedUnitBuilder serializeAstUnlinked(CompilationUnit compilationUnit) {
class _ConstExprSerializer extends AbstractConstExprSerializer {
final _SummarizeAstVisitor visitor;
- _ConstExprSerializer(this.visitor);
+ /**
+ * If a constructor initializer expression is being serialized, the names of
+ * the constructor parameters. Otherwise `null`.
+ */
+ final Set<String> constructorParameterNames;
+
+ _ConstExprSerializer(this.visitor, this.constructorParameterNames);
+
+ @override
+ bool isConstructorParameterName(String name) {
+ return constructorParameterNames?.contains(name) ?? false;
+ }
@override
void serializeAnnotation(Annotation annotation) {
@@ -322,7 +333,7 @@ class _SummarizeAstVisitor extends SimpleAstVisitor {
return const <UnlinkedConstBuilder>[];
}
return annotations.map((Annotation a) {
- _ConstExprSerializer serializer = new _ConstExprSerializer(this);
+ _ConstExprSerializer serializer = new _ConstExprSerializer(this, null);
serializer.serializeAnnotation(a);
return serializer.toBuilder();
}).toList();
@@ -436,8 +447,10 @@ class _SummarizeAstVisitor extends SimpleAstVisitor {
/**
* Serialize the given [expression], creating an [UnlinkedConstBuilder].
*/
- UnlinkedConstBuilder serializeConstExpr(Expression expression) {
- _ConstExprSerializer serializer = new _ConstExprSerializer(this);
+ UnlinkedConstBuilder serializeConstExpr(Expression expression,
+ [Set<String> constructorParameterNames]) {
+ _ConstExprSerializer serializer =
+ new _ConstExprSerializer(this, constructorParameterNames);
serializer.serialize(expression);
return serializer.toBuilder();
}
@@ -752,6 +765,16 @@ class _SummarizeAstVisitor extends SimpleAstVisitor {
b.isExternal = node.externalKeyword != null;
b.documentationComment = serializeDocumentation(node.documentationComment);
b.annotations = serializeAnnotations(node.metadata);
+ 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(expr, constructorParameterNames);
+ }))
+ .toList();
+ }
executables.add(b);
}
« no previous file with comments | « pkg/analyzer/lib/src/summary/resynthesize.dart ('k') | pkg/analyzer/lib/src/summary/summarize_const_expr.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698