@@ -15,6 +15,7 @@ import 'package:analyzer/src/dart/element/member.dart';
1515import 'package:analyzer/src/dart/element/type.dart' ;
1616import 'package:analyzer/src/dart/resolver/scope.dart' ;
1717import 'package:analyzer/src/generated/engine.dart' show AnalysisContext;
18+ import 'package:analyzer/src/generated/resolver.dart' show TypeProvider;
1819import 'package:analyzer/src/generated/testing/ast_test_factory.dart' ;
1920import 'package:analyzer/src/summary/summary_sdk.dart' ;
2021import 'package:front_end/src/base/resolve_relative_uri.dart' ;
@@ -437,6 +438,9 @@ class _ExprBuilder {
437438
438439 _ExprBuilder (this ._context, this ._contextElement);
439440
441+ TypeProvider get typeProvider =>
442+ _context.libraryContext.resynthesizer._typeProvider;
443+
440444 Expression build (kernel.Expression expr) {
441445 if (_hasInvalidExpression (expr)) {
442446 return AstTestFactory .identifier3 ('#invalidConst' );
@@ -536,15 +540,17 @@ class _ExprBuilder {
536540
537541 if (expr is kernel.ListLiteral ) {
538542 Keyword keyword = expr.isConst ? Keyword .CONST : null ;
539- var typeArguments = _buildTypeArgumentList ([expr.typeArgument]);
543+ var typeArguments = _getTypes ([expr.typeArgument]);
544+ var typeArgumentNodes = _buildTypeArgumentList (typeArguments);
540545 var elements = expr.expressions.map (_build).toList ();
541- return AstTestFactory .listLiteral2 (keyword, typeArguments, elements);
546+ return AstTestFactory .listLiteral2 (keyword, typeArgumentNodes, elements)
547+ ..staticType = typeProvider.listType.instantiate (typeArguments);
542548 }
543549
544550 if (expr is kernel.MapLiteral ) {
545551 Keyword keyword = expr.isConst ? Keyword .CONST : null ;
546- var typeArguments =
547- _buildTypeArgumentList ([expr.keyType, expr.valueType] );
552+ var typeArguments = _getTypes ([expr.keyType, expr.valueType]);
553+ var typeArgumentNodes = _buildTypeArgumentList (typeArguments );
548554
549555 int numberOfEntries = expr.entries.length;
550556 var entries = new List <MapLiteralEntry >(numberOfEntries);
@@ -555,7 +561,7 @@ class _ExprBuilder {
555561 entries[i] = AstTestFactory .mapLiteralEntry2 (key, value);
556562 }
557563
558- return AstTestFactory .mapLiteral (keyword, typeArguments , entries);
564+ return AstTestFactory .mapLiteral (keyword, typeArgumentNodes , entries);
559565 }
560566
561567 if (expr is kernel.StaticGet ) {
@@ -661,12 +667,12 @@ class _ExprBuilder {
661667 }
662668
663669 if (expr is kernel.ConstructorInvocation ) {
664- var element = _getElement (expr.targetReference);
670+ ConstructorElementImpl element = _getElement (expr.targetReference);
665671
666672 // It's safe to pass null for the TypeEnvironment because it isn't
667673 // needed to compute the type of a constructor invocation.
668674 var kernelType = expr.getStaticType (null );
669- var type = _context. getType (_contextElement, kernelType);
675+ var type = _getType ( kernelType);
670676 TypeName typeName = _buildType (type);
671677
672678 var constructorName = AstTestFactory .constructorName (
@@ -675,8 +681,11 @@ class _ExprBuilder {
675681
676682 var keyword = expr.isConst ? Keyword .CONST : Keyword .NEW ;
677683 var arguments = _toArguments (expr.arguments);
678- return AstTestFactory .instanceCreationExpression (
684+ var creation = AstTestFactory .instanceCreationExpression (
679685 keyword, constructorName, arguments);
686+ creation.staticElement = element;
687+ creation.staticType = type;
688+ return creation;
680689 }
681690
682691 if (expr is kernel.Instantiation ) {
@@ -689,7 +698,7 @@ class _ExprBuilder {
689698 if (kernelType is kernel.FunctionType ) {
690699 element = _getElement (kernelType.typedefReference);
691700 } else {
692- var type = _context. getType (_contextElement, kernelType);
701+ var type = _getType ( kernelType);
693702 element = type.element;
694703 }
695704 var identifier = AstTestFactory .identifier3 (element.name);
@@ -739,15 +748,15 @@ class _ExprBuilder {
739748 return node;
740749 }
741750
742- TypeArgumentList _buildTypeArgumentList (List <kernel. DartType > kernels ) {
743- int length = kernels .length;
744- var types = new List <TypeAnnotation >(length);
751+ TypeArgumentList _buildTypeArgumentList (List <DartType > types ) {
752+ int length = types .length;
753+ var typeAnnotations = new List <TypeAnnotation >(length);
745754 for (int i = 0 ; i < length; i++ ) {
746- DartType type = _context. getType (_contextElement, kernels [i]) ;
755+ DartType type = types [i];
747756 TypeAnnotation typeAnnotation = _buildType (type);
748- types [i] = typeAnnotation;
757+ typeAnnotations [i] = typeAnnotation;
749758 }
750- return AstTestFactory .typeArgumentList (types );
759+ return AstTestFactory .typeArgumentList (typeAnnotations );
751760 }
752761
753762 List <TypeAnnotation > _buildTypeArguments (List <DartType > types) {
@@ -760,6 +769,20 @@ class _ExprBuilder {
760769 .getElementFromCanonicalName (reference? .canonicalName);
761770 }
762771
772+ DartType _getType (kernel.DartType kernel) {
773+ return _context.getType (_contextElement, kernel);
774+ }
775+
776+ List <DartType > _getTypes (List <kernel.DartType > kernels) {
777+ int length = kernels.length;
778+ var types = new List <DartType >(length);
779+ for (int i = 0 ; i < length; i++ ) {
780+ DartType type = _getType (kernels[i]);
781+ types[i] = type;
782+ }
783+ return types;
784+ }
785+
763786 InterpolationElement _newInterpolationElement (Expression expr) {
764787 if (expr is SimpleStringLiteral ) {
765788 return astFactory.interpolationString (expr.literal, expr.value);
0 commit comments