| 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 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 257 expect(true, A, function); | 257 expect(true, A, function); |
| 258 expect(true, A, m1); | 258 expect(true, A, m1); |
| 259 expect(true, A, m2); | 259 expect(true, A, m2); |
| 260 expect(false, A, m3); | 260 expect(false, A, m3); |
| 261 expect(false, A, m4); | 261 expect(false, A, m4); |
| 262 expect(true, A, m5); | 262 expect(true, A, m5); |
| 263 } | 263 } |
| 264 | 264 |
| 265 testFunctionSubtyping() { | 265 testFunctionSubtyping() { |
| 266 var env = new TypeEnvironment(r""" | 266 var env = new TypeEnvironment(r""" |
| 267 _() => null; |
| 267 void void_() {} | 268 void void_() {} |
| 268 void void_2() {} | 269 void void_2() {} |
| 269 int int_() => 0; | 270 int int_() => 0; |
| 270 int int_2() => 0; | 271 int int_2() => 0; |
| 271 Object Object_() => null; | 272 Object Object_() => null; |
| 272 double double_() => 0.0; | 273 double double_() => 0.0; |
| 273 void void__int(int i) {} | 274 void void__int(int i) {} |
| 274 int int__int(int i) => 0; | 275 int int__int(int i) => 0; |
| 275 int int__int2(int i) => 0; | 276 int int__int2(int i) => 0; |
| 276 int int__Object(Object o) => 0; | 277 int int__Object(Object o) => 0; |
| 277 Object Object__int(int i) => null; | 278 Object Object__int(int i) => null; |
| 278 int int__double(double d) => 0; | 279 int int__double(double d) => 0; |
| 279 int int__int_int(int i1, int i2) => 0; | 280 int int__int_int(int i1, int i2) => 0; |
| 280 void inline_void_(void f()) {} | 281 void inline_void_(void f()) {} |
| 281 void inline_void__int(void f(int i)) {} | 282 void inline_void__int(void f(int i)) {} |
| 282 """); | 283 """); |
| 283 functionSubtypingHelper(env); | 284 functionSubtypingHelper(env); |
| 284 } | 285 } |
| 285 | 286 |
| 286 testTypedefSubtyping() { | 287 testTypedefSubtyping() { |
| 287 var env = new TypeEnvironment(r""" | 288 var env = new TypeEnvironment(r""" |
| 289 typedef _(); |
| 288 typedef void void_(); | 290 typedef void void_(); |
| 289 typedef void void_2(); | 291 typedef void void_2(); |
| 290 typedef int int_(); | 292 typedef int int_(); |
| 291 typedef int int_2(); | 293 typedef int int_2(); |
| 292 typedef Object Object_(); | 294 typedef Object Object_(); |
| 293 typedef double double_(); | 295 typedef double double_(); |
| 294 typedef void void__int(int i); | 296 typedef void void__int(int i); |
| 295 typedef int int__int(int i); | 297 typedef int int__int(int i); |
| 296 typedef int int__int2(int i); | 298 typedef int int__int2(int i); |
| 297 typedef int int__Object(Object o); | 299 typedef int int__Object(Object o); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 310 DartType supertype = env.getElementType(sup); | 312 DartType supertype = env.getElementType(sup); |
| 311 Expect.equals(expectedResult, env.isSubtype(subtype, supertype), | 313 Expect.equals(expectedResult, env.isSubtype(subtype, supertype), |
| 312 '$subtype <: $supertype'); | 314 '$subtype <: $supertype'); |
| 313 } | 315 } |
| 314 | 316 |
| 315 // () -> int <: Function | 317 // () -> int <: Function |
| 316 expect(true, 'int_', 'Function'); | 318 expect(true, 'int_', 'Function'); |
| 317 // Function <: () -> int | 319 // Function <: () -> int |
| 318 expect(false, 'Function', 'int_'); | 320 expect(false, 'Function', 'int_'); |
| 319 | 321 |
| 322 // () -> dynamic <: () -> dynamic |
| 323 expect(true, '_', '_'); |
| 324 // () -> dynamic <: () -> void |
| 325 expect(true, '_', 'void_'); |
| 326 // () -> void <: () -> dynamic |
| 327 expect(true, 'void_', '_'); |
| 328 |
| 320 // () -> int <: () -> void | 329 // () -> int <: () -> void |
| 321 expect(true, 'int_', 'void_'); | 330 expect(true, 'int_', 'void_'); |
| 322 // () -> void <: () -> int | 331 // () -> void <: () -> int |
| 323 expect(false, 'void_', 'int_'); | 332 expect(false, 'void_', 'int_'); |
| 324 // () -> void <: () -> void | 333 // () -> void <: () -> void |
| 325 expect(true, 'void_', 'void_2'); | 334 expect(true, 'void_', 'void_2'); |
| 326 // () -> int <: () -> int | 335 // () -> int <: () -> int |
| 327 expect(true, 'int_', 'int_2'); | 336 expect(true, 'int_', 'int_2'); |
| 328 // () -> int <: () -> Object | 337 // () -> int <: () -> Object |
| 329 expect(true, 'int_', 'Object_'); | 338 expect(true, 'int_', 'Object_'); |
| (...skipping 390 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 720 expect(true, J_U, Object_); | 729 expect(true, J_U, Object_); |
| 721 expect(false, J_U, num_); | 730 expect(false, J_U, num_); |
| 722 expect(false, J_U, int_); | 731 expect(false, J_U, int_); |
| 723 expect(false, J_U, String_); | 732 expect(false, J_U, String_); |
| 724 expect(true, J_U, dynamic_); | 733 expect(true, J_U, dynamic_); |
| 725 expect(false, J_U, J_T); | 734 expect(false, J_U, J_T); |
| 726 expect(true, J_U, J_S); | 735 expect(true, J_U, J_S); |
| 727 expect(true, J_U, J_U); | 736 expect(true, J_U, J_U); |
| 728 expect(false, J_U, A_T); | 737 expect(false, J_U, A_T); |
| 729 } | 738 } |
| OLD | NEW |