Added CacheInterface.stubphp from symfony contracts (#74)

This commit is contained in:
Valentin Udaltsov 2020-08-18 14:38:35 +03:00 committed by GitHub
parent 898d580c13
commit 9fb76499f9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 54 additions and 0 deletions

View File

@ -18,6 +18,7 @@
"require-dev": {
"doctrine/orm": "^2.7",
"phpunit/phpunit": "~7.5",
"symfony/cache-contracts": "^1.0 || ^2.0",
"symfony/console": "*",
"symfony/messenger": "^4.2 || ^5.0",
"symfony/security-guard": "^4.0 || ^5.0",

View File

@ -0,0 +1,16 @@
<?php
namespace Symfony\Contracts\Cache;
use Psr\Cache\CacheItemInterface;
interface CacheInterface
{
/**
* @template T
*
* @psalm-param CallbackInterface|callable(CacheItemInterface, bool): T $callback
* @psalm-return T
*/
public function get(string $key, callable $callback, float $beta = null, array &$metadata = null);
}

View File

@ -0,0 +1,37 @@
@symfony-common
Feature: CacheInterface
Background:
Given I have the following config
"""
<?xml version="1.0"?>
<psalm errorLevel="1">
<projectFiles>
<directory name="."/>
<ignoreFiles> <directory name="../../vendor"/> </ignoreFiles>
</projectFiles>
<plugins>
<pluginClass class="Psalm\SymfonyPsalmPlugin\Plugin"/>
</plugins>
</psalm>
"""
Scenario: CacheInterface::get has the same return type as the passed callback
Given I have the following code
"""
<?php
use Psr\Cache\CacheItemInterface;
use Symfony\Contracts\Cache\CacheInterface;
function test(CacheInterface $cache): stdClass
{
return $cache->get('key', function (CacheItemInterface $item, bool &$save): stdClass {
return new stdClass();
});
}
"""
When I run Psalm
Then I see no errors