Psalm v3.4.8 Release Notes

Release Date: 2019-07-09 // almost 5 years ago
  • 🔋 Features

    • Language server - class autocompletion now adds uses automatically (#1822)
    • Language server - @iluuu1994 added support for signature help, which shows you the expected function/method argument types as you're adding/updating those calls (#1862)
    • Language server - go to definition now works for variables too, showing where they were first defined (#1888)
    • ➕ added support for unions in @psalm-assert annotations (#1897, #1911)
    • 👍 allow resolving directories from the config location (opt-in) - thanks @bdsl! (#1910)
    • @psalm-assert-if-true can now make assertions on $this (#1915)

    🛠 Bugfixes

    • 👍 allow spread operators for inferred property types (#1873)
    • ⬇️ reduce memory leaks
    • 👌 improve display of iterable<TKey, TValue> types (#1875)
    • 👍 allow any bool input for microtime (#1876)
    • Better signature for ImagickDraw methods - thanks @Daeroni - and for cal_from_jd - thanks @vadim2991
    • class_alias statements are no longer taken into account when inside a class_exists(Nonexistant::class) conditional (#1891)
    • dead code detection - improved after @TysonAndre reported some dead code in Psalm's own codebase (#1899, #1900, #1901)
    • template traits when they're included in classes that extend another template (#1902)
    • inherit templates from parent interfaces (#1903)
    • 👍 allow empty array to be coerced to a mixed one when templated (#1886)
    • 👍 allow comparisons to templated class strings (#1885)
    • no memoization of magic properties after calling the magic set method (#1869)
    • closures can now contain @var docblocks with references to templates (#1865)
    • exit explicitly when composer.json is invalid (#1907)
    • populate the scope appropriately with catch variables if the try block always leaves (#1909)