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

Side by Side Diff: pkg/analyzer/test/generated/strong_mode_test.dart

Issue 2656303004: Add a temporary analyzer error to work around #28515 (Closed)
Patch Set: Created 3 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library analyzer.test.generated.strong_mode_test; 5 library analyzer.test.generated.strong_mode_test;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 8
9 import 'package:analyzer/dart/ast/ast.dart'; 9 import 'package:analyzer/dart/ast/ast.dart';
10 import 'package:analyzer/dart/ast/standard_resolution_map.dart'; 10 import 'package:analyzer/dart/ast/standard_resolution_map.dart';
(...skipping 2188 matching lines...) Expand 10 before | Expand all | Expand 10 after
2199 expect(ft.toString(), '(String) → String'); 2199 expect(ft.toString(), '(String) → String');
2200 } 2200 }
2201 2201
2202 test_genericFunction_bounds() async { 2202 test_genericFunction_bounds() async {
2203 await resolveTestUnit(r'/*=T*/ f/*<T extends num>*/(/*=T*/ x) => null;'); 2203 await resolveTestUnit(r'/*=T*/ f/*<T extends num>*/(/*=T*/ x) => null;');
2204 expectFunctionType('f', '<T extends num>(T) → T', 2204 expectFunctionType('f', '<T extends num>(T) → T',
2205 elementTypeParams: '[T extends num]', typeFormals: '[T extends num]'); 2205 elementTypeParams: '[T extends num]', typeFormals: '[T extends num]');
2206 } 2206 }
2207 2207
2208 test_genericFunction_parameter() async { 2208 test_genericFunction_parameter() async {
2209 await resolveTestUnit(r''' 2209 await resolveTestUnit(
2210 r'''
2210 void g(/*=T*/ f/*<T>*/(/*=T*/ x)) {} 2211 void g(/*=T*/ f/*<T>*/(/*=T*/ x)) {}
2211 '''); 2212 ''',
2213 noErrors: false // TODO(paulberry): remove when dartbug.com/28515 fixed.
2214 );
2212 expectFunctionType('f', '<T>(T) → T', 2215 expectFunctionType('f', '<T>(T) → T',
2213 elementTypeParams: '[T]', typeFormals: '[T]'); 2216 elementTypeParams: '[T]', typeFormals: '[T]');
2214 SimpleIdentifier f = findIdentifier('f'); 2217 SimpleIdentifier f = findIdentifier('f');
2215 ParameterElementImpl e = f.staticElement; 2218 ParameterElementImpl e = f.staticElement;
2216 FunctionType type = e.type; 2219 FunctionType type = e.type;
2217 FunctionType ft = type.instantiate([typeProvider.stringType]); 2220 FunctionType ft = type.instantiate([typeProvider.stringType]);
2218 expect(ft.toString(), '(String) → String'); 2221 expect(ft.toString(), '(String) → String');
2219 } 2222 }
2220 2223
2221 test_genericFunction_static() async { 2224 test_genericFunction_static() async {
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
2321 FunctionType ft = f.staticInvokeType; 2324 FunctionType ft = f.staticInvokeType;
2322 expect(ft.toString(), '(String) → List<int>'); 2325 expect(ft.toString(), '(String) → List<int>');
2323 expect('${ft.typeArguments}/${ft.typeParameters}', '[String, int]/[E, T]'); 2326 expect('${ft.typeArguments}/${ft.typeParameters}', '[String, int]/[E, T]');
2324 2327
2325 SimpleIdentifier x = findIdentifier('x'); 2328 SimpleIdentifier x = findIdentifier('x');
2326 expect(x.staticType, 2329 expect(x.staticType,
2327 typeProvider.listType.instantiate([typeProvider.intType])); 2330 typeProvider.listType.instantiate([typeProvider.intType]));
2328 } 2331 }
2329 2332
2330 test_genericMethod_functionExpressionInvocation_explicit() async { 2333 test_genericMethod_functionExpressionInvocation_explicit() async {
2331 await resolveTestUnit(r''' 2334 await resolveTestUnit(
2335 r'''
2332 class C<E> { 2336 class C<E> {
2333 /*=T*/ f/*<T>*/(/*=T*/ e) => null; 2337 /*=T*/ f/*<T>*/(/*=T*/ e) => null;
2334 static /*=T*/ g/*<T>*/(/*=T*/ e) => null; 2338 static /*=T*/ g/*<T>*/(/*=T*/ e) => null;
2335 static final h = g; 2339 static final h = g;
2336 } 2340 }
2337 2341
2338 /*=T*/ topF/*<T>*/(/*=T*/ e) => null; 2342 /*=T*/ topF/*<T>*/(/*=T*/ e) => null;
2339 var topG = topF; 2343 var topG = topF;
2340 void test/*<S>*/(/*=T*/ pf/*<T>*/(/*=T*/ e)) { 2344 void test/*<S>*/(/*=T*/ pf/*<T>*/(/*=T*/ e)) {
2341 var c = new C<int>(); 2345 var c = new C<int>();
2342 /*=T*/ lf/*<T>*/(/*=T*/ e) => null; 2346 /*=T*/ lf/*<T>*/(/*=T*/ e) => null;
2343 2347
2344 var lambdaCall = (/*<E>*/(/*=E*/ e) => e)/*<int>*/(3); 2348 var lambdaCall = (/*<E>*/(/*=E*/ e) => e)/*<int>*/(3);
2345 var methodCall = (c.f)/*<int>*/(3); 2349 var methodCall = (c.f)/*<int>*/(3);
2346 var staticCall = (C.g)/*<int>*/(3); 2350 var staticCall = (C.g)/*<int>*/(3);
2347 var staticFieldCall = (C.h)/*<int>*/(3); 2351 var staticFieldCall = (C.h)/*<int>*/(3);
2348 var topFunCall = (topF)/*<int>*/(3); 2352 var topFunCall = (topF)/*<int>*/(3);
2349 var topFieldCall = (topG)/*<int>*/(3); 2353 var topFieldCall = (topG)/*<int>*/(3);
2350 var localCall = (lf)/*<int>*/(3); 2354 var localCall = (lf)/*<int>*/(3);
2351 var paramCall = (pf)/*<int>*/(3); 2355 var paramCall = (pf)/*<int>*/(3);
2352 } 2356 }
2353 '''); 2357 ''',
2358 noErrors: false // TODO(paulberry): remove when dartbug.com/28515 fixed.
2359 );
2354 expectIdentifierType('methodCall', "int"); 2360 expectIdentifierType('methodCall', "int");
2355 expectIdentifierType('staticCall', "int"); 2361 expectIdentifierType('staticCall', "int");
2356 expectIdentifierType('staticFieldCall', "int"); 2362 expectIdentifierType('staticFieldCall', "int");
2357 expectIdentifierType('topFunCall', "int"); 2363 expectIdentifierType('topFunCall', "int");
2358 expectIdentifierType('topFieldCall', "int"); 2364 expectIdentifierType('topFieldCall', "int");
2359 expectIdentifierType('localCall', "int"); 2365 expectIdentifierType('localCall', "int");
2360 expectIdentifierType('paramCall', "int"); 2366 expectIdentifierType('paramCall', "int");
2361 expectIdentifierType('lambdaCall', "int"); 2367 expectIdentifierType('lambdaCall', "int");
2362 } 2368 }
2363 2369
2364 test_genericMethod_functionExpressionInvocation_inferred() async { 2370 test_genericMethod_functionExpressionInvocation_inferred() async {
2365 await resolveTestUnit(r''' 2371 await resolveTestUnit(
2372 r'''
2366 class C<E> { 2373 class C<E> {
2367 /*=T*/ f/*<T>*/(/*=T*/ e) => null; 2374 /*=T*/ f/*<T>*/(/*=T*/ e) => null;
2368 static /*=T*/ g/*<T>*/(/*=T*/ e) => null; 2375 static /*=T*/ g/*<T>*/(/*=T*/ e) => null;
2369 static final h = g; 2376 static final h = g;
2370 } 2377 }
2371 2378
2372 /*=T*/ topF/*<T>*/(/*=T*/ e) => null; 2379 /*=T*/ topF/*<T>*/(/*=T*/ e) => null;
2373 var topG = topF; 2380 var topG = topF;
2374 void test/*<S>*/(/*=T*/ pf/*<T>*/(/*=T*/ e)) { 2381 void test/*<S>*/(/*=T*/ pf/*<T>*/(/*=T*/ e)) {
2375 var c = new C<int>(); 2382 var c = new C<int>();
2376 /*=T*/ lf/*<T>*/(/*=T*/ e) => null; 2383 /*=T*/ lf/*<T>*/(/*=T*/ e) => null;
2377 2384
2378 var lambdaCall = (/*<E>*/(/*=E*/ e) => e)(3); 2385 var lambdaCall = (/*<E>*/(/*=E*/ e) => e)(3);
2379 var methodCall = (c.f)(3); 2386 var methodCall = (c.f)(3);
2380 var staticCall = (C.g)(3); 2387 var staticCall = (C.g)(3);
2381 var staticFieldCall = (C.h)(3); 2388 var staticFieldCall = (C.h)(3);
2382 var topFunCall = (topF)(3); 2389 var topFunCall = (topF)(3);
2383 var topFieldCall = (topG)(3); 2390 var topFieldCall = (topG)(3);
2384 var localCall = (lf)(3); 2391 var localCall = (lf)(3);
2385 var paramCall = (pf)(3); 2392 var paramCall = (pf)(3);
2386 } 2393 }
2387 '''); 2394 ''',
2395 noErrors: false // TODO(paulberry): remove when dartbug.com/28515 fixed.
2396 );
2388 expectIdentifierType('methodCall', "int"); 2397 expectIdentifierType('methodCall', "int");
2389 expectIdentifierType('staticCall', "int"); 2398 expectIdentifierType('staticCall', "int");
2390 expectIdentifierType('staticFieldCall', "int"); 2399 expectIdentifierType('staticFieldCall', "int");
2391 expectIdentifierType('topFunCall', "int"); 2400 expectIdentifierType('topFunCall', "int");
2392 expectIdentifierType('topFieldCall', "int"); 2401 expectIdentifierType('topFieldCall', "int");
2393 expectIdentifierType('localCall', "int"); 2402 expectIdentifierType('localCall', "int");
2394 expectIdentifierType('paramCall', "int"); 2403 expectIdentifierType('paramCall', "int");
2395 expectIdentifierType('lambdaCall', "int"); 2404 expectIdentifierType('lambdaCall', "int");
2396 } 2405 }
2397 2406
2398 test_genericMethod_functionInvocation_explicit() async { 2407 test_genericMethod_functionInvocation_explicit() async {
2399 await resolveTestUnit(r''' 2408 await resolveTestUnit(
2409 r'''
2400 class C<E> { 2410 class C<E> {
2401 /*=T*/ f/*<T>*/(/*=T*/ e) => null; 2411 /*=T*/ f/*<T>*/(/*=T*/ e) => null;
2402 static /*=T*/ g/*<T>*/(/*=T*/ e) => null; 2412 static /*=T*/ g/*<T>*/(/*=T*/ e) => null;
2403 static final h = g; 2413 static final h = g;
2404 } 2414 }
2405 2415
2406 /*=T*/ topF/*<T>*/(/*=T*/ e) => null; 2416 /*=T*/ topF/*<T>*/(/*=T*/ e) => null;
2407 var topG = topF; 2417 var topG = topF;
2408 void test/*<S>*/(/*=T*/ pf/*<T>*/(/*=T*/ e)) { 2418 void test/*<S>*/(/*=T*/ pf/*<T>*/(/*=T*/ e)) {
2409 var c = new C<int>(); 2419 var c = new C<int>();
2410 /*=T*/ lf/*<T>*/(/*=T*/ e) => null; 2420 /*=T*/ lf/*<T>*/(/*=T*/ e) => null;
2411 var methodCall = c.f/*<int>*/(3); 2421 var methodCall = c.f/*<int>*/(3);
2412 var staticCall = C.g/*<int>*/(3); 2422 var staticCall = C.g/*<int>*/(3);
2413 var staticFieldCall = C.h/*<int>*/(3); 2423 var staticFieldCall = C.h/*<int>*/(3);
2414 var topFunCall = topF/*<int>*/(3); 2424 var topFunCall = topF/*<int>*/(3);
2415 var topFieldCall = topG/*<int>*/(3); 2425 var topFieldCall = topG/*<int>*/(3);
2416 var localCall = lf/*<int>*/(3); 2426 var localCall = lf/*<int>*/(3);
2417 var paramCall = pf/*<int>*/(3); 2427 var paramCall = pf/*<int>*/(3);
2418 } 2428 }
2419 '''); 2429 ''',
2430 noErrors: false // TODO(paulberry): remove when dartbug.com/28515 fixed.
2431 );
2420 expectIdentifierType('methodCall', "int"); 2432 expectIdentifierType('methodCall', "int");
2421 expectIdentifierType('staticCall', "int"); 2433 expectIdentifierType('staticCall', "int");
2422 expectIdentifierType('staticFieldCall', "int"); 2434 expectIdentifierType('staticFieldCall', "int");
2423 expectIdentifierType('topFunCall', "int"); 2435 expectIdentifierType('topFunCall', "int");
2424 expectIdentifierType('topFieldCall', "int"); 2436 expectIdentifierType('topFieldCall', "int");
2425 expectIdentifierType('localCall', "int"); 2437 expectIdentifierType('localCall', "int");
2426 expectIdentifierType('paramCall', "int"); 2438 expectIdentifierType('paramCall', "int");
2427 } 2439 }
2428 2440
2429 test_genericMethod_functionInvocation_inferred() async { 2441 test_genericMethod_functionInvocation_inferred() async {
2430 await resolveTestUnit(r''' 2442 await resolveTestUnit(
2443 r'''
2431 class C<E> { 2444 class C<E> {
2432 /*=T*/ f/*<T>*/(/*=T*/ e) => null; 2445 /*=T*/ f/*<T>*/(/*=T*/ e) => null;
2433 static /*=T*/ g/*<T>*/(/*=T*/ e) => null; 2446 static /*=T*/ g/*<T>*/(/*=T*/ e) => null;
2434 static final h = g; 2447 static final h = g;
2435 } 2448 }
2436 2449
2437 /*=T*/ topF/*<T>*/(/*=T*/ e) => null; 2450 /*=T*/ topF/*<T>*/(/*=T*/ e) => null;
2438 var topG = topF; 2451 var topG = topF;
2439 void test/*<S>*/(/*=T*/ pf/*<T>*/(/*=T*/ e)) { 2452 void test/*<S>*/(/*=T*/ pf/*<T>*/(/*=T*/ e)) {
2440 var c = new C<int>(); 2453 var c = new C<int>();
2441 /*=T*/ lf/*<T>*/(/*=T*/ e) => null; 2454 /*=T*/ lf/*<T>*/(/*=T*/ e) => null;
2442 var methodCall = c.f(3); 2455 var methodCall = c.f(3);
2443 var staticCall = C.g(3); 2456 var staticCall = C.g(3);
2444 var staticFieldCall = C.h(3); 2457 var staticFieldCall = C.h(3);
2445 var topFunCall = topF(3); 2458 var topFunCall = topF(3);
2446 var topFieldCall = topG(3); 2459 var topFieldCall = topG(3);
2447 var localCall = lf(3); 2460 var localCall = lf(3);
2448 var paramCall = pf(3); 2461 var paramCall = pf(3);
2449 } 2462 }
2450 '''); 2463 ''',
2464 noErrors: false // TODO(paulberry): remove when dartbug.com/28515 fixed.
2465 );
2451 expectIdentifierType('methodCall', "int"); 2466 expectIdentifierType('methodCall', "int");
2452 expectIdentifierType('staticCall', "int"); 2467 expectIdentifierType('staticCall', "int");
2453 expectIdentifierType('staticFieldCall', "int"); 2468 expectIdentifierType('staticFieldCall', "int");
2454 expectIdentifierType('topFunCall', "int"); 2469 expectIdentifierType('topFunCall', "int");
2455 expectIdentifierType('topFieldCall', "int"); 2470 expectIdentifierType('topFieldCall', "int");
2456 expectIdentifierType('localCall', "int"); 2471 expectIdentifierType('localCall', "int");
2457 expectIdentifierType('paramCall', "int"); 2472 expectIdentifierType('paramCall', "int");
2458 } 2473 }
2459 2474
2460 test_genericMethod_functionTypedParameter() async { 2475 test_genericMethod_functionTypedParameter() async {
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
2685 C toSpan(dynamic element) { 2700 C toSpan(dynamic element) {
2686 if (element is Iter) { 2701 if (element is Iter) {
2687 var y = element.map(toSpan); 2702 var y = element.map(toSpan);
2688 } 2703 }
2689 return null; 2704 return null;
2690 }'''); 2705 }''');
2691 expectIdentifierType('y = ', 'List<C>', isNull); 2706 expectIdentifierType('y = ', 'List<C>', isNull);
2692 } 2707 }
2693 2708
2694 test_genericMethod_tearoff() async { 2709 test_genericMethod_tearoff() async {
2695 await resolveTestUnit(r''' 2710 await resolveTestUnit(
2711 r'''
2696 class C<E> { 2712 class C<E> {
2697 /*=T*/ f/*<T>*/(E e) => null; 2713 /*=T*/ f/*<T>*/(E e) => null;
2698 static /*=T*/ g/*<T>*/(/*=T*/ e) => null; 2714 static /*=T*/ g/*<T>*/(/*=T*/ e) => null;
2699 static final h = g; 2715 static final h = g;
2700 } 2716 }
2701 2717
2702 /*=T*/ topF/*<T>*/(/*=T*/ e) => null; 2718 /*=T*/ topF/*<T>*/(/*=T*/ e) => null;
2703 var topG = topF; 2719 var topG = topF;
2704 void test/*<S>*/(/*=T*/ pf/*<T>*/(/*=T*/ e)) { 2720 void test/*<S>*/(/*=T*/ pf/*<T>*/(/*=T*/ e)) {
2705 var c = new C<int>(); 2721 var c = new C<int>();
2706 /*=T*/ lf/*<T>*/(/*=T*/ e) => null; 2722 /*=T*/ lf/*<T>*/(/*=T*/ e) => null;
2707 var methodTearOff = c.f; 2723 var methodTearOff = c.f;
2708 var staticTearOff = C.g; 2724 var staticTearOff = C.g;
2709 var staticFieldTearOff = C.h; 2725 var staticFieldTearOff = C.h;
2710 var topFunTearOff = topF; 2726 var topFunTearOff = topF;
2711 var topFieldTearOff = topG; 2727 var topFieldTearOff = topG;
2712 var localTearOff = lf; 2728 var localTearOff = lf;
2713 var paramTearOff = pf; 2729 var paramTearOff = pf;
2714 } 2730 }
2715 '''); 2731 ''',
2732 noErrors: false // TODO(paulberry): remove when dartbug.com/28515 fixed.
2733 );
2716 expectIdentifierType('methodTearOff', "<T>(int) → T"); 2734 expectIdentifierType('methodTearOff', "<T>(int) → T");
2717 expectIdentifierType('staticTearOff', "<T>(T) → T"); 2735 expectIdentifierType('staticTearOff', "<T>(T) → T");
2718 expectIdentifierType('staticFieldTearOff', "<T>(T) → T"); 2736 expectIdentifierType('staticFieldTearOff', "<T>(T) → T");
2719 expectIdentifierType('topFunTearOff', "<T>(T) → T"); 2737 expectIdentifierType('topFunTearOff', "<T>(T) → T");
2720 expectIdentifierType('topFieldTearOff', "<T>(T) → T"); 2738 expectIdentifierType('topFieldTearOff', "<T>(T) → T");
2721 expectIdentifierType('localTearOff', "<T>(T) → T"); 2739 expectIdentifierType('localTearOff', "<T>(T) → T");
2722 expectIdentifierType('paramTearOff', "<T>(T) → T"); 2740 expectIdentifierType('paramTearOff', "<T>(T) → T");
2723 } 2741 }
2724 2742
2725 test_genericMethod_then() async { 2743 test_genericMethod_then() async {
(...skipping 688 matching lines...) Expand 10 before | Expand all | Expand 10 after
3414 var v = x; 3432 var v = x;
3415 v; // marker 3433 v; // marker
3416 } 3434 }
3417 int x = 3; 3435 int x = 3;
3418 '''; 3436 ''';
3419 CompilationUnit unit = await resolveSource(code); 3437 CompilationUnit unit = await resolveSource(code);
3420 assertPropagatedAssignedType(code, unit, typeProvider.intType, null); 3438 assertPropagatedAssignedType(code, unit, typeProvider.intType, null);
3421 assertTypeOfMarkedExpression(code, unit, typeProvider.intType, null); 3439 assertTypeOfMarkedExpression(code, unit, typeProvider.intType, null);
3422 } 3440 }
3423 } 3441 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698