1
0
mirror of https://github.com/danog/psalm.git synced 2024-11-30 04:39:00 +01:00
psalm/CHANGELOG.md
2018-11-18 12:10:00 -05:00

1.4 KiB

Version 3.0.0 (2018-11-18)

  • Refactored a lot of classes to support an overhauled Plugin API created by @weirdan
  • Config allowCoercionFromStringToClassConst now defaults to false, meaning Psalm now finds a problem with this code by default:
    $a = "A";
    new $a(); // InvalidStringClass emitted
    $a = A::class;
    new $a(); // this is fine
    
  • Disabled PHP's cycle-detecting garbage collector (which is often run unnecessarily)
  • Improved docblock assertions to allow templated types e.g
    /**
     * Asserts that two variables are the same.
     *
     * @psalm-template T
     * @psalm-param T      $expected
     * @param mixed  $actual
     * @psalm-assert !=T $actual
     */
    function assertNotSame($expected, $actual) : void {}
    

Version 2.0.0 (2018-05-11)

  • Uses PHP Parser 4 (and thus requires PHP 7)
  • Issue type MoreSpecificImplementedReturnType has been renamed LessSpecificImplementedReturnType
  • Issue type PossiblyUndefinedArrayOffset is triggered for possibly undefined array keys (previously bucketed into PossiblyUndefinedVariable)
    $foo = rand(0, 1) ? ['a' => 1, 'b' => 2] : ['a' => 3];
    echo $foo['b'];
    
  • removed stopOnFirstError <psalm /> config attribute, which hasn't been used in ages
  • removed UntypedParam issue type, which also hasn't been used (MissingParamType is the replacement)