Merge remote-tracking branch 'origin/master'

This commit is contained in:
Konstantin Bulenkov
2015-08-17 14:56:41 +02:00
7 changed files with 58 additions and 11 deletions
@@ -22,7 +22,6 @@ import com.intellij.execution.configurations.ConfigurationType;
import com.intellij.execution.configurations.ModuleBasedConfiguration;
import com.intellij.execution.junit.JavaRunConfigurationProducerBase;
import com.intellij.execution.junit2.info.MethodLocation;
import com.intellij.execution.testframework.TestsUIUtil;
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.actionSystem.LangDataKeys;
@@ -31,6 +30,7 @@ import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.Condition;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
import com.intellij.psi.util.ClassUtil;
import java.util.ArrayList;
import java.util.LinkedHashSet;
@@ -153,13 +153,13 @@ public abstract class AbstractPatternBasedConfigurationProducer<T extends Module
public static String getQName(PsiElement psiMember, Location location) {
if (psiMember instanceof PsiClass) {
return ((PsiClass)psiMember).getQualifiedName();
return ClassUtil.getJVMClassName((PsiClass)psiMember);
}
else if (psiMember instanceof PsiMember) {
final PsiClass containingClass = location instanceof MethodLocation
? ((MethodLocation)location).getContainingClass(): ((PsiMember)psiMember).getContainingClass();
assert containingClass != null;
return containingClass.getQualifiedName() + "," + ((PsiMember)psiMember).getName();
return ClassUtil.getJVMClassName(containingClass) + "," + ((PsiMember)psiMember).getName();
} else if (psiMember instanceof PsiPackage) {
return ((PsiPackage)psiMember).getQualifiedName();
}
@@ -37,7 +37,7 @@ import java.util.Collections;
public class RefJavaUtilImpl extends RefJavaUtil{
@Override
public void addReferences(@NotNull final PsiModifierListOwner psiFrom, @NotNull final RefJavaElement ref, @Nullable PsiElement findIn) {
public void addReferences(@NotNull final PsiModifierListOwner psiFrom, @NotNull final RefJavaElement ref, @Nullable final PsiElement findIn) {
final RefJavaElementImpl refFrom = (RefJavaElementImpl)ref;
if (findIn == null) {
return;
@@ -61,7 +61,8 @@ public class RefJavaUtilImpl extends RefJavaUtil{
@Override public void visitReferenceExpression(PsiReferenceExpression expression) {
visitElement(expression);
PsiElement psiResolved = expression.resolve();
final JavaResolveResult result = expression.advancedResolve(false);
final PsiElement psiResolved = result.getElement();
if (psiResolved instanceof PsiModifierListOwner) {
if (isDeprecated(psiResolved)) refFrom.setUsesDeprecatedApi(true);
@@ -76,6 +77,16 @@ public class RefJavaUtilImpl extends RefJavaUtil{
if (refResolved instanceof RefMethod) {
updateRefMethod(psiResolved, refResolved, expression, psiFrom, refFrom);
}
if (psiResolved instanceof PsiMember && result.getCurrentFileResolveScope() instanceof PsiImportStaticStatement) {
final PsiClass containingClass = ((PsiMember)psiResolved).getContainingClass();
if (containingClass != null) {
RefElement refContainingClass = refFrom.getRefManager().getReference(containingClass);
if (refContainingClass != null) {
refFrom.addReference(refContainingClass, containingClass, psiFrom, false, true, expression);
}
}
}
}
@@ -104,6 +104,12 @@ public class DeclarationJoinLinesHandler implements JoinLinesHandlerDelegate {
public static PsiExpression getInitializerExpression(PsiLocalVariable var,
PsiAssignmentExpression assignment) {
return getInitializerExpression(var.getInitializer(),
assignment);
}
public static PsiExpression getInitializerExpression(PsiExpression initializer,
PsiAssignmentExpression assignment) {
PsiExpression initializerExpression;
final IElementType originalOpSign = assignment.getOperationTokenType();
final PsiExpression rExpression = assignment.getRExpression();
@@ -111,7 +117,7 @@ public class DeclarationJoinLinesHandler implements JoinLinesHandlerDelegate {
initializerExpression = rExpression;
}
else {
if (var.getInitializer() == null) return null;
if (initializer == null) return null;
String opSign = null;
if (originalOpSign == JavaTokenType.ANDEQ) {
opSign = "&";
@@ -148,8 +154,8 @@ public class DeclarationJoinLinesHandler implements JoinLinesHandlerDelegate {
}
try {
final Project project = var.getProject();
String initializerText = var.getInitializer().getText() + opSign;
final Project project = assignment.getProject();
String initializerText = initializer.getText() + opSign;
final String rightText = rExpression.getText();
if (ParenthesesUtils.areParenthesesNeeded(assignment.getOperationSign(), rExpression)) {
initializerText += "(" + rightText + ")";
@@ -157,7 +163,7 @@ public class DeclarationJoinLinesHandler implements JoinLinesHandlerDelegate {
else {
initializerText += rightText;
}
initializerExpression = JavaPsiFacade.getElementFactory(project).createExpressionFromText(initializerText, var);
initializerExpression = JavaPsiFacade.getElementFactory(project).createExpressionFromText(initializerText, assignment);
initializerExpression = (PsiExpression)CodeStyleManager.getInstance(project).reformat(initializerExpression);
}
catch (IncorrectOperationException e) {
@@ -16,8 +16,10 @@
package com.intellij.codeInspection;
import com.intellij.codeInsight.FileModificationService;
import com.intellij.codeInsight.editorActions.DeclarationJoinLinesHandler;
import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
import com.intellij.psi.tree.IElementType;
import com.intellij.psi.util.PsiUtil;
import org.jetbrains.annotations.NotNull;
@@ -38,7 +40,12 @@ public class RemoveAssignmentFix extends RemoveInitializerFix {
parent = element;
}
if (!(parent instanceof PsiAssignmentExpression)) return;
final PsiExpression rExpression = ((PsiAssignmentExpression)parent).getRExpression();
final IElementType operationSign = ((PsiAssignmentExpression)parent).getOperationTokenType();
PsiExpression rExpression = ((PsiAssignmentExpression)parent).getRExpression();
if (JavaTokenType.EQ != operationSign && rExpression != null ) {
rExpression = DeclarationJoinLinesHandler.getInitializerExpression(((PsiAssignmentExpression)parent).getLExpression(),
(PsiAssignmentExpression)parent);
}
final PsiElement gParent = parent.getParent();
if ((gParent instanceof PsiExpression || gParent instanceof PsiExpressionList || gParent instanceof PsiReturnStatement) && rExpression != null) {
if (!FileModificationService.getInstance().prepareFileForWrite(gParent.getContainingFile())) return;
@@ -0,0 +1,10 @@
// "Remove redundant assignment" "true"
class A {
public String getContexts(final String env) {
String contexts = "a";
if ("dev".equals(env)) {
return contexts + ",b";
}
return contexts;
}
}
@@ -0,0 +1,10 @@
// "Remove redundant assignment" "true"
class A {
public String getContexts(final String env) {
String contexts = "a";
if ("dev".equals(env)) {
return cont<caret>exts += ",b";
}
return contexts;
}
}
@@ -15,6 +15,7 @@
*/
package com.theoryinpractice.testng.intention;
import com.beust.jcommander.JCommander;
import com.intellij.openapi.roots.ExternalLibraryDescriptor;
import com.intellij.codeInsight.daemon.quickFix.ExternalLibraryResolver;
import com.intellij.openapi.module.Module;
@@ -23,8 +24,10 @@ import com.intellij.util.ThreeState;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.testng.CommandLineArgs;
import org.testng.annotations.Test;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Set;
@@ -41,7 +44,7 @@ public class TestNGExternalLibraryResolver extends ExternalLibraryResolver {
@NotNull
@Override
public List<String> getLibraryClassesRoots() {
return Collections.singletonList(PathUtil.getJarPathForClass(Test.class));
return Arrays.asList(PathUtil.getJarPathForClass(Test.class), PathUtil.getJarPathForClass(JCommander.class));
}
};