@@ -2450,6 +2450,50 @@ public function dataUnion(): iterable
2450
2450
NeverType::class,
2451
2451
'*NEVER* ' ,
2452
2452
];
2453
+ yield [
2454
+ [
2455
+ new ConstantArrayType ([
2456
+ new ConstantStringType ('a ' ),
2457
+ new ConstantStringType ('b ' ),
2458
+ ], [
2459
+ new ConstantBooleanType (true ),
2460
+ new ConstantBooleanType (true ),
2461
+ ], [0 ], [0 ]),
2462
+ new ConstantArrayType ([
2463
+ new ConstantStringType ('a ' ),
2464
+ new ConstantStringType ('c ' ),
2465
+ ], [
2466
+ new ConstantBooleanType (true ),
2467
+ new ConstantBooleanType (true ),
2468
+ ], [0 ], [0 , 1 ]),
2469
+ ],
2470
+ UnionType::class,
2471
+ 'array{a?: true, b: true}|array{a?: true, c?: true} ' ,
2472
+ ];
2473
+
2474
+ yield [
2475
+ [
2476
+ new ConstantArrayType ([
2477
+ new ConstantStringType ('a ' ),
2478
+ new ConstantStringType ('b ' ),
2479
+ ], [
2480
+ new ConstantBooleanType (true ),
2481
+ new ConstantBooleanType (true ),
2482
+ ], [0 ], [0 ]),
2483
+ new IntersectionType ([
2484
+ new ConstantArrayType ([
2485
+ new ConstantStringType ('a ' ),
2486
+ new ConstantStringType ('c ' ),
2487
+ ], [
2488
+ new ConstantBooleanType (true ),
2489
+ new ConstantBooleanType (true ),
2490
+ ], [0 ], [0 , 1 ]),
2491
+ new NonEmptyArrayType (),
2492
+ ]),
2493
+ ],
2494
+ UnionType::class,
2495
+ 'array{a?: true, b: true}|(array{a?: true, c?: true}&non-empty-array) ' ,
2496
+ ];
2453
2497
}
2454
2498
2455
2499
/**
@@ -4030,6 +4074,66 @@ public function dataIntersect(): iterable
4030
4074
NonAcceptingNeverType::class,
4031
4075
'never=explicit ' ,
4032
4076
];
4077
+ yield [
4078
+ [
4079
+ new UnionType ([
4080
+ new ConstantArrayType ([], []),
4081
+ new ConstantArrayType ([
4082
+ new ConstantStringType ('a ' ),
4083
+ new ConstantStringType ('b ' ),
4084
+ ], [
4085
+ new ConstantBooleanType (true ),
4086
+ new ConstantBooleanType (true ),
4087
+ ], [0 ], [0 ]),
4088
+ new ConstantArrayType ([
4089
+ new ConstantStringType ('a ' ),
4090
+ new ConstantStringType ('c ' ),
4091
+ ], [
4092
+ new ConstantBooleanType (true ),
4093
+ new ConstantBooleanType (true ),
4094
+ ], [0 ], [0 , 1 ]),
4095
+ ]),
4096
+ new NonEmptyArrayType (),
4097
+ ],
4098
+ UnionType::class,
4099
+ 'array{a?: true, b: true}|(array{a?: true, c?: true}&non-empty-array) ' ,
4100
+ ];
4101
+ yield [
4102
+ [
4103
+ new ConstantArrayType ([], []),
4104
+ new NonEmptyArrayType (),
4105
+ ],
4106
+ NeverType::class,
4107
+ '*NEVER*=implicit ' ,
4108
+ ];
4109
+ yield [
4110
+ [
4111
+ new ConstantArrayType ([
4112
+ new ConstantStringType ('a ' ),
4113
+ new ConstantStringType ('b ' ),
4114
+ ], [
4115
+ new ConstantBooleanType (true ),
4116
+ new ConstantBooleanType (true ),
4117
+ ], [0 ], [0 ]),
4118
+ new NonEmptyArrayType (),
4119
+ ],
4120
+ ConstantArrayType::class,
4121
+ 'array{a?: true, b: true} ' ,
4122
+ ];
4123
+ yield [
4124
+ [
4125
+ new ConstantArrayType ([
4126
+ new ConstantStringType ('a ' ),
4127
+ new ConstantStringType ('c ' ),
4128
+ ], [
4129
+ new ConstantBooleanType (true ),
4130
+ new ConstantBooleanType (true ),
4131
+ ], [0 ], [0 , 1 ]),
4132
+ new NonEmptyArrayType (),
4133
+ ],
4134
+ IntersectionType::class,
4135
+ 'array{a?: true, c?: true}&non-empty-array ' ,
4136
+ ];
4033
4137
}
4034
4138
4035
4139
/**
0 commit comments