kalessil/phpinspectionsea

False positive null pointer exception

Simbiat opened this issue · 3 comments

Subject Details
Plugin Php Inspections (EA Extended)
Language level e.g. PHP 8.3

Current behaviour

Have a DOMNode element and code like this

$node?->parentNode->removeChild($node)

Get null pointer exception warning
image

Expected behaviour

No warning, since there is is a null safe operator ?-> used for the same object.

Environment details

PhpStorm 2024.1.1
Build #PS-241.15989.102, built on April 23, 2024
Licensed to simbiat.ru / Dmitry Kustov
Subscription is active until March 31, 2025.
For non-commercial open source development only.
Runtime version: 17.0.10+1-b1207.14 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Windows 11.0
GC: G1 Young Generation, G1 Old Generation
Memory: 5120M
Cores: 16
Registry:
  debugger.new.tool.window.layout=true
  run.processes.with.pty=TRUE
  ide.experimental.ui=true
  terminal.new.ui=true
Non-Bundled Plugins:
  com.intellij.ml.llm (241.15989.156)
  com.kalessil.phpStorm.phpInspectionsEA (5.0.0.0)
  org.intellij.qodana (241.15989.121)

Similar example in a match statement:

function foo (?SomeEnum $bar) {
    match ($bar) {
        null => 'invalid',
        SomeEnum::SomeCase => $bar->value,
    };
}

Accessing $bar->value gets an inspection flag. However, the null case is evaluated first, making it impossible for $bar to be null in the second case.

image

PhpStorm 2024.2 EAP
Build #PS-242.10180.24, built on May 14, 2024
Runtime version: 21.0.3+13-b446.1 amd64 (JCEF 122.1.9)
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Windows 11.0
GC: G1 Young Generation, G1 Concurrent GC, G1 Old Generation
Memory: 4096M
Cores: 12
Registry:
  debugger.new.tool.window.layout=true
  run.processes.with.pty=TRUE
  ide.experimental.ui=true