Skip to content

Commit 380696f

Browse files
scheglovcommit-bot@chromium.org
authored andcommitted
Set element/type for some resynthesized expressions.
[email protected] Change-Id: I4a3d809fedac9eeb17eb996f8206a946201d6da8 Reviewed-on: https://dart-review.googlesource.com/68260 Reviewed-by: Brian Wilkerson <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent 4ab8408 commit 380696f

File tree

3 files changed

+38
-52
lines changed

3 files changed

+38
-52
lines changed

pkg/analyzer/lib/src/kernel/resynthesize.dart

Lines changed: 38 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import 'package:analyzer/src/dart/element/member.dart';
1515
import 'package:analyzer/src/dart/element/type.dart';
1616
import 'package:analyzer/src/dart/resolver/scope.dart';
1717
import 'package:analyzer/src/generated/engine.dart' show AnalysisContext;
18+
import 'package:analyzer/src/generated/resolver.dart' show TypeProvider;
1819
import 'package:analyzer/src/generated/testing/ast_test_factory.dart';
1920
import 'package:analyzer/src/summary/summary_sdk.dart';
2021
import '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);

pkg/analyzer/test/generated/hint_code_kernel_test.dart

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,6 @@ class HintCodeTest_Kernel extends HintCodeTest_Driver {
5353
return super.test_deprecatedAnnotationUse_call();
5454
}
5555

56-
@failingTest
57-
@override
58-
test_deprecatedAnnotationUse_Deprecated() async {
59-
return super.test_deprecatedAnnotationUse_Deprecated();
60-
}
61-
6256
@failingTest
6357
@override
6458
test_deprecatedAnnotationUse_positional() async {
@@ -173,24 +167,6 @@ class HintCodeTest_Kernel extends HintCodeTest_Driver {
173167
return super.test_mustCallSuper_indirect();
174168
}
175169

176-
@override
177-
@failingTest
178-
test_required_constructor_param() async {
179-
return super.test_required_constructor_param();
180-
}
181-
182-
@override
183-
@failingTest
184-
test_required_constructor_param_null_reason() async {
185-
return super.test_required_constructor_param_null_reason();
186-
}
187-
188-
@override
189-
@failingTest
190-
test_required_constructor_param_super_call() async {
191-
return super.test_required_constructor_param_super_call();
192-
}
193-
194170
@override
195171
@failingTest
196172
test_required_function_param() async {

pkg/analyzer/test/src/dart/analysis/driver_kernel_test.dart

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -72,25 +72,12 @@ class B {
7272
await driver.getResult(b);
7373
}
7474

75-
@failingTest
76-
@override
77-
test_const_annotation_withArgs() async {
78-
await super.test_const_annotation_withArgs();
79-
}
80-
8175
@failingTest
8276
@override
8377
test_const_externalConstFactory() async {
8478
await super.test_const_externalConstFactory();
8579
}
8680

87-
@failingTest
88-
@FastaProblem('https://github.com/dart-lang/sdk/issues/31555')
89-
@override
90-
test_const_implicitSuperConstructorInvocation() async {
91-
await super.test_const_implicitSuperConstructorInvocation();
92-
}
93-
9481
@override
9582
@failingTest
9683
@FastaProblem('https://github.com/dart-lang/sdk/issues/33719')

0 commit comments

Comments
 (0)