OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
311 CheckSub(T.Receiver, T.Any); | 311 CheckSub(T.Receiver, T.Any); |
312 CheckSub(T.Object, T.Any); | 312 CheckSub(T.Object, T.Any); |
313 CheckSub(T.Object, T.Receiver); | 313 CheckSub(T.Object, T.Receiver); |
314 CheckSub(T.Array, T.Object); | 314 CheckSub(T.Array, T.Object); |
315 CheckSub(T.Function, T.Object); | 315 CheckSub(T.Function, T.Object); |
316 CheckSub(T.Proxy, T.Receiver); | 316 CheckSub(T.Proxy, T.Receiver); |
317 CheckUnordered(T.Object, T.Proxy); | 317 CheckUnordered(T.Object, T.Proxy); |
318 CheckUnordered(T.Array, T.Function); | 318 CheckUnordered(T.Array, T.Function); |
319 | 319 |
320 // Structured subtyping | 320 // Structured subtyping |
| 321 CheckSub(T.None, T.ObjectClass); |
| 322 CheckSub(T.None, T.ObjectConstant1); |
| 323 CheckSub(T.ObjectClass, T.Any); |
| 324 CheckSub(T.ObjectConstant1, T.Any); |
| 325 |
321 CheckSub(T.ObjectClass, T.Object); | 326 CheckSub(T.ObjectClass, T.Object); |
322 CheckSub(T.ArrayClass, T.Object); | 327 CheckSub(T.ArrayClass, T.Object); |
323 CheckUnordered(T.ObjectClass, T.ArrayClass); | 328 CheckUnordered(T.ObjectClass, T.ArrayClass); |
324 | 329 |
325 CheckSub(T.SmiConstant, T.Smi); | 330 CheckSub(T.SmiConstant, T.Smi); |
326 CheckSub(T.SmiConstant, T.Signed32); | 331 CheckSub(T.SmiConstant, T.Signed32); |
327 CheckSub(T.SmiConstant, T.Number); | 332 CheckSub(T.SmiConstant, T.Number); |
328 CheckSub(T.ObjectConstant1, T.Object); | 333 CheckSub(T.ObjectConstant1, T.Object); |
329 CheckSub(T.ObjectConstant2, T.Object); | 334 CheckSub(T.ObjectConstant2, T.Object); |
330 CheckSub(T.ArrayConstant1, T.Object); | 335 CheckSub(T.ArrayConstant1, T.Object); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
377 | 382 |
378 CheckOverlap(T.Receiver, T.Any); | 383 CheckOverlap(T.Receiver, T.Any); |
379 CheckOverlap(T.Object, T.Any); | 384 CheckOverlap(T.Object, T.Any); |
380 CheckOverlap(T.Object, T.Receiver); | 385 CheckOverlap(T.Object, T.Receiver); |
381 CheckOverlap(T.Array, T.Object); | 386 CheckOverlap(T.Array, T.Object); |
382 CheckOverlap(T.Function, T.Object); | 387 CheckOverlap(T.Function, T.Object); |
383 CheckOverlap(T.Proxy, T.Receiver); | 388 CheckOverlap(T.Proxy, T.Receiver); |
384 CheckDisjoint(T.Object, T.Proxy); | 389 CheckDisjoint(T.Object, T.Proxy); |
385 CheckDisjoint(T.Array, T.Function); | 390 CheckDisjoint(T.Array, T.Function); |
386 | 391 |
| 392 CheckOverlap(T.ObjectClass, T.Any); |
| 393 CheckOverlap(T.ObjectConstant1, T.Any); |
| 394 |
387 CheckOverlap(T.ObjectClass, T.Object); | 395 CheckOverlap(T.ObjectClass, T.Object); |
388 CheckOverlap(T.ArrayClass, T.Object); | 396 CheckOverlap(T.ArrayClass, T.Object); |
389 CheckOverlap(T.ObjectClass, T.ObjectClass); | 397 CheckOverlap(T.ObjectClass, T.ObjectClass); |
390 CheckOverlap(T.ArrayClass, T.ArrayClass); | 398 CheckOverlap(T.ArrayClass, T.ArrayClass); |
391 CheckDisjoint(T.ObjectClass, T.ArrayClass); | 399 CheckDisjoint(T.ObjectClass, T.ArrayClass); |
392 | 400 |
393 CheckOverlap(T.SmiConstant, T.Smi); | 401 CheckOverlap(T.SmiConstant, T.Smi); |
394 CheckOverlap(T.SmiConstant, T.Signed32); | 402 CheckOverlap(T.SmiConstant, T.Signed32); |
395 CheckOverlap(T.SmiConstant, T.Number); | 403 CheckOverlap(T.SmiConstant, T.Number); |
396 CheckDisjoint(T.SmiConstant, T.Double); | 404 CheckDisjoint(T.SmiConstant, T.Double); |
(...skipping 28 matching lines...) Expand all Loading... |
425 CheckEqual(T.Union(T.None, T.Number), T.Number); | 433 CheckEqual(T.Union(T.None, T.Number), T.Number); |
426 CheckEqual(T.Union(T.Object, T.Proxy), T.Receiver); | 434 CheckEqual(T.Union(T.Object, T.Proxy), T.Receiver); |
427 CheckEqual(T.Union(T.Number, T.String), T.Union(T.String, T.Number)); | 435 CheckEqual(T.Union(T.Number, T.String), T.Union(T.String, T.Number)); |
428 CheckSub(T.Union(T.Number, T.String), T.Any); | 436 CheckSub(T.Union(T.Number, T.String), T.Any); |
429 | 437 |
430 // Class-class | 438 // Class-class |
431 CHECK(IsClass(Type::Union(T.ObjectClass, T.ObjectClass))); | 439 CHECK(IsClass(Type::Union(T.ObjectClass, T.ObjectClass))); |
432 CHECK(IsUnion(Type::Union(T.ObjectClass, T.ArrayClass))); | 440 CHECK(IsUnion(Type::Union(T.ObjectClass, T.ArrayClass))); |
433 | 441 |
434 CheckEqual(T.Union(T.ObjectClass, T.ObjectClass), T.ObjectClass); | 442 CheckEqual(T.Union(T.ObjectClass, T.ObjectClass), T.ObjectClass); |
| 443 CheckSub(T.None, T.Union(T.ObjectClass, T.ArrayClass)); |
| 444 CheckSub(T.Union(T.ObjectClass, T.ArrayClass), T.Any); |
435 CheckSub(T.ObjectClass, T.Union(T.ObjectClass, T.ArrayClass)); | 445 CheckSub(T.ObjectClass, T.Union(T.ObjectClass, T.ArrayClass)); |
436 CheckSub(T.ArrayClass, T.Union(T.ObjectClass, T.ArrayClass)); | 446 CheckSub(T.ArrayClass, T.Union(T.ObjectClass, T.ArrayClass)); |
437 CheckSub(T.Union(T.ObjectClass, T.ArrayClass), T.Object); | 447 CheckSub(T.Union(T.ObjectClass, T.ArrayClass), T.Object); |
438 CheckUnordered(T.Union(T.ObjectClass, T.ArrayClass), T.Array); | 448 CheckUnordered(T.Union(T.ObjectClass, T.ArrayClass), T.Array); |
439 CheckOverlap(T.Union(T.ObjectClass, T.ArrayClass), T.Array); | 449 CheckOverlap(T.Union(T.ObjectClass, T.ArrayClass), T.Array); |
440 CheckDisjoint(T.Union(T.ObjectClass, T.ArrayClass), T.Number); | 450 CheckDisjoint(T.Union(T.ObjectClass, T.ArrayClass), T.Number); |
441 | 451 |
442 // Constant-constant | 452 // Constant-constant |
443 CHECK(IsConstant(Type::Union(T.ObjectConstant1, T.ObjectConstant1))); | 453 CHECK(IsConstant(Type::Union(T.ObjectConstant1, T.ObjectConstant1))); |
444 CHECK(IsConstant(Type::Union(T.ArrayConstant1, T.ArrayConstant1))); | 454 CHECK(IsConstant(Type::Union(T.ArrayConstant1, T.ArrayConstant1))); |
445 CHECK(IsUnion(Type::Union(T.ObjectConstant1, T.ObjectConstant2))); | 455 CHECK(IsUnion(Type::Union(T.ObjectConstant1, T.ObjectConstant2))); |
446 | 456 |
447 CheckEqual(T.Union(T.ObjectConstant1, T.ObjectConstant1), T.ObjectConstant1); | 457 CheckEqual(T.Union(T.ObjectConstant1, T.ObjectConstant1), T.ObjectConstant1); |
448 CheckEqual(T.Union(T.ArrayConstant1, T.ArrayConstant1), T.ArrayConstant1); | 458 CheckEqual(T.Union(T.ArrayConstant1, T.ArrayConstant1), T.ArrayConstant1); |
449 CheckEqual(T.Union(T.ArrayConstant1, T.ArrayConstant1), T.ArrayConstant2); | 459 CheckEqual(T.Union(T.ArrayConstant1, T.ArrayConstant1), T.ArrayConstant2); |
| 460 CheckSub(T.None, T.Union(T.ObjectConstant1, T.ObjectConstant2)); |
| 461 CheckSub(T.Union(T.ObjectConstant1, T.ObjectConstant2), T.Any); |
450 CheckSub(T.ObjectConstant1, T.Union(T.ObjectConstant1, T.ObjectConstant2)); | 462 CheckSub(T.ObjectConstant1, T.Union(T.ObjectConstant1, T.ObjectConstant2)); |
451 CheckSub(T.ObjectConstant2, T.Union(T.ObjectConstant1, T.ObjectConstant2)); | 463 CheckSub(T.ObjectConstant2, T.Union(T.ObjectConstant1, T.ObjectConstant2)); |
452 CheckSub(T.ArrayConstant2, T.Union(T.ArrayConstant1, T.ObjectConstant2)); | 464 CheckSub(T.ArrayConstant2, T.Union(T.ArrayConstant1, T.ObjectConstant2)); |
453 CheckSub(T.Union(T.ObjectConstant1, T.ObjectConstant2), T.Object); | 465 CheckSub(T.Union(T.ObjectConstant1, T.ObjectConstant2), T.Object); |
454 CheckUnordered(T.Union(T.ObjectConstant1, T.ObjectConstant2), T.ObjectClass); | 466 CheckUnordered(T.Union(T.ObjectConstant1, T.ObjectConstant2), T.ObjectClass); |
455 CheckUnordered(T.Union(T.ObjectConstant1, T.ArrayConstant1), T.Array); | 467 CheckUnordered(T.Union(T.ObjectConstant1, T.ArrayConstant1), T.Array); |
456 CheckOverlap(T.Union(T.ObjectConstant1, T.ArrayConstant1), T.Array); | 468 CheckOverlap(T.Union(T.ObjectConstant1, T.ArrayConstant1), T.Array); |
457 CheckOverlap(T.Union(T.ObjectConstant1, T.ArrayConstant1), T.ArrayConstant2); | 469 CheckOverlap(T.Union(T.ObjectConstant1, T.ArrayConstant1), T.ArrayConstant2); |
458 CheckDisjoint(T.Union(T.ObjectConstant1, T.ArrayConstant1), T.Number); | 470 CheckDisjoint(T.Union(T.ObjectConstant1, T.ArrayConstant1), T.Number); |
459 CheckDisjoint(T.Union(T.ObjectConstant1, T.ArrayConstant1), T.ObjectClass); | 471 CheckDisjoint(T.Union(T.ObjectConstant1, T.ArrayConstant1), T.ObjectClass); |
460 | 472 |
461 // Bitset-class | 473 // Bitset-class |
462 CHECK(IsBitset(Type::Union(T.ObjectClass, T.Object))); | 474 CHECK(IsBitset(Type::Union(T.ObjectClass, T.Object))); |
463 CHECK(IsUnion(Type::Union(T.ObjectClass, T.Number))); | 475 CHECK(IsUnion(Type::Union(T.ObjectClass, T.Number))); |
464 | 476 |
465 CheckEqual(T.Union(T.ObjectClass, T.Object), T.Object); | 477 CheckEqual(T.Union(T.ObjectClass, T.Object), T.Object); |
| 478 CheckSub(T.None, T.Union(T.ObjectClass, T.Number)); |
466 CheckSub(T.Union(T.ObjectClass, T.Number), T.Any); | 479 CheckSub(T.Union(T.ObjectClass, T.Number), T.Any); |
467 CheckSub(T.Union(T.ObjectClass, T.Smi), T.Union(T.Object, T.Number)); | 480 CheckSub(T.Union(T.ObjectClass, T.Smi), T.Union(T.Object, T.Number)); |
468 CheckSub(T.Union(T.ObjectClass, T.Array), T.Object); | 481 CheckSub(T.Union(T.ObjectClass, T.Array), T.Object); |
469 CheckUnordered(T.Union(T.ObjectClass, T.String), T.Array); | 482 CheckUnordered(T.Union(T.ObjectClass, T.String), T.Array); |
470 CheckOverlap(T.Union(T.ObjectClass, T.String), T.Object); | 483 CheckOverlap(T.Union(T.ObjectClass, T.String), T.Object); |
471 CheckDisjoint(T.Union(T.ObjectClass, T.String), T.Number); | 484 CheckDisjoint(T.Union(T.ObjectClass, T.String), T.Number); |
472 | 485 |
473 // Bitset-constant | 486 // Bitset-constant |
474 CHECK(IsBitset(Type::Union(T.SmiConstant, T.Number))); | 487 CHECK(IsBitset(Type::Union(T.SmiConstant, T.Number))); |
475 CHECK(IsBitset(Type::Union(T.ObjectConstant1, T.Object))); | 488 CHECK(IsBitset(Type::Union(T.ObjectConstant1, T.Object))); |
476 CHECK(IsUnion(Type::Union(T.ObjectConstant2, T.Number))); | 489 CHECK(IsUnion(Type::Union(T.ObjectConstant2, T.Number))); |
477 | 490 |
478 CheckEqual(T.Union(T.SmiConstant, T.Number), T.Number); | 491 CheckEqual(T.Union(T.SmiConstant, T.Number), T.Number); |
479 CheckEqual(T.Union(T.ObjectConstant1, T.Object), T.Object); | 492 CheckEqual(T.Union(T.ObjectConstant1, T.Object), T.Object); |
| 493 CheckSub(T.None, T.Union(T.ObjectConstant1, T.Number)); |
480 CheckSub(T.Union(T.ObjectConstant1, T.Number), T.Any); | 494 CheckSub(T.Union(T.ObjectConstant1, T.Number), T.Any); |
481 CheckSub(T.Union(T.ObjectConstant1, T.Signed32), T.Union(T.Object, T.Number)); | 495 CheckSub(T.Union(T.ObjectConstant1, T.Signed32), T.Union(T.Object, T.Number)); |
482 CheckSub(T.Union(T.ObjectConstant1, T.Array), T.Object); | 496 CheckSub(T.Union(T.ObjectConstant1, T.Array), T.Object); |
483 CheckUnordered(T.Union(T.ObjectConstant1, T.String), T.Array); | 497 CheckUnordered(T.Union(T.ObjectConstant1, T.String), T.Array); |
484 CheckOverlap(T.Union(T.ObjectConstant1, T.String), T.Object); | 498 CheckOverlap(T.Union(T.ObjectConstant1, T.String), T.Object); |
485 CheckDisjoint(T.Union(T.ObjectConstant1, T.String), T.Number); | 499 CheckDisjoint(T.Union(T.ObjectConstant1, T.String), T.Number); |
486 CheckEqual(T.Union(T.Signed32, T.Signed32Constant), T.Signed32); | 500 CheckEqual(T.Union(T.Signed32, T.Signed32Constant), T.Signed32); |
487 | 501 |
488 // Class-constant | 502 // Class-constant |
489 CHECK(IsUnion(Type::Union(T.ObjectConstant1, T.ObjectClass))); | 503 CHECK(IsUnion(Type::Union(T.ObjectConstant1, T.ObjectClass))); |
490 CHECK(IsUnion(Type::Union(T.ArrayClass, T.ObjectConstant2))); | 504 CHECK(IsUnion(Type::Union(T.ArrayClass, T.ObjectConstant2))); |
491 | 505 |
| 506 CheckSub(T.None, T.Union(T.ObjectConstant1, T.ArrayClass)); |
| 507 CheckSub(T.Union(T.ObjectConstant1, T.ArrayClass), T.Any); |
492 CheckSub(T.Union(T.ObjectConstant1, T.ArrayClass), T.Object); | 508 CheckSub(T.Union(T.ObjectConstant1, T.ArrayClass), T.Object); |
493 CheckSub(T.ObjectConstant1, T.Union(T.ObjectConstant1, T.ArrayClass)); | 509 CheckSub(T.ObjectConstant1, T.Union(T.ObjectConstant1, T.ArrayClass)); |
494 CheckSub(T.ArrayClass, T.Union(T.ObjectConstant1, T.ArrayClass)); | 510 CheckSub(T.ArrayClass, T.Union(T.ObjectConstant1, T.ArrayClass)); |
495 CheckUnordered(T.ObjectClass, T.Union(T.ObjectConstant1, T.ArrayClass)); | 511 CheckUnordered(T.ObjectClass, T.Union(T.ObjectConstant1, T.ArrayClass)); |
496 CheckSub( | 512 CheckSub( |
497 T.Union(T.ObjectConstant1, T.ArrayClass), T.Union(T.Array, T.Object)); | 513 T.Union(T.ObjectConstant1, T.ArrayClass), T.Union(T.Array, T.Object)); |
498 CheckUnordered(T.Union(T.ObjectConstant1, T.ArrayClass), T.ArrayConstant1); | 514 CheckUnordered(T.Union(T.ObjectConstant1, T.ArrayClass), T.ArrayConstant1); |
499 CheckDisjoint(T.Union(T.ObjectConstant1, T.ArrayClass), T.ObjectConstant2); | 515 CheckDisjoint(T.Union(T.ObjectConstant1, T.ArrayClass), T.ObjectConstant2); |
500 CheckDisjoint(T.Union(T.ObjectConstant1, T.ArrayClass), T.ObjectClass); | 516 CheckDisjoint(T.Union(T.ObjectConstant1, T.ArrayClass), T.ObjectClass); |
501 | 517 |
502 // Bitset-union | 518 // Bitset-union |
503 CHECK(IsBitset( | 519 CHECK(IsBitset( |
504 Type::Union(T.Object, T.Union(T.ObjectConstant1, T.ObjectClass)))); | 520 Type::Union(T.Object, T.Union(T.ObjectConstant1, T.ObjectClass)))); |
505 CHECK(IsUnion( | 521 CHECK(IsUnion( |
506 Type::Union(T.Union(T.ArrayClass, T.ObjectConstant2), T.Number))); | 522 Type::Union(T.Union(T.ArrayClass, T.ObjectConstant2), T.Number))); |
507 | 523 |
508 CheckEqual( | 524 CheckEqual( |
509 T.Union(T.Object, T.Union(T.ObjectConstant1, T.ObjectClass)), | 525 T.Union(T.Object, T.Union(T.ObjectConstant1, T.ObjectClass)), |
510 T.Object); | 526 T.Object); |
511 CheckEqual( | 527 CheckEqual( |
512 T.Union(T.Union(T.ArrayClass, T.ObjectConstant1), T.Number), | 528 T.Union(T.Union(T.ArrayClass, T.ObjectConstant1), T.Number), |
513 T.Union(T.ObjectConstant1, T.Union(T.Number, T.ArrayClass))); | 529 T.Union(T.ObjectConstant1, T.Union(T.Number, T.ArrayClass))); |
514 CheckSub( | 530 CheckSub( |
515 T.Double, | 531 T.Double, |
516 T.Union(T.Union(T.ArrayClass, T.ObjectConstant1), T.Number)); | 532 T.Union(T.Union(T.ArrayClass, T.ObjectConstant1), T.Number)); |
517 CheckSub( | 533 CheckSub( |
518 T.ObjectConstant1, | 534 T.ObjectConstant1, |
519 T.Union(T.Union(T.ArrayClass, T.ObjectConstant1), T.Double)); | 535 T.Union(T.Union(T.ArrayClass, T.ObjectConstant1), T.Double)); |
520 CheckSub( | 536 CheckSub( |
| 537 T.None, |
| 538 T.Union(T.Union(T.ArrayClass, T.ObjectConstant1), T.Double)); |
| 539 CheckSub( |
521 T.Union(T.Union(T.ArrayClass, T.ObjectConstant1), T.Double), | 540 T.Union(T.Union(T.ArrayClass, T.ObjectConstant1), T.Double), |
522 T.Any); | 541 T.Any); |
523 CheckSub( | 542 CheckSub( |
524 T.Union(T.Union(T.ArrayClass, T.ObjectConstant1), T.Double), | 543 T.Union(T.Union(T.ArrayClass, T.ObjectConstant1), T.Double), |
525 T.Union(T.ObjectConstant1, T.Union(T.Number, T.ArrayClass))); | 544 T.Union(T.ObjectConstant1, T.Union(T.Number, T.ArrayClass))); |
526 | 545 |
527 // Class-union | 546 // Class-union |
528 CHECK(IsUnion( | 547 CHECK(IsUnion( |
529 Type::Union(T.Union(T.ArrayClass, T.ObjectConstant2), T.ArrayClass))); | 548 Type::Union(T.Union(T.ArrayClass, T.ObjectConstant2), T.ArrayClass))); |
530 CHECK(IsUnion( | 549 CHECK(IsUnion( |
531 Type::Union(T.Union(T.ArrayClass, T.ObjectConstant2), T.ObjectClass))); | 550 Type::Union(T.Union(T.ArrayClass, T.ObjectConstant2), T.ObjectClass))); |
532 | 551 |
533 CheckEqual( | 552 CheckEqual( |
534 T.Union(T.ObjectClass, T.Union(T.ObjectConstant1, T.ObjectClass)), | 553 T.Union(T.ObjectClass, T.Union(T.ObjectConstant1, T.ObjectClass)), |
535 T.Union(T.ObjectClass, T.ObjectConstant1)); | 554 T.Union(T.ObjectClass, T.ObjectConstant1)); |
536 CheckSub( | 555 CheckSub( |
| 556 T.None, |
| 557 T.Union(T.ObjectClass, T.Union(T.ObjectConstant1, T.ObjectClass))); |
| 558 CheckSub( |
| 559 T.Union(T.ObjectClass, T.Union(T.ObjectConstant1, T.ObjectClass)), |
| 560 T.Any); |
| 561 CheckSub( |
537 T.Union(T.ObjectClass, T.Union(T.ObjectConstant1, T.ObjectClass)), | 562 T.Union(T.ObjectClass, T.Union(T.ObjectConstant1, T.ObjectClass)), |
538 T.Object); | 563 T.Object); |
539 CheckEqual( | 564 CheckEqual( |
540 T.Union(T.Union(T.ArrayClass, T.ObjectConstant2), T.ArrayClass), | 565 T.Union(T.Union(T.ArrayClass, T.ObjectConstant2), T.ArrayClass), |
541 T.Union(T.ArrayClass, T.ObjectConstant2)); | 566 T.Union(T.ArrayClass, T.ObjectConstant2)); |
542 | 567 |
543 // Constant-union | 568 // Constant-union |
544 CHECK(IsUnion(Type::Union( | 569 CHECK(IsUnion(Type::Union( |
545 T.ObjectConstant1, T.Union(T.ObjectConstant1, T.ObjectConstant2)))); | 570 T.ObjectConstant1, T.Union(T.ObjectConstant1, T.ObjectConstant2)))); |
546 CHECK(IsUnion(Type::Union( | 571 CHECK(IsUnion(Type::Union( |
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
711 T.Union(T.Union(T.ObjectConstant2, T.ObjectConstant1), T.ArrayClass), | 736 T.Union(T.Union(T.ObjectConstant2, T.ObjectConstant1), T.ArrayClass), |
712 T.Union( | 737 T.Union( |
713 T.ObjectConstant1, T.Union(T.ArrayConstant1, T.ObjectConstant2))), | 738 T.ObjectConstant1, T.Union(T.ArrayConstant1, T.ObjectConstant2))), |
714 T.Union(T.ObjectConstant2, T.ObjectConstant1)); | 739 T.Union(T.ObjectConstant2, T.ObjectConstant1)); |
715 CheckEqual( | 740 CheckEqual( |
716 T.Intersect( | 741 T.Intersect( |
717 T.Union(T.ObjectConstant2, T.ArrayConstant1), | 742 T.Union(T.ObjectConstant2, T.ArrayConstant1), |
718 T.Union(T.ObjectConstant1, T.ArrayConstant2)), | 743 T.Union(T.ObjectConstant1, T.ArrayConstant2)), |
719 T.ArrayConstant1); | 744 T.ArrayConstant1); |
720 } | 745 } |
OLD | NEW |