diff options
Diffstat (limited to 'plugins/IntentionPowerPak/src')
4 files changed, 41 insertions, 30 deletions
diff --git a/plugins/IntentionPowerPak/src/com/siyeh/ipp/junit/FlipAssertLiteralIntention.java b/plugins/IntentionPowerPak/src/com/siyeh/ipp/junit/FlipAssertLiteralIntention.java index d3a8d4cefc7b..d331042244a6 100644 --- a/plugins/IntentionPowerPak/src/com/siyeh/ipp/junit/FlipAssertLiteralIntention.java +++ b/plugins/IntentionPowerPak/src/com/siyeh/ipp/junit/FlipAssertLiteralIntention.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2013 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2014 Dave Griffith, Bas Leijdekkers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,8 +15,8 @@ */ package com.siyeh.ipp.junit; -import com.intellij.codeInsight.AnnotationUtil; import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; import com.intellij.psi.util.PsiTreeUtil; import com.siyeh.IntentionPowerPackBundle; import com.siyeh.ig.PsiReplacementUtil; @@ -67,11 +67,10 @@ public class FlipAssertLiteralIntention extends MutablyNamedIntention { @NonNls final StringBuilder newCall = new StringBuilder(); final PsiElement qualifier = methodExpression.getQualifier(); if (qualifier == null) { - final PsiMethod containingMethod = PsiTreeUtil.getParentOfType(call, PsiMethod.class); - if (containingMethod != null && AnnotationUtil.isAnnotated(containingMethod, "org.junit.Test", true)) { - if (!ImportUtils.addStaticImport("org.junit.Assert", toMethodName, element)) { - newCall.append("org.junit.Assert."); - } + final PsiClass containingClass = PsiTreeUtil.getParentOfType(element, PsiClass.class); + if (!InheritanceUtil.isInheritor(containingClass, "junit.framework.Assert") && + !ImportUtils.addStaticImport("org.junit.Assert", toMethodName, element)) { + newCall.append("org.junit.Assert."); } } else { @@ -88,6 +87,6 @@ public class FlipAssertLiteralIntention extends MutablyNamedIntention { newCall.append(BoolUtils.getNegatedExpressionText(arguments[1])); } newCall.append(')'); - PsiReplacementUtil.replaceExpression(call, newCall.toString()); + PsiReplacementUtil.replaceExpressionAndShorten(call, newCall.toString()); } }
\ No newline at end of file diff --git a/plugins/IntentionPowerPak/src/com/siyeh/ipp/junit/ReplaceAssertEqualsWithAssertLiteralIntention.java b/plugins/IntentionPowerPak/src/com/siyeh/ipp/junit/ReplaceAssertEqualsWithAssertLiteralIntention.java index cb27659e0cc2..e972b18665ae 100644 --- a/plugins/IntentionPowerPak/src/com/siyeh/ipp/junit/ReplaceAssertEqualsWithAssertLiteralIntention.java +++ b/plugins/IntentionPowerPak/src/com/siyeh/ipp/junit/ReplaceAssertEqualsWithAssertLiteralIntention.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2013 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2014 Dave Griffith, Bas Leijdekkers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,8 +15,8 @@ */ package com.siyeh.ipp.junit; -import com.intellij.codeInsight.AnnotationUtil; import com.intellij.psi.*; +import com.intellij.psi.util.InheritanceUtil; import com.intellij.psi.util.PsiTreeUtil; import com.siyeh.IntentionPowerPackBundle; import com.siyeh.ig.PsiReplacementUtil; @@ -86,11 +86,10 @@ public class ReplaceAssertEqualsWithAssertLiteralIntention extends MutablyNamedI final PsiElement qualifier = expression.getQualifier(); @NonNls final StringBuilder newExpression = new StringBuilder(); if (qualifier == null) { - final PsiMethod containingMethod = PsiTreeUtil.getParentOfType(call, PsiMethod.class); - if (containingMethod != null && AnnotationUtil.isAnnotated(containingMethod, "org.junit.Test", true)) { - if (!ImportUtils.addStaticImport("org.junit.Assert", assertString, element)) { - newExpression.append("org.junit.Assert."); - } + final PsiClass containingClass = PsiTreeUtil.getParentOfType(element, PsiClass.class); + if (!InheritanceUtil.isInheritor(containingClass, "junit.framework.Assert") && + !ImportUtils.addStaticImport("org.junit.Assert", assertString, element)) { + newExpression.append("org.junit.Assert."); } } else { diff --git a/plugins/IntentionPowerPak/src/com/siyeh/ipp/junit/ReplaceAssertLiteralWithAssertEqualsIntention.java b/plugins/IntentionPowerPak/src/com/siyeh/ipp/junit/ReplaceAssertLiteralWithAssertEqualsIntention.java index 7bc8b2beec90..a3e318e5196a 100644 --- a/plugins/IntentionPowerPak/src/com/siyeh/ipp/junit/ReplaceAssertLiteralWithAssertEqualsIntention.java +++ b/plugins/IntentionPowerPak/src/com/siyeh/ipp/junit/ReplaceAssertLiteralWithAssertEqualsIntention.java @@ -1,5 +1,5 @@ /* - * Copyright 2003-2013 Dave Griffith, Bas Leijdekkers + * Copyright 2003-2014 Dave Griffith, Bas Leijdekkers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,9 +15,9 @@ */ package com.siyeh.ipp.junit; -import com.intellij.codeInsight.AnnotationUtil; import com.intellij.psi.*; import com.intellij.psi.tree.IElementType; +import com.intellij.psi.util.InheritanceUtil; import com.intellij.psi.util.PsiTreeUtil; import com.siyeh.IntentionPowerPackBundle; import com.siyeh.ig.PsiReplacementUtil; @@ -73,11 +73,10 @@ public class ReplaceAssertLiteralWithAssertEqualsIntention extends MutablyNamedI @NonNls final StringBuilder newExpression = new StringBuilder(); final PsiElement qualifier = methodExpression.getQualifier(); if (qualifier == null) { - final PsiMethod containingMethod = PsiTreeUtil.getParentOfType(call, PsiMethod.class); - if (containingMethod != null && AnnotationUtil.isAnnotated(containingMethod, "org.junit.Test", true)) { - if (!ImportUtils.addStaticImport("org.junit.Assert", "assertEquals", element)) { - newExpression.append("org.junit.Assert."); - } + final PsiClass containingClass = PsiTreeUtil.getParentOfType(element, PsiClass.class); + if (!InheritanceUtil.isInheritor(containingClass, "junit.framework.Assert") && + !ImportUtils.addStaticImport("org.junit.Assert", "assertEquals", element)) { + newExpression.append("org.junit.Assert."); } } else { diff --git a/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ReplaceMethodRefWithLambdaIntention.java b/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ReplaceMethodRefWithLambdaIntention.java index 8ffc5eebfbe0..f26a41771228 100644 --- a/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ReplaceMethodRefWithLambdaIntention.java +++ b/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ReplaceMethodRefWithLambdaIntention.java @@ -19,6 +19,7 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.*; import com.intellij.psi.codeStyle.JavaCodeStyleManager; +import com.intellij.psi.codeStyle.SuggestedNameInfo; import com.intellij.psi.codeStyle.VariableKind; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtil; @@ -45,24 +46,38 @@ public class ReplaceMethodRefWithLambdaIntention extends Intention { protected void processIntention(@NotNull PsiElement element) throws IncorrectOperationException { final PsiMethodReferenceExpression referenceExpression = PsiTreeUtil.getParentOfType(element, PsiMethodReferenceExpression.class); LOG.assertTrue(referenceExpression != null); + final PsiElement resolve = referenceExpression.resolve(); + final boolean isReceiver = resolve instanceof PsiMethod && PsiMethodReferenceUtil.hasReceiver(referenceExpression, (PsiMethod)resolve); + final PsiParameter[] psiParameters = resolve instanceof PsiMethod ? ((PsiMethod)resolve).getParameterList().getParameters() : null; final PsiType functionalInterfaceType = referenceExpression.getFunctionalInterfaceType(); final PsiClassType.ClassResolveResult functionalInterfaceResolveResult = PsiUtil.resolveGenericsClassInType(functionalInterfaceType); final PsiMethod interfaceMethod = LambdaUtil.getFunctionalInterfaceMethod(functionalInterfaceType); + LOG.assertTrue(interfaceMethod != null); + final PsiSubstitutor psiSubstitutor = LambdaUtil.getSubstitutor(interfaceMethod, functionalInterfaceResolveResult); final StringBuilder buf = new StringBuilder("("); LOG.assertTrue(functionalInterfaceType != null); buf.append(functionalInterfaceType.getCanonicalText()).append(")("); - LOG.assertTrue(interfaceMethod != null); - final PsiParameter[] parameters = interfaceMethod.getParameterList().getParameters(); + final PsiParameterList parameterList = interfaceMethod.getParameterList(); + final PsiParameter[] parameters = parameterList.getParameters(); final Map<PsiParameter, String> map = new HashMap<PsiParameter, String>(); final JavaCodeStyleManager codeStyleManager = JavaCodeStyleManager.getInstance(element.getProject()); final String paramsString = StringUtil.join(parameters, new Function<PsiParameter, String>() { @Override public String fun(PsiParameter parameter) { - String parameterName = parameter.getName(); - if (parameterName != null) { - final String baseName = codeStyleManager.variableNameToPropertyName(parameterName, VariableKind.PARAMETER); - parameterName = codeStyleManager.suggestUniqueVariableName(baseName, referenceExpression, true); + final int parameterIndex = parameterList.getParameterIndex(parameter); + String baseName; + if (isReceiver && parameterIndex == 0) { + final SuggestedNameInfo nameInfo = codeStyleManager.suggestVariableName(VariableKind.PARAMETER, null, null, psiSubstitutor.substitute(parameter.getType())); + baseName = nameInfo.names.length > 0 ? nameInfo.names[0] : parameter.getName(); + } + else { + final String initialName = psiParameters != null ? psiParameters[parameterIndex - (isReceiver ? 1 : 0)].getName() : parameter.getName(); + baseName = codeStyleManager.variableNameToPropertyName(initialName, VariableKind.PARAMETER); + } + + if (baseName != null) { + String parameterName = codeStyleManager.suggestUniqueVariableName(baseName, referenceExpression, true); map.put(parameter, parameterName); return parameterName; } @@ -92,11 +107,10 @@ public class ReplaceMethodRefWithLambdaIntention extends Intention { final boolean onArrayRef = JavaPsiFacade.getElementFactory(element.getProject()).getArrayClass(PsiUtil.getLanguageLevel(element)) == containingClass; - boolean isReceiver = PsiMethodReferenceUtil.isReceiverType(functionalInterfaceType, containingClass, resolveElement instanceof PsiMethod ? (PsiMethod)resolveElement : null); final PsiElement referenceNameElement = referenceExpression.getReferenceNameElement(); if (isReceiver){ - buf.append(parameters[0].getName()).append("."); + buf.append(map.get(parameters[0])).append("."); } else { if (!(referenceNameElement instanceof PsiKeyword)) { if (qualifier instanceof PsiTypeElement) { |