@@ -36,6 +36,22 @@ public function normalArrays(array $arr): void
3636 /** @var array<string, int> $arr */
3737 assertType ('array<string, int> ' , array_slice ($ arr , 1 , 2 ));
3838 assertType ('array<string, int> ' , array_slice ($ arr , 1 , 2 , true ));
39+
40+ /** @var non-empty-array<string> $arr */
41+ assertType ('array{} ' , array_slice ($ arr , 0 , 0 ));
42+ assertType ('array{} ' , array_slice ($ arr , 0 , 0 , true ));
43+
44+ /** @var non-empty-array<string> $arr */
45+ assertType ('array<string> ' , array_slice ($ arr , 0 , 1 ));
46+ assertType ('array<string> ' , array_slice ($ arr , 0 , 1 , true ));
47+
48+ /** @var list<string> $arr */
49+ assertType ('list<string> ' , array_slice ($ arr , 0 , 1 ));
50+ assertType ('list<string> ' , array_slice ($ arr , 0 , 1 , true ));
51+
52+ /** @var non-empty-list<string> $arr */
53+ assertType ('non-empty-list<string> ' , array_slice ($ arr , 0 , 1 ));
54+ assertType ('non-empty-list<string> ' , array_slice ($ arr , 0 , 1 , true ));
3955 }
4056
4157 public function constantArrays (array $ arr ): void
@@ -48,6 +64,14 @@ public function constantArrays(array $arr): void
4864 /** @var array{17: 'foo', 19: 'bar', 21: 'baz'}|array{foo: 17, bar: 19, baz: 21} $arr */
4965 assertType ('array{ \'bar \', \'baz \'}|array{bar: 19, baz: 21} ' , array_slice ($ arr , 1 , 2 ));
5066 assertType ('array{19: \'bar \', 21: \'baz \'}|array{bar: 19, baz: 21} ' , array_slice ($ arr , 1 , 2 , true ));
67+
68+ /** @var array{17: 'foo', b: 'bar', 19: 'baz'} $arr */
69+ assertType ('array{} ' , array_slice ($ arr , -1 , -1 ));
70+ assertType ('array{} ' , array_slice ($ arr , -1 , -1 , true ));
71+
72+ /** @var array{17: 'foo', b: 'bar', 19: 'baz'} $arr */
73+ assertType ('array{} ' , array_slice ($ arr , -1 , -2 ));
74+ assertType ('array{} ' , array_slice ($ arr , -1 , -2 , true ));
5175 }
5276
5377 public function constantArraysWithOptionalKeys (array $ arr ): void
0 commit comments