Skip to content

Commit

Permalink
[9.x] Improve Conditional::when and ::unless docblocks (#41106)
Browse files Browse the repository at this point in the history
* Improve Conditional::when and ::unless templates

* Apply StyleCI
  • Loading branch information
bastien-phi authored Feb 18, 2022
1 parent 37b21f1 commit d9f7f2b
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 6 deletions.
14 changes: 8 additions & 6 deletions src/Illuminate/Conditionable/Traits/Conditionable.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,12 @@ trait Conditionable
/**
* Apply the callback if the given "value" is (or resolves to) truthy.
*
* @template TWhenParameter
* @template TWhenReturnType
*
* @param bool $value
* @param (callable($this): TWhenReturnType)|null $callback
* @param (callable($this): TWhenReturnType)|null $default
* @param (callable($this): TWhenParameter)|TWhenParameter $value
* @param (callable($this, TWhenParameter): TWhenReturnType)|null $callback
* @param (callable($this, TWhenParameter): TWhenReturnType)|null $default
* @return $this|TWhenReturnType
*/
public function when($value, callable $callback = null, callable $default = null)
Expand All @@ -37,11 +38,12 @@ public function when($value, callable $callback = null, callable $default = null
/**
* Apply the callback if the given "value" is (or resolves to) falsy.
*
* @template TUnlessParameter
* @template TUnlessReturnType
*
* @param bool $value
* @param (callable($this): TUnlessReturnType) $callback
* @param (callable($this): TUnlessReturnType)|null $default
* @param (callable($this): TUnlessParameter)|TUnlessParameter $value
* @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $callback
* @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $default
* @return $this|TUnlessReturnType
*/
public function unless($value, callable $callback = null, callable $default = null)
Expand Down
80 changes: 80 additions & 0 deletions types/Support/Collection.php
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,46 @@

return 'string';
}));
assertType('Illuminate\Support\Collection<int, User>|void', $collection->when('Taylor', function ($collection, $name) {
assertType('Illuminate\Support\Collection<int, User>', $collection);
assertType('string', $name);
}));
assertType(
'Illuminate\Support\Collection<int, User>|void',
$collection->when(
'Taylor',
function ($collection, $name) {
assertType('Illuminate\Support\Collection<int, User>', $collection);
assertType('string', $name);
},
function ($collection, $name) {
assertType('Illuminate\Support\Collection<int, User>', $collection);
assertType('string', $name);
}
)
);
assertType('Illuminate\Support\Collection<int, User>|void', $collection->when(fn () =>'Taylor', function ($collection, $name) {
assertType('Illuminate\Support\Collection<int, User>', $collection);
assertType('string', $name);
}));
assertType(
'Illuminate\Support\Collection<int, User>|void',
$collection->when(
function ($collection) {
assertType('Illuminate\Support\Collection<int, User>', $collection);

return 14;
},
function ($collection, $count) {
assertType('Illuminate\Support\Collection<int, User>', $collection);
assertType('int', $count);
},
function ($collection, $count) {
assertType('Illuminate\Support\Collection<int, User>', $collection);
assertType('int', $count);
}
)
);

assertType('bool|Illuminate\Support\Collection<int, User>', $collection->whenEmpty(function ($collection) {
assertType('Illuminate\Support\Collection<int, User>', $collection);
Expand Down Expand Up @@ -289,6 +329,46 @@

return 'string';
}));
assertType('Illuminate\Support\Collection<int, User>|void', $collection->unless('Taylor', function ($collection, $name) {
assertType('Illuminate\Support\Collection<int, User>', $collection);
assertType('string', $name);
}));
assertType(
'Illuminate\Support\Collection<int, User>|void',
$collection->unless(
'Taylor',
function ($collection, $name) {
assertType('Illuminate\Support\Collection<int, User>', $collection);
assertType('string', $name);
},
function ($collection, $name) {
assertType('Illuminate\Support\Collection<int, User>', $collection);
assertType('string', $name);
}
)
);
assertType('Illuminate\Support\Collection<int, User>|void', $collection->unless(fn () => 'Taylor', function ($collection, $name) {
assertType('Illuminate\Support\Collection<int, User>', $collection);
assertType('string', $name);
}));
assertType(
'Illuminate\Support\Collection<int, User>|void',
$collection->unless(
function ($collection) {
assertType('Illuminate\Support\Collection<int, User>', $collection);

return 14;
},
function ($collection, $count) {
assertType('Illuminate\Support\Collection<int, User>', $collection);
assertType('int', $count);
},
function ($collection, $count) {
assertType('Illuminate\Support\Collection<int, User>', $collection);
assertType('int', $count);
}
)
);

assertType('bool|Illuminate\Support\Collection<int, User>', $collection->unlessEmpty(function ($collection) {
assertType('Illuminate\Support\Collection<int, User>', $collection);
Expand Down

0 comments on commit d9f7f2b

Please sign in to comment.