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

Unified Diff: pkg/analyzer/test/generated/resolver_test.dart

Issue 1683343005: change static method types to not have the class type parameters (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: sort Created 4 years, 10 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/lib/src/dart/element/type.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/generated/resolver_test.dart
diff --git a/pkg/analyzer/test/generated/resolver_test.dart b/pkg/analyzer/test/generated/resolver_test.dart
index 2d2d05c0fcc607ccd932f0977dd5090a5f946e9a..5edbbc549df89a83aa5504be808638cbd32b7ba1 100644
--- a/pkg/analyzer/test/generated/resolver_test.dart
+++ b/pkg/analyzer/test/generated/resolver_test.dart
@@ -10225,6 +10225,56 @@ main(p) {
expect(type.name, 'Foo');
}
}
+
+ void test_staticMethods_classTypeParameters() {
+ String code = r'''
+class C<T> {
+ static void m() => null;
+}
+main() {
+ print(C.m);
+}
+''';
+ _resolveTestUnit(code);
+ SimpleIdentifier identifier = _findIdentifier('m);');
+ FunctionTypeImpl type = identifier.staticType;
+ expect(type.toString(), '() → void');
+ expect(type.typeParameters, isEmpty,
+ reason: 'static methods should not have type parameters');
+ expect(type.typeArguments, isEmpty,
+ reason: 'static methods should not have type arguments');
+ expect(type.typeFormals, isEmpty,
+ reason: 'this tatic method is not generic');
vsm 2016/02/11 23:38:27 s/tatic/static/
+ }
+
+ void test_staticMethods_classTypeParameters_genericMethod() {
+ AnalysisOptionsImpl options = new AnalysisOptionsImpl();
+ options.enableGenericMethods = true;
+ resetWithOptions(options);
+ String code = r'''
+class C<T> {
+ static void m<S>(S s) => null;
+}
+main() {
+ print(C.m);
+}
+''';
+ _resolveTestUnit(code);
+ SimpleIdentifier identifier = _findIdentifier('m);');
+ FunctionTypeImpl type = identifier.staticType;
+ expect(type.toString(), '<S>(S) → void');
+ expect(type.typeParameters, isEmpty,
+ reason: 'static methods should not have type parameters');
+ expect(type.typeArguments, isEmpty,
+ reason: 'static methods should not have type arguments');
+ expect(type.typeFormals.toString(), '[S]');
+
+ type = type.instantiate([DynamicTypeImpl.instance]);
+ expect(type.toString(), '(dynamic) → void');
+ expect(type.typeParameters.toString(), '[S]');
+ expect(type.typeArguments, [DynamicTypeImpl.instance]);
+ expect(type.typeFormals, isEmpty);
+ }
}
@reflectiveTest
@@ -13388,11 +13438,8 @@ class C<E> {
MethodElementImpl e = f.staticElement;
expect(e.typeParameters.toString(), '[T]');
expect(e.type.typeFormals.toString(), '[T]');
- // TODO(jmesserly): we could get rid of this {E/E} substitution, but it's
- // probably harmless, as E won't be used in the function (error verifier
- // checks this), and {E/E} is a no-op anyway.
- expect(e.type.typeParameters.toString(), '[E]');
- expect(e.type.typeArguments.toString(), '[E]');
+ expect(e.type.typeParameters.toString(), '[]');
+ expect(e.type.typeArguments.toString(), '[]');
expect(e.type.toString(), '<T>(T) → T');
FunctionType ft = e.type.instantiate([typeProvider.stringType]);
@@ -13779,6 +13826,18 @@ main() {
expect(declaration.initializer.propagatedType, isNull);
}
+ void test_genericMethod_nestedBound() {
+ String code = r'''
+class Foo<T extends num> {
+ void method/*<U extends T>*/(dynamic/*=U*/ u) {
+ u.abs();
+ }
+}
+''';
+ // Just validate that there is no warning on the call to `.abs()`.
+ _resolveTestUnit(code);
+ }
+
void test_genericMethod_nestedCapture() {
_resolveTestUnit(r'''
class C<T> {
@@ -14002,18 +14061,6 @@ main() {
expect(declaration.initializer.propagatedType, isNull);
}
- void test_genericMethod_nestedBound() {
- String code = r'''
-class Foo<T extends num> {
- void method/*<U extends T>*/(dynamic/*=U*/ u) {
- u.abs();
- }
-}
-''';
- // Just validate that there is no warning on the call to `.abs()`.
- _resolveTestUnit(code);
- }
-
void test_genericMethod_then_propagatedType() {
// Regression test for https://github.com/dart-lang/sdk/issues/25482.
String code = r'''
« no previous file with comments | « pkg/analyzer/lib/src/dart/element/type.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698