inline: do not warn about non existing write usages

This commit is contained in:
anna
2010-06-24 13:45:18 +04:00
parent 456401833f
commit d2576e4aea
4 changed files with 31 additions and 2 deletions
@@ -32,6 +32,7 @@ import com.intellij.psi.*;
import com.intellij.psi.controlFlow.DefUseUtil;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.search.searches.ReferencesSearch;
import com.intellij.psi.tree.IElementType;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtil;
import com.intellij.refactoring.HelpID;
@@ -247,8 +248,8 @@ public class InlineLocalHandler extends JavaInlineActionHandler {
parent = parent.getParent();
}
if (parent instanceof PsiAssignmentExpression && element == ((PsiAssignmentExpression)parent).getLExpression() ||
parent instanceof PsiPrefixExpression || parent instanceof PsiPostfixExpression ) {
if (parent instanceof PsiAssignmentExpression && element == ((PsiAssignmentExpression)parent).getLExpression()
|| isUnaryWriteExpression(parent)) {
EditorColorsManager manager = EditorColorsManager.getInstance();
final TextAttributes writeAttributes = manager.getGlobalScheme().getAttributes(EditorColors.WRITE_SEARCH_RESULT_ATTRIBUTES);
@@ -262,6 +263,17 @@ public class InlineLocalHandler extends JavaInlineActionHandler {
return false;
}
private static boolean isUnaryWriteExpression(PsiElement parent) {
IElementType tokenType = null;
if (parent instanceof PsiPrefixExpression) {
tokenType = ((PsiPrefixExpression)parent).getOperationTokenType();
}
if (parent instanceof PsiPostfixExpression) {
tokenType = ((PsiPostfixExpression)parent).getOperationTokenType();
}
return tokenType == JavaTokenType.PLUSPLUS || tokenType == JavaTokenType.MINUSMINUS;
}
private static boolean isSameDefinition(final PsiElement def, final PsiExpression defToInline) {
if (def instanceof PsiLocalVariable) return defToInline.equals(((PsiLocalVariable)def).getInitializer());
final PsiElement parent = def.getParent();
@@ -0,0 +1,7 @@
class Test {
void get(){
boolean toInline = false;
if (!to<caret>Inline) return;
}
}
@@ -0,0 +1,6 @@
class Test {
void get(){
if (!false) return;
}
}
@@ -62,6 +62,10 @@ public class InlineLocalTest extends LightCodeInsightTestCase {
doTest(false);
}
public void testNonWriteUnaryExpression() throws Exception {
doTest(true);
}
public void testNewExpression() throws Exception {
doTest(false);
}