diff --git a/.idea/libraries/http_client.xml b/.idea/libraries/http_client.xml
index 4a83f9ad3f68..f94d8f0845dc 100644
--- a/.idea/libraries/http_client.xml
+++ b/.idea/libraries/http_client.xml
@@ -13,8 +13,9 @@
-
-
+
+
\ No newline at end of file
diff --git a/build/conf/nsis/paths.nsi b/build/conf/nsis/paths.nsi
index 0e9299aaffba..c9e28527f1ea 100644
--- a/build/conf/nsis/paths.nsi
+++ b/build/conf/nsis/paths.nsi
@@ -1,6 +1,6 @@
; Installer images
!define IMAGES_LOCATION "${BASE_DIR}\build\images\idea"
-!define LICENSE_FILE "${BASE_DIR}\license\IDEA_license"
+;!define LICENSE_FILE "${BASE_DIR}\license\IDEA_license"
!define PRODUCT_PROPERTIES_FILE "${BASE_DIR}\out\release\dist.all\bin\idea.properties"
!define PRODUCT_VM_OPTIONS_NAME idea*.exe.vmoptions
!define PRODUCT_VM_OPTIONS_FILE "${BASE_DIR}\out\release\dist.win\bin\${PRODUCT_VM_OPTIONS_NAME}"
\ No newline at end of file
diff --git a/build/scripts/dist.gant b/build/scripts/dist.gant
index 652a97d759bf..607a28263ff1 100644
--- a/build/scripts/dist.gant
+++ b/build/scripts/dist.gant
@@ -144,8 +144,11 @@ def layoutAll(Map args, String home, String out, Paths _paths = null, buildJps =
include(name: "*.*")
}
}
+
dir("license") {
- fileset(dir: "${home}/license")
+ fileset(dir: "${home}/license") {
+ exclude(name: "placeholder.txt")
+ }
}
fileset(file: "${home}/LICENSE.txt")
fileset(file: "${home}/NOTICE.txt")
diff --git a/java/execution/impl/src/com/intellij/execution/util/JavaParametersUtil.java b/java/execution/impl/src/com/intellij/execution/util/JavaParametersUtil.java
index eede2edda506..0fe20076493b 100644
--- a/java/execution/impl/src/com/intellij/execution/util/JavaParametersUtil.java
+++ b/java/execution/impl/src/com/intellij/execution/util/JavaParametersUtil.java
@@ -68,6 +68,7 @@ public class JavaParametersUtil {
parameters.getVMParametersList().addParametersString(vmParameters);
}
+ @MagicConstant(valuesFromClass = JavaParameters.class)
public static int getClasspathType(final RunConfigurationModule configurationModule, final String mainClassName,
final boolean classMustHaveSource) throws CantRunException {
final Module module = configurationModule.getModule();
diff --git a/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/FileHeaderChecker.java b/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/FileHeaderChecker.java
index d3a707544a49..4b3da3805ee5 100644
--- a/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/FileHeaderChecker.java
+++ b/java/java-impl/src/com/intellij/codeInspection/defaultFileTemplateUsage/FileHeaderChecker.java
@@ -26,7 +26,6 @@ import com.intellij.psi.JavaPsiFacade;
import com.intellij.psi.PsiComment;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
-import com.intellij.psi.javadoc.PsiDocComment;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.util.containers.ContainerUtil;
import gnu.trove.TIntObjectHashMap;
@@ -110,7 +109,7 @@ public class FileHeaderChecker {
}
if (!newText.isEmpty()) {
- PsiDocComment newComment = JavaPsiFacade.getElementFactory(project).createDocCommentFromText(newText);
+ PsiComment newComment = JavaPsiFacade.getElementFactory(project).createCommentFromText(newText, null);
element.replace(newComment);
}
else {
diff --git a/java/java-impl/src/com/intellij/codeInspection/java18StreamApi/StaticPseudoFunctionalStyleMethodInspection.java b/java/java-impl/src/com/intellij/codeInspection/java18StreamApi/StaticPseudoFunctionalStyleMethodInspection.java
index 650603cb4814..47ff9eb5e6fa 100644
--- a/java/java-impl/src/com/intellij/codeInspection/java18StreamApi/StaticPseudoFunctionalStyleMethodInspection.java
+++ b/java/java-impl/src/com/intellij/codeInspection/java18StreamApi/StaticPseudoFunctionalStyleMethodInspection.java
@@ -21,6 +21,7 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Condition;
import com.intellij.openapi.util.InvalidDataException;
import com.intellij.openapi.util.WriteExternalException;
+import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
import com.intellij.psi.search.GlobalSearchScope;
@@ -74,10 +75,7 @@ public class StaticPseudoFunctionalStyleMethodInspection extends BaseJavaBatchLo
if (qName == null) {
return;
}
- final int dotIndex = qName.lastIndexOf('.');
- if (dotIndex >= 0) {
- qName = qName.substring(dotIndex + 1);
- }
+ qName = StringUtil.getShortName(qName);
final Collection handlerInfos = myOptions.findElementsByMethodName(qName);
if (handlerInfos.isEmpty()) {
return;
diff --git a/java/java-impl/src/com/intellij/lang/java/JavaFormattingModelBuilder.java b/java/java-impl/src/com/intellij/lang/java/JavaFormattingModelBuilder.java
index 2f53bdec3282..91b6a723b6c0 100644
--- a/java/java-impl/src/com/intellij/lang/java/JavaFormattingModelBuilder.java
+++ b/java/java-impl/src/com/intellij/lang/java/JavaFormattingModelBuilder.java
@@ -54,7 +54,7 @@ public class JavaFormattingModelBuilder implements FormattingModelBuilder {
LOG.assertTrue(fileElement != null, "File element should not be null for " + element);
CommonCodeStyleSettings commonSettings = settings.getCommonSettings(JavaLanguage.INSTANCE);
JavaCodeStyleSettings customJavaSettings = settings.getCustomSettings(JavaCodeStyleSettings.class);
- Block block = AbstractJavaBlock.createJavaBlock(fileElement, commonSettings, customJavaSettings);
+ Block block = AbstractJavaBlock.newJavaBlock(fileElement, commonSettings, customJavaSettings);
FormattingDocumentModelImpl model = FormattingDocumentModelImpl.createOn(element.getContainingFile());
return new PsiBasedFormatterModelWithShiftIndentInside (element.getContainingFile(), block, model);
}
diff --git a/java/java-impl/src/com/intellij/psi/formatter/java/AbstractJavaBlock.java b/java/java-impl/src/com/intellij/psi/formatter/java/AbstractJavaBlock.java
index d4d008dd1476..fff50d1c41ab 100644
--- a/java/java-impl/src/com/intellij/psi/formatter/java/AbstractJavaBlock.java
+++ b/java/java-impl/src/com/intellij/psi/formatter/java/AbstractJavaBlock.java
@@ -89,6 +89,18 @@ public abstract class AbstractJavaBlock extends AbstractBlock implements JavaBlo
this(node, wrap, indent, settings, javaSettings, JavaWrapManager.INSTANCE, alignmentStrategy);
}
+ private AbstractJavaBlock(@NotNull ASTNode ignored,
+ @NotNull CommonCodeStyleSettings commonSettings,
+ @NotNull JavaCodeStyleSettings javaSettings) {
+ super(ignored, null, null);
+ mySettings = commonSettings;
+ myJavaSettings = javaSettings;
+ myIndentSettings = commonSettings.getIndentOptions();
+ myIndent = null;
+ myWrapManager = JavaWrapManager.INSTANCE;
+ myAlignmentStrategy = AlignmentStrategy.getNullStrategy();
+ }
+
protected AbstractJavaBlock(@NotNull final ASTNode node,
final Wrap wrap,
final Indent indent,
@@ -116,33 +128,33 @@ public abstract class AbstractJavaBlock extends AbstractBlock implements JavaBlo
}
@NotNull
- public static Block createJavaBlock(@NotNull ASTNode child,
- @NotNull CommonCodeStyleSettings settings,
- @NotNull JavaCodeStyleSettings javaSettings,
- @Nullable Indent indent,
- @Nullable Wrap wrap,
- Alignment alignment) {
+ public Block createJavaBlock(@NotNull ASTNode child,
+ @NotNull CommonCodeStyleSettings settings,
+ @NotNull JavaCodeStyleSettings javaSettings,
+ @Nullable Indent indent,
+ @Nullable Wrap wrap,
+ Alignment alignment) {
return createJavaBlock(child, settings, javaSettings,indent, wrap, AlignmentStrategy.wrap(alignment));
}
@NotNull
- public static Block createJavaBlock(@NotNull ASTNode child,
- @NotNull CommonCodeStyleSettings settings,
- @NotNull JavaCodeStyleSettings javaSettings,
- final Indent indent,
- @Nullable Wrap wrap,
- @NotNull AlignmentStrategy alignmentStrategy) {
+ public Block createJavaBlock(@NotNull ASTNode child,
+ @NotNull CommonCodeStyleSettings settings,
+ @NotNull JavaCodeStyleSettings javaSettings,
+ final Indent indent,
+ @Nullable Wrap wrap,
+ @NotNull AlignmentStrategy alignmentStrategy) {
return createJavaBlock(child, settings, javaSettings, indent, wrap, alignmentStrategy, -1);
}
@NotNull
- private static Block createJavaBlock(@NotNull ASTNode child,
- @NotNull CommonCodeStyleSettings settings,
- @NotNull JavaCodeStyleSettings javaSettings,
- @Nullable Indent indent,
- Wrap wrap,
- @NotNull AlignmentStrategy alignmentStrategy,
- int startOffset) {
+ private Block createJavaBlock(@NotNull ASTNode child,
+ @NotNull CommonCodeStyleSettings settings,
+ @NotNull JavaCodeStyleSettings javaSettings,
+ @Nullable Indent indent,
+ Wrap wrap,
+ @NotNull AlignmentStrategy alignmentStrategy,
+ int startOffset) {
Indent actualIndent = indent == null ? getDefaultSubtreeIndent(child, getJavaIndentOptions(settings)) : indent;
final IElementType elementType = child.getElementType();
Alignment alignment = alignmentStrategy.getAlignment(elementType);
@@ -164,7 +176,8 @@ public abstract class AbstractJavaBlock extends AbstractBlock implements JavaBlo
if (isStatement(child, child.getTreeParent())) {
return new CodeBlockBlock(child, wrap, alignment, actualIndent, settings, javaSettings);
}
- if (child instanceof PsiComment &&
+ if (isBuildInjectedBlocks() &&
+ child instanceof PsiComment &&
child instanceof PsiLanguageInjectionHost &&
InjectedLanguageUtil.hasInjections((PsiLanguageInjectionHost)child)) {
return new CommentWithInjectionBlock(child, wrap, alignment, indent, settings, javaSettings);
@@ -194,12 +207,26 @@ public abstract class AbstractJavaBlock extends AbstractBlock implements JavaBlo
}
@NotNull
- public static Block createJavaBlock(@NotNull ASTNode child,
+ public static Block newJavaBlock(@NotNull ASTNode child,
@NotNull CommonCodeStyleSettings settings,
@NotNull JavaCodeStyleSettings javaSettings) {
- return createJavaBlock(
- child, settings, javaSettings, getDefaultSubtreeIndent(child, getJavaIndentOptions(settings)), null, AlignmentStrategy.getNullStrategy()
- );
+ final Indent indent = getDefaultSubtreeIndent(child, getJavaIndentOptions(settings));
+ return newJavaBlock(child, settings, javaSettings, indent, null, AlignmentStrategy.getNullStrategy());
+ }
+
+ @NotNull
+ public static Block newJavaBlock(@NotNull ASTNode child,
+ @NotNull CommonCodeStyleSettings settings,
+ @NotNull JavaCodeStyleSettings javaSettings,
+ @Nullable Indent indent,
+ @Nullable Wrap wrap,
+ @NotNull AlignmentStrategy strategy) {
+ return new AbstractJavaBlock(child, settings, javaSettings) {
+ @Override
+ protected List buildChildren() {
+ return null;
+ }
+ }.createJavaBlock(child, settings, javaSettings, indent, wrap, strategy);
}
@NotNull
diff --git a/java/java-impl/src/com/intellij/psi/formatter/java/SyntheticBlockBuilder.java b/java/java-impl/src/com/intellij/psi/formatter/java/SyntheticBlockBuilder.java
index bd5a262ecb01..797c04e2846b 100644
--- a/java/java-impl/src/com/intellij/psi/formatter/java/SyntheticBlockBuilder.java
+++ b/java/java-impl/src/com/intellij/psi/formatter/java/SyntheticBlockBuilder.java
@@ -51,7 +51,7 @@ public class SyntheticBlockBuilder {
final ASTNode firstNode = subNodes.get(0);
if (firstNode.getElementType() == JavaTokenType.DOT) {
AlignmentStrategy strategy = AlignmentStrategy.getNullStrategy();
- Block block = createJavaBlock(firstNode, mySettings, myJavaSettings, Indent.getNoneIndent(), null, strategy);
+ Block block = newJavaBlock(firstNode, mySettings, myJavaSettings, Indent.getNoneIndent(), null, strategy);
subBlocks.add(block);
subNodes.remove(0);
if (!subNodes.isEmpty()) {
@@ -67,7 +67,7 @@ public class SyntheticBlockBuilder {
final ArrayList result = new ArrayList();
for (ASTNode node : subNodes) {
Indent indent = Indent.getContinuationWithoutFirstIndent(myIndentSettings.USE_RELATIVE_INDENTS);
- result.add(createJavaBlock(node, mySettings, myJavaSettings, indent, null, AlignmentStrategy.getNullStrategy()));
+ result.add(newJavaBlock(node, mySettings, myJavaSettings, indent, null, AlignmentStrategy.getNullStrategy()));
}
return result;
}
diff --git a/java/java-impl/src/com/intellij/psi/formatter/java/wrap/impl/JavaChildWrapArranger.java b/java/java-impl/src/com/intellij/psi/formatter/java/wrap/impl/JavaChildWrapArranger.java
index 0d05bd6aa79e..23914cb5fce8 100644
--- a/java/java-impl/src/com/intellij/psi/formatter/java/wrap/impl/JavaChildWrapArranger.java
+++ b/java/java-impl/src/com/intellij/psi/formatter/java/wrap/impl/JavaChildWrapArranger.java
@@ -31,6 +31,7 @@ import com.intellij.psi.impl.source.tree.ChildRole;
import com.intellij.psi.impl.source.tree.CompositeElement;
import com.intellij.psi.impl.source.tree.JavaElementType;
import com.intellij.psi.tree.IElementType;
+import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.util.ArrayUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -268,6 +269,8 @@ public class JavaChildWrapArranger {
private static boolean isTypeAnnotationOrFalseIfDumb(@NotNull ASTNode child) {
PsiElement node = child.getPsi();
+ PsiElement next = PsiTreeUtil.skipSiblingsForward(node, PsiWhiteSpace.class, PsiAnnotation.class);
+ if (next instanceof PsiKeyword) return false;
return !DumbService.isDumb(node.getProject()) && isTypeAnnotation(node);
}
diff --git a/java/java-impl/src/com/intellij/refactoring/actions/ReplaceConstructorWithBuilderAction.java b/java/java-impl/src/com/intellij/refactoring/actions/ReplaceConstructorWithBuilderAction.java
index 0775c65258a8..b71b01bef480 100644
--- a/java/java-impl/src/com/intellij/refactoring/actions/ReplaceConstructorWithBuilderAction.java
+++ b/java/java-impl/src/com/intellij/refactoring/actions/ReplaceConstructorWithBuilderAction.java
@@ -39,7 +39,7 @@ public class ReplaceConstructorWithBuilderAction extends BaseRefactoringAction{
final int offset = editor.getCaretModel().getOffset();
final PsiElement elementAt = file.findElementAt(offset);
final PsiClass psiClass = ReplaceConstructorWithBuilderHandler.getParentNamedClass(elementAt);
- return psiClass != null && psiClass.getConstructors().length > 0;
+ return psiClass != null && psiClass.getConstructors().length > 0 && !psiClass.isEnum();
}
protected boolean isEnabledOnElements(@NotNull final PsiElement[] elements) {
diff --git a/java/java-impl/src/com/intellij/refactoring/actions/ReplaceConstructorWithFactoryAction.java b/java/java-impl/src/com/intellij/refactoring/actions/ReplaceConstructorWithFactoryAction.java
index 1d32d0ee5183..a464fad6902a 100644
--- a/java/java-impl/src/com/intellij/refactoring/actions/ReplaceConstructorWithFactoryAction.java
+++ b/java/java-impl/src/com/intellij/refactoring/actions/ReplaceConstructorWithFactoryAction.java
@@ -17,8 +17,10 @@ package com.intellij.refactoring.actions;
import com.intellij.lang.java.JavaLanguage;
import com.intellij.openapi.actionSystem.DataContext;
+import com.intellij.openapi.editor.Editor;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiElement;
+import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiMethod;
import com.intellij.refactoring.RefactoringActionHandler;
import com.intellij.refactoring.replaceConstructorWithFactory.ReplaceConstructorWithFactoryHandler;
@@ -32,10 +34,25 @@ public class ReplaceConstructorWithFactoryAction extends BaseRefactoringAction {
return false;
}
+ @Override
protected boolean isEnabledOnElements(@NotNull PsiElement[] elements) {
- return elements.length == 1 &&
- (elements[0] instanceof PsiMethod && ((PsiMethod)elements[0]).isConstructor() || elements[0] instanceof PsiClass)
- && elements[0].getLanguage().isKindOf(JavaLanguage.INSTANCE);
+ return false;
+ }
+
+ @Override
+ protected boolean isAvailableOnElementInEditorAndFile(@NotNull PsiElement element,
+ @NotNull Editor editor,
+ @NotNull PsiFile file,
+ @NotNull DataContext context) {
+ return (element instanceof PsiMethod &&
+ ((PsiMethod)element).isConstructor() &&
+ acceptClass(((PsiMethod)element).getContainingClass()) ||
+ acceptClass(element))
+ && element.getLanguage().isKindOf(JavaLanguage.INSTANCE);
+ }
+
+ private static boolean acceptClass(PsiElement element) {
+ return element instanceof PsiClass && !((PsiClass)element).isEnum();
}
protected RefactoringActionHandler getHandler(@NotNull DataContext dataContext) {
diff --git a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureHandler.java b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureHandler.java
index 89a123347364..687f7a2a3576 100644
--- a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureHandler.java
+++ b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureHandler.java
@@ -136,7 +136,7 @@ public class JavaChangeSignatureHandler implements ChangeSignatureHandler {
return elementParent;
}
if (elementParent instanceof PsiClass && ((PsiClass)elementParent).getNameIdentifier()==element) {
- if (((PsiClass)elementParent).isAnnotationType()) {
+ if (((PsiClass)elementParent).isAnnotationType() || ((PsiClass)elementParent).isEnum()) {
return null;
}
return elementParent;
diff --git a/java/java-impl/src/com/intellij/refactoring/encapsulateFields/EncapsulateFieldsHandler.java b/java/java-impl/src/com/intellij/refactoring/encapsulateFields/EncapsulateFieldsHandler.java
index b4b26c1ccc3f..e453744c4f86 100644
--- a/java/java-impl/src/com/intellij/refactoring/encapsulateFields/EncapsulateFieldsHandler.java
+++ b/java/java-impl/src/com/intellij/refactoring/encapsulateFields/EncapsulateFieldsHandler.java
@@ -22,17 +22,17 @@ import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.editor.ScrollType;
import com.intellij.openapi.project.Project;
-import com.intellij.psi.PsiClass;
-import com.intellij.psi.PsiElement;
-import com.intellij.psi.PsiField;
-import com.intellij.psi.PsiFile;
+import com.intellij.openapi.util.Condition;
+import com.intellij.psi.*;
import com.intellij.refactoring.HelpID;
import com.intellij.refactoring.RefactoringActionHandler;
import com.intellij.refactoring.RefactoringBundle;
import com.intellij.refactoring.util.CommonRefactoringUtil;
+import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import java.util.HashSet;
+import java.util.List;
public class EncapsulateFieldsHandler implements RefactoringActionHandler {
private static final Logger LOG = Logger.getInstance("#com.intellij.refactoring.encapsulateFields.EncapsulateFieldsHandler");
@@ -108,8 +108,13 @@ public class EncapsulateFieldsHandler implements RefactoringActionHandler {
}
LOG.assertTrue(aClass != null);
- final PsiField[] fields = aClass.getFields();
- if (fields.length == 0) {
+ final List fields = ContainerUtil.filter(aClass.getFields(), new Condition() {
+ @Override
+ public boolean value(PsiField field) {
+ return !(field instanceof PsiEnumConstant);
+ }
+ });
+ if (fields.isEmpty()) {
CommonRefactoringUtil.showErrorHint(project, CommonDataKeys.EDITOR.getData(dataContext), "Class has no fields to encapsulate",
REFACTORING_NAME, HelpID.ENCAPSULATE_FIELDS);
return;
diff --git a/java/java-impl/src/com/intellij/refactoring/encapsulateFields/JavaEncapsulateFieldHelper.java b/java/java-impl/src/com/intellij/refactoring/encapsulateFields/JavaEncapsulateFieldHelper.java
index 1430a4b98fb7..972824d18d62 100644
--- a/java/java-impl/src/com/intellij/refactoring/encapsulateFields/JavaEncapsulateFieldHelper.java
+++ b/java/java-impl/src/com/intellij/refactoring/encapsulateFields/JavaEncapsulateFieldHelper.java
@@ -17,6 +17,7 @@ package com.intellij.refactoring.encapsulateFields;
import com.intellij.codeInsight.generation.GenerateMembersUtil;
import com.intellij.openapi.diagnostic.Logger;
+import com.intellij.openapi.util.Condition;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.*;
import com.intellij.psi.tree.IElementType;
@@ -25,10 +26,13 @@ import com.intellij.psi.util.PsiUtil;
import com.intellij.refactoring.util.RefactoringUtil;
import com.intellij.util.IncorrectOperationException;
import com.intellij.util.VisibilityUtil;
+import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import java.util.List;
+
/**
* @author Max Medvedev
*/
@@ -307,7 +311,13 @@ public class JavaEncapsulateFieldHelper extends EncapsulateFieldHelper {
@NotNull
@Override
public PsiField[] getApplicableFields(@NotNull PsiClass aClass) {
- return aClass.getFields();
+ final List fields = ContainerUtil.filter(aClass.getFields(), new Condition() {
+ @Override
+ public boolean value(PsiField field) {
+ return !(field instanceof PsiEnumConstant);
+ }
+ });
+ return fields.toArray(new PsiField[fields.size()]);
}
@Override
diff --git a/java/java-impl/src/com/intellij/refactoring/extractInterface/ExtractInterfaceDialog.java b/java/java-impl/src/com/intellij/refactoring/extractInterface/ExtractInterfaceDialog.java
index b07cb31c92b0..162f88b294b7 100644
--- a/java/java-impl/src/com/intellij/refactoring/extractInterface/ExtractInterfaceDialog.java
+++ b/java/java-impl/src/com/intellij/refactoring/extractInterface/ExtractInterfaceDialog.java
@@ -51,7 +51,7 @@ class ExtractInterfaceDialog extends JavaExtractSuperBaseDialog {
return element.hasModifierProperty(PsiModifier.PUBLIC)
&& !element.hasModifierProperty(PsiModifier.STATIC);
}
- else if (element instanceof PsiField) {
+ else if (element instanceof PsiField && !(element instanceof PsiEnumConstant)) {
return element.hasModifierProperty(PsiModifier.FINAL)
&& element.hasModifierProperty(PsiModifier.STATIC)
&& element.hasModifierProperty(PsiModifier.PUBLIC);
diff --git a/java/java-impl/src/com/intellij/refactoring/util/duplicates/MethodDuplicatesHandler.java b/java/java-impl/src/com/intellij/refactoring/util/duplicates/MethodDuplicatesHandler.java
index 78c4ed2ab216..11568aedf84f 100644
--- a/java/java-impl/src/com/intellij/refactoring/util/duplicates/MethodDuplicatesHandler.java
+++ b/java/java-impl/src/com/intellij/refactoring/util/duplicates/MethodDuplicatesHandler.java
@@ -108,7 +108,7 @@ public class MethodDuplicatesHandler implements RefactoringActionHandler {
}
} else if (member instanceof PsiField) {
final PsiField field = (PsiField)member;
- if (!field.hasInitializer()) {
+ if (field.getInitializer() == null) {
return "Field " + member.getName() + " doesn't have initializer";
}
final PsiClass containingClass = field.getContainingClass();
diff --git a/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java b/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java
index 1ad78b799a19..3eea64f740fa 100644
--- a/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java
+++ b/java/java-psi-api/src/com/intellij/psi/util/PsiUtil.java
@@ -812,26 +812,13 @@ public final class PsiUtil extends PsiUtilCore {
}
}
- if (glb != null) {
- if (!((PsiWildcardType)substituted).isSuper()) {
- substituted = glb instanceof PsiCapturedWildcardType ? ((PsiCapturedWildcardType)glb).getWildcard()
- : PsiWildcardType.createExtends(manager, glb);
- }
- else {
- if (captureContext != null) {
- final PsiCapturedWildcardType capturedWildcardType = oldSubstituted instanceof PsiCapturedWildcardType
- ? (PsiCapturedWildcardType)oldSubstituted
- : (PsiCapturedWildcardType)captureSubstitutor.substitute(typeParameter);
- LOG.assertTrue(capturedWildcardType != null);
- capturedWildcardType.setUpperBound(glb);
- return capturedWildcardType;
- }
- }
+ if (glb != null && !((PsiWildcardType)substituted).isSuper()) {
+ substituted = glb instanceof PsiCapturedWildcardType ? ((PsiCapturedWildcardType)glb).getWildcard()
+ : PsiWildcardType.createExtends(manager, glb);
}
}
if (captureContext != null) {
- LOG.assertTrue(substituted instanceof PsiWildcardType, substituted);
substituted =
oldSubstituted instanceof PsiCapturedWildcardType && substituted.equals(((PsiCapturedWildcardType)oldSubstituted).getWildcard())
? oldSubstituted
diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/PsiSubstitutorImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/PsiSubstitutorImpl.java
index 514c54ecf9b0..9343717276d4 100644
--- a/java/java-psi-impl/src/com/intellij/psi/impl/PsiSubstitutorImpl.java
+++ b/java/java-psi-impl/src/com/intellij/psi/impl/PsiSubstitutorImpl.java
@@ -164,10 +164,7 @@ public class PsiSubstitutorImpl implements PsiSubstitutor {
}
if (newBound instanceof PsiCapturedWildcardType) {
final PsiWildcardType wildcard = ((PsiCapturedWildcardType)newBound).getWildcard();
- if (wildcardType.isExtends() != wildcard.isExtends()) {
- return !wildcard.isBounded() ? newBound : rebound(wildcardType, newBound);
- }
- if (wildcard.isBounded()) {
+ if (wildcard.isBounded() && wildcardType.isExtends() == wildcard.isExtends()) {
return newBound;
}
}
diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/constraints/TypeEqualityConstraint.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/constraints/TypeEqualityConstraint.java
index f3fc0c725b12..efda4514e2ed 100644
--- a/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/constraints/TypeEqualityConstraint.java
+++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/constraints/TypeEqualityConstraint.java
@@ -96,7 +96,7 @@ public class TypeEqualityConstraint implements ConstraintFormula {
final PsiSubstitutor sSubstitutor = sResult.getSubstitutor();
for (PsiTypeParameter typeParameter : tClass.getTypeParameters()) {
final PsiType tSubstituted = tSubstitutor.substitute(typeParameter);
- final PsiType sSubstituted = sSubstitutor.substitute(typeParameter);
+ final PsiType sSubstituted = sSubstitutor.substituteWithBoundsPromotion(typeParameter);
if (tSubstituted != null && sSubstituted != null) {
constraints.add(new TypeEqualityConstraint(tSubstituted, sSubstituted));
}
diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiMethodReferenceExpressionImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiMethodReferenceExpressionImpl.java
index 60b3b5f9bcee..19bee165ef67 100644
--- a/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiMethodReferenceExpressionImpl.java
+++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiMethodReferenceExpressionImpl.java
@@ -519,6 +519,6 @@ public class PsiMethodReferenceExpressionImpl extends PsiReferenceExpressionBase
@Nullable
@Override
public Icon getIcon(int flags) {
- return AllIcons.Nodes.AnonymousClass;
+ return AllIcons.Nodes.MethodReference;
}
}
diff --git a/java/java-psi-impl/src/com/intellij/psi/scope/conflictResolvers/JavaMethodsConflictResolver.java b/java/java-psi-impl/src/com/intellij/psi/scope/conflictResolvers/JavaMethodsConflictResolver.java
index 1452d08eb0cd..9d00594d9b51 100644
--- a/java/java-psi-impl/src/com/intellij/psi/scope/conflictResolvers/JavaMethodsConflictResolver.java
+++ b/java/java-psi-impl/src/com/intellij/psi/scope/conflictResolvers/JavaMethodsConflictResolver.java
@@ -15,6 +15,7 @@
*/
package com.intellij.psi.scope.conflictResolvers;
+import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.projectRoots.JavaSdkVersion;
@@ -71,12 +72,14 @@ public class JavaMethodsConflictResolver implements PsiConflictResolver{
@Override
public final CandidateInfo resolveConflict(@NotNull final List conflicts){
+ /*
+ //non-default policies
final MethodCandidateInfo.CurrentCandidateProperties properties = MethodCandidateInfo.getCurrentMethod(myArgumentsList);
if (properties != null) {
final PsiMethod method = properties.getMethod();
LOG.error("Recursive conflict resolution for:" + method + "; " + myArgumentsList.getText() + "; file="
+ (method == null ? "" : method.getContainingFile()));
- }
+ }*/
return MethodCandidateInfo.ourOverloadGuard.doPreventingRecursion(myArgumentsList, true, new Computable() {
@Override
public CandidateInfo compute() {
diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA57286.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA57286.java
index f26c784ba40f..a2053074f2e2 100644
--- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA57286.java
+++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA57286.java
@@ -1,6 +1,6 @@
class A {
> void foo(){}
void bar(A> a){
- a.<A>>foo();
+ a.<A>>foo();
}
}
\ No newline at end of file
diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA57311.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA57311.java
index 2be9a4f1e4ff..0d22f7e06ac6 100644
--- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA57311.java
+++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA57311.java
@@ -4,7 +4,7 @@ class A {
}
void bar(A> x){
- baz(x.foo());
+ baz(x.foo());
}
void baz(A> x){}
diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA57508.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA57508.java
index 07ec320b4dd2..673c7b26c933 100644
--- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA57508.java
+++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA57508.java
@@ -5,6 +5,6 @@ abstract class X {
abstract void copy(List dest, List extends T> src);
void foo(List> x, List> y){
- copy(x, y);
+ copy(x, y);
}
}
\ No newline at end of file
diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA57533.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA57533.java
index 4e37c9763b2e..2d77121a4baf 100644
--- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA57533.java
+++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/IDEA57533.java
@@ -1,6 +1,6 @@
class C>>{
void foo(C> x){
- bar(x);
+ bar(x);
}
> void bar(C x){}
}
\ No newline at end of file
diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/SubstituteTypeParameterOfCapturedWildcardOnSubstitution.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/SubstituteTypeParameterOfCapturedWildcardOnSubstitution.java
index 6bd8b7a192cf..12233e9333a0 100644
--- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/SubstituteTypeParameterOfCapturedWildcardOnSubstitution.java
+++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/SubstituteTypeParameterOfCapturedWildcardOnSubstitution.java
@@ -9,7 +9,7 @@ abstract class A {
void baz7(B a) {}
abstract B foo7();
void bar7(A> a) {
- baz7(a.foo7());
+ baz7(a.foo7());
}
void baz9(B a) {}
diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/SubstitutorCaptureBoundComposition.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/SubstitutorCaptureBoundComposition.java
index 8cfa716454b9..c22333a5395d 100644
--- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/SubstitutorCaptureBoundComposition.java
+++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/SubstitutorCaptureBoundComposition.java
@@ -22,7 +22,7 @@ class Test {
traverser.filter(filter);
traverser.filter1(filter);
- traverser.filter2(filter); //"'filter2(Predicate extends capture>>)' in 'NodeTraverser' cannot be applied to '(Predicate>)'"
+ traverser.filter2(filter); //"'filter2(Predicate extends capture>>)' in 'NodeTraverser' cannot be applied to '(Predicate>)'"
traverser1.filter(filter);
traverser1.filter1(filter);
@@ -36,7 +36,7 @@ class Test {
traverser.filter(filter1);
traverser.filter1(filter1);
- traverser.filter2(filter1);// "'filter2(Predicate extends capture>>)' in 'NodeTraverser' cannot be applied to '(Predicate>)'"
+ traverser.filter2(filter1);// "'filter2(Predicate extends capture>>)' in 'NodeTraverser' cannot be applied to '(Predicate>)'"
traverser1.filter(filter1);
traverser1.filter1(filter1);
@@ -50,7 +50,7 @@ class Test {
traverser.filter(filter2);
traverser.filter1(filter2);
- traverser.filter2(filter2);// "'filter2(Predicate extends capture>>)' in 'NodeTraverser' cannot be applied to '(Predicate>)'"
+ traverser.filter2(filter2);// "'filter2(Predicate extends capture>>)' in 'NodeTraverser' cannot be applied to '(Predicate>)'"
traverser1.filter(filter2);
traverser1.filter1(filter2);
diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/Variance.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/Variance.java
index 382214326fef..c9594c41bc2b 100644
--- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/Variance.java
+++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting/Variance.java
@@ -242,7 +242,7 @@ class Use99n extends Use99,Double> {
class IDEA79360 {
public static void main(Map, ?> map, Map