mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-13 09:19:13 +07:00
last resource delete from try-with-resources(IDEA-145803)
ensure that psi remain correct, automatically resolve conflict with variables declared after the try-with-resources stmt
This commit is contained in:
+1
-1
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.intellij.codeInsight.daemon.impl.quickfix;
|
||||
|
||||
import com.intellij.codeInsight.BlockUtils;
|
||||
import com.intellij.codeInsight.FileModificationService;
|
||||
import com.intellij.codeInsight.daemon.QuickFixBundle;
|
||||
import com.intellij.codeInsight.daemon.impl.analysis.HighlightMessageUtil;
|
||||
@@ -32,7 +33,6 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.*;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.siyeh.ig.psiutils.BlockUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
|
||||
+1
-1
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.intellij.codeInsight.daemon.impl.quickfix;
|
||||
|
||||
import com.intellij.codeInsight.BlockUtils;
|
||||
import com.intellij.codeInsight.daemon.QuickFixBundle;
|
||||
import com.intellij.codeInsight.intention.LowPriorityAction;
|
||||
import com.intellij.codeInspection.LocalQuickFixAndIntentionActionOnPsiElement;
|
||||
@@ -23,7 +24,6 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.siyeh.ig.psiutils.BlockUtils;
|
||||
import com.siyeh.ig.psiutils.SideEffectChecker;
|
||||
import com.siyeh.ig.psiutils.StatementExtractor;
|
||||
import org.jetbrains.annotations.Nls;
|
||||
|
||||
+2
-1
@@ -2,6 +2,7 @@
|
||||
|
||||
package com.intellij.codeInsight.daemon.impl.quickfix;
|
||||
|
||||
import com.intellij.codeInsight.BlockUtils;
|
||||
import com.intellij.codeInsight.daemon.QuickFixBundle;
|
||||
import com.intellij.codeInsight.daemon.impl.analysis.HighlightControlFlowUtil;
|
||||
import com.intellij.codeInspection.LocalQuickFixOnPsiElement;
|
||||
@@ -219,7 +220,7 @@ public class SimplifyBooleanExpressionFix extends LocalQuickFixOnPsiElement {
|
||||
|
||||
if (parent instanceof PsiCodeBlock) {
|
||||
if (statement instanceof PsiBlockStatement &&
|
||||
!DeclarationSearchUtils.containsConflictingDeclarations(((PsiBlockStatement)statement).getCodeBlock(), (PsiCodeBlock)parent)) {
|
||||
!BlockUtils.containsConflictingDeclarations(((PsiBlockStatement)statement).getCodeBlock(), (PsiCodeBlock)parent)) {
|
||||
inlineBlockStatements(orig, (PsiBlockStatement)statement, parent);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.intellij.codeInspection;
|
||||
|
||||
import com.intellij.codeInsight.BlockUtils;
|
||||
import com.intellij.codeInsight.FileModificationService;
|
||||
import com.intellij.codeInspection.reference.RefElement;
|
||||
import com.intellij.codeInspection.reference.RefMethod;
|
||||
@@ -31,7 +32,6 @@ import com.intellij.refactoring.changeSignature.ParameterInfoImpl;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.SmartList;
|
||||
import com.siyeh.ig.controlflow.UnnecessaryReturnInspection;
|
||||
import com.siyeh.ig.psiutils.BlockUtils;
|
||||
import com.siyeh.ig.psiutils.SideEffectChecker;
|
||||
import com.siyeh.ig.psiutils.StatementExtractor;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
// Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.codeInspection;
|
||||
|
||||
import com.intellij.codeInsight.BlockUtils;
|
||||
import com.intellij.codeInspection.dataFlow.ControlFlowAnalyzer;
|
||||
import com.intellij.codeInspection.dataFlow.MethodContract;
|
||||
import com.intellij.codeInspection.dataFlow.StandardMethodContract;
|
||||
@@ -10,7 +11,10 @@ import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.util.ObjectUtils;
|
||||
import com.siyeh.ig.callMatcher.CallMatcher;
|
||||
import com.siyeh.ig.psiutils.*;
|
||||
import com.siyeh.ig.psiutils.CommentTracker;
|
||||
import com.siyeh.ig.psiutils.ExpressionUtils;
|
||||
import com.siyeh.ig.psiutils.SideEffectChecker;
|
||||
import com.siyeh.ig.psiutils.StatementExtractor;
|
||||
import one.util.streamex.StreamEx;
|
||||
import org.jetbrains.annotations.Nls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.intellij.codeInspection;
|
||||
|
||||
import com.intellij.codeInsight.BlockUtils;
|
||||
import com.intellij.codeInsight.FileModificationService;
|
||||
import com.intellij.codeInsight.daemon.impl.quickfix.RemoveUnusedVariableFix;
|
||||
import com.intellij.codeInsight.daemon.impl.quickfix.RemoveUnusedVariableUtil;
|
||||
@@ -25,7 +26,6 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiExpressionTrimRenderer;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.siyeh.ig.psiutils.BlockUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
+94
-7
@@ -1,16 +1,15 @@
|
||||
/*
|
||||
* Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
*/
|
||||
package com.siyeh.ig.psiutils;
|
||||
// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.codeInsight;
|
||||
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.util.SmartList;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
* @author Tagir Valeev
|
||||
*/
|
||||
import java.util.List;
|
||||
|
||||
public class BlockUtils {
|
||||
|
||||
/**
|
||||
@@ -110,4 +109,92 @@ public class BlockUtils {
|
||||
}
|
||||
throw new AssertionError("can't get body from " + element);
|
||||
}
|
||||
|
||||
public static void unwrapTryBlock(PsiTryStatement tryStatement) {
|
||||
PsiCodeBlock tryBlock = tryStatement.getTryBlock();
|
||||
if (tryBlock == null) {
|
||||
return;
|
||||
}
|
||||
final PsiElement parent = tryStatement.getParent();
|
||||
boolean singleStatement = false;
|
||||
if (parent instanceof PsiStatement) {
|
||||
final PsiStatement[] statements = tryBlock.getStatements();
|
||||
if (statements.length == 1 && !(statements[0] instanceof PsiDeclarationStatement)) {
|
||||
singleStatement = true;
|
||||
}
|
||||
else {
|
||||
tryStatement = expandSingleStatementToBlockStatement(tryStatement);
|
||||
}
|
||||
}
|
||||
else if (parent instanceof PsiCodeBlock) {
|
||||
if (containsConflictingDeclarations(tryBlock, (PsiCodeBlock)parent)) {
|
||||
tryStatement = expandSingleStatementToBlockStatement(tryStatement);
|
||||
}
|
||||
}
|
||||
else {
|
||||
return;
|
||||
}
|
||||
|
||||
tryBlock = tryStatement.getTryBlock();
|
||||
assert tryBlock != null;
|
||||
final PsiElement first = singleStatement ? skip(tryBlock.getFirstBodyElement(), true) : tryBlock.getFirstBodyElement();
|
||||
final PsiElement last = singleStatement? skip(tryBlock.getLastBodyElement(), false) : tryBlock.getLastBodyElement();
|
||||
assert first != null && last != null;
|
||||
tryStatement.getParent().addRangeBefore(first, last, tryStatement);
|
||||
tryStatement.delete();
|
||||
}
|
||||
|
||||
private static PsiElement skip(PsiElement element, boolean forward) {
|
||||
if (!(element instanceof PsiWhiteSpace)) {
|
||||
return element;
|
||||
}
|
||||
return forward ? element.getNextSibling() : element.getPrevSibling();
|
||||
}
|
||||
|
||||
public static boolean containsConflictingDeclarations(PsiCodeBlock block, PsiCodeBlock parentBlock) {
|
||||
final PsiStatement[] statements = block.getStatements();
|
||||
if (statements.length == 0) {
|
||||
return false;
|
||||
}
|
||||
final int endOffset = block.getTextRange().getEndOffset();
|
||||
final List<PsiCodeBlock> affectedBlocks =
|
||||
SyntaxTraverser.psiTraverser(parentBlock)
|
||||
.filter(PsiCodeBlock.class)
|
||||
.filter(cb -> cb.getTextRange().getEndOffset() > endOffset)
|
||||
.addAllTo(new SmartList<>());
|
||||
final Project project = block.getProject();
|
||||
final JavaPsiFacade facade = JavaPsiFacade.getInstance(project);
|
||||
final PsiResolveHelper resolveHelper = facade.getResolveHelper();
|
||||
for (final PsiStatement statement : statements) {
|
||||
if (!(statement instanceof PsiDeclarationStatement)) {
|
||||
continue;
|
||||
}
|
||||
final PsiDeclarationStatement declaration = (PsiDeclarationStatement)statement;
|
||||
final PsiElement[] variables = declaration.getDeclaredElements();
|
||||
for (PsiElement variable : variables) {
|
||||
if (!(variable instanceof PsiLocalVariable)) {
|
||||
continue;
|
||||
}
|
||||
final PsiLocalVariable localVariable = (PsiLocalVariable)variable;
|
||||
final String variableName = localVariable.getName();
|
||||
if (variableName == null) {
|
||||
continue;
|
||||
}
|
||||
for (PsiCodeBlock codeBlock : affectedBlocks) {
|
||||
final PsiVariable target = resolveHelper.resolveAccessibleReferencedVariable(variableName, codeBlock);
|
||||
if (target instanceof PsiLocalVariable) {
|
||||
return true;
|
||||
}
|
||||
if (target instanceof PsiField) {
|
||||
for (PsiCodeBlock affectedBlock : affectedBlocks) {
|
||||
if (!SyntaxTraverser.psiTraverser(affectedBlock).filter(PsiReferenceExpression.class).filter(ref -> ref.resolve() == target).isEmpty()) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
+2
-9
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.intellij.psi.impl.source.tree.java;
|
||||
|
||||
import com.intellij.codeInsight.BlockUtils;
|
||||
import com.intellij.lang.ASTNode;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.psi.*;
|
||||
@@ -186,15 +187,7 @@ public class PsiTryStatementImpl extends CompositePsiElement implements PsiTrySt
|
||||
if (child.getPsi() instanceof PsiResourceList && getCatchBlocks().length == 0 && getFinallyBlock() == null) {
|
||||
final PsiCodeBlock tryBlock = getTryBlock();
|
||||
if (tryBlock != null) {
|
||||
final PsiCodeBlock block = (PsiCodeBlock)replace(tryBlock);
|
||||
final PsiJavaToken lBrace = block.getLBrace();
|
||||
final PsiJavaToken rBrace = block.getRBrace();
|
||||
if (lBrace != null) {
|
||||
lBrace.delete();
|
||||
}
|
||||
if (rBrace != null) {
|
||||
rBrace.delete();
|
||||
}
|
||||
BlockUtils.unwrapTryBlock(this);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
class Test {
|
||||
void m() throws Exception {
|
||||
try (AutoCloseable r2 = null) {
|
||||
System.out.println(null + ", " + r2);
|
||||
}
|
||||
System.out.println(null + ", " + r2);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
class ARM {
|
||||
void f() {
|
||||
try (AutoCloseable <caret>r = null) {
|
||||
void f() {
|
||||
System.out.println("before");
|
||||
try (AutoCloseable <caret>r = null) {
|
||||
System.out.println("inside");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
class ARM {
|
||||
void f() {
|
||||
System.out.println("before");
|
||||
try (AutoCloseable <caret>r = null) {
|
||||
int i = 0;
|
||||
System.out.println("inside");
|
||||
}
|
||||
int i = 0;
|
||||
}
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
class ARM {
|
||||
void f() {
|
||||
System.out.println("before");
|
||||
{
|
||||
int i = 0;
|
||||
System.out.println("inside");
|
||||
}
|
||||
int i = 0;
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,6 @@
|
||||
class ARM {
|
||||
void f() {
|
||||
}
|
||||
void f() {
|
||||
System.out.println("before");
|
||||
System.out.println("inside");
|
||||
}
|
||||
}
|
||||
@@ -273,6 +273,11 @@ public class SafeDeleteTest extends MultiFileTestCase {
|
||||
LanguageLevelProjectExtension.getInstance(getProject()).setLanguageLevel(LanguageLevel.JDK_1_7);
|
||||
doSingleFileTest();
|
||||
}
|
||||
|
||||
public void testLastResourceVariableConflictingVar() throws Exception {
|
||||
LanguageLevelProjectExtension.getInstance(getProject()).setLanguageLevel(LanguageLevel.JDK_1_7);
|
||||
doSingleFileTest();
|
||||
}
|
||||
|
||||
public void testLastResourceVariableWithFinallyBlock() throws Exception {
|
||||
LanguageLevelProjectExtension.getInstance(getProject()).setLanguageLevel(LanguageLevel.JDK_1_7);
|
||||
|
||||
+1
-1
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.siyeh.ig.controlflow;
|
||||
|
||||
import com.intellij.codeInsight.BlockUtils;
|
||||
import com.intellij.codeInspection.ProblemDescriptor;
|
||||
import com.intellij.codeInspection.ProblemHighlightType;
|
||||
import com.intellij.codeInspection.ui.MultipleCheckboxOptionsPanel;
|
||||
@@ -26,7 +27,6 @@ import com.siyeh.InspectionGadgetsBundle;
|
||||
import com.siyeh.ig.BaseInspection;
|
||||
import com.siyeh.ig.BaseInspectionVisitor;
|
||||
import com.siyeh.ig.InspectionGadgetsFix;
|
||||
import com.siyeh.ig.psiutils.BlockUtils;
|
||||
import com.siyeh.ig.psiutils.CommentTracker;
|
||||
import org.jdom.Element;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
+1
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.siyeh.ig.controlflow;
|
||||
|
||||
import com.intellij.codeInsight.BlockUtils;
|
||||
import com.intellij.codeInspection.*;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
|
||||
+5
-46
@@ -3,14 +3,14 @@
|
||||
*/
|
||||
package com.siyeh.ig.fixes;
|
||||
|
||||
import com.intellij.codeInsight.BlockUtils;
|
||||
import com.intellij.codeInspection.ProblemDescriptor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.PsiCatchSection;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiParameter;
|
||||
import com.siyeh.InspectionGadgetsBundle;
|
||||
import com.siyeh.ig.InspectionGadgetsFix;
|
||||
import com.siyeh.ig.psiutils.BlockUtils;
|
||||
import com.siyeh.ig.psiutils.DeclarationSearchUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
@@ -55,51 +55,10 @@ public class DeleteCatchSectionFix extends InspectionGadgetsFix {
|
||||
}
|
||||
final PsiCatchSection catchSection = (PsiCatchSection)grandParent;
|
||||
if (removeTryCatch) {
|
||||
unwrapTryBlock(catchSection.getTryStatement());
|
||||
BlockUtils.unwrapTryBlock(catchSection.getTryStatement());
|
||||
}
|
||||
else {
|
||||
catchSection.delete();
|
||||
}
|
||||
}
|
||||
|
||||
public static void unwrapTryBlock(PsiTryStatement tryStatement) {
|
||||
PsiCodeBlock tryBlock = tryStatement.getTryBlock();
|
||||
if (tryBlock == null) {
|
||||
return;
|
||||
}
|
||||
final PsiElement parent = tryStatement.getParent();
|
||||
boolean singleStatement = false;
|
||||
if (parent instanceof PsiStatement) {
|
||||
final PsiStatement[] statements = tryBlock.getStatements();
|
||||
if (statements.length == 1 && !(statements[0] instanceof PsiDeclarationStatement)) {
|
||||
singleStatement = true;
|
||||
}
|
||||
else {
|
||||
tryStatement = BlockUtils.expandSingleStatementToBlockStatement(tryStatement);
|
||||
}
|
||||
}
|
||||
else if (parent instanceof PsiCodeBlock) {
|
||||
if (DeclarationSearchUtils.containsConflictingDeclarations(tryBlock, (PsiCodeBlock)parent)) {
|
||||
tryStatement = BlockUtils.expandSingleStatementToBlockStatement(tryStatement);
|
||||
}
|
||||
}
|
||||
else {
|
||||
return;
|
||||
}
|
||||
|
||||
tryBlock = tryStatement.getTryBlock();
|
||||
assert tryBlock != null;
|
||||
final PsiElement first = singleStatement ? skip(tryBlock.getFirstBodyElement(), true) : tryBlock.getFirstBodyElement();
|
||||
final PsiElement last = singleStatement? skip(tryBlock.getLastBodyElement(), false) : tryBlock.getLastBodyElement();
|
||||
assert first != null && last != null;
|
||||
tryStatement.getParent().addRangeBefore(first, last, tryStatement);
|
||||
tryStatement.delete();
|
||||
}
|
||||
|
||||
private static PsiElement skip(PsiElement element, boolean forward) {
|
||||
if (!(element instanceof PsiWhiteSpace)) {
|
||||
return element;
|
||||
}
|
||||
return forward ? element.getNextSibling() : element.getPrevSibling();
|
||||
}
|
||||
}
|
||||
|
||||
+1
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.siyeh.ig.performance;
|
||||
|
||||
import com.intellij.codeInsight.BlockUtils;
|
||||
import com.intellij.codeInsight.NullableNotNullManager;
|
||||
import com.intellij.codeInsight.PsiEquivalenceUtil;
|
||||
import com.intellij.codeInspection.ProblemDescriptor;
|
||||
|
||||
-47
@@ -20,17 +20,12 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.controlFlow.DefUseUtil;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.LocalSearchScope;
|
||||
import com.intellij.psi.search.PsiSearchHelper;
|
||||
import com.intellij.psi.search.SearchScope;
|
||||
import com.intellij.psi.search.searches.ReferencesSearch;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.util.SmartList;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class DeclarationSearchUtils {
|
||||
|
||||
private DeclarationSearchUtils() {}
|
||||
@@ -48,48 +43,6 @@ public class DeclarationSearchUtils {
|
||||
return target.equals(variable);
|
||||
}
|
||||
|
||||
public static boolean containsConflictingDeclarations(PsiCodeBlock block, PsiCodeBlock parentBlock) {
|
||||
final PsiStatement[] statements = block.getStatements();
|
||||
if (statements.length == 0) {
|
||||
return false;
|
||||
}
|
||||
final int endOffset = block.getTextRange().getEndOffset();
|
||||
final List<PsiCodeBlock> affectedBlocks =
|
||||
SyntaxTraverser.psiTraverser(parentBlock)
|
||||
.filter(PsiCodeBlock.class)
|
||||
.filter(cb -> cb.getTextRange().getEndOffset() > endOffset)
|
||||
.addAllTo(new SmartList<>());
|
||||
final SearchScope affectedScope = new LocalSearchScope(affectedBlocks.toArray(PsiElement.EMPTY_ARRAY));
|
||||
final Project project = block.getProject();
|
||||
final JavaPsiFacade facade = JavaPsiFacade.getInstance(project);
|
||||
final PsiResolveHelper resolveHelper = facade.getResolveHelper();
|
||||
for (final PsiStatement statement : statements) {
|
||||
if (!(statement instanceof PsiDeclarationStatement)) {
|
||||
continue;
|
||||
}
|
||||
final PsiDeclarationStatement declaration = (PsiDeclarationStatement)statement;
|
||||
final PsiElement[] variables = declaration.getDeclaredElements();
|
||||
for (PsiElement variable : variables) {
|
||||
if (!(variable instanceof PsiLocalVariable)) {
|
||||
continue;
|
||||
}
|
||||
final PsiLocalVariable localVariable = (PsiLocalVariable)variable;
|
||||
final String variableName = localVariable.getName();
|
||||
if (variableName == null) {
|
||||
continue;
|
||||
}
|
||||
for (PsiCodeBlock codeBlock : affectedBlocks) {
|
||||
final PsiVariable target = resolveHelper.resolveAccessibleReferencedVariable(variableName, codeBlock);
|
||||
if (target instanceof PsiLocalVariable ||
|
||||
target instanceof PsiField && ReferencesSearch.search(target, affectedScope).findFirst() != null) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static PsiExpression findDefinition(@NotNull PsiReferenceExpression referenceExpression,
|
||||
@Nullable PsiVariable variable) {
|
||||
if (variable == null) {
|
||||
|
||||
+1
-1
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.siyeh.ig.style;
|
||||
|
||||
import com.intellij.codeInsight.BlockUtils;
|
||||
import com.intellij.codeInspection.ProblemDescriptor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
@@ -25,7 +26,6 @@ import com.siyeh.InspectionGadgetsBundle;
|
||||
import com.siyeh.ig.BaseInspection;
|
||||
import com.siyeh.ig.BaseInspectionVisitor;
|
||||
import com.siyeh.ig.InspectionGadgetsFix;
|
||||
import com.siyeh.ig.psiutils.BlockUtils;
|
||||
import org.jetbrains.annotations.Contract;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
+2
-2
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.siyeh.ig.style;
|
||||
|
||||
import com.intellij.codeInsight.BlockUtils;
|
||||
import com.intellij.codeInspection.CleanupLocalInspectionTool;
|
||||
import com.intellij.codeInspection.ProblemDescriptor;
|
||||
import com.intellij.codeInspection.ui.SingleCheckboxOptionsPanel;
|
||||
@@ -25,7 +26,6 @@ import com.siyeh.InspectionGadgetsBundle;
|
||||
import com.siyeh.ig.BaseInspection;
|
||||
import com.siyeh.ig.BaseInspectionVisitor;
|
||||
import com.siyeh.ig.InspectionGadgetsFix;
|
||||
import com.siyeh.ig.psiutils.DeclarationSearchUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.*;
|
||||
@@ -121,7 +121,7 @@ public class UnnecessaryBlockStatementInspection extends BaseInspection implemen
|
||||
}
|
||||
final PsiCodeBlock parentBlock = (PsiCodeBlock)parent;
|
||||
if (parentBlock.getStatementCount() > 1 &&
|
||||
DeclarationSearchUtils.containsConflictingDeclarations(codeBlock, parentBlock)) {
|
||||
BlockUtils.containsConflictingDeclarations(codeBlock, parentBlock)) {
|
||||
return;
|
||||
}
|
||||
registerError(brace);
|
||||
|
||||
+1
-1
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.siyeh.ig.threading;
|
||||
|
||||
import com.intellij.codeInsight.BlockUtils;
|
||||
import com.intellij.codeInspection.ProblemDescriptor;
|
||||
import com.intellij.codeInspection.ui.SingleCheckboxOptionsPanel;
|
||||
import com.intellij.openapi.project.Project;
|
||||
@@ -29,7 +30,6 @@ import com.siyeh.ig.BaseInspection;
|
||||
import com.siyeh.ig.BaseInspectionVisitor;
|
||||
import com.siyeh.ig.InspectionGadgetsFix;
|
||||
import com.siyeh.ig.callMatcher.CallMatcher;
|
||||
import com.siyeh.ig.psiutils.BlockUtils;
|
||||
import com.siyeh.ig.psiutils.ControlFlowUtils;
|
||||
import com.siyeh.ig.psiutils.ExpressionUtils;
|
||||
import com.siyeh.ig.psiutils.VariableAccessUtils;
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
// Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.intellij.codeInspection;
|
||||
|
||||
import com.intellij.codeInsight.BlockUtils;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.search.searches.ReferencesSearch;
|
||||
|
||||
+1
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.siyeh.ig.controlflow;
|
||||
|
||||
import com.intellij.codeInsight.BlockUtils;
|
||||
import com.intellij.codeInspection.ProblemDescriptor;
|
||||
import com.intellij.codeInspection.ui.SingleCheckboxOptionsPanel;
|
||||
import com.intellij.openapi.project.Project;
|
||||
|
||||
+1
-1
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.siyeh.ig.fixes;
|
||||
|
||||
import com.intellij.codeInsight.BlockUtils;
|
||||
import com.intellij.codeInsight.daemon.impl.analysis.JavaHighlightUtil;
|
||||
import com.intellij.codeInspection.ProblemDescriptor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
@@ -26,7 +27,6 @@ import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.refactoring.util.RefactoringUtil;
|
||||
import com.siyeh.InspectionGadgetsBundle;
|
||||
import com.siyeh.ig.InspectionGadgetsFix;
|
||||
import com.siyeh.ig.psiutils.BlockUtils;
|
||||
import com.siyeh.ig.psiutils.CommentTracker;
|
||||
import com.siyeh.ig.psiutils.ParenthesesUtils;
|
||||
import com.siyeh.ipp.psiutils.HighlightUtil;
|
||||
|
||||
+1
@@ -1,6 +1,7 @@
|
||||
// Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
|
||||
package com.siyeh.ig.redundancy;
|
||||
|
||||
import com.intellij.codeInsight.BlockUtils;
|
||||
import com.intellij.codeInsight.daemon.impl.quickfix.DeleteElementFix;
|
||||
import com.intellij.codeInspection.*;
|
||||
import com.intellij.openapi.project.Project;
|
||||
|
||||
+2
-2
@@ -15,12 +15,12 @@
|
||||
*/
|
||||
package com.siyeh.ipp.exceptions;
|
||||
|
||||
import com.intellij.codeInsight.BlockUtils;
|
||||
import com.intellij.codeInsight.FileModificationService;
|
||||
import com.intellij.openapi.application.WriteAction;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.siyeh.ig.fixes.DeleteCatchSectionFix;
|
||||
import com.siyeh.ipp.base.Intention;
|
||||
import com.siyeh.ipp.base.PsiElementPredicate;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -69,7 +69,7 @@ public class ConvertCatchToThrowsIntention extends Intention {
|
||||
catchSection.delete();
|
||||
}
|
||||
else {
|
||||
DeleteCatchSectionFix.unwrapTryBlock(tryStatement);
|
||||
BlockUtils.unwrapTryBlock(tryStatement);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
+1
-1
@@ -15,10 +15,10 @@
|
||||
*/
|
||||
package com.siyeh.ipp.whileloop;
|
||||
|
||||
import com.intellij.codeInsight.BlockUtils;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.CodeStyleManager;
|
||||
import com.siyeh.ig.psiutils.BlockUtils;
|
||||
import com.siyeh.ig.psiutils.BoolUtils;
|
||||
import com.siyeh.ig.psiutils.ExpressionUtils;
|
||||
import com.siyeh.ipp.base.Intention;
|
||||
|
||||
Reference in New Issue
Block a user