phan v2.4.9 Release Notes

Release Date: 2020-02-13 // about 4 years ago
  • ๐Ÿ†• New Features(Analysis):

    Infer that class_exists implies the first argument is a class-string,
    and that method_exists implies the first argument is a class-string or an object. (#2804, #3058)

    Note that Phan still does not infer that the class or method actually exists.

    Emit PhanRedefineClass on all occurrences of a duplicate class, not just the ones after the first occurrence of the class. (#511)

    Emit PhanRedefineFunction on all occurrences of a duplicate function/method, not just the ones after the first.

    ๐Ÿ“œ Emit PhanRedefinedClassReference for many types of uses of user-defined classes that Phan has parsed multiple definitions of.
    Phan will not warn about internal classes, because the duplicate definition is probably a polyfill.
    (e.g. new DuplicateClass(), DuplicateClass::someMethod())

    ๐Ÿ› Bug fixes:

    • Fix false positive PhanParamSuspiciousOrder for preg_replace_callback (#3680)
    • ๐Ÿ›  Fix false positive PhanUnanalyzableInheritance for renamed methods from traits. (#3695)
    • ๐Ÿ›  Fix false positive PhanUndeclaredConstant previously seen for inherited class constants in some parse orders. (#3706)
    • ๐Ÿ›  Fix uncaught TypeError converting iterable<T> to nullable (#3709)