Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 subtype_test; | 5 library subtype_test; |
| 6 | 6 |
| 7 import 'package:expect/expect.dart'; | 7 import 'package:expect/expect.dart'; |
| 8 import 'type_test_helper.dart'; | 8 import 'type_test_helper.dart'; |
| 9 import '../../../sdk/lib/_internal/compiler/implementation/dart_types.dart'; | 9 import '../../../sdk/lib/_internal/compiler/implementation/dart_types.dart'; |
| 10 import "../../../sdk/lib/_internal/compiler/implementation/elements/elements.dar t" | 10 import "../../../sdk/lib/_internal/compiler/implementation/elements/elements.dar t" |
| (...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 355 | 355 |
| 356 testFunctionSubtypingOptional() { | 356 testFunctionSubtypingOptional() { |
| 357 var env = new TypeEnvironment(r""" | 357 var env = new TypeEnvironment(r""" |
| 358 void void_() {} | 358 void void_() {} |
| 359 void void__int(int i) {} | 359 void void__int(int i) {} |
| 360 void void___int([int i]) {} | 360 void void___int([int i]) {} |
| 361 void void___int2([int i]) {} | 361 void void___int2([int i]) {} |
| 362 void void___Object([Object o]) {} | 362 void void___Object([Object o]) {} |
| 363 void void__int__int(int i1, [int i2]) {} | 363 void void__int__int(int i1, [int i2]) {} |
| 364 void void__int__int2(int i1, [int i2]) {} | 364 void void__int__int2(int i1, [int i2]) {} |
| 365 void void__int__int_int(int i1, [int i2, int i3]); | |
| 365 void void___double(double d) {} | 366 void void___double(double d) {} |
| 366 void void___int_int([int i1, int i2]) {} | 367 void void___int_int([int i1, int i2]) {} |
| 368 void void___int_int_int([int i1, int i2, int i3]); | |
|
karlklose
2013/04/24 11:59:20
This is not used, is it?
Johnni Winther
2013/04/25 07:54:12
Done.
| |
| 367 void void___Object_int([Object o, int i]) {} | 369 void void___Object_int([Object o, int i]) {} |
| 368 """); | 370 """); |
| 369 functionSubtypingOptionalHelper(env); | 371 functionSubtypingOptionalHelper(env); |
| 370 } | 372 } |
| 371 | 373 |
| 372 testTypedefSubtypingOptional() { | 374 testTypedefSubtypingOptional() { |
| 373 var env = new TypeEnvironment(r""" | 375 var env = new TypeEnvironment(r""" |
| 374 typedef void void_(); | 376 typedef void void_(); |
| 375 typedef void void__int(int i); | 377 typedef void void__int(int i); |
| 376 typedef void void___int([int i]); | 378 typedef void void___int([int i]); |
| 377 typedef void void___int2([int i]); | 379 typedef void void___int2([int i]); |
| 378 typedef void void___Object([Object o]); | 380 typedef void void___Object([Object o]); |
| 379 typedef void void__int__int(int i1, [int i2]); | 381 typedef void void__int__int(int i1, [int i2]); |
| 380 typedef void void__int__int2(int i1, [int i2]); | 382 typedef void void__int__int2(int i1, [int i2]); |
| 383 typedef void void__int__int_int(int i1, [int i2, int i3]); | |
| 381 typedef void void___double(double d); | 384 typedef void void___double(double d); |
| 382 typedef void void___int_int([int i1, int i2]); | 385 typedef void void___int_int([int i1, int i2]); |
| 386 typedef void void___int_int_int([int i1, int i2, int i3]); | |
|
karlklose
2013/04/24 11:59:20
Ditto.
Johnni Winther
2013/04/25 07:54:12
Done.
| |
| 383 typedef void void___Object_int([Object o, int i]); | 387 typedef void void___Object_int([Object o, int i]); |
| 384 """); | 388 """); |
| 385 functionSubtypingOptionalHelper(env); | 389 functionSubtypingOptionalHelper(env); |
| 386 } | 390 } |
| 387 | 391 |
| 388 functionSubtypingOptionalHelper(TypeEnvironment env) { | 392 functionSubtypingOptionalHelper(TypeEnvironment env) { |
| 389 expect(bool expectedResult, String sub, String sup) { | 393 expect(bool expectedResult, String sub, String sup) { |
| 390 DartType subtype = env.getElementType(sub); | 394 DartType subtype = env.getElementType(sub); |
| 391 DartType supertype = env.getElementType(sup); | 395 DartType supertype = env.getElementType(sup); |
| 392 Expect.equals(expectedResult, env.isSubtype(subtype, supertype), | 396 Expect.equals(expectedResult, env.isSubtype(subtype, supertype), |
| 393 '$subtype <: $supertype'); | 397 '$subtype <: $supertype'); |
| 394 } | 398 } |
| 395 | 399 |
| 396 // Test ([int])->void <: ()->void. | 400 // Test ([int])->void <: ()->void. |
| 397 expect(true, 'void___int', 'void_'); | 401 expect(true, 'void___int', 'void_'); |
| 398 // Test ([int])->void <: (int)->void. | 402 // Test ([int])->void <: (int)->void. |
| 399 expect(false, 'void___int', 'void__int'); | 403 expect(true, 'void___int', 'void__int'); |
| 400 // Test (int)->void <: ([int])->void. | 404 // Test (int)->void <: ([int])->void. |
| 401 expect(false, 'void__int', 'void___int'); | 405 expect(false, 'void__int', 'void___int'); |
| 402 // Test ([int])->void <: ([int])->void. | 406 // Test ([int])->void <: ([int])->void. |
| 403 expect(true, 'void___int', 'void___int2'); | 407 expect(true, 'void___int', 'void___int2'); |
| 404 // Test ([Object])->void <: ([int])->void. | 408 // Test ([Object])->void <: ([int])->void. |
| 405 expect(true, 'void___Object', 'void___int'); | 409 expect(true, 'void___Object', 'void___int'); |
| 406 // Test ([int])->void <: ([Object])->void. | 410 // Test ([int])->void <: ([Object])->void. |
| 407 expect(true, 'void___int', 'void___Object'); | 411 expect(true, 'void___int', 'void___Object'); |
| 408 // Test (int,[int])->void <: (int,[int])->void. | 412 // Test (int,[int])->void <: (int,[int])->void. |
| 409 expect(true, 'void__int__int', 'void__int__int2'); | 413 expect(true, 'void__int__int', 'void__int__int2'); |
| 414 // Test (int)->void <: ([int])->void. | |
| 415 expect(false, 'void__int', 'void___int'); | |
| 416 // Test ([int,int])->void <: (int)->void. | |
| 417 expect(true, 'void___int_int', 'void__int'); | |
| 418 // Test ([int,int])->void <: (int,[int])->void. | |
| 419 expect(true, 'void___int_int', 'void__int__int'); | |
| 420 // Test ([int,int])->void <: (int,[int,int])->void. | |
| 421 expect(false, 'void___int_int', 'void__int__int_int'); | |
| 410 // Test ([int])->void <: ([double])->void. | 422 // Test ([int])->void <: ([double])->void. |
| 411 expect(false, 'void___int', 'void___double'); | 423 expect(false, 'void___int', 'void___double'); |
| 412 // Test ([int])->void <: ([int,int])->void. | 424 // Test ([int])->void <: ([int,int])->void. |
| 413 expect(false, 'void___int', 'void___int_int'); | 425 expect(false, 'void___int', 'void___int_int'); |
| 414 // Test ([int,int])->void <: ([int])->void. | 426 // Test ([int,int])->void <: ([int])->void. |
| 415 expect(true, 'void___int_int', 'void___int'); | 427 expect(true, 'void___int_int', 'void___int'); |
| 416 // Test ([Object,int])->void <: ([int])->void. | 428 // Test ([Object,int])->void <: ([int])->void. |
| 417 expect(true, 'void___Object_int', 'void___int'); | 429 expect(true, 'void___Object_int', 'void___int'); |
| 418 } | 430 } |
| 419 | 431 |
| (...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 704 expect(true, J_U, Object_); | 716 expect(true, J_U, Object_); |
| 705 expect(false, J_U, num_); | 717 expect(false, J_U, num_); |
| 706 expect(false, J_U, int_); | 718 expect(false, J_U, int_); |
| 707 expect(false, J_U, String_); | 719 expect(false, J_U, String_); |
| 708 expect(true, J_U, dynamic_); | 720 expect(true, J_U, dynamic_); |
| 709 expect(false, J_U, J_T); | 721 expect(false, J_U, J_T); |
| 710 expect(true, J_U, J_S); | 722 expect(true, J_U, J_S); |
| 711 expect(true, J_U, J_U); | 723 expect(true, J_U, J_U); |
| 712 expect(false, J_U, A_T); | 724 expect(false, J_U, A_T); |
| 713 } | 725 } |
| OLD | NEW |