You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Not only does it fail (without reporting it), but it adds an additional if (true):
publicstaticvoidmain(String[] args){
varpojo = newMyPojo();
if (pojo != null && !isEmpty2(pojo.getCollection())) {
if (true) {
System.out.println("empty");
}
}
}
with the plugin disabled, it works:
publicstaticvoidmain(String[] args){
varpojo = newMyPojo();
if (pojo != null) {
Collection<?> c = pojo.getCollection();
if (!isEmpty(c)) {
System.out.println("empty");
}
}
}
(not the ideal result but at least it does not fail)
In addition, when I do that on my actual project I get an error notification from the plugin and the formatting gets broken:
(I did not try to reproduce this with an MRE, I guess it is a side effect of the first issue)
The text was updated successfully, but these errors were encountered:
I just noticed that the same issue occurs if you simply try to extract a local variable from within the if condition instead of performing an inlining. IntelliJ would normally split the if in a similar way.
I guess this is what IntelliJ tries to do under the hood for the inlining (as shown when the plugin is disabled), and the at the source of the problem.
DidierLoiseau
changed the title
Intellij Plugin breaks method inlining inside if condition
Intellij Plugin breaks method inlining and variable extraction from inside if condition
May 30, 2024
After formatting, CodeStyleManager.getInstance(project).reformat() is returning an instance of PsiKeywordImpl instead of the expected PsiIfStatement. Not sure why this is happening. I don't see where we return any PSI elements directly, we only return a string. So, something about how that string is being parsed into PSI elements isn't working as expected.
Because the exception is thrown, the remaining refactor logic from IntelliJ doesn't seem to be running.
IntelliJ developer is here. We will work around the problem on the IntelliJ side (ClassCastException in CodeBlockSurrounder). However, the root cause is not identified, and similar problem may still happen in other contexts. Please track IDEA-340109 for details.
Consider the following code and try inlining
isEmpty2
:Not only does it fail (without reporting it), but it adds an additional
if (true)
:with the plugin disabled, it works:
(not the ideal result but at least it does not fail)
In addition, when I do that on my actual project I get an error notification from the plugin and the formatting gets broken:
(I did not try to reproduce this with an MRE, I guess it is a side effect of the first issue)
The text was updated successfully, but these errors were encountered: