| 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 f9c64f6d1420db1be25253395bc0f1c416bd7ff2..34a579a5ba824ad78f2075eecbeeebeb8d4f511d 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
|
| EntityRefBuilder serializeConstructorName(ConstructorName constructor) {
|
| @@ -390,8 +401,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();
|
| }
|
| @@ -695,6 +708,16 @@ class _SummarizeAstVisitor extends SimpleAstVisitor {
|
| b.isConst = node.constKeyword != null;
|
| b.isExternal = node.externalKeyword != null;
|
| b.documentationComment = serializeDocumentation(node.documentationComment);
|
| + 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);
|
| }
|
|
|
|
|