| Index: pkg/kernel/lib/analyzer/ast_from_analyzer.dart
|
| diff --git a/pkg/kernel/lib/analyzer/ast_from_analyzer.dart b/pkg/kernel/lib/analyzer/ast_from_analyzer.dart
|
| index caece790dd1000e80cf9d058c069d893a67a65a1..20afc526ecc59de058ebc45e43ad9e727a8ca178 100644
|
| --- a/pkg/kernel/lib/analyzer/ast_from_analyzer.dart
|
| +++ b/pkg/kernel/lib/analyzer/ast_from_analyzer.dart
|
| @@ -12,6 +12,7 @@ import '../transformations/flags.dart';
|
| import 'analyzer.dart';
|
| import 'loader.dart';
|
| import 'package:analyzer/analyzer.dart';
|
| +import 'package:analyzer/dart/ast/standard_resolution_map.dart';
|
| import 'package:analyzer/src/generated/parser.dart';
|
| import 'package:analyzer/src/dart/element/member.dart';
|
| import 'package:analyzer/src/error/codes.dart';
|
| @@ -541,7 +542,8 @@ class ExpressionScope extends TypeScope {
|
| initializer: parameter is DefaultFormalParameter
|
| ? buildOptionalTopLevelExpression(parameter.defaultValue)
|
| : null,
|
| - type: buildType(parameter.element.type));
|
| + type: buildType(
|
| + resolutionMap.elementDeclaredByFormalParameter(parameter).type));
|
| switch (parameter.kind) {
|
| case ParameterKind.REQUIRED:
|
| positional.add(declaration);
|
| @@ -2335,7 +2337,10 @@ class ClassBodyBuilder extends GeneralizingAstVisitor<Null> {
|
| bool _isIgnoredMember(ClassMember node) {
|
| return node is ConstructorDeclaration &&
|
| node.factoryKeyword != null &&
|
| - node.element.redirectedConstructor != null;
|
| + resolutionMap
|
| + .elementDeclaredByConstructorDeclaration(node)
|
| + .redirectedConstructor !=
|
| + null;
|
| }
|
|
|
| visitClassDeclaration(ClassDeclaration node) {
|
| @@ -2610,7 +2615,9 @@ class MemberBodyBuilder extends GeneralizingAstVisitor<Null> {
|
| hasExplicitConstructorCall = true;
|
| }
|
| }
|
| - ClassElement classElement = node.element.enclosingElement;
|
| + ClassElement classElement = resolutionMap
|
| + .elementDeclaredByConstructorDeclaration(node)
|
| + .enclosingElement;
|
| if (classElement.supertype != null && !hasExplicitConstructorCall) {
|
| ConstructorElement targetElement =
|
| scope.findDefaultConstructor(classElement.supertype.element);
|
| @@ -2628,7 +2635,9 @@ class MemberBodyBuilder extends GeneralizingAstVisitor<Null> {
|
| void buildFactoryConstructor(ConstructorDeclaration node) {
|
| addAnnotations(node.metadata);
|
| ast.Procedure procedure = currentMember;
|
| - ClassElement classElement = node.element.enclosingElement;
|
| + ClassElement classElement = resolutionMap
|
| + .elementDeclaredByConstructorDeclaration(node)
|
| + .enclosingElement;
|
| ast.Class classNode = procedure.enclosingClass;
|
| var types = getFreshTypeParameters(classNode.typeParameters);
|
| for (int i = 0; i < classElement.typeParameters.length; ++i) {
|
| @@ -2643,7 +2652,10 @@ class MemberBodyBuilder extends GeneralizingAstVisitor<Null> {
|
| handleNativeBody(node.body);
|
| if (node.redirectedConstructor != null) {
|
| // Redirecting factories with resolved targets don't show up here.
|
| - assert(node.element.redirectedConstructor == null);
|
| + assert(resolutionMap
|
| + .elementDeclaredByConstructorDeclaration(node)
|
| + .redirectedConstructor ==
|
| + null);
|
| var function = procedure.function;
|
| var name = node.redirectedConstructor.type.name.name;
|
| if (node.redirectedConstructor.name != null) {
|
| @@ -2662,7 +2674,8 @@ class MemberBodyBuilder extends GeneralizingAstVisitor<Null> {
|
| ast.Procedure procedure = currentMember;
|
| procedure.function = scope.buildFunctionNode(node.parameters, node.body,
|
| returnType: node.returnType,
|
| - inferredReturnType: scope.buildType(node.element.returnType),
|
| + inferredReturnType: scope.buildType(
|
| + resolutionMap.elementDeclaredByMethodDeclaration(node).returnType),
|
| typeParameters:
|
| scope.buildOptionalTypeParameterList(node.typeParameters))
|
| ..parent = procedure;
|
| @@ -2672,7 +2685,8 @@ class MemberBodyBuilder extends GeneralizingAstVisitor<Null> {
|
| visitVariableDeclaration(VariableDeclaration node) {
|
| addAnnotations(node.metadata);
|
| ast.Field field = currentMember;
|
| - field.type = scope.buildType(node.element.type);
|
| + field.type = scope.buildType(
|
| + resolutionMap.elementDeclaredByVariableDeclaration(node).type);
|
| if (node.initializer != null) {
|
| field.initializer = scope.buildTopLevelExpression(node.initializer)
|
| ..parent = field;
|
|
|