mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-49449 Groovy: "Result of assignment expression used" inspection false warning for top-level expression in block
This commit is contained in:
+8
-1
@@ -21,10 +21,15 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.plugins.groovy.codeInspection.BaseInspection;
|
||||
import org.jetbrains.plugins.groovy.codeInspection.BaseInspectionVisitor;
|
||||
import org.jetbrains.plugins.groovy.codeInspection.utils.ControlFlowUtils;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.GroovyFile;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.formatter.GrControlStatement;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrStatement;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.blocks.GrCodeBlock;
|
||||
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrAssignmentExpression;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class GroovyResultOfAssignmentUsedInspection extends BaseInspection {
|
||||
|
||||
@Nls
|
||||
@@ -54,7 +59,9 @@ public class GroovyResultOfAssignmentUsedInspection extends BaseInspection {
|
||||
public void visitAssignmentExpression(GrAssignmentExpression grAssignmentExpression) {
|
||||
super.visitAssignmentExpression(grAssignmentExpression);
|
||||
final PsiElement parent = grAssignmentExpression.getParent();
|
||||
if (parent instanceof GrCodeBlock || parent instanceof GroovyFile || parent == null) {
|
||||
final List<GrStatement> returns = ControlFlowUtils.collectReturns(ControlFlowUtils.findControlFlowOwner(grAssignmentExpression));
|
||||
if (!returns.contains(grAssignmentExpression) &&
|
||||
(parent instanceof GrCodeBlock || parent instanceof GroovyFile || parent instanceof GrControlStatement || parent == null)) {
|
||||
return;
|
||||
}
|
||||
registerError(grAssignmentExpression);
|
||||
|
||||
@@ -19,6 +19,7 @@ import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.plugins.groovy.codeInspection.GroovyImportsTracker;
|
||||
import org.jetbrains.plugins.groovy.codeInspection.assignment.GroovyAssignabilityCheckInspection;
|
||||
import org.jetbrains.plugins.groovy.codeInspection.assignment.GroovyResultOfAssignmentUsedInspection;
|
||||
import org.jetbrains.plugins.groovy.codeInspection.assignment.GroovyUncheckedAssignmentOfMemberOfRawTypeInspection;
|
||||
import org.jetbrains.plugins.groovy.codeInspection.bugs.GroovyAccessibilityInspection;
|
||||
import org.jetbrains.plugins.groovy.codeInspection.bugs.GroovyLabeledStatementInspection;
|
||||
@@ -347,4 +348,8 @@ public class GroovyHighlightingTest extends LightCodeInsightFixtureTestCase {
|
||||
public void testTestMarkupStubs() {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testResultOfAssignmentUsed() {
|
||||
doTest(new GroovyResultOfAssignmentUsedInspection());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
public class AssResult {
|
||||
public void context(boolean b, String ps) {
|
||||
String vs = 'prefix'
|
||||
if (b) vs += ps // warning
|
||||
if (b) { vs += ps } // no warning
|
||||
print <warning descr="Result of assignment expression used">vs = 4</warning>
|
||||
println ps
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user