Skip to content

Commit

Permalink
qa: add failing test
Browse files Browse the repository at this point in the history
Signed-off-by: Maximilian Bösing <[email protected]>
  • Loading branch information
boesing committed Jul 9, 2023
1 parent 5cb2557 commit 6093869
Showing 1 changed file with 62 additions and 0 deletions.
62 changes: 62 additions & 0 deletions tests/Template/ClassTemplateTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4207,6 +4207,68 @@ public function aggregate(...$values): null|int|float
'ignored_issues' => [],
'php_version' => '8.0',
],
'inheritedConditionalsWithMatchingTypes' => [
'code' => '<?php
/** @template InstanceType */
interface PluginManagerInterface
{
/**
* @template TRequestedInstance extends InstanceType
* @param class-string<TRequestedInstance>|string $id
* @return ($id is class-string ? TRequestedInstance : InstanceType)
* @throws InvalidArgumentException
*/
public function get(string $id): mixed;
}
interface PluginInterface
{}
class ConcretePlugin implements PluginInterface
{}
/**
* @template InstanceType
* @template-implements PluginManagerInterface<InstanceType>
*/
abstract class AbstractPluginManager implements PluginManagerInterface
{
public function get(string $id): mixed
{
throw new InvalidArgumentException();
}
}
/**
* @template InstanceType of object
* @template-extends AbstractPluginManager<InstanceType>
*/
abstract class AbstractSingleInstancePluginManager extends AbstractPluginManager
{
/**
* {@inheritDoc}
*/
public function get(string $id): object
{
return parent::get($id);
}
}
/** @template-extends AbstractSingleInstancePluginManager<PluginInterface> */
class ConcretePluginManager extends AbstractSingleInstancePluginManager
{}
$plugins = new ConcretePluginManager();
$classString = $plugins->get(ConcretePlugin::class);
$string = $plugins->get("foo");
',
'assertions' => [
'$classString' => 'ConcretePlugin',
'$string' => 'PluginInterface',
],
'ignored_issues' => [],
'php_version' => '8.0',
],
];
}

Expand Down

0 comments on commit 6093869

Please sign in to comment.