Skip to content

Commit e95f79b

Browse files
committed
Level 10 - checkImplicitMixed
1 parent 710e09c commit e95f79b

20 files changed

+430
-2
lines changed

changelog-2.0.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ When PHPStan 2.0 gets released, this will turn into [releases notes on GitHub](h
55
Major new features 🚀
66
=====================
77

8+
* **Level 10** - level 9 on steroids, treats all `mixed` types strictly, not just explicit `mixed`
89
* **Array `list` type** ([#1751](https://github.com/phpstan/phpstan-src/pull/1751)), #3311, #8185, #6243, thanks @rvanvelzen!
910
* Lists are arrays with sequential integer keys starting at 0
1011
* **Validate inline PHPDoc `@var` tag** type against native type (level 2) (https://github.com/phpstan/phpstan-src/commit/a69e3bc2f1e87f6da1e65d7935f1cc36bd5c42fe)

conf/config.level10.neon

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
includes:
2+
- config.level9.neon
3+
4+
parameters:
5+
checkImplicitMixed: true

conf/config.levelmax.neon

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
includes:
2-
- config.level9.neon
2+
- config.level10.neon

src/Testing/LevelsTestCase.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public function testLevels(
7171

7272
putenv('__PHPSTAN_FORCE_VALIDATE_STUB_FILES=1');
7373

74-
foreach (range(0, 9) as $level) {
74+
foreach (range(0, 10) as $level) {
7575
unset($outputLines);
7676
exec(sprintf('%s %s analyse --no-progress --error-format=prettyJson --level=%d %s %s %s', escapeshellarg(PHP_BINARY), $command, $level, $configPath !== null ? '--configuration ' . escapeshellarg($configPath) : '', $this->shouldAutoloadAnalysedFile() ? sprintf('--autoload-file %s', escapeshellarg($file)) : '', escapeshellarg($file)), $outputLines);
7777

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
[
2+
{
3+
"message": "Parameter #1 (mixed) of echo cannot be converted to string.",
4+
"line": 170,
5+
"ignorable": true
6+
},
7+
{
8+
"message": "Parameter #1 $closure of method Levels\\AcceptTypes\\ClosureAccepts::doBar() expects Closure(Levels\\AcceptTypes\\FooInterface, int): Levels\\AcceptTypes\\FooInterface, Closure(mixed): mixed given.",
9+
"line": 325,
10+
"ignorable": true
11+
},
12+
{
13+
"message": "Parameter #1 $callable of method Levels\\AcceptTypes\\ClosureAccepts::doBaz() expects callable(Levels\\AcceptTypes\\FooInterface, int): Levels\\AcceptTypes\\FooInterface, Closure(mixed): mixed given.",
14+
"line": 326,
15+
"ignorable": true
16+
}
17+
]
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
[
2+
{
3+
"message": "Cannot assign offset mixed to SplObjectStorage<object, mixed>.",
4+
"line": 43,
5+
"ignorable": true
6+
}
7+
]
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
[
2+
{
3+
"message": "Parameter #1 (mixed) of echo cannot be converted to string.",
4+
"line": 14,
5+
"ignorable": true
6+
},
7+
{
8+
"message": "Parameter #1 (mixed) of echo cannot be converted to string.",
9+
"line": 21,
10+
"ignorable": true
11+
},
12+
{
13+
"message": "Parameter #1 (mixed) of echo cannot be converted to string.",
14+
"line": 27,
15+
"ignorable": true
16+
},
17+
{
18+
"message": "Parameter #1 (mixed) of echo cannot be converted to string.",
19+
"line": 28,
20+
"ignorable": true
21+
}
22+
]
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
[
2+
{
3+
"message": "Closure invoked with 0 parameters, 1 required.",
4+
"line": 37,
5+
"ignorable": true
6+
},
7+
{
8+
"message": "Trying to invoke int but it's not a callable.",
9+
"line": 43,
10+
"ignorable": true
11+
}
12+
]
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
[
2+
{
3+
"message": "Cannot clone non-object variable $nullableInt of type int.",
4+
"line": 34,
5+
"ignorable": true
6+
},
7+
{
8+
"message": "Cannot clone non-object variable $nullableUnion of type int|Levels\\Cloning\\Foo.",
9+
"line": 35,
10+
"ignorable": true
11+
}
12+
]
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
[
2+
{
3+
"message": "Cannot access property $bar on mixed.",
4+
"line": 6,
5+
"ignorable": true
6+
},
7+
{
8+
"message": "Parameter #1 (mixed) of echo cannot be converted to string.",
9+
"line": 11,
10+
"ignorable": true
11+
}
12+
]

0 commit comments

Comments
 (0)