linting

  • Static analysis at level 8, and the six months it took

    1.0 in November after five years of 0.x. Level 0 passes and finds nothing anybody cared about; raising the level all at once does not work.

  • Nullsafe short-circuits the whole chain, not one link

    When a nullsafe operator short-circuits, everything to the right of it is skipped — including method arguments, which are not evaluated at all. The short-circuiting is the same…

  • Fetching a property on null, and where ?-> hides the bug

    The nullsafe operator turns a fatal error into a null, which is sometimes exactly right and sometimes the removal of the only signal that something upstream was wrong.…

  • A finally that returns discards the exception silently

    A return inside finally overrides both the pending return value and any in-flight exception, with no diagnostic. This is almost always a mistake and there is no legitimate…

  • Named arguments and attributes change how a framework is written

    Two 8.0 features that look like syntax and are not. One makes optional parameters part of the API; the other makes docblocks executable.

  • The nullsafe operator, and where it hides a bug

    A chain of null checks reads badly and the operator that replaces them is genuinely better — and it makes one specific mistake easier to write. Short-circuiting the…

  • Union types, promotion, and match

    8.0 shipped in November with three changes that alter how a class is written, and a fourth that quietly breaks string-to-number comparison.

  • React 17 is a release with no features

    A major version whose entire purpose is to let two versions run on one page. And an event delegation change that breaks anything mixing React with jQuery.

  • Template literal types, and a string that is checked

    4.1 in November lets a type be built from string literals, which turns a naming convention into something the compiler enforces. The intrinsic helpers — Capitalize, Uppercase and…

  • The migration that squashed two hundred files

    A test suite spending ninety seconds replaying six years of schema history. Squashing is a good idea with two failure modes worth knowing first.