kalessil / phpinspectionsea

A Static Code Analyzer for PHP (a PhpStorm/Idea Plugin)

Home Page:https://plugins.jetbrains.com/plugin/7622?pr=phpStorm

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Merge with parent if removes comments

Simbiat opened this issue · comments

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

Current behaviour

Have and if construct like

if ($domething) {
            #Do something
} else {
            #Do something else
            if ($anything) {
                        #Do it all
            }
}

if ($anything) will be marked with suggestion [EA] If construct can be merged with parent one. (which is a valid one). If you chose to apply the automated fix, the line #Do something else will be removed` in result:

if ($domething) {
            #Do something
} elseif ($anything) {
            #Do it all
}

Expected behaviour

Result should be something like

if ($domething) {
            #Do something
#Do something else
} elseif ($anything) {
            #Do it all
}

or

```php
if ($domething) {
            #Do something
} elseif ($anything) {
#Do something else
            #Do it all
}

At the least comment should not be lost

Environment details

PhpStorm 2024.1
Build #PS-241.14494.237, built on March 27, 2024
Licensed to simbiat.ru / Dmitry Kustov
Subscription is active until May 11, 2024.
For non-commercial open source development only.
Runtime version: 17.0.10+8-b1207.12 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
Non-Bundled Plugins:
  com.jetbrains.space (241.14494.150)
  com.intellij.ml.llm (241.14494.240)
  com.kalessil.phpStorm.phpInspectionsEA (5.0.0.0)

Important to note, that this seems to be the case with merging to else.

if ($something) {
    #Comment
    if ($anything) {
        #Do something
    }
}

Gets transformed into

#Comment
if ($something && $anything) {
    #Do something
}

As expected