Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(537)

Unified Diff: pkg/analyzer/test/src/task/strong/inferred_type_test.dart

Issue 2990383002: Emit a hint when using generic method comment syntax (issue 30356) (Closed)
Patch Set: Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/analyzer/test/src/task/strong/checker_test.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/test/src/task/strong/inferred_type_test.dart
diff --git a/pkg/analyzer/test/src/task/strong/inferred_type_test.dart b/pkg/analyzer/test/src/task/strong/inferred_type_test.dart
index 329b0b9ab4f12012e7765bde99927793b332fa08..a7bc6ffcfae47a3adec28bacc63cfe70871afafa 100644
--- a/pkg/analyzer/test/src/task/strong/inferred_type_test.dart
+++ b/pkg/analyzer/test/src/task/strong/inferred_type_test.dart
@@ -1065,28 +1065,6 @@ void main () {
''');
}
- test_downwardsInferenceOnFunctionOfTUsingTheT_comment() async {
- await checkFileElement('''
-void main () {
- {
- /*=T*/ f/*<T>*/(/*=T*/ x) => null;
- var v1 = f;
- v1 = /*info:INFERRED_TYPE_CLOSURE*//*<S>*/(x) => x;
- }
- {
- /*=List<T>*/ f/*<T>*/(/*=T*/ x) => null;
- var v2 = f;
- v2 = /*info:INFERRED_TYPE_CLOSURE*//*<S>*/(x) => /*info:INFERRED_TYPE_LITERAL*/[x];
- Iterable<int> r = v2(42);
- Iterable<String> s = v2('hello');
- Iterable<List<int>> t = v2(<int>[]);
- Iterable<num> u = v2(42);
- Iterable<num> v = v2/*<num>*/(42);
- }
-}
-''');
- }
-
test_downwardsInferenceOnGenericConstructorArguments_emptyList() async {
await checkFileElement('''
class F3<T> {
@@ -1210,53 +1188,6 @@ void main () {
''');
}
- test_downwardsInferenceOnGenericFunctionExpressions_comment() async {
- await checkFileElement('''
-void main () {
- {
- String f/*<S>*/(int x) => null;
- var v = f;
- v = /*info:INFERRED_TYPE_CLOSURE*//*<T>*/(int x) => null;
- v = /*<T>*/(int x) => "hello";
- v = /*error:INVALID_ASSIGNMENT*//*<T>*/(String x) => "hello";
- v = /*error:INVALID_ASSIGNMENT*//*<T>*/(int x) => 3;
- v = /*info:INFERRED_TYPE_CLOSURE*//*<T>*/(int x) {return /*error:RETURN_OF_INVALID_TYPE*/3;};
- }
- {
- String f/*<S>*/(int x) => null;
- var v = f;
- v = /*info:INFERRED_TYPE_CLOSURE, info:INFERRED_TYPE_CLOSURE*//*<T>*/(x) => null;
- v = /*info:INFERRED_TYPE_CLOSURE*//*<T>*/(x) => "hello";
- v = /*info:INFERRED_TYPE_CLOSURE, error:INVALID_ASSIGNMENT*//*<T>*/(x) => 3;
- v = /*info:INFERRED_TYPE_CLOSURE, info:INFERRED_TYPE_CLOSURE*//*<T>*/(x) {return /*error:RETURN_OF_INVALID_TYPE*/3;};
- v = /*info:INFERRED_TYPE_CLOSURE, info:INFERRED_TYPE_CLOSURE*//*<T>*/(x) {return /*error:RETURN_OF_INVALID_TYPE*/x;};
- }
- {
- List<String> f/*<S>*/(int x) => null;
- var v = f;
- v = /*info:INFERRED_TYPE_CLOSURE*//*<T>*/(int x) => null;
- v = /*<T>*/(int x) => /*info:INFERRED_TYPE_LITERAL*/["hello"];
- v = /*error:INVALID_ASSIGNMENT*//*<T>*/(String x) => /*info:INFERRED_TYPE_LITERAL*/["hello"];
- v = /*<T>*/(int x) => /*info:INFERRED_TYPE_LITERAL*/[/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/3];
- v = /*info:INFERRED_TYPE_CLOSURE*//*<T>*/(int x) {return /*info:INFERRED_TYPE_LITERAL*/[/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/3];};
- }
- {
- int int2int/*<S>*/(int x) => null;
- String int2String/*<T>*/(int x) => null;
- String string2String/*<T>*/(String x) => null;
- var x = int2int;
- x = /*info:INFERRED_TYPE_CLOSURE*//*<T>*/(x) => x;
- x = /*info:INFERRED_TYPE_CLOSURE*//*<T>*/(x) => x+1;
- var y = int2String;
- y = /*info:INFERRED_TYPE_CLOSURE, error:INVALID_ASSIGNMENT*//*<T>*/(x) => x;
- y = /*info:INFERRED_TYPE_CLOSURE, info:INFERRED_TYPE_CLOSURE*//*<T>*/(x) => /*info:DYNAMIC_INVOKE, info:DYNAMIC_CAST*/x./*error:UNDEFINED_METHOD*/substring(3);
- var z = string2String;
- z = /*info:INFERRED_TYPE_CLOSURE*//*<T>*/(x) => x.substring(3);
- }
-}
-''');
- }
-
test_downwardsInferenceOnInstanceCreations_inferDownwards() async {
await checkFileElement('''
class A<S, T> {
@@ -1872,20 +1803,6 @@ main() async {
''');
}
- test_futureUnion_downwardsGenericMethodWithGenericReturn_comment() async {
- // Regression test for https://github.com/dart-lang/sdk/issues/27284
- await checkFileElement(r'''
-import 'dart:async';
-
-/*=T*/ id/*<T>*/(/*=T*/ x) => x;
-
-main() async {
- Future<String> f;
- String s = await id(f);
-}
- ''');
- }
-
test_futureUnion_upwardsGenericMethods() async {
// Regression test for https://github.com/dart-lang/sdk/issues/27151
await checkFileElement(r'''
@@ -1921,20 +1838,6 @@ main() {
''');
}
- test_genericFunctions_returnTypedef_comment() async {
- await checkFileElement(r'''
-typedef void ToValue<T>(T value);
-
-main() {
- ToValue/*<T>*/ f/*<T>*/(dynamic /*=T*/ x) => null;
- var x = f/*<int>*/(42);
- var y = f(42);
- ToValue<int> takesInt = x;
- takesInt = y;
-}
- ''');
- }
-
test_genericMethods_basicDownwardInference() async {
await checkFileElement(r'''
T f<S, T>(S s) => null;
@@ -1945,16 +1848,6 @@ main() {
''');
}
- test_genericMethods_basicDownwardInference_comment() async {
- await checkFileElement(r'''
-/*=T*/ f/*<S, T>*/(/*=S*/ s) => null;
-main() {
- String x = f(42);
- String y = (f)(42);
-}
-''');
- }
-
test_genericMethods_correctlyRecognizeGenericUpperBound() async {
// Regression test for https://github.com/dart-lang/sdk/issues/25740.
await checkFileElement(r'''
@@ -2029,21 +1922,6 @@ main() {
''');
}
- test_genericMethods_doNotInferInvalidOverrideOfGenericMethod_comment() async {
- await checkFileElement('''
-class C {
-/*=T*/ m/*<T>*/(/*=T*/ x) => x;
-}
-class D extends C {
-/*error:INVALID_METHOD_OVERRIDE*/m(x) => x;
-}
-main() {
- int y = /*info:DYNAMIC_CAST*/new D()./*error:WRONG_NUMBER_OF_TYPE_ARGUMENTS_METHOD*/m/*<int>*/(42);
- print(y);
-}
-''');
- }
-
test_genericMethods_downwardsInferenceAffectsArguments() async {
await checkFileElement(r'''
T f<T>(List<T> s) => null;
@@ -2054,16 +1932,6 @@ main() {
''');
}
- test_genericMethods_downwardsInferenceAffectsArguments_comment() async {
- await checkFileElement(r'''
-/*=T*/ f/*<T>*/(List/*<T>*/ s) => null;
-main() {
- String x = f(/*info:INFERRED_TYPE_LITERAL*/['hi']);
- String y = f(/*info:INFERRED_TYPE_LITERAL*/[/*error:LIST_ELEMENT_TYPE_NOT_ASSIGNABLE*/42]);
-}
-''');
- }
-
test_genericMethods_downwardsInferenceFold() async {
// Regression from https://github.com/dart-lang/sdk/issues/25491
// The first example works now, but the latter requires a full solution to
@@ -2139,34 +2007,6 @@ typedef List<V> G<V>();
expect(f.type.toString(), '<U>(() → List<U>) → void');
}
- test_genericMethods_inferGenericFunctionParameterType2_comment() async {
- var mainUnit = await checkFileElement('''
-class C<T> extends D<T> {
- f/*<U>*/(g) => null;
-}
-abstract class D<T> {
- void f/*<U>*/(G/*<U>*/ g);
-}
-typedef List<V> G<V>();
-''');
- var f = mainUnit.getType('C').methods[0];
- expect(f.type.toString(), '<U>(() → List<U>) → void');
- }
-
- test_genericMethods_inferGenericFunctionParameterType_comment() async {
- var mainUnit = await checkFileElement('''
-class C<T> extends D<T> {
- f/*<U>*/(x) {}
-}
-class D<T> {
- F/*<U>*/ f/*<U>*/(/*=U*/ u) => null;
-}
-typedef void F<V>(V v);
-''');
- var f = mainUnit.getType('C').methods[0];
- expect(f.type.toString(), '<U>(U) → (U) → void');
- }
-
test_genericMethods_inferGenericFunctionReturnType() async {
var mainUnit = await checkFileElement('''
class C<T> extends D<T> {
@@ -2181,20 +2021,6 @@ typedef V F<V>();
expect(f.type.toString(), '<U>(U) → () → U');
}
- test_genericMethods_inferGenericFunctionReturnType_comment() async {
- var mainUnit = await checkFileElement('''
-class C<T> extends D<T> {
- f/*<U>*/(x) {}
-}
-class D<T> {
- F/*<U>*/ f/*<U>*/(/*=U*/ u) => null;
-}
-typedef V F<V>();
-''');
- var f = mainUnit.getType('C').methods[0];
- expect(f.type.toString(), '<U>(U) → () → U');
- }
-
test_genericMethods_inferGenericInstantiation() async {
await checkFileElement('''
import 'dart:math' as math;
@@ -2305,22 +2131,6 @@ main() {
''');
}
- test_genericMethods_inferGenericMethodType_comment() async {
- // Regression test for https://github.com/dart-lang/sdk/issues/25668
- await checkFileElement('''
-class C {
- /*=T*/ m/*<T>*/(/*=T*/ x) => x;
-}
-class D extends C {
- m/*<S>*/(x) => x;
-}
-main() {
- int y = new D().m/*<int>*/(42);
- print(y);
-}
-''');
- }
-
test_genericMethods_inferJSBuiltin() async {
// TODO(jmesserly): we should change how this inference works.
// For now this test will cover what we use.
@@ -2390,27 +2200,12 @@ main() {
expect(v.type.toString(), '(num) → List<int>');
}
- test_genericMethods_usesGreatestLowerBound_comment() async {
- var unit = await checkFile(r'''
-typedef Iterable<num> F(int x);
-typedef List<int> G(double x);
-
-/*=T*/ generic/*<T>*/(a(/*=T*/ _), b(/*=T*/ _)) => null;
-
-main() {
- var v = generic((F f) => null, (G g) => null);
-}
-''');
- var v = findLocalVariable(unit, 'v');
- expect(v.type.toString(), '(num) → List<int>');
- }
-
- test_genericMethods_usesGreatestLowerBound_comment_topLevel() async {
+ test_genericMethods_usesGreatestLowerBound_topLevel() async {
var mainUnit = await checkFileElement(r'''
typedef Iterable<num> F(int x);
typedef List<int> G(double x);
-/*=T*/ generic/*<T>*/(a(/*=T*/ _), b(/*=T*/ _)) => null;
+T generic<T>(a(T _), b(T _)) => null;
var v = generic((F f) => null, (G g) => null);
''');
@@ -2893,19 +2688,6 @@ main() {
expect(y.type.toString(), 'double');
}
- test_inferGenericMethodType_named_comment() async {
- var unit = await checkFile('''
-class C {
- /*=T*/ m/*<T>*/(int a, {String b, /*=T*/ c}) => null;
-}
-main() {
- var y = new C().m(1, b: 'bbb', c: 2.0);
-}
-''');
- var y = findLocalVariable(unit, 'y');
- expect(y.type.toString(), 'double');
- }
-
test_inferGenericMethodType_positional() async {
var unit = await checkFile('''
class C {
@@ -2932,32 +2714,6 @@ main() {
expect(y.type.toString(), 'double');
}
- test_inferGenericMethodType_positional2_comment() async {
- var unit = await checkFile('''
-class C {
- /*=T*/ m/*<T>*/(int a, [String b, /*=T*/ c]) => null;
-}
-main() {
- var y = new C().m(1, 'bbb', 2.0);
-}
-''');
- var y = findLocalVariable(unit, 'y');
- expect(y.type.toString(), 'double');
- }
-
- test_inferGenericMethodType_positional_comment() async {
- var unit = await checkFile('''
-class C {
- /*=T*/ m/*<T>*/(int a, [/*=T*/ b]) => null;
-}
-main() {
- var y = new C().m(1, 2.0);
-}
-''');
- var y = findLocalVariable(unit, 'y');
- expect(y.type.toString(), 'double');
- }
-
test_inferGenericMethodType_required() async {
var unit = await checkFile('''
class C {
@@ -2971,19 +2727,6 @@ main() {
expect(y.type.toString(), 'int');
}
- test_inferGenericMethodType_required_comment() async {
- var unit = await checkFile('''
-class C {
- /*=T*/ m/*<T>*/(/*=T*/ x) => x;
-}
-main() {
- var y = new C().m(42);
-}
-''');
- var y = findLocalVariable(unit, 'y');
- expect(y.type.toString(), 'int');
- }
-
test_inferListLiteralNestedInMapLiteral() async {
await checkFileElement(r'''
class Resource {}
@@ -4008,18 +3751,6 @@ var f = new C().f<int>();
expect(v.type.toString(), 'D<int>');
}
- test_methodCall_withTypeArguments_instanceMethod_comment() async {
- var mainUnit = await checkFileElement('''
-class C {
- D/*<T>*/ f/*<T>*/() => null;
-}
-class D<T> {}
-var f = new C().f/*<int>*/();
-''');
- var v = mainUnit.topLevelVariables[0];
- expect(v.type.toString(), 'D<int>');
- }
-
test_methodCall_withTypeArguments_instanceMethod_identifierSequence() async {
var mainUnit = await checkFileElement('''
class C {
@@ -4034,20 +3765,6 @@ var f = c.f<int>();
expect(v.type.toString(), 'D<int>');
}
- test_methodCall_withTypeArguments_instanceMethod_identifierSequence_comment() async {
- var mainUnit = await checkFileElement('''
-class C {
- D/*<T>*/ f/*<T>*/() => null;
-}
-class D<T> {}
-C c;
-var f = c.f/*<int>*/();
-''');
- var v = mainUnit.topLevelVariables[1];
- expect(v.name, 'f');
- expect(v.type.toString(), 'D<int>');
- }
-
test_methodCall_withTypeArguments_staticMethod() async {
var mainUnit = await checkFileElement('''
class C {
@@ -4060,18 +3777,6 @@ var f = C.f<int>();
expect(v.type.toString(), 'D<int>');
}
- test_methodCall_withTypeArguments_staticMethod_comment() async {
- var mainUnit = await checkFileElement('''
-class C {
- static D/*<T>*/ f/*<T>*/() => null;
-}
-class D<T> {}
-var f = C.f/*<int>*/();
-''');
- var v = mainUnit.topLevelVariables[0];
- expect(v.type.toString(), 'D<int>');
- }
-
test_methodCall_withTypeArguments_topLevelFunction() async {
var mainUnit = await checkFileElement('''
D<T> f<T>() => null;
@@ -4082,16 +3787,6 @@ var g = f<int>();
expect(v.type.toString(), 'D<int>');
}
- test_methodCall_withTypeArguments_topLevelFunction_comment() async {
- var mainUnit = await checkFileElement('''
-D/*<T>*/ f/*<T>*/() => null;
-class D<T> {}
-var g = f/*<int>*/();
-''');
- var v = mainUnit.topLevelVariables[0];
- expect(v.type.toString(), 'D<int>');
- }
-
test_noErrorWhenDeclaredTypeIsNumAndAssignedNull() async {
await checkFileElement('''
test1() {
@@ -4370,16 +4065,6 @@ var v = f<dynamic>(/*info:INFERRED_TYPE_CLOSURE*/() { return 1; });
expect(v.type.toString(), 'List<dynamic>');
}
- test_unsafeBlockClosureInference_functionCall_explicitDynamicParam_comment() async {
- var mainUnit = await checkFileElement('''
-dynamic /*=List<T>*/ f/*<T>*/(dynamic/*=T*/ g()) => <T>[g()];
-var v = f/*<dynamic>*/(/*info:INFERRED_TYPE_CLOSURE*/() { return 1; });
-''');
- var v = mainUnit.topLevelVariables[0];
- expect(v.name, 'v');
- expect(v.type.toString(), 'List<dynamic>');
- }
-
@failingTest
test_unsafeBlockClosureInference_functionCall_explicitDynamicParam_viaExpr1() async {
// Note: (f/*<dynamic>*/) is nort properly resulting in an instantiated
@@ -4393,19 +4078,6 @@ var v = (f<dynamic>)(/*info:INFERRED_TYPE_CLOSURE*/() { return 1; });
expect(v.type.toString(), 'List<dynamic>');
}
- @failingTest
- test_unsafeBlockClosureInference_functionCall_explicitDynamicParam_viaExpr1_comment() async {
- // Note: (f/*<dynamic>*/) is nort properly resulting in an instantiated
- // function type due to dartbug.com/25824.
- var mainUnit = await checkFileElement('''
-dynamic /*=List<T>*/ f/*<T>*/(dynamic/*=T*/ g()) => <T>[g()];
-var v = (f/*<dynamic>*/)(/*info:INFERRED_TYPE_CLOSURE*/() { return 1; });
-''');
- var v = mainUnit.topLevelVariables[0];
- expect(v.name, 'v');
- expect(v.type.toString(), 'List<dynamic>');
- }
-
test_unsafeBlockClosureInference_functionCall_explicitDynamicParam_viaExpr2() async {
var mainUnit = await checkFileElement('''
List<T> f<T>(T g()) => <T>[g()];
@@ -4416,16 +4088,6 @@ var v = (f)<dynamic>(/*info:INFERRED_TYPE_CLOSURE*/() { return 1; });
expect(v.type.toString(), 'List<dynamic>');
}
- test_unsafeBlockClosureInference_functionCall_explicitDynamicParam_viaExpr2_comment() async {
- var mainUnit = await checkFileElement('''
-dynamic /*=List<T>*/ f/*<T>*/(dynamic/*=T*/ g()) => <T>[g()];
-var v = (f)/*<dynamic>*/(/*info:INFERRED_TYPE_CLOSURE*/() { return 1; });
-''');
- var v = mainUnit.topLevelVariables[0];
- expect(v.name, 'v');
- expect(v.type.toString(), 'List<dynamic>');
- }
-
test_unsafeBlockClosureInference_functionCall_explicitTypeParam() async {
var mainUnit = await checkFileElement('''
List<T> f<T>(T g()) => <T>[g()];
@@ -4436,16 +4098,6 @@ var v = f<int>(/*info:INFERRED_TYPE_CLOSURE*/() { return 1; });
expect(v.type.toString(), 'List<int>');
}
- test_unsafeBlockClosureInference_functionCall_explicitTypeParam_comment() async {
- var mainUnit = await checkFileElement('''
-dynamic /*=List<T>*/ f/*<T>*/(dynamic/*=T*/ g()) => <T>[g()];
-var v = f/*<int>*/(/*info:INFERRED_TYPE_CLOSURE*/() { return 1; });
-''');
- var v = mainUnit.topLevelVariables[0];
- expect(v.name, 'v');
- expect(v.type.toString(), 'List<int>');
- }
-
@failingTest
test_unsafeBlockClosureInference_functionCall_explicitTypeParam_viaExpr1() async {
// TODO(paulberry): for some reason (f/*<int>) is nort properly resulting
@@ -4459,19 +4111,6 @@ var v = (f/int>)(/*info:INFERRED_TYPE_CLOSURE*/() { return 1; });
expect(v.type.toString(), 'List<int>');
}
- @failingTest
- test_unsafeBlockClosureInference_functionCall_explicitTypeParam_viaExpr1_comment() async {
- // TODO(paulberry): for some reason (f/*<int>) is nort properly resulting
- // in an instantiated function type.
- var mainUnit = await checkFileElement('''
-dynamic /*=List<T>*/ f/*<T>*/(dynamic/*=T*/ g()) => <T>[g()];
-var v = (f/*<int>*/)(/*info:INFERRED_TYPE_CLOSURE*/() { return 1; });
-''');
- var v = mainUnit.topLevelVariables[0];
- expect(v.name, 'v');
- expect(v.type.toString(), 'List<int>');
- }
-
test_unsafeBlockClosureInference_functionCall_explicitTypeParam_viaExpr2() async {
var mainUnit = await checkFileElement('''
List<T> f<T>(T g()) => <T>[g()];
@@ -4482,16 +4121,6 @@ var v = (f)<int>(/*info:INFERRED_TYPE_CLOSURE*/() { return 1; });
expect(v.type.toString(), 'List<int>');
}
- test_unsafeBlockClosureInference_functionCall_explicitTypeParam_viaExpr2_comment() async {
- var mainUnit = await checkFileElement('''
-dynamic /*=List<T>*/ f/*<T>*/(dynamic/*=T*/ g()) => <T>[g()];
-var v = (f)/*<int>*/(/*info:INFERRED_TYPE_CLOSURE*/() { return 1; });
-''');
- var v = mainUnit.topLevelVariables[0];
- expect(v.name, 'v');
- expect(v.type.toString(), 'List<int>');
- }
-
test_unsafeBlockClosureInference_functionCall_implicitTypeParam() async {
var unit = await checkFile('''
main() {
@@ -4506,20 +4135,6 @@ List<T> f<T>(T g()) => <T>[g()];
expect(v.type.toString(), 'List<int>');
}
- test_unsafeBlockClosureInference_functionCall_implicitTypeParam_comment() async {
- var unit = await checkFile('''
-main() {
- var v = f(
- /*info:INFERRED_TYPE_CLOSURE*/() {
- return 1;
- });
-}
-dynamic /*=List<T>*/ f/*<T>*/(dynamic/*=T*/ g()) => <T>[g()];
-''');
- var v = findLocalVariable(unit, 'v');
- expect(v.type.toString(), 'List<int>');
- }
-
test_unsafeBlockClosureInference_functionCall_implicitTypeParam_viaExpr() async {
var unit = await checkFile('''
main() {
@@ -4534,20 +4149,6 @@ List<T> f<T>(T g()) => <T>[g()];
expect(v.type.toString(), 'List<int>');
}
- test_unsafeBlockClosureInference_functionCall_implicitTypeParam_viaExpr_comment() async {
- var unit = await checkFile('''
-main() {
- var v = (f)(
- /*info:INFERRED_TYPE_CLOSURE*/() {
- return 1;
- });
-}
-dynamic /*=List<T>*/ f/*<T>*/(dynamic/*=T*/ g()) => <T>[g()];
-''');
- var v = findLocalVariable(unit, 'v');
- expect(v.type.toString(), 'List<int>');
- }
-
test_unsafeBlockClosureInference_functionCall_noTypeParam() async {
var unit = await checkFile('''
main() {
@@ -4651,19 +4252,6 @@ main() {
expect(v.type.toString(), 'List<dynamic>');
}
- test_unsafeBlockClosureInference_methodCall_explicitDynamicParam_comment() async {
- var unit = await checkFile('''
-class C {
- dynamic /*=List<T>*/ f/*<T>*/(dynamic/*=T*/ g()) => <T>[g()];
-}
-main() {
- var v = new C().f/*<dynamic>*/(/*info:INFERRED_TYPE_CLOSURE*/() { return 1; });
-}
-''');
- var v = findLocalVariable(unit, 'v');
- expect(v.type.toString(), 'List<dynamic>');
- }
-
test_unsafeBlockClosureInference_methodCall_explicitTypeParam() async {
var unit = await checkFile('''
class C {
@@ -4677,19 +4265,6 @@ main() {
expect(v.type.toString(), 'List<int>');
}
- test_unsafeBlockClosureInference_methodCall_explicitTypeParam_comment() async {
- var unit = await checkFile('''
-class C {
- dynamic /*=List<T>*/ f/*<T>*/(dynamic/*=T*/ g()) => <T>[g()];
-}
-main() {
- var v = new C().f/*<int>*/(/*info:INFERRED_TYPE_CLOSURE*/() { return 1; });
-}
-''');
- var v = findLocalVariable(unit, 'v');
- expect(v.type.toString(), 'List<int>');
- }
-
test_unsafeBlockClosureInference_methodCall_implicitTypeParam() async {
var unit = await checkFile('''
class C {
@@ -4706,22 +4281,6 @@ main() {
expect(v.type.toString(), 'List<int>');
}
- test_unsafeBlockClosureInference_methodCall_implicitTypeParam_comment() async {
- var unit = await checkFile('''
-class C {
- dynamic /*=List<T>*/ f/*<T>*/(dynamic/*=T*/ g()) => <T>[g()];
-}
-main() {
- var v = new C().f(
- /*info:INFERRED_TYPE_CLOSURE*/() {
- return 1;
- });
-}
-''');
- var v = findLocalVariable(unit, 'v');
- expect(v.type.toString(), 'List<int>');
- }
-
test_unsafeBlockClosureInference_methodCall_noTypeParam() async {
var mainUnit = await checkFileElement('''
class C {
@@ -4798,8 +4357,8 @@ class InferredTypeTest_Driver extends InferredTypeTest {
@failingTest
@override
- test_genericMethods_usesGreatestLowerBound_comment_topLevel() async {
- await super.test_genericMethods_usesGreatestLowerBound_comment_topLevel();
+ test_genericMethods_usesGreatestLowerBound_topLevel() async {
+ await super.test_genericMethods_usesGreatestLowerBound_topLevel();
}
@failingTest
@@ -4821,13 +4380,6 @@ class InferredTypeTest_Driver extends InferredTypeTest {
@failingTest
@override
- test_unsafeBlockClosureInference_functionCall_explicitDynamicParam_viaExpr2_comment() async {
- await super
- .test_unsafeBlockClosureInference_functionCall_explicitDynamicParam_viaExpr2_comment();
- }
-
- @failingTest
- @override
test_unsafeBlockClosureInference_functionCall_explicitTypeParam_viaExpr2() async {
await super
.test_unsafeBlockClosureInference_functionCall_explicitTypeParam_viaExpr2();
@@ -4835,13 +4387,6 @@ class InferredTypeTest_Driver extends InferredTypeTest {
@failingTest
@override
- test_unsafeBlockClosureInference_functionCall_explicitTypeParam_viaExpr2_comment() async {
- await super
- .test_unsafeBlockClosureInference_functionCall_explicitTypeParam_viaExpr2_comment();
- }
-
- @failingTest
- @override
test_voidReturnTypeSubtypesDynamic() async {
await super.test_voidReturnTypeSubtypesDynamic();
}
« no previous file with comments | « pkg/analyzer/test/src/task/strong/checker_test.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698