Skip to content

Commit

Permalink
Added CacheInterface.stubphp from symfony contracts (#74)
Browse files Browse the repository at this point in the history
  • Loading branch information
vudaltsov authored Aug 18, 2020
1 parent 898d580 commit 9fb7649
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 0 deletions.
1 change: 1 addition & 0 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
16 changes: 16 additions & 0 deletions src/Stubs/common/CacheInterface.stubphp
Original file line number Diff line number Diff line change
@@ -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);
}
37 changes: 37 additions & 0 deletions tests/acceptance/acceptance/CacheInterface.feature
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit 9fb7649

Please sign in to comment.