mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-88406 False positive 'constant conditions & exceptions'
This commit is contained in:
@@ -257,21 +257,15 @@ class ControlFlowAnalyzer extends JavaElementVisitor {
|
||||
@Override public void visitCodeBlock(PsiCodeBlock block) {
|
||||
startElement(block);
|
||||
|
||||
PsiStatement[] statements = block.getStatements();
|
||||
for (PsiStatement statement : statements) {
|
||||
statement.accept(this);
|
||||
}
|
||||
|
||||
for (PsiStatement statement : statements) {
|
||||
for (PsiStatement statement : block.getStatements()) {
|
||||
if (statement instanceof PsiDeclarationStatement) {
|
||||
PsiDeclarationStatement declarationStatement = (PsiDeclarationStatement)statement;
|
||||
PsiElement[] declarations = declarationStatement.getDeclaredElements();
|
||||
for (PsiElement declaration : declarations) {
|
||||
for (PsiElement declaration : ((PsiDeclarationStatement)statement).getDeclaredElements()) {
|
||||
if (declaration instanceof PsiVariable) {
|
||||
myCurrentFlow.removeVariable((PsiVariable)declaration);
|
||||
}
|
||||
}
|
||||
}
|
||||
statement.accept(this);
|
||||
}
|
||||
|
||||
finishElement(block);
|
||||
@@ -581,6 +575,7 @@ class ControlFlowAnalyzer extends JavaElementVisitor {
|
||||
|
||||
if (enumVals != null) {
|
||||
if (caseValue instanceof PsiReferenceExpression) {
|
||||
//noinspection SuspiciousMethodCalls
|
||||
enumVals.remove(((PsiReferenceExpression)caseValue).resolve());
|
||||
}
|
||||
}
|
||||
@@ -929,7 +924,7 @@ class ControlFlowAnalyzer extends JavaElementVisitor {
|
||||
PsiExpression lExpr = operands[0];
|
||||
lExpr.accept(this);
|
||||
PsiType lType = lExpr.getType();
|
||||
PsiExpression rExpr = operands[1];
|
||||
PsiExpression rExpr;
|
||||
|
||||
for (int i = 1; i < operands.length; i++) {
|
||||
rExpr = operands[i];
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* Copyright 2000-2012 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Map;
|
||||
|
||||
public class Main {
|
||||
public static String escapeAndUnescapeSymbols(String s, StringBuilder builder) {
|
||||
boolean escaped = false;
|
||||
for (int i = 0; i < s.length(); i++) {
|
||||
final char ch = s.charAt(i);
|
||||
if (escaped) {
|
||||
if (ch=='n') builder.append('\n');
|
||||
if (<warning descr="Condition 'escaped' is always 'true'">escaped</warning>) break;
|
||||
escaped = false;
|
||||
continue;
|
||||
}
|
||||
if (ch == '\\') {
|
||||
escaped = true;
|
||||
continue;
|
||||
}
|
||||
builder.append(ch);
|
||||
}
|
||||
return builder.toString();
|
||||
}
|
||||
}
|
||||
@@ -68,5 +68,6 @@ public class DataFlowInspectionFixtureTest extends JavaCodeInsightFixtureTestCas
|
||||
public void testBoxing128() throws Throwable { doTest(); }
|
||||
public void testFinalFieldsInitializedByAnnotatedParameters() throws Throwable { doTest(); }
|
||||
public void testMultiCatch() throws Throwable { doTest(); }
|
||||
public void testContinueFlushesLoopVariable() throws Throwable { doTest(); }
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user