All Versions
71
Latest Version
Avg Release Cycle
8 days
Latest Release
1233 days ago

Changelog History
Page 7

  • v3.4.11 Changes

    August 09, 2019

    πŸ”‹ Features

    • Psalter : Undefined Variables can now be removed automatically (#1967) - thanks @jeffreyyoo!
    • 0️⃣ Psalm now warns about missing interface return types (#1846) and bad default types for static properties (#1974)

    πŸ›  Bugfixes

    • πŸ‘Œ Improve DOM property types (#1951), thanks @ShiraNai7!
    • πŸ‘ Allow comparisons to templated param classes (#1970)
    • Language Server : fix erroneous property not initialised issues (#1973)
    • πŸ›  Fix handling of setcookie (#1972)
    • Prevent fatal error with empty @template-extends docblock (#1963)
    • No false positives about unused variables after continue (#1980)
    • Prevent PHP Notice with malformed docblock type (#1563)
    • ComplicatedExpressionException should no longer cause a fatal error on elseif (#1985)
    • πŸ‘Œ Support fully-qualified param types in @method annotations (#1989)
    • Psalter : Allow full replacements to take precedence over minor alterations, avoiding corrupted output (#1991)
    • πŸ›  Fix setlocale param types (#1988), thanks @BackEndTea!
  • v3.4.10 Changes

    July 23, 2019

    πŸ›  Bugfixes

    • πŸ‘Œ Improve refinement of templated types (#1886, #1927, #1931, #1932)
    • prevent a LogicException when scanning files nested class_exists checks (#1925)
    • invalidate cached grandchild of stubbed class (#1935)
    • πŸ›  fix evaluation of a/b/c/d/../../../../ (#1940)
    • @inheritdoc leads to @throws being inherited - thanks @smelesh (#1945)
    • πŸ‘ allow assertions on templated values (#1937)
    • πŸ‘Œ support use of a third arg in explode that can lead to empty output (#1953)
    • Language Server add support for completing built-in class names (#1863)
    • Language Server allow signature help to kick in for root functions without proper scope
    • πŸ‘ Allow templated assertions on already-templated values (#1956)
    • πŸ‘Œ Improve detection of unused private properties - thanks @2e3s (#1962)
    • πŸ‘Œ Improve file path resolution on Windows
  • v3.4.9 Changes

    July 09, 2019

    πŸ›  Fixes an issue with negated iterable/array assertions introduced in 3.4.8 (#1922)

  • v3.4.8 Changes

    July 09, 2019

    πŸ”‹ 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)
  • v3.4.7 Changes

    June 28, 2019

    πŸ›  Bugfixes

    πŸ›  Fixes an issue (#1859) introduced in 3.4.3 where conditional definitions of functions e.g.

    if (!function\_exists("some\_function")) {function some\_function() {...}}
    

    would result in a crash some_function does exist in the runtime, and it's internal.

    Also fixes a similar issue (#1860) where Psalm could crash while analysing blocks surrounded by a if (class_exists(Foo::class)) if Psalm thinks Foo always exists.

  • v3.4.6 Changes

    June 27, 2019

    πŸ”‹ Features

    • πŸ‘‰ makes Psalm 20% faster by reducing object cloning
    • βž• added a SonarQube report type - thanks @lewinski! (#1808)
    • πŸ‘ trailing commas are now supported in object-like array docblocks (#1802)
    • add documentation for the assertion syntax (#1810)
    • Language server: improve autocompletion of methods and properties - thanks @iluuu1994 (#1831, #1834)
    • Language server: improve legibility of on-hover definitions - thanks @iluuu1994 (#1833)
    • Language server: add jump-to-definition of docblock types (#1832)
    • Language server: jump between parentheses having autocompleted method name - thanks @iluuu1994 (#1839)
    • warn when running Psalm with pcre.jit=1 on Macs with PHP 7.3

    πŸ›  Bugfixes

    • πŸ‘Œ improve treatment of if (class_exists(Foo::class)) {...} when the class doesn’t exist in Psalm's world (#1801)
    • πŸ—„ complain about DeprecatedClass when using a deprecated class's constants (#1803, #1814)
    • πŸ”¨ psalm-refactor : ensure directory exists before moving file (#1802)
    • πŸ›  fix expected argument count message when too-few params are provided (#1811)
    • object&Foo is converted to Foo when resolving templates (#1813)
    • the effect of array_filter($arr, 'is_numeric') (and related is_... functions) is now interpreted correctly (#1816)
    • πŸ‘ allow comparison to static with instanceof static (#1458)
    • πŸ– handle intersection when expanding template (#1818)
    • πŸ‘Œ improve behaviour of callable reconciliation (#1825)
    • don’t allow object-like array to be unioned with mixed (#1826)
    • resolve docblock self references in the scanning phase (unless inside traits) (#1827)
    • Language Server always show references to method, even if arguments are incomplete (#1835)
    • prevent invalid templated returns - thanks (#1842, #1845)
    • πŸ‘ allow static class strings to be compared (#1848)
    • πŸ‘Œ improve messaging about invalid types with hyphens in (#1852)
    • πŸ‘ allow MethodParamsProvider to accept an empty array - thanks @Daeroni (#1854)
  • v3.4.5 Changes

    June 16, 2019

    πŸ”‹ Features

    • psalm-language-server : --enable-autocompletion is now enabled by default, after a ton of great work by @joshdifabio
    • πŸ”¨ psalm-refactor : allow multiple class renames at once
    • πŸ”¨ psalm-refactor : allow multiple method renames when the methods reference one another
    • there's now a non-zero exit code when a config file is not found (#1779)
    • PHP 7.4 : nullable typed properties e.g. public ?int $foo are now also checked for initialisation (#1787)
    • πŸ—„ DeprecatedFunction is now emitted when using a deprecated function (#1793)
    • slightly improved readability for object-like array output in error messages, thanks @Kocal (#1708)

    πŸ›  Bugfixes

    • interface @template-extends wasn't being inherited properly (#1766)
    • get rid of notice with a by-ref array assignment with an unmet var-id (#1770)
    • T<true> or T<false> are now acceptable as standins for of T<bool> (#1775)
    • --report-show-info=false now works as advertised (#1773)
    • psalm-language-server fixed erroneous behaviour on save seen in Vim and Sublime (#1780)
    • πŸ‘ allow scalar type in sprintf (#1792)
    • missing static class constants are now complained about (#1791)
    • πŸ‘ allow uksort to accept version_compare (and improve handling of multiple-signature callmap options) (#1781)
    • UndefinedFunction no longer causes analysis to stop in the given block (#1790)
    • Missing docblock brackets are now detected (#1784)
  • v3.4.4 Changes

    June 10, 2019

    πŸš€ This minor release adds inference of property types from simple constructors. It can be turned off with inferPropertyTypesFromConstructor="false" in the config.

    πŸ›  Bugfixes

    • βž• adds psalm-refactor binary to composer so vendor/bin/psalm-refactor actually works...
  • v3.4.3 Changes

    June 10, 2019

    πŸ”‹ Features

    • πŸ”¨ psalm-refactor - classes can now be renamed and moved, and instance methods can be moved into subclasses. More info here.
    • the presence of a class-string<T>-typed param automatically constraints the @template type T to an object, if no constraint is present (#1738)
    • you can now specify that reports should only contain errors (#1617)

    πŸ›  Bugfixes

    • the uopz extension is now always disabled to prevent crashes (#1741)
    • πŸ—„ DeprecatedInterface can now be suppressed with referencedMethod (#1746)
    • the effect of is_countable is now understood (#1742)
    • some more issues are suppressed during property constructor checks (#1764)
    • ⚑️ Windows baseline files should be preserved during updates (#1747)
    • πŸ‘ better compatibility with Symfony 4.3 (#1752)
  • v3.4.2 Changes

    June 05, 2019

    This bumps requirements so Psalm can be installed in Symfony 4.3