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

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

Issue 2551023005: Prepare for decoupling analyzer ASTs from element model. (Closed)
Patch Set: Created 4 years 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 'package:analyzer/dart/ast/ast.dart'; 7 import 'package:analyzer/dart/ast/ast.dart';
8 import 'package:analyzer/dart/ast/resolution_accessors.dart';
8 import 'package:analyzer/dart/element/element.dart'; 9 import 'package:analyzer/dart/element/element.dart';
9 import 'package:analyzer/dart/element/type.dart'; 10 import 'package:analyzer/dart/element/type.dart';
10 import 'package:analyzer/src/dart/element/element.dart'; 11 import 'package:analyzer/src/dart/element/element.dart';
11 import 'package:analyzer/src/error/codes.dart'; 12 import 'package:analyzer/src/error/codes.dart';
12 import 'package:analyzer/src/generated/engine.dart'; 13 import 'package:analyzer/src/generated/engine.dart';
13 import 'package:analyzer/src/generated/source_io.dart'; 14 import 'package:analyzer/src/generated/source_io.dart';
14 import 'package:test/test.dart'; 15 import 'package:test/test.dart';
15 import 'package:test_reflective_loader/test_reflective_loader.dart'; 16 import 'package:test_reflective_loader/test_reflective_loader.dart';
16 17
17 import '../utils.dart'; 18 import '../utils.dart';
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after
300 '''; 301 ''';
301 CompilationUnit unit = resolveSource(code); 302 CompilationUnit unit = resolveSource(code);
302 303
303 ConstructorDeclaration constructor = 304 ConstructorDeclaration constructor =
304 AstFinder.getConstructorInClass(unit, "A", null); 305 AstFinder.getConstructorInClass(unit, "A", null);
305 BlockFunctionBody body = constructor.body; 306 BlockFunctionBody body = constructor.body;
306 ReturnStatement stmt = body.block.statements[0]; 307 ReturnStatement stmt = body.block.statements[0];
307 InstanceCreationExpression exp = stmt.expression; 308 InstanceCreationExpression exp = stmt.expression;
308 ClassElement elementB = AstFinder.getClass(unit, "B").element; 309 ClassElement elementB = AstFinder.getClass(unit, "B").element;
309 ClassElement elementA = AstFinder.getClass(unit, "A").element; 310 ClassElement elementA = AstFinder.getClass(unit, "A").element;
310 expect(exp.constructorName.type.type.element, elementB); 311 expect(typeForTypeName(exp.constructorName.type).element, elementB);
311 _isInstantiationOf(_hasElement(elementB))( 312 _isInstantiationOf(_hasElement(elementB))(
312 [_isType(elementA.typeParameters[0].type)])(exp.staticType); 313 [_isType(elementA.typeParameters[0].type)])(exp.staticType);
313 } 314 }
314 315
315 void test_fieldDeclaration_propagation() { 316 void test_fieldDeclaration_propagation() {
316 String code = r''' 317 String code = r'''
317 class A { 318 class A {
318 List<String> f0 = ["hello"]; 319 List<String> f0 = ["hello"];
319 } 320 }
320 '''; 321 ''';
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 FunctionDeclaration inner = 353 FunctionDeclaration inner =
353 (statements[0] as FunctionDeclarationStatement).functionDeclaration; 354 (statements[0] as FunctionDeclarationStatement).functionDeclaration;
354 BlockFunctionBody body0 = inner.functionExpression.body; 355 BlockFunctionBody body0 = inner.functionExpression.body;
355 ReturnStatement return0 = body0.block.statements[0]; 356 ReturnStatement return0 = body0.block.statements[0];
356 Expression anon0 = return0.expression; 357 Expression anon0 = return0.expression;
357 FunctionType type0 = anon0.staticType; 358 FunctionType type0 = anon0.staticType;
358 expect(type0.returnType, typeProvider.intType); 359 expect(type0.returnType, typeProvider.intType);
359 expect(type0.normalParameterTypes[0], typeProvider.stringType); 360 expect(type0.normalParameterTypes[0], typeProvider.stringType);
360 361
361 FunctionExpression anon1 = (statements[1] as ReturnStatement).expression; 362 FunctionExpression anon1 = (statements[1] as ReturnStatement).expression;
362 FunctionType type1 = anon1.element.type; 363 FunctionType type1 = elementForFunctionExpression(anon1).type;
363 expect(type1.returnType, typeProvider.intType); 364 expect(type1.returnType, typeProvider.intType);
364 expect(type1.normalParameterTypes[0], typeProvider.intType); 365 expect(type1.normalParameterTypes[0], typeProvider.intType);
365 } 366 }
366 367
367 void test_functionLiteral_assignment_typedArguments() { 368 void test_functionLiteral_assignment_typedArguments() {
368 String code = r''' 369 String code = r'''
369 typedef T Function2<S, T>(S x); 370 typedef T Function2<S, T>(S x);
370 371
371 void main () { 372 void main () {
372 Function2<int, String> l0 = (int x) => null; 373 Function2<int, String> l0 = (int x) => null;
373 Function2<int, String> l1 = (int x) => "hello"; 374 Function2<int, String> l1 = (int x) => "hello";
374 Function2<int, String> l2 = (String x) => "hello"; 375 Function2<int, String> l2 = (String x) => "hello";
375 Function2<int, String> l3 = (int x) => 3; 376 Function2<int, String> l3 = (int x) => 3;
376 Function2<int, String> l4 = (int x) {return 3;}; 377 Function2<int, String> l4 = (int x) {return 3;};
377 } 378 }
378 '''; 379 ''';
379 CompilationUnit unit = resolveSource(code); 380 CompilationUnit unit = resolveSource(code);
380 List<Statement> statements = 381 List<Statement> statements =
381 AstFinder.getStatementsInTopLevelFunction(unit, "main"); 382 AstFinder.getStatementsInTopLevelFunction(unit, "main");
382 DartType literal(int i) { 383 DartType literal(int i) {
383 VariableDeclarationStatement stmt = statements[i]; 384 VariableDeclarationStatement stmt = statements[i];
384 VariableDeclaration decl = stmt.variables.variables[0]; 385 VariableDeclaration decl = stmt.variables.variables[0];
385 FunctionExpression exp = decl.initializer; 386 FunctionExpression exp = decl.initializer;
386 return exp.element.type; 387 return elementForFunctionExpression(exp).type;
387 } 388 }
388 389
389 _isFunction2Of(_isInt, _isString)(literal(0)); 390 _isFunction2Of(_isInt, _isString)(literal(0));
390 _isFunction2Of(_isInt, _isString)(literal(1)); 391 _isFunction2Of(_isInt, _isString)(literal(1));
391 _isFunction2Of(_isString, _isString)(literal(2)); 392 _isFunction2Of(_isString, _isString)(literal(2));
392 _isFunction2Of(_isInt, _isInt)(literal(3)); 393 _isFunction2Of(_isInt, _isInt)(literal(3));
393 _isFunction2Of(_isInt, _isString)(literal(4)); 394 _isFunction2Of(_isInt, _isString)(literal(4));
394 } 395 }
395 396
396 void test_functionLiteral_assignment_unTypedArguments() { 397 void test_functionLiteral_assignment_unTypedArguments() {
397 String code = r''' 398 String code = r'''
398 typedef T Function2<S, T>(S x); 399 typedef T Function2<S, T>(S x);
399 400
400 void main () { 401 void main () {
401 Function2<int, String> l0 = (x) => null; 402 Function2<int, String> l0 = (x) => null;
402 Function2<int, String> l1 = (x) => "hello"; 403 Function2<int, String> l1 = (x) => "hello";
403 Function2<int, String> l2 = (x) => "hello"; 404 Function2<int, String> l2 = (x) => "hello";
404 Function2<int, String> l3 = (x) => 3; 405 Function2<int, String> l3 = (x) => 3;
405 Function2<int, String> l4 = (x) {return 3;}; 406 Function2<int, String> l4 = (x) {return 3;};
406 } 407 }
407 '''; 408 ''';
408 CompilationUnit unit = resolveSource(code); 409 CompilationUnit unit = resolveSource(code);
409 List<Statement> statements = 410 List<Statement> statements =
410 AstFinder.getStatementsInTopLevelFunction(unit, "main"); 411 AstFinder.getStatementsInTopLevelFunction(unit, "main");
411 DartType literal(int i) { 412 DartType literal(int i) {
412 VariableDeclarationStatement stmt = statements[i]; 413 VariableDeclarationStatement stmt = statements[i];
413 VariableDeclaration decl = stmt.variables.variables[0]; 414 VariableDeclaration decl = stmt.variables.variables[0];
414 FunctionExpression exp = decl.initializer; 415 FunctionExpression exp = decl.initializer;
415 return exp.element.type; 416 return elementForFunctionExpression(exp).type;
416 } 417 }
417 418
418 _isFunction2Of(_isInt, _isString)(literal(0)); 419 _isFunction2Of(_isInt, _isString)(literal(0));
419 _isFunction2Of(_isInt, _isString)(literal(1)); 420 _isFunction2Of(_isInt, _isString)(literal(1));
420 _isFunction2Of(_isInt, _isString)(literal(2)); 421 _isFunction2Of(_isInt, _isString)(literal(2));
421 _isFunction2Of(_isInt, _isInt)(literal(3)); 422 _isFunction2Of(_isInt, _isInt)(literal(3));
422 _isFunction2Of(_isInt, _isString)(literal(4)); 423 _isFunction2Of(_isInt, _isString)(literal(4));
423 } 424 }
424 425
425 void test_functionLiteral_body_propagation() { 426 void test_functionLiteral_body_propagation() {
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 (new Mapper<int, String>().map)((int x) {return 3;}); 471 (new Mapper<int, String>().map)((int x) {return 3;});
471 } 472 }
472 '''; 473 ''';
473 CompilationUnit unit = resolveSource(code); 474 CompilationUnit unit = resolveSource(code);
474 List<Statement> statements = 475 List<Statement> statements =
475 AstFinder.getStatementsInTopLevelFunction(unit, "main"); 476 AstFinder.getStatementsInTopLevelFunction(unit, "main");
476 DartType literal(int i) { 477 DartType literal(int i) {
477 ExpressionStatement stmt = statements[i]; 478 ExpressionStatement stmt = statements[i];
478 FunctionExpressionInvocation invk = stmt.expression; 479 FunctionExpressionInvocation invk = stmt.expression;
479 FunctionExpression exp = invk.argumentList.arguments[0]; 480 FunctionExpression exp = invk.argumentList.arguments[0];
480 return exp.element.type; 481 return elementForFunctionExpression(exp).type;
481 } 482 }
482 483
483 _isFunction2Of(_isInt, _isString)(literal(0)); 484 _isFunction2Of(_isInt, _isString)(literal(0));
484 _isFunction2Of(_isInt, _isString)(literal(1)); 485 _isFunction2Of(_isInt, _isString)(literal(1));
485 _isFunction2Of(_isString, _isString)(literal(2)); 486 _isFunction2Of(_isString, _isString)(literal(2));
486 _isFunction2Of(_isInt, _isInt)(literal(3)); 487 _isFunction2Of(_isInt, _isInt)(literal(3));
487 _isFunction2Of(_isInt, _isString)(literal(4)); 488 _isFunction2Of(_isInt, _isString)(literal(4));
488 } 489 }
489 490
490 void test_functionLiteral_functionExpressionInvocation_unTypedArguments() { 491 void test_functionLiteral_functionExpressionInvocation_unTypedArguments() {
(...skipping 10 matching lines...) Expand all
501 (new Mapper<int, String>().map)((x) {return 3;}); 502 (new Mapper<int, String>().map)((x) {return 3;});
502 } 503 }
503 '''; 504 ''';
504 CompilationUnit unit = resolveSource(code); 505 CompilationUnit unit = resolveSource(code);
505 List<Statement> statements = 506 List<Statement> statements =
506 AstFinder.getStatementsInTopLevelFunction(unit, "main"); 507 AstFinder.getStatementsInTopLevelFunction(unit, "main");
507 DartType literal(int i) { 508 DartType literal(int i) {
508 ExpressionStatement stmt = statements[i]; 509 ExpressionStatement stmt = statements[i];
509 FunctionExpressionInvocation invk = stmt.expression; 510 FunctionExpressionInvocation invk = stmt.expression;
510 FunctionExpression exp = invk.argumentList.arguments[0]; 511 FunctionExpression exp = invk.argumentList.arguments[0];
511 return exp.element.type; 512 return elementForFunctionExpression(exp).type;
512 } 513 }
513 514
514 _isFunction2Of(_isInt, _isString)(literal(0)); 515 _isFunction2Of(_isInt, _isString)(literal(0));
515 _isFunction2Of(_isInt, _isString)(literal(1)); 516 _isFunction2Of(_isInt, _isString)(literal(1));
516 _isFunction2Of(_isInt, _isString)(literal(2)); 517 _isFunction2Of(_isInt, _isString)(literal(2));
517 _isFunction2Of(_isInt, _isInt)(literal(3)); 518 _isFunction2Of(_isInt, _isInt)(literal(3));
518 _isFunction2Of(_isInt, _isString)(literal(4)); 519 _isFunction2Of(_isInt, _isString)(literal(4));
519 } 520 }
520 521
521 void test_functionLiteral_functionInvocation_typedArguments() { 522 void test_functionLiteral_functionInvocation_typedArguments() {
522 String code = r''' 523 String code = r'''
523 String map(String mapper(int x)) => mapper(null); 524 String map(String mapper(int x)) => mapper(null);
524 525
525 void main () { 526 void main () {
526 map((int x) => null); 527 map((int x) => null);
527 map((int x) => "hello"); 528 map((int x) => "hello");
528 map((String x) => "hello"); 529 map((String x) => "hello");
529 map((int x) => 3); 530 map((int x) => 3);
530 map((int x) {return 3;}); 531 map((int x) {return 3;});
531 } 532 }
532 '''; 533 ''';
533 CompilationUnit unit = resolveSource(code); 534 CompilationUnit unit = resolveSource(code);
534 List<Statement> statements = 535 List<Statement> statements =
535 AstFinder.getStatementsInTopLevelFunction(unit, "main"); 536 AstFinder.getStatementsInTopLevelFunction(unit, "main");
536 DartType literal(int i) { 537 DartType literal(int i) {
537 ExpressionStatement stmt = statements[i]; 538 ExpressionStatement stmt = statements[i];
538 MethodInvocation invk = stmt.expression; 539 MethodInvocation invk = stmt.expression;
539 FunctionExpression exp = invk.argumentList.arguments[0]; 540 FunctionExpression exp = invk.argumentList.arguments[0];
540 return exp.element.type; 541 return elementForFunctionExpression(exp).type;
541 } 542 }
542 543
543 _isFunction2Of(_isInt, _isString)(literal(0)); 544 _isFunction2Of(_isInt, _isString)(literal(0));
544 _isFunction2Of(_isInt, _isString)(literal(1)); 545 _isFunction2Of(_isInt, _isString)(literal(1));
545 _isFunction2Of(_isString, _isString)(literal(2)); 546 _isFunction2Of(_isString, _isString)(literal(2));
546 _isFunction2Of(_isInt, _isInt)(literal(3)); 547 _isFunction2Of(_isInt, _isInt)(literal(3));
547 _isFunction2Of(_isInt, _isString)(literal(4)); 548 _isFunction2Of(_isInt, _isString)(literal(4));
548 } 549 }
549 550
550 void test_functionLiteral_functionInvocation_unTypedArguments() { 551 void test_functionLiteral_functionInvocation_unTypedArguments() {
551 String code = r''' 552 String code = r'''
552 String map(String mapper(int x)) => mapper(null); 553 String map(String mapper(int x)) => mapper(null);
553 554
554 void main () { 555 void main () {
555 map((x) => null); 556 map((x) => null);
556 map((x) => "hello"); 557 map((x) => "hello");
557 map((x) => "hello"); 558 map((x) => "hello");
558 map((x) => 3); 559 map((x) => 3);
559 map((x) {return 3;}); 560 map((x) {return 3;});
560 } 561 }
561 '''; 562 ''';
562 CompilationUnit unit = resolveSource(code); 563 CompilationUnit unit = resolveSource(code);
563 List<Statement> statements = 564 List<Statement> statements =
564 AstFinder.getStatementsInTopLevelFunction(unit, "main"); 565 AstFinder.getStatementsInTopLevelFunction(unit, "main");
565 DartType literal(int i) { 566 DartType literal(int i) {
566 ExpressionStatement stmt = statements[i]; 567 ExpressionStatement stmt = statements[i];
567 MethodInvocation invk = stmt.expression; 568 MethodInvocation invk = stmt.expression;
568 FunctionExpression exp = invk.argumentList.arguments[0]; 569 FunctionExpression exp = invk.argumentList.arguments[0];
569 return exp.element.type; 570 return elementForFunctionExpression(exp).type;
570 } 571 }
571 572
572 _isFunction2Of(_isInt, _isString)(literal(0)); 573 _isFunction2Of(_isInt, _isString)(literal(0));
573 _isFunction2Of(_isInt, _isString)(literal(1)); 574 _isFunction2Of(_isInt, _isString)(literal(1));
574 _isFunction2Of(_isInt, _isString)(literal(2)); 575 _isFunction2Of(_isInt, _isString)(literal(2));
575 _isFunction2Of(_isInt, _isInt)(literal(3)); 576 _isFunction2Of(_isInt, _isInt)(literal(3));
576 _isFunction2Of(_isInt, _isString)(literal(4)); 577 _isFunction2Of(_isInt, _isString)(literal(4));
577 } 578 }
578 579
579 void test_functionLiteral_methodInvocation_typedArguments() { 580 void test_functionLiteral_methodInvocation_typedArguments() {
(...skipping 10 matching lines...) Expand all
590 new Mapper<int, String>().map((int x) {return 3;}); 591 new Mapper<int, String>().map((int x) {return 3;});
591 } 592 }
592 '''; 593 ''';
593 CompilationUnit unit = resolveSource(code); 594 CompilationUnit unit = resolveSource(code);
594 List<Statement> statements = 595 List<Statement> statements =
595 AstFinder.getStatementsInTopLevelFunction(unit, "main"); 596 AstFinder.getStatementsInTopLevelFunction(unit, "main");
596 DartType literal(int i) { 597 DartType literal(int i) {
597 ExpressionStatement stmt = statements[i]; 598 ExpressionStatement stmt = statements[i];
598 MethodInvocation invk = stmt.expression; 599 MethodInvocation invk = stmt.expression;
599 FunctionExpression exp = invk.argumentList.arguments[0]; 600 FunctionExpression exp = invk.argumentList.arguments[0];
600 return exp.element.type; 601 return elementForFunctionExpression(exp).type;
601 } 602 }
602 603
603 _isFunction2Of(_isInt, _isString)(literal(0)); 604 _isFunction2Of(_isInt, _isString)(literal(0));
604 _isFunction2Of(_isInt, _isString)(literal(1)); 605 _isFunction2Of(_isInt, _isString)(literal(1));
605 _isFunction2Of(_isString, _isString)(literal(2)); 606 _isFunction2Of(_isString, _isString)(literal(2));
606 _isFunction2Of(_isInt, _isInt)(literal(3)); 607 _isFunction2Of(_isInt, _isInt)(literal(3));
607 _isFunction2Of(_isInt, _isString)(literal(4)); 608 _isFunction2Of(_isInt, _isString)(literal(4));
608 } 609 }
609 610
610 void test_functionLiteral_methodInvocation_unTypedArguments() { 611 void test_functionLiteral_methodInvocation_unTypedArguments() {
(...skipping 10 matching lines...) Expand all
621 new Mapper<int, String>().map((x) {return 3;}); 622 new Mapper<int, String>().map((x) {return 3;});
622 } 623 }
623 '''; 624 ''';
624 CompilationUnit unit = resolveSource(code); 625 CompilationUnit unit = resolveSource(code);
625 List<Statement> statements = 626 List<Statement> statements =
626 AstFinder.getStatementsInTopLevelFunction(unit, "main"); 627 AstFinder.getStatementsInTopLevelFunction(unit, "main");
627 DartType literal(int i) { 628 DartType literal(int i) {
628 ExpressionStatement stmt = statements[i]; 629 ExpressionStatement stmt = statements[i];
629 MethodInvocation invk = stmt.expression; 630 MethodInvocation invk = stmt.expression;
630 FunctionExpression exp = invk.argumentList.arguments[0]; 631 FunctionExpression exp = invk.argumentList.arguments[0];
631 return exp.element.type; 632 return elementForFunctionExpression(exp).type;
632 } 633 }
633 634
634 _isFunction2Of(_isInt, _isString)(literal(0)); 635 _isFunction2Of(_isInt, _isString)(literal(0));
635 _isFunction2Of(_isInt, _isString)(literal(1)); 636 _isFunction2Of(_isInt, _isString)(literal(1));
636 _isFunction2Of(_isInt, _isString)(literal(2)); 637 _isFunction2Of(_isInt, _isString)(literal(2));
637 _isFunction2Of(_isInt, _isInt)(literal(3)); 638 _isFunction2Of(_isInt, _isInt)(literal(3));
638 _isFunction2Of(_isInt, _isString)(literal(4)); 639 _isFunction2Of(_isInt, _isString)(literal(4));
639 } 640 }
640 641
641 void test_functionLiteral_unTypedArgument_propagation() { 642 void test_functionLiteral_unTypedArgument_propagation() {
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
699 } 700 }
700 '''; 701 ''';
701 CompilationUnit unit = resolveSource(code); 702 CompilationUnit unit = resolveSource(code);
702 703
703 Asserter<InterfaceType> assertListOfInt = _isListOf(_isInt); 704 Asserter<InterfaceType> assertListOfInt = _isListOf(_isInt);
704 Asserter<InterfaceType> assertMapOfIntToListOfInt = 705 Asserter<InterfaceType> assertMapOfIntToListOfInt =
705 _isMapOf(_isInt, (DartType type) => assertListOfInt(type)); 706 _isMapOf(_isInt, (DartType type) => assertListOfInt(type));
706 707
707 VariableDeclaration mapB = AstFinder.getFieldInClass(unit, "B", "map"); 708 VariableDeclaration mapB = AstFinder.getFieldInClass(unit, "B", "map");
708 MethodDeclaration mapC = AstFinder.getMethodInClass(unit, "C", "map"); 709 MethodDeclaration mapC = AstFinder.getMethodInClass(unit, "C", "map");
709 assertMapOfIntToListOfInt(mapB.element.type); 710 assertMapOfIntToListOfInt(elementForVariableDeclaration(mapB).type);
710 assertMapOfIntToListOfInt(mapC.element.returnType); 711 assertMapOfIntToListOfInt(elementForMethodDeclaration(mapC).returnType);
711 712
712 MapLiteral mapLiteralB = mapB.initializer; 713 MapLiteral mapLiteralB = mapB.initializer;
713 MapLiteral mapLiteralC = (mapC.body as ExpressionFunctionBody).expression; 714 MapLiteral mapLiteralC = (mapC.body as ExpressionFunctionBody).expression;
714 assertMapOfIntToListOfInt(mapLiteralB.staticType); 715 assertMapOfIntToListOfInt(mapLiteralB.staticType);
715 assertMapOfIntToListOfInt(mapLiteralC.staticType); 716 assertMapOfIntToListOfInt(mapLiteralC.staticType);
716 717
717 ListLiteral listLiteralB = mapLiteralB.entries[0].value; 718 ListLiteral listLiteralB = mapLiteralB.entries[0].value;
718 ListLiteral listLiteralC = mapLiteralC.entries[0].value; 719 ListLiteral listLiteralC = mapLiteralC.entries[0].value;
719 assertListOfInt(listLiteralB.staticType); 720 assertListOfInt(listLiteralB.staticType);
720 assertListOfInt(listLiteralC.staticType); 721 assertListOfInt(listLiteralC.staticType);
(...skipping 1680 matching lines...) Expand 10 before | Expand all | Expand 10 after
2401 main() { 2402 main() {
2402 var v = x; 2403 var v = x;
2403 v; // marker 2404 v; // marker
2404 } 2405 }
2405 int x = 3; 2406 int x = 3;
2406 '''; 2407 ''';
2407 assertPropagatedAssignedType(code, typeProvider.intType, null); 2408 assertPropagatedAssignedType(code, typeProvider.intType, null);
2408 assertTypeOfMarkedExpression(code, typeProvider.intType, null); 2409 assertTypeOfMarkedExpression(code, typeProvider.intType, null);
2409 } 2410 }
2410 } 2411 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698