Skip to content

Commit 9338fdf

Browse files
committed
Warn about possibly stale result cache with custom extensions
1 parent 4e2778b commit 9338fdf

File tree

10 files changed

+344
-2
lines changed

10 files changed

+344
-2
lines changed

.github/workflows/e2e-tests.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,13 @@ jobs:
173173
export PHPSTAN_SCOPE_CLASS=MyTestScope
174174
ACTUAL=$(../../bin/phpstan dump-parameters -c phpstan.neon --json -l 9 | jq --raw-output '.scopeClass')
175175
[[ "$ACTUAL" == "MyTestScope" ]];
176+
- script: |
177+
cd e2e/result-cache-8
178+
composer install
179+
../../bin/phpstan
180+
OUTPUT=$(../../bin/phpstan 2>&1)
181+
grep 'Warning: Result cache might not behave correctly' <<< "$OUTPUT"
182+
grep 'ResultCache8E2E\\CustomRule' <<< "$OUTPUT"
176183
177184
steps:
178185
- name: "Checkout"

e2e/result-cache-8/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/vendor
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
namespace ResultCache8E2E;
4+
5+
use PhpParser\Node;
6+
use PHPStan\Analyser\Scope;
7+
use PHPStan\Rules\Rule;
8+
9+
/**
10+
* @implements Rule<Node>
11+
*/
12+
class CustomRule implements Rule
13+
{
14+
public function getNodeType(): string
15+
{
16+
return Node::class;
17+
}
18+
19+
public function processNode(Node $node, Scope $scope): array
20+
{
21+
return [];
22+
}
23+
24+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
namespace ResultCache8E2E;
4+
5+
use PhpParser\Node;
6+
use PHPStan\Analyser\Scope;
7+
use PHPStan\Rules\Rule;
8+
9+
/**
10+
* @implements Rule<Node>
11+
*/
12+
class CustomRule2 implements Rule
13+
{
14+
public function getNodeType(): string
15+
{
16+
return Node::class;
17+
}
18+
19+
public function processNode(Node $node, Scope $scope): array
20+
{
21+
return [];
22+
}
23+
24+
}

e2e/result-cache-8/composer.json

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"require-dev": {
3+
"phpstan/phpstan": "^1.10",
4+
"phpstan/phpstan-webmozart-assert": "^1.2"
5+
},
6+
"autoload": {
7+
"classmap": ["src"]
8+
},
9+
"autoload-dev": {
10+
"classmap": [
11+
"build"
12+
]
13+
}
14+
}

e2e/result-cache-8/composer.lock

Lines changed: 132 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

e2e/result-cache-8/phpstan.neon

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
includes:
2+
- vendor/phpstan/phpstan-webmozart-assert/extension.neon
3+
4+
parameters:
5+
paths:
6+
- src
7+
level: 8
8+
9+
rules:
10+
- ResultCache8E2E\CustomRule
11+
- ResultCache8E2E\CustomRule3
12+
13+
services:
14+
-
15+
class: ResultCache8E2E\CustomRule2
16+
tags:
17+
- phpstan.rules.rule
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
namespace ResultCache8E2E;
4+
5+
use PhpParser\Node;
6+
use PHPStan\Analyser\Scope;
7+
use PHPStan\Rules\Rule;
8+
9+
/**
10+
* @implements Rule<Node>
11+
*/
12+
class CustomRule3 implements Rule
13+
{
14+
public function getNodeType(): string
15+
{
16+
return Node::class;
17+
}
18+
19+
public function processNode(Node $node, Scope $scope): array
20+
{
21+
return [];
22+
}
23+
24+
}

e2e/result-cache-8/src/Foo.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?php
2+
3+
namespace ResultCache8E2E;
4+
5+
class Foo
6+
{
7+
8+
}

0 commit comments

Comments
 (0)