Index: pkg/analyzer/lib/src/dart/constant/utilities.dart |
diff --git a/pkg/analyzer/lib/src/dart/constant/utilities.dart b/pkg/analyzer/lib/src/dart/constant/utilities.dart |
index d9ef263205735bf66a475e1d707682475e5572f3..b097c0eb9d160776f0be6f92bac2d53659612072 100644 |
--- a/pkg/analyzer/lib/src/dart/constant/utilities.dart |
+++ b/pkg/analyzer/lib/src/dart/constant/utilities.dart |
@@ -7,6 +7,7 @@ library analyzer.src.dart.constant.utilities; |
import 'dart:collection'; |
import 'package:analyzer/dart/ast/ast.dart'; |
+import 'package:analyzer/dart/ast/standard_resolution_map.dart'; |
import 'package:analyzer/dart/ast/visitor.dart'; |
import 'package:analyzer/dart/element/element.dart'; |
import 'package:analyzer/src/dart/ast/utilities.dart'; |
@@ -39,13 +40,6 @@ class ConstantAstCloner extends AstCloner { |
ConstantAstCloner() : super(true); |
@override |
- ConstructorName visitConstructorName(ConstructorName node) { |
- ConstructorName name = super.visitConstructorName(node); |
- name.staticElement = node.staticElement; |
- return name; |
- } |
- |
- @override |
Annotation visitAnnotation(Annotation node) { |
Annotation annotation = super.visitAnnotation(node); |
annotation.element = node.element; |
@@ -53,6 +47,13 @@ class ConstantAstCloner extends AstCloner { |
} |
@override |
+ ConstructorName visitConstructorName(ConstructorName node) { |
+ ConstructorName name = super.visitConstructorName(node); |
+ name.staticElement = node.staticElement; |
+ return name; |
+ } |
+ |
+ @override |
FunctionExpression visitFunctionExpression(FunctionExpression node) { |
FunctionExpression expression = super.visitFunctionExpression(node); |
expression.element = node.element; |
@@ -191,7 +192,10 @@ class ConstantFinder extends RecursiveAstVisitor<Object> { |
@override |
Object visitClassDeclaration(ClassDeclaration node) { |
bool prevTreatFinalInstanceVarAsConst = treatFinalInstanceVarAsConst; |
- if (node.element.constructors.any((ConstructorElement e) => e.isConst)) { |
+ if (resolutionMap |
+ .elementDeclaredByClassDeclaration(node) |
+ .constructors |
+ .any((ConstructorElement e) => e.isConst)) { |
// Instance vars marked "final" need to be included in the dependency |
// graph, since constant constructors implicitly use the values in their |
// initializers. |
@@ -222,7 +226,8 @@ class ConstantFinder extends RecursiveAstVisitor<Object> { |
super.visitDefaultFormalParameter(node); |
Expression defaultValue = node.defaultValue; |
if (defaultValue != null && node.element != null) { |
- constantsToCompute.add(node.element); |
+ constantsToCompute |
+ .add(resolutionMap.elementDeclaredByFormalParameter(node)); |
} |
return null; |
} |