Merge pull request #41844 from nextcloud/fix/tp-api-covariance

fix(TextProcessing): Add task type template param to IManager and registerTPProvider
This commit is contained in:
Marcel Klehr 2023-12-01 13:24:17 +01:00 committed by GitHub
commit e27e2e4395
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 9 deletions

View file

@ -31,7 +31,7 @@ use RuntimeException;
/**
* This is the interface that is implemented by apps that
* implement a text processing provider
* @template T of ITaskType
* @psalm-template-covariant T of ITaskType
* @since 27.1.0
*/
interface IProvider {

View file

@ -28,9 +28,7 @@ namespace OCP\TextProcessing;
/**
* This is a text processing task
* @since 27.1.0
* @psalm-template T of ITaskType
* @psalm-template S as class-string<T>
* @psalm-template P as IProvider<T>
* @psalm-template-covariant T of ITaskType
*/
final class Task implements \JsonSerializable {
protected ?int $id = null;
@ -74,7 +72,7 @@ final class Task implements \JsonSerializable {
protected int $status = self::STATUS_UNKNOWN;
/**
* @psalm-param S $type
* @psalm-param class-string<T> $type
* @param string $type
* @param string $input
* @param string $appId
@ -92,7 +90,7 @@ final class Task implements \JsonSerializable {
}
/**
* @psalm-param P $provider
* @psalm-param IProvider<T> $provider
* @param IProvider $provider
* @return string
* @since 27.1.0
@ -109,7 +107,7 @@ final class Task implements \JsonSerializable {
}
/**
* @psalm-param P $provider
* @psalm-param IProvider<T> $provider
* @param IProvider $provider
* @return bool
* @since 27.1.0
@ -119,7 +117,7 @@ final class Task implements \JsonSerializable {
}
/**
* @psalm-return S
* @psalm-return class-string<T>
* @since 27.1.0
*/
final public function getType(): string {
@ -207,7 +205,7 @@ final class Task implements \JsonSerializable {
}
/**
* @psalm-return array{id: ?int, type: S, status: 0|1|2|3|4, userId: ?string, appId: string, input: string, output: ?string, identifier: string, completionExpectedAt: ?int}
* @psalm-return array{id: ?int, type: class-string<T>, status: 0|1|2|3|4, userId: ?string, appId: string, input: string, output: ?string, identifier: string, completionExpectedAt: ?int}
* @since 27.1.0
*/
public function jsonSerialize(): array {