| Index: pkg/analyzer/test/generated/resolver_test.dart
|
| diff --git a/pkg/analyzer/test/generated/resolver_test.dart b/pkg/analyzer/test/generated/resolver_test.dart
|
| index 8c24fb256d99410431aef9c02bee05fdbefdbdd9..1f1f2a57329554b16abec9aed6fbcc49fe4a746a 100644
|
| --- a/pkg/analyzer/test/generated/resolver_test.dart
|
| +++ b/pkg/analyzer/test/generated/resolver_test.dart
|
| @@ -201,8 +201,8 @@ class AnalysisContextFactory {
|
| 'onValue', futureThenR, [futureElement.typeParameters[0]], null);
|
|
|
| DartType futureRType = futureElement.type.substitute4([futureThenR.type]);
|
| - MethodElementImpl thenMethod = ElementFactory.methodElementWithParameters(
|
| - futureElement, "then", futureRType, [
|
| + MethodElementImpl thenMethod = ElementFactory
|
| + .methodElementWithParameters(futureElement, "then", futureRType, [
|
| ElementFactory.requiredParameter2("onValue", thenOnValue.type),
|
| ElementFactory.namedParameter2("onError", provider.functionType)
|
| ]);
|
| @@ -291,8 +291,8 @@ class AnalysisContextFactory {
|
| ClassElementImpl htmlDocumentElement =
|
| ElementFactory.classElement("HtmlDocument", documentElement.type);
|
| htmlDocumentElement.methods = <MethodElement>[
|
| - ElementFactory.methodElement(
|
| - "query", elementType, <DartType>[provider.stringType])
|
| + ElementFactory
|
| + .methodElement("query", elementType, <DartType>[provider.stringType])
|
| ];
|
| htmlUnit.types = <ClassElement>[
|
| ElementFactory.classElement("AnchorElement", elementType),
|
| @@ -312,8 +312,8 @@ class AnalysisContextFactory {
|
| ElementFactory.functionElement3("query", elementElement,
|
| <ClassElement>[provider.stringType.element], ClassElement.EMPTY_LIST)
|
| ];
|
| - TopLevelVariableElementImpl document = ElementFactory
|
| - .topLevelVariableElement3(
|
| + TopLevelVariableElementImpl document =
|
| + ElementFactory.topLevelVariableElement3(
|
| "document", false, true, htmlDocumentElement.type);
|
| htmlUnit.topLevelVariables = <TopLevelVariableElement>[document];
|
| htmlUnit.accessors = <PropertyAccessorElement>[document.getter];
|
| @@ -5153,7 +5153,8 @@ class InheritanceManagerTest {
|
| _assertNoErrors(classA);
|
| }
|
|
|
| - void test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_getter_method() {
|
| + void
|
| + test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_getter_method() {
|
| // class I1 { int m(); }
|
| // class I2 { int get m; }
|
| // class A implements I2, I1 {}
|
| @@ -5176,7 +5177,8 @@ class InheritanceManagerTest {
|
| [StaticWarningCode.INCONSISTENT_METHOD_INHERITANCE_GETTER_AND_METHOD]);
|
| }
|
|
|
| - void test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_int_str() {
|
| + void
|
| + test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_int_str() {
|
| // class I1 { int m(); }
|
| // class I2 { String m(); }
|
| // class A implements I1, I2 {}
|
| @@ -5186,8 +5188,8 @@ class InheritanceManagerTest {
|
| ElementFactory.methodElement(methodName, null, [_typeProvider.intType]);
|
| classI1.methods = <MethodElement>[methodM1];
|
| ClassElementImpl classI2 = ElementFactory.classElement2("I2");
|
| - MethodElement methodM2 = ElementFactory.methodElement(
|
| - methodName, null, [_typeProvider.stringType]);
|
| + MethodElement methodM2 = ElementFactory
|
| + .methodElement(methodName, null, [_typeProvider.stringType]);
|
| classI2.methods = <MethodElement>[methodM2];
|
| ClassElementImpl classA = ElementFactory.classElement2("A");
|
| classA.interfaces = <InterfaceType>[classI1.type, classI2.type];
|
| @@ -5199,7 +5201,8 @@ class InheritanceManagerTest {
|
| classA, [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE]);
|
| }
|
|
|
| - void test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_method_getter() {
|
| + void
|
| + test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_method_getter() {
|
| // class I1 { int m(); }
|
| // class I2 { int get m; }
|
| // class A implements I1, I2 {}
|
| @@ -5222,7 +5225,8 @@ class InheritanceManagerTest {
|
| [StaticWarningCode.INCONSISTENT_METHOD_INHERITANCE_GETTER_AND_METHOD]);
|
| }
|
|
|
| - void test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_numOfRequiredParams() {
|
| + void
|
| + test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_numOfRequiredParams() {
|
| // class I1 { dynamic m(int, [int]); }
|
| // class I2 { dynamic m(int, int, int); }
|
| // class A implements I1, I2 {}
|
| @@ -5271,14 +5275,15 @@ class InheritanceManagerTest {
|
| classA, [StaticTypeWarningCode.INCONSISTENT_METHOD_INHERITANCE]);
|
| }
|
|
|
| - void test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_str_int() {
|
| + void
|
| + test_getMapOfMembersInheritedFromInterfaces_inconsistentMethodInheritance_str_int() {
|
| // class I1 { int m(); }
|
| // class I2 { String m(); }
|
| // class A implements I2, I1 {}
|
| ClassElementImpl classI1 = ElementFactory.classElement2("I1");
|
| String methodName = "m";
|
| - MethodElement methodM1 = ElementFactory.methodElement(
|
| - methodName, null, [_typeProvider.stringType]);
|
| + MethodElement methodM1 = ElementFactory
|
| + .methodElement(methodName, null, [_typeProvider.stringType]);
|
| classI1.methods = <MethodElement>[methodM1];
|
| ClassElementImpl classI2 = ElementFactory.classElement2("I2");
|
| MethodElement methodM2 =
|
| @@ -5380,7 +5385,8 @@ class InheritanceManagerTest {
|
| _assertNoErrors(classA);
|
| }
|
|
|
| - void test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_2_getters() {
|
| + void
|
| + test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_2_getters() {
|
| // class I1 { int get g; }
|
| // class I2 { num get g; }
|
| // class A implements I1, I2 {}
|
| @@ -5404,7 +5410,8 @@ class InheritanceManagerTest {
|
| _assertNoErrors(classA);
|
| }
|
|
|
| - void test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_2_methods() {
|
| + void
|
| + test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_2_methods() {
|
| // class I1 { dynamic m(int); }
|
| // class I2 { dynamic m(num); }
|
| // class A implements I1, I2 {}
|
| @@ -5438,7 +5445,8 @@ class InheritanceManagerTest {
|
| _assertNoErrors(classA);
|
| }
|
|
|
| - void test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_2_setters() {
|
| + void
|
| + test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_2_setters() {
|
| // class I1 { set s(int); }
|
| // class I2 { set s(num); }
|
| // class A implements I1, I2 {}
|
| @@ -5463,7 +5471,8 @@ class InheritanceManagerTest {
|
| _assertNoErrors(classA);
|
| }
|
|
|
| - void test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_3_getters() {
|
| + void
|
| + test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_3_getters() {
|
| // class A {}
|
| // class B extends A {}
|
| // class C extends B {}
|
| @@ -5502,7 +5511,8 @@ class InheritanceManagerTest {
|
| _assertNoErrors(classD);
|
| }
|
|
|
| - void test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_3_methods() {
|
| + void
|
| + test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_3_methods() {
|
| // class A {}
|
| // class B extends A {}
|
| // class C extends B {}
|
| @@ -5556,7 +5566,8 @@ class InheritanceManagerTest {
|
| _assertNoErrors(classD);
|
| }
|
|
|
| - void test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_3_setters() {
|
| + void
|
| + test_getMapOfMembersInheritedFromInterfaces_union_multipleSubtypes_3_setters() {
|
| // class A {}
|
| // class B extends A {}
|
| // class C extends B {}
|
| @@ -5596,7 +5607,8 @@ class InheritanceManagerTest {
|
| _assertNoErrors(classD);
|
| }
|
|
|
| - void test_getMapOfMembersInheritedFromInterfaces_union_oneSubtype_2_methods() {
|
| + void
|
| + test_getMapOfMembersInheritedFromInterfaces_union_oneSubtype_2_methods() {
|
| // class I1 { int m(); }
|
| // class I2 { int m([int]); }
|
| // class A implements I1, I2 {}
|
| @@ -5623,7 +5635,8 @@ class InheritanceManagerTest {
|
| _assertNoErrors(classA);
|
| }
|
|
|
| - void test_getMapOfMembersInheritedFromInterfaces_union_oneSubtype_3_methods() {
|
| + void
|
| + test_getMapOfMembersInheritedFromInterfaces_union_oneSubtype_3_methods() {
|
| // class I1 { int m(); }
|
| // class I2 { int m([int]); }
|
| // class I3 { int m([int, int]); }
|
| @@ -5668,7 +5681,8 @@ class InheritanceManagerTest {
|
| _assertNoErrors(classA);
|
| }
|
|
|
| - void test_getMapOfMembersInheritedFromInterfaces_union_oneSubtype_4_methods() {
|
| + void
|
| + test_getMapOfMembersInheritedFromInterfaces_union_oneSubtype_4_methods() {
|
| // class I1 { int m(); }
|
| // class I2 { int m(); }
|
| // class I3 { int m([int]); }
|
| @@ -9370,7 +9384,9 @@ const A = null;
|
| expect(declarations, hasLength(2));
|
| Element expectedElement = (declarations[0] as TopLevelVariableDeclaration)
|
| .variables
|
| - .variables[0].name.staticElement;
|
| + .variables[0]
|
| + .name
|
| + .staticElement;
|
| EngineTestCase.assertInstanceOf((obj) => obj is PropertyInducingElement,
|
| PropertyInducingElement, expectedElement);
|
| expectedElement = (expectedElement as PropertyInducingElement).getter;
|
| @@ -9561,7 +9577,9 @@ const A = null;
|
| expect(declarations, hasLength(2));
|
| Element expectedElement = (declarations[0] as TopLevelVariableDeclaration)
|
| .variables
|
| - .variables[0].name.staticElement;
|
| + .variables[0]
|
| + .name
|
| + .staticElement;
|
| EngineTestCase.assertInstanceOf((obj) => obj is PropertyInducingElement,
|
| PropertyInducingElement, expectedElement);
|
| expectedElement = (expectedElement as PropertyInducingElement).getter;
|
| @@ -11782,19 +11800,27 @@ int f() {
|
| @reflectiveTest
|
| class StrongModeDownwardsInferenceTest extends ResolverTestCase {
|
| TypeAssertions _assertions;
|
| - AsserterBuilder<Element, DartType> _hasElement;
|
| - AsserterBuilder<DartType, DartType> _isType;
|
| - AsserterBuilder2<Asserter<DartType>, Asserter<DartType>,
|
| - DartType> _isFunction2Of;
|
| - AsserterBuilderBuilder<Asserter<DartType>, List<Asserter<DartType>>,
|
| - DartType> _isInstantiationOf;
|
| +
|
| + Asserter<DartType> _isDynamic;
|
| + Asserter<InterfaceType> _isFutureOfDynamic;
|
| + Asserter<InterfaceType> _isFutureOfInt;
|
| Asserter<DartType> _isInt;
|
| Asserter<DartType> _isNum;
|
| Asserter<DartType> _isString;
|
| - Asserter<DartType> _isDynamic;
|
| +
|
| + AsserterBuilder2<Asserter<DartType>, Asserter<DartType>, DartType>
|
| + _isFunction2Of;
|
| + AsserterBuilder<List<Asserter<DartType>>, InterfaceType> _isFutureOf;
|
| + AsserterBuilderBuilder<Asserter<DartType>, List<Asserter<DartType>>, DartType>
|
| + _isInstantiationOf;
|
| AsserterBuilder<Asserter<DartType>, InterfaceType> _isListOf;
|
| - AsserterBuilder2<Asserter<DartType>, Asserter<DartType>,
|
| - InterfaceType> _isMapOf;
|
| + AsserterBuilder2<Asserter<DartType>, Asserter<DartType>, InterfaceType>
|
| + _isMapOf;
|
| + AsserterBuilder<List<Asserter<DartType>>, InterfaceType> _isStreamOf;
|
| + AsserterBuilder<DartType, DartType> _isType;
|
| +
|
| + AsserterBuilder<Element, DartType> _hasElement;
|
| + AsserterBuilder<DartType, DartType> _sameElement;
|
|
|
| @override
|
| void setUp() {
|
| @@ -11812,6 +11838,187 @@ class StrongModeDownwardsInferenceTest extends ResolverTestCase {
|
| _isListOf = _assertions.isListOf;
|
| _isMapOf = _assertions.isMapOf;
|
| _isFunction2Of = _assertions.isFunction2Of;
|
| + _sameElement = _assertions.sameElement;
|
| + _isFutureOf = _isInstantiationOf(_sameElement(typeProvider.futureType));
|
| + _isFutureOfDynamic = _isFutureOf([_isDynamic]);
|
| + _isFutureOfInt = _isFutureOf([_isInt]);
|
| + _isStreamOf = _isInstantiationOf(_sameElement(typeProvider.streamType));
|
| + }
|
| +
|
| + void test_async_method_propagation() {
|
| + String code = r'''
|
| + import "dart:async";
|
| + class A {
|
| + Future f0() => new Future.value(3);
|
| + Future f1() async => new Future.value(3);
|
| + Future f2() async => await new Future.value(3);
|
| +
|
| + Future<int> f3() => new Future.value(3);
|
| + Future<int> f4() async => new Future.value(3);
|
| + Future<int> f5() async => await new Future.value(3);
|
| +
|
| + Future g0() { return new Future.value(3); }
|
| + Future g1() async { return new Future.value(3); }
|
| + Future g2() async { return await new Future.value(3); }
|
| +
|
| + Future<int> g3() { return new Future.value(3); }
|
| + Future<int> g4() async { return new Future.value(3); }
|
| + Future<int> g5() async { return await new Future.value(3); }
|
| + }
|
| + ''';
|
| + CompilationUnit unit = resolveSource(code);
|
| +
|
| + void check(String name, Asserter<InterfaceType> typeTest) {
|
| + MethodDeclaration test = AstFinder.getMethodInClass(unit, "A", name);
|
| + FunctionBody body = test.body;
|
| + Expression returnExp;
|
| + if (body is ExpressionFunctionBody) {
|
| + returnExp = body.expression;
|
| + } else {
|
| + ReturnStatement stmt = (body as BlockFunctionBody).block.statements[0];
|
| + returnExp = stmt.expression;
|
| + }
|
| + DartType type = returnExp.staticType;
|
| + if (returnExp is AwaitExpression) {
|
| + type = returnExp.expression.staticType;
|
| + }
|
| + typeTest(type);
|
| + }
|
| +
|
| + check("f0", _isFutureOfDynamic);
|
| + check("f1", _isFutureOfDynamic);
|
| + check("f2", _isFutureOfDynamic);
|
| +
|
| + check("f3", _isFutureOfInt);
|
| + // This should be int when we handle the implicit Future<T> | T union
|
| + // https://github.com/dart-lang/sdk/issues/25322
|
| + check("f4", _isFutureOfDynamic);
|
| + check("f5", _isFutureOfInt);
|
| +
|
| + check("g0", _isFutureOfDynamic);
|
| + check("g1", _isFutureOfDynamic);
|
| + check("g2", _isFutureOfDynamic);
|
| +
|
| + check("g3", _isFutureOfInt);
|
| + // This should be int when we handle the implicit Future<T> | T union
|
| + // https://github.com/dart-lang/sdk/issues/25322
|
| + check("g4", _isFutureOfDynamic);
|
| + check("g5", _isFutureOfInt);
|
| + }
|
| +
|
| + void test_async_propagation() {
|
| + String code = r'''
|
| + import "dart:async";
|
| +
|
| + Future f0() => new Future.value(3);
|
| + Future f1() async => new Future.value(3);
|
| + Future f2() async => await new Future.value(3);
|
| +
|
| + Future<int> f3() => new Future.value(3);
|
| + Future<int> f4() async => new Future.value(3);
|
| + Future<int> f5() async => await new Future.value(3);
|
| +
|
| + Future g0() { return new Future.value(3); }
|
| + Future g1() async { return new Future.value(3); }
|
| + Future g2() async { return await new Future.value(3); }
|
| +
|
| + Future<int> g3() { return new Future.value(3); }
|
| + Future<int> g4() async { return new Future.value(3); }
|
| + Future<int> g5() async { return await new Future.value(3); }
|
| + ''';
|
| + CompilationUnit unit = resolveSource(code);
|
| +
|
| + void check(String name, Asserter<InterfaceType> typeTest) {
|
| + FunctionDeclaration test = AstFinder.getTopLevelFunction(unit, name);
|
| + FunctionBody body = test.functionExpression.body;
|
| + Expression returnExp;
|
| + if (body is ExpressionFunctionBody) {
|
| + returnExp = body.expression;
|
| + } else {
|
| + ReturnStatement stmt = (body as BlockFunctionBody).block.statements[0];
|
| + returnExp = stmt.expression;
|
| + }
|
| + DartType type = returnExp.staticType;
|
| + if (returnExp is AwaitExpression) {
|
| + type = returnExp.expression.staticType;
|
| + }
|
| + typeTest(type);
|
| + }
|
| +
|
| + check("f0", _isFutureOfDynamic);
|
| + check("f1", _isFutureOfDynamic);
|
| + check("f2", _isFutureOfDynamic);
|
| +
|
| + check("f3", _isFutureOfInt);
|
| + // This should be int when we handle the implicit Future<T> | T union
|
| + // https://github.com/dart-lang/sdk/issues/25322
|
| + check("f4", _isFutureOfDynamic);
|
| + check("f5", _isFutureOfInt);
|
| +
|
| + check("g0", _isFutureOfDynamic);
|
| + check("g1", _isFutureOfDynamic);
|
| + check("g2", _isFutureOfDynamic);
|
| +
|
| + check("g3", _isFutureOfInt);
|
| + // This should be int when we handle the implicit Future<T> | T union
|
| + // https://github.com/dart-lang/sdk/issues/25322
|
| + check("g4", _isFutureOfDynamic);
|
| + check("g5", _isFutureOfInt);
|
| + }
|
| +
|
| + void test_async_star_method_propagation() {
|
| + String code = r'''
|
| + import "dart:async";
|
| + class A {
|
| + Stream g0() async* { yield []; }
|
| + Stream g1() async* { yield* new Stream(); }
|
| +
|
| + Stream<List<int>> g2() async* { yield []; }
|
| + Stream<List<int>> g3() async* { yield* new Stream(); }
|
| + }
|
| + ''';
|
| + CompilationUnit unit = resolveSource(code);
|
| +
|
| + void check(String name, Asserter<InterfaceType> typeTest) {
|
| + MethodDeclaration test = AstFinder.getMethodInClass(unit, "A", name);
|
| + BlockFunctionBody body = test.body;
|
| + YieldStatement stmt = body.block.statements[0];
|
| + Expression exp = stmt.expression;
|
| + typeTest(exp.staticType);
|
| + }
|
| +
|
| + check("g0", _isListOf(_isDynamic));
|
| + check("g1", _isStreamOf([_isDynamic]));
|
| +
|
| + check("g2", _isListOf(_isInt));
|
| + check("g3", _isStreamOf([_isListOf(_isInt)]));
|
| + }
|
| +
|
| + void test_async_star_propagation() {
|
| + String code = r'''
|
| + import "dart:async";
|
| +
|
| + Stream g0() async* { yield []; }
|
| + Stream g1() async* { yield* new Stream(); }
|
| +
|
| + Stream<List<int>> g2() async* { yield []; }
|
| + Stream<List<int>> g3() async* { yield* new Stream(); }
|
| + ''';
|
| + CompilationUnit unit = resolveSource(code);
|
| +
|
| + void check(String name, Asserter<InterfaceType> typeTest) {
|
| + FunctionDeclaration test = AstFinder.getTopLevelFunction(unit, name);
|
| + BlockFunctionBody body = test.functionExpression.body;
|
| + YieldStatement stmt = body.block.statements[0];
|
| + Expression exp = stmt.expression;
|
| + typeTest(exp.staticType);
|
| + }
|
| +
|
| + check("g0", _isListOf(_isDynamic));
|
| + check("g1", _isStreamOf([_isDynamic]));
|
| +
|
| + check("g2", _isListOf(_isInt));
|
| + check("g3", _isStreamOf([_isListOf(_isInt)]));
|
| }
|
|
|
| void test_cascadeExpression() {
|
| @@ -12751,6 +12958,61 @@ class StrongModeDownwardsInferenceTest extends ResolverTestCase {
|
| Expression exp = invocation.argumentList.arguments[0];
|
| _isListOf(_isString)(exp.staticType);
|
| }
|
| +
|
| + void test_sync_star_method_propagation() {
|
| + String code = r'''
|
| + import "dart:async";
|
| + class A {
|
| + Iterable f0() sync* { yield []; }
|
| + Iterable f1() sync* { yield* new List(); }
|
| +
|
| + Iterable<List<int>> f2() sync* { yield []; }
|
| + Iterable<List<int>> f3() sync* { yield* new List(); }
|
| + }
|
| + ''';
|
| + CompilationUnit unit = resolveSource(code);
|
| +
|
| + void check(String name, Asserter<InterfaceType> typeTest) {
|
| + MethodDeclaration test = AstFinder.getMethodInClass(unit, "A", name);
|
| + BlockFunctionBody body = test.body;
|
| + YieldStatement stmt = body.block.statements[0];
|
| + Expression exp = stmt.expression;
|
| + typeTest(exp.staticType);
|
| + }
|
| +
|
| + check("f0", _isListOf(_isDynamic));
|
| + check("f1", _isListOf(_isDynamic));
|
| +
|
| + check("f2", _isListOf(_isInt));
|
| + check("f3", _isListOf(_isListOf(_isInt)));
|
| + }
|
| +
|
| + void test_sync_star_propagation() {
|
| + String code = r'''
|
| + import "dart:async";
|
| +
|
| + Iterable f0() sync* { yield []; }
|
| + Iterable f1() sync* { yield* new List(); }
|
| +
|
| + Iterable<List<int>> f2() sync* { yield []; }
|
| + Iterable<List<int>> f3() sync* { yield* new List(); }
|
| + ''';
|
| + CompilationUnit unit = resolveSource(code);
|
| +
|
| + void check(String name, Asserter<InterfaceType> typeTest) {
|
| + FunctionDeclaration test = AstFinder.getTopLevelFunction(unit, name);
|
| + BlockFunctionBody body = test.functionExpression.body;
|
| + YieldStatement stmt = body.block.statements[0];
|
| + Expression exp = stmt.expression;
|
| + typeTest(exp.staticType);
|
| + }
|
| +
|
| + check("f0", _isListOf(_isDynamic));
|
| + check("f1", _isListOf(_isDynamic));
|
| +
|
| + check("f2", _isListOf(_isInt));
|
| + check("f3", _isListOf(_isListOf(_isInt)));
|
| + }
|
| }
|
|
|
| /**
|
| @@ -14025,7 +14287,8 @@ class B extends A {
|
| code, typeProvider.dynamicType, typeProvider.intType);
|
| }
|
|
|
| - void test_finalPropertyInducingVariable_classMember_instance_propagatedTarget() {
|
| + void
|
| + test_finalPropertyInducingVariable_classMember_instance_propagatedTarget() {
|
| addNamedSource(
|
| "/lib.dart",
|
| r'''
|
| @@ -14244,7 +14507,8 @@ f(MyMap<int, String> m) {
|
| expect(vParameter.identifier.propagatedType, same(stringType));
|
| }
|
|
|
| - void test_functionExpression_asInvocationArgument_functionExpressionInvocation() {
|
| + void
|
| + test_functionExpression_asInvocationArgument_functionExpressionInvocation() {
|
| String code = r'''
|
| main() {
|
| (f(String value)) {} ((v) {
|
|
|