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

Side by Side Diff: tests/compiler/dart2js/cpa_inference_test.dart

Issue 11863007: Fix optional arguments handling. Handling of default values is for a further (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 11 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 import "dart:uri"; 5 import "dart:uri";
6 import "../../../sdk/lib/_internal/compiler/implementation/elements/elements.dar t"; 6 import "../../../sdk/lib/_internal/compiler/implementation/elements/elements.dar t";
7 import '../../../sdk/lib/_internal/compiler/implementation/scanner/scannerlib.da rt'; 7 import '../../../sdk/lib/_internal/compiler/implementation/scanner/scannerlib.da rt';
8 import '../../../sdk/lib/_internal/compiler/implementation/source_file.dart'; 8 import '../../../sdk/lib/_internal/compiler/implementation/source_file.dart';
9 import '../../../sdk/lib/_internal/compiler/implementation/types/types.dart'; 9 import '../../../sdk/lib/_internal/compiler/implementation/types/types.dart';
10 import '../../../sdk/lib/_internal/compiler/implementation/tree/tree.dart'; 10 import '../../../sdk/lib/_internal/compiler/implementation/tree/tree.dart';
(...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after
504 result.string, // a.x = 'abc' 504 result.string, // a.x = 'abc'
505 result.bool, // a.y = true 505 result.bool, // a.y = true
506 result.nullType, // dynamic.x = null 506 result.nullType, // dynamic.x = null
507 result.double]); // dynamic.y = 3.14 507 result.double]); // dynamic.y = 3.14
508 result.checkFieldHasType('A', 'w', 508 result.checkFieldHasType('A', 'w',
509 [result.int, // new A(..., 42) 509 [result.int, // new A(..., 42)
510 result.bool, // a.y = true 510 result.bool, // a.y = true
511 result.double]); // dynamic.y = double 511 result.double]); // dynamic.y = double
512 } 512 }
513 513
514 testNamedParameters() { 514 testOptionalNamedParameters() {
karlklose 2013/01/15 09:54:51 Perhaps you should add a few tests using methods i
polux 2013/01/17 09:14:27 Done.
515 final String source = r""" 515 final String source = r"""
516 class A { 516 class A {
517 var x, y, z, w; 517 var x, y, z, w;
518 A(this.x, {this.y, this.z, this.w}); 518 A(this.x, {this.y, this.z, this.w});
519 } 519 }
520 class B {
521 var x, y;
522 B(this.x, {this.y});
523 }
524 class C {
525 var x, y;
526 C(this.x, {this.y});
527 }
520 main() { 528 main() {
521 new A(42); 529 new A(42);
522 new A('abc', w: true, z: 42.0); 530 new A('abc', w: true, z: 42.0);
531 new B('abc', y: true);
532 new B(1, 2); // too many positional arguments
533 new C('abc', y: true);
534 new C(1, z: 2); // non-existing named parameter
523 } 535 }
524 """; 536 """;
525 AnalysisResult result = analyze(source); 537 AnalysisResult result = analyze(source);
526 result.checkFieldHasType('A', 'x', [result.int, result.string]); 538 result.checkFieldHasType('A', 'x', [result.int, result.string]);
527 result.checkFieldHasType('A', 'y', [new NullBaseType()]); 539 result.checkFieldHasType('A', 'y', [new NullBaseType()]);
528 result.checkFieldHasType('A', 'z', [new NullBaseType(), result.double]); 540 result.checkFieldHasType('A', 'z', [new NullBaseType(), result.double]);
529 result.checkFieldHasType('A', 'w', [new NullBaseType(), result.bool]); 541 result.checkFieldHasType('A', 'w', [new NullBaseType(), result.bool]);
542 result.checkFieldHasType('B', 'x', [result.string]);
543 result.checkFieldHasType('B', 'y', [result.bool]);
544 result.checkFieldHasType('C', 'x', [result.string]);
545 result.checkFieldHasType('C', 'y', [result.bool]);
546 }
547
548 testOptionalPositionalParameters() {
549 final String source = r"""
550 class A {
551 var x, y, z, w;
552 A(this.x, [this.y, this.z, this.w]);
553 }
554 class B {
555 var x, y;
556 B(this.x, [this.y]);
557 }
558 main() {
559 new A(42);
560 new A('abc', true, 42.0);
561 new B('a', true);
562 new B(1, 2, 3); // too many arguments
563 }
564 """;
565 AnalysisResult result = analyze(source);
566 result.checkFieldHasType('A', 'x', [result.int, result.string]);
567 result.checkFieldHasType('A', 'y', [new NullBaseType(), result.bool]);
568 result.checkFieldHasType('A', 'z', [new NullBaseType(), result.double]);
569 result.checkFieldHasType('A', 'w', [new NullBaseType()]);
570 result.checkFieldHasType('B', 'x', [result.string]);
571 result.checkFieldHasType('B', 'y', [result.bool]);
530 } 572 }
531 573
532 testListLiterals() { 574 testListLiterals() {
533 final String source = r""" 575 final String source = r"""
534 class A { 576 class A {
535 var x; 577 var x;
536 A(this.x); 578 A(this.x);
537 } 579 }
538 main() { 580 main() {
539 var x = []; 581 var x = [];
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
854 testNonRecusiveFunction(); 896 testNonRecusiveFunction();
855 testRecusiveFunction(); 897 testRecusiveFunction();
856 testMutuallyRecusiveFunction(); 898 testMutuallyRecusiveFunction();
857 testSimpleSend(); 899 testSimpleSend();
858 // testSendToClosureField(); // closures are not yet supported 900 // testSendToClosureField(); // closures are not yet supported
859 testSendToThis1(); 901 testSendToThis1();
860 testSendToThis2(); 902 testSendToThis2();
861 testConstructor(); 903 testConstructor();
862 testGetters(); 904 testGetters();
863 testSetters(); 905 testSetters();
864 testNamedParameters(); 906 testOptionalNamedParameters();
907 testOptionalPositionalParameters();
865 testListLiterals(); 908 testListLiterals();
866 testMapLiterals(); 909 testMapLiterals();
867 testReturn(); 910 testReturn();
868 // testNoReturn(); // right now we infer the empty type instead of null 911 // testNoReturn(); // right now we infer the empty type instead of null
869 testArithmeticOperators(); 912 testArithmeticOperators();
870 testOperators(); 913 testOperators();
871 testCompoundOperators1(); 914 testCompoundOperators1();
872 testCompoundOperators2(); 915 testCompoundOperators2();
873 testSetIndexOperator(); 916 testSetIndexOperator();
874 testInequality(); 917 testInequality();
875 // testFieldInitialization(); // TODO(polux) 918 // testFieldInitialization(); // TODO(polux)
876 testSendWithWrongArity(); 919 testSendWithWrongArity();
877 testBigTypesWidening1(); 920 testBigTypesWidening1();
878 testBigTypesWidening2(); 921 testBigTypesWidening2();
879 testDynamicIsAbsorbing(); 922 testDynamicIsAbsorbing();
880 } 923 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698