diff --git a/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactManagerImpl.java b/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactManagerImpl.java index 837360fbc857..1cd4478978fc 100644 --- a/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactManagerImpl.java +++ b/java/compiler/impl/src/com/intellij/packaging/impl/artifacts/ArtifactManagerImpl.java @@ -246,7 +246,7 @@ public class ArtifactManagerImpl extends ArtifactManager implements ProjectCompo private InvalidArtifact createInvalidArtifact(ArtifactState state, String errorMessage) { final InvalidArtifact artifact = new InvalidArtifact(state, errorMessage); ProjectLoadingErrorsNotifier.getInstance(myProject).registerError(new ArtifactLoadingErrorDescription(myProject, artifact)); - UnknownFeaturesCollector.getInstance(myProject).registerUnknownFeature("com.intellij.packaging.artifacts.ArtifactType", state.getArtifactType()); + UnknownFeaturesCollector.getInstance(myProject).registerUnknownFeature("com.intellij.packaging.artifacts.ArtifactType", state.getArtifactType(), "Artifact"); return artifact; } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/BuildElementsEditor.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/BuildElementsEditor.java index ba7706c6ad20..93fbf8d63bf3 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/BuildElementsEditor.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/BuildElementsEditor.java @@ -70,16 +70,6 @@ public class BuildElementsEditor extends ModuleElementsEditor { group.add(myInheritCompilerOutput); group.add(myPerModuleCompilerOutput); - final ActionListener listener = new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - enableCompilerSettings(!myInheritCompilerOutput.isSelected()); - } - }; - - myInheritCompilerOutput.addActionListener(listener); - myPerModuleCompilerOutput.addActionListener(listener); - myOutputPathPanel = createOutputPathPanel(ProjectBundle.message("module.paths.output.title"), new CommitPathRunnable() { @Override public void saveUrl(String url) { @@ -129,15 +119,26 @@ public class BuildElementsEditor extends ModuleElementsEditor { outputPathsPanel.add(myCbExcludeOutput, new GridBagConstraints(0, GridBagConstraints.RELATIVE, 2, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(6, 16, 0, 0), 0, 0)); + final boolean outputPathInherited = getCompilerExtension().isCompilerOutputPathInherited(); + myInheritCompilerOutput.setSelected(outputPathInherited); + myPerModuleCompilerOutput.setSelected(!outputPathInherited); + // fill with data updateOutputPathPresentation(); //compiler settings - final boolean outputPathInherited = getCompilerExtension().isCompilerOutputPathInherited(); - myInheritCompilerOutput.setSelected(outputPathInherited); - myPerModuleCompilerOutput.setSelected(!outputPathInherited); enableCompilerSettings(!outputPathInherited); + final ActionListener listener = new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + enableCompilerSettings(!myInheritCompilerOutput.isSelected()); + } + }; + + myInheritCompilerOutput.addActionListener(listener); + myPerModuleCompilerOutput.addActionListener(listener); + final JPanel panel = new JPanel(new BorderLayout()); panel.setBorder(IdeBorderFactory.createTitledBorder(ProjectBundle.message("project.roots.output.compiler.title"), true)); diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/SurroundWithTryCatchFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/SurroundWithTryCatchFix.java index e10b61610fce..b0264dc22c52 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/SurroundWithTryCatchFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/SurroundWithTryCatchFix.java @@ -28,6 +28,7 @@ import com.intellij.openapi.util.TextRange; import com.intellij.psi.*; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.refactoring.util.RefactoringChangeUtil; +import com.intellij.refactoring.util.RefactoringUtil; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; @@ -38,14 +39,16 @@ import org.jetbrains.annotations.NotNull; public class SurroundWithTryCatchFix implements IntentionAction { private static final Logger LOG = Logger.getInstance("#com.intellij.codeInsight.daemon.impl.quickfix.SurroundWithTryCatchFix"); - private PsiStatement myStatement = null; + private PsiElement myStatement = null; public SurroundWithTryCatchFix(@NotNull PsiElement element) { - final PsiFunctionalExpression functionalExpression = PsiTreeUtil.getParentOfType(element, PsiFunctionalExpression.class, false); - if (functionalExpression == null || - (functionalExpression instanceof PsiLambdaExpression && ((PsiLambdaExpression)functionalExpression).getBody() instanceof PsiCodeBlock)) { + final PsiFunctionalExpression functionalExpression = PsiTreeUtil.getParentOfType(element, PsiFunctionalExpression.class, false, PsiStatement.class); + if (functionalExpression == null) { myStatement = PsiTreeUtil.getNonStrictParentOfType(element, PsiStatement.class); } + else if (functionalExpression instanceof PsiLambdaExpression) { + myStatement = functionalExpression; + } } @Override @@ -82,6 +85,20 @@ public class SurroundWithTryCatchFix implements IntentionAction { myStatement = forStatement; } } + + if (myStatement instanceof PsiLambdaExpression) { + PsiElement body = ((PsiLambdaExpression)myStatement).getBody(); + if (body instanceof PsiExpression) { + myStatement = RefactoringUtil.expandExpressionLambdaToCodeBlock(body); + } + + body = ((PsiLambdaExpression)myStatement).getBody(); + LOG.assertTrue(body instanceof PsiCodeBlock); + final PsiStatement[] statements = ((PsiCodeBlock)body).getStatements(); + LOG.assertTrue(statements.length == 1); + myStatement = statements[0]; + } + TextRange range = null; try{ diff --git a/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java b/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java index e782fd1c7847..3e0d1e5b0657 100644 --- a/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java +++ b/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java @@ -56,6 +56,7 @@ import com.intellij.refactoring.introduceVariable.IntroduceVariableBase; import com.intellij.util.IncorrectOperationException; import com.intellij.util.containers.HashMap; import com.intellij.util.containers.HashSet; +import com.siyeh.ipp.types.ExpandOneLineLambda2CodeBlockIntention; import gnu.trove.THashMap; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -936,6 +937,21 @@ public class RefactoringUtil { return element instanceof PsiLoopStatement || element instanceof PsiIfStatement; } + public static PsiElement expandExpressionLambdaToCodeBlock(@NotNull PsiElement element) { + final PsiLambdaExpression lambdaExpression = PsiTreeUtil.getParentOfType(element, PsiLambdaExpression.class); + LOG.assertTrue(lambdaExpression != null); + final PsiElement body = lambdaExpression.getBody(); + LOG.assertTrue(body instanceof PsiExpression); + String blockText = "{"; + blockText += PsiType.VOID.equals(LambdaUtil.getFunctionalInterfaceReturnType(lambdaExpression)) ? "" : "return "; + blockText += body.getText() + ";}"; + + final String resultedLambdaText = lambdaExpression.getParameterList().getText() + "->" + blockText; + final PsiExpression expressionFromText = + JavaPsiFacade.getElementFactory(element.getProject()).createExpressionFromText(resultedLambdaText, lambdaExpression); + return CodeStyleManager.getInstance(element.getProject()).reformat(lambdaExpression.replace(expressionFromText)); + } + public interface ImplicitConstructorUsageVisitor { void visitConstructor(PsiMethod constructor, PsiMethod baseConstructor); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/surroundWithTry/afterLambdaExpr.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/surroundWithTry/afterLambdaExpr.java new file mode 100644 index 000000000000..9ab9c4d19e00 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/surroundWithTry/afterLambdaExpr.java @@ -0,0 +1,26 @@ +// "Surround with try/catch" "true" +public class ExTest { + public static void maybeThrow(String data) throws Ex { + throw new Ex(data); + } + + { + Block b = (t) -> { + try { + ExTest.maybeThrow(t); + } catch (Ex ex) { + ex.printStackTrace(); + } + }; + } + + + private static class Ex extends Throwable { + public Ex(String s) { + } + } +} + +interface Block { + public void accept(T t); +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/surroundWithTry/beforeLambdaExpr.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/surroundWithTry/beforeLambdaExpr.java index 2cb6adb41d38..5b163a435d0c 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/surroundWithTry/beforeLambdaExpr.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/surroundWithTry/beforeLambdaExpr.java @@ -1,4 +1,4 @@ -// "Surround with try/catch" "false" +// "Surround with try/catch" "true" public class ExTest { public static void maybeThrow(String data) throws Ex { throw new Ex(data); diff --git a/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SmartPsiElementPointerImpl.java b/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SmartPsiElementPointerImpl.java index 5d227aa08c1e..46f7968208a0 100644 --- a/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SmartPsiElementPointerImpl.java +++ b/platform/core-impl/src/com/intellij/psi/impl/smartPointers/SmartPsiElementPointerImpl.java @@ -30,11 +30,13 @@ import com.intellij.openapi.util.TextRange; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; import com.intellij.psi.impl.FreeThreadedFileViewProvider; +import com.intellij.psi.impl.PsiManagerEx; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.lang.ref.Reference; import java.lang.ref.SoftReference; +import java.lang.ref.WeakReference; class SmartPsiElementPointerImpl implements SmartPointerEx { private Reference myElement; @@ -91,7 +93,9 @@ class SmartPsiElementPointerImpl implements SmartPointerEx } private void cacheElement(E element) { - myElement = element == null ? null : new SoftReference(element); + myElement = element == null ? null : + ((PsiManagerEx)element.getManager()).isBatchFilesProcessingMode() ? new WeakReference(element) : + new SoftReference(element); } @Override diff --git a/platform/lang-impl/src/com/intellij/facet/FacetManagerImpl.java b/platform/lang-impl/src/com/intellij/facet/FacetManagerImpl.java index cd2cf5319306..6d909a44a0a9 100644 --- a/platform/lang-impl/src/com/intellij/facet/FacetManagerImpl.java +++ b/platform/lang-impl/src/com/intellij/facet/FacetManagerImpl.java @@ -238,7 +238,7 @@ public class FacetManagerImpl extends FacetManager implements ModuleComponent, P FacetLoadingErrorDescription description = new FacetLoadingErrorDescription(facet); ProjectLoadingErrorsNotifier.getInstance(myModule.getProject()).registerError(description); if (typeId != null) { - UnknownFeaturesCollector.getInstance(myModule.getProject()).registerUnknownFeature("com.intellij.facetType", typeId); + UnknownFeaturesCollector.getInstance(myModule.getProject()).registerUnknownFeature("com.intellij.facetType", typeId, "Facet"); } } } diff --git a/platform/lang-impl/src/com/intellij/ide/util/projectWizard/ProjectSettingsStepBase.java b/platform/lang-impl/src/com/intellij/ide/util/projectWizard/ProjectSettingsStepBase.java index f9e8f919ad22..f206bf2af8c7 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/projectWizard/ProjectSettingsStepBase.java +++ b/platform/lang-impl/src/com/intellij/ide/util/projectWizard/ProjectSettingsStepBase.java @@ -15,6 +15,7 @@ */ package com.intellij.ide.util.projectWizard; +import com.intellij.BundleBase; import com.intellij.facet.ui.ValidationResult; import com.intellij.icons.AllIcons; import com.intellij.ide.impl.ProjectUtil; @@ -265,7 +266,7 @@ public class ProjectSettingsStepBase extends AbstractActionWithPanel implements final FileChooserDescriptor descriptor = FileChooserDescriptorFactory.createSingleFolderDescriptor(); myLocationField.addBrowseFolderListener("Select base directory", "Select base directory for the Project", null, descriptor); - return LabeledComponent.create(myLocationField, "&Location"); + return LabeledComponent.create(myLocationField, BundleBase.replaceMnemonicAmpersand("&Location")); } private static File findSequentNonExistingUntitled() { diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginAdvertiserEditorNotificationProvider.java b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginAdvertiserEditorNotificationProvider.java index 11d69d5e9feb..9d7d8d627b90 100644 --- a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginAdvertiserEditorNotificationProvider.java +++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginAdvertiserEditorNotificationProvider.java @@ -183,6 +183,6 @@ public class PluginAdvertiserEditorNotificationProvider extends EditorNotificati } private static UnknownFeature createExtensionFeature(String extension) { - return new UnknownFeature(FileTypeFactory.FILE_TYPE_FACTORY_EP.getName(), extension); + return new UnknownFeature(FileTypeFactory.FILE_TYPE_FACTORY_EP.getName(), "File Type", extension); } } diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginsAdvertiser.java b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginsAdvertiser.java index 21eede8dc417..07208585f4cb 100644 --- a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginsAdvertiser.java +++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/PluginsAdvertiser.java @@ -39,7 +39,10 @@ import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.reference.SoftReference; import com.intellij.ui.EditorNotifications; +import com.intellij.util.Function; import com.intellij.util.PlatformUtils; +import com.intellij.util.containers.LinkedMultiMap; +import com.intellij.util.containers.MultiMap; import com.intellij.util.io.HttpRequests; import com.intellij.util.xmlb.XmlSerializer; import com.intellij.util.xmlb.annotations.MapAnnotation; @@ -238,6 +241,7 @@ public class PluginsAdvertiser implements StartupActivity { private final Map myDisabledPlugins = new HashMap(); private List myBundledPlugin; + private final MultiMap myFeatures = new MultiMap(); @Override public void run() { @@ -256,6 +260,7 @@ public class PluginsAdvertiser implements StartupActivity { if (pluginId != null) { for (Plugin plugin : pluginId) { ids.put(plugin.myPluginId, plugin); + myFeatures.putValue(plugin.myPluginId, feature); } } } @@ -299,8 +304,7 @@ public class PluginsAdvertiser implements StartupActivity { private void onSuccess() { String message = null; if (!myPlugins.isEmpty() || !myDisabledPlugins.isEmpty()) { - message = "Features covered by non-bundled plugins are detected.
"; - + message = getAddressedMessagePresentation(); if (!myDisabledPlugins.isEmpty()) { message += "Enable plugins...
"; } @@ -308,7 +312,7 @@ public class PluginsAdvertiser implements StartupActivity { message += "Configure plugins...
"; } - message += "Ignore All"; + message += "Ignore Unknown Features"; } else if (myBundledPlugin != null && !PropertiesComponent.getInstance().isTrueValue(IGNORE_ULTIMATE_EDITION)) { message = "Features covered by " + IDEA_ULTIMATE_EDITION + @@ -322,6 +326,35 @@ public class PluginsAdvertiser implements StartupActivity { NOTIFICATION_GROUP.createNotification(DISPLAY_ID, message, NotificationType.INFORMATION, notificationListener).notify(project); } } + + @NotNull + private String getAddressedMessagePresentation() { + final MultiMap addressedFeatures = MultiMap.createSet(); + final Set ids = new LinkedHashSet(); + for (PluginDownloader plugin : myPlugins) { + ids.add(plugin.getPluginId()); + } + for (Plugin plugin : myDisabledPlugins.keySet()) { + ids.add(plugin.myPluginId); + } + for (String id : ids) { + for (UnknownFeature feature : myFeatures.get(id)) { + addressedFeatures.putValue(feature.getFeatureDisplayName(), feature.getImplementationName()); + } + } + final String addressedFeaturesPresentation = StringUtil.join(addressedFeatures.entrySet(), + new Function>, String>() { + @Override + public String fun(Map.Entry> entry) { + return entry.getKey() + "[" + StringUtil.join(entry.getValue(), ", ") + "]"; + } + }, ", "); + final int addressedFeaturesNumber = addressedFeatures.keySet().size(); + final int pluginsNumber = ids.size(); + return "Unknown feature" + (addressedFeaturesNumber == 1 ? "" : "s") + + " (" + addressedFeaturesPresentation + ") covered by " + (myPlugins.isEmpty() ? "disabled" : "non-bundled") + " plugin" + (pluginsNumber == 1 ? "" : "s") + + " detected.
"; + } }); } }; diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/UnknownFeature.java b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/UnknownFeature.java index 1590733ba93d..8b7677cd25d0 100644 --- a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/UnknownFeature.java +++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/UnknownFeature.java @@ -22,10 +22,12 @@ import org.jetbrains.annotations.NotNull; */ public class UnknownFeature { private final String myFeatureType; + private final String myFeatureDisplayName; private final String myImplementationName; - public UnknownFeature(@NotNull String featureType, @NotNull String implementationName) { + public UnknownFeature(@NotNull String featureType, String featureDisplayName, @NotNull String implementationName) { myFeatureType = featureType; + myFeatureDisplayName = featureDisplayName; myImplementationName = implementationName; } @@ -37,6 +39,10 @@ public class UnknownFeature { return myImplementationName; } + public String getFeatureDisplayName() { + return myFeatureDisplayName; + } + @Override public boolean equals(Object o) { if (this == o) return true; diff --git a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/UnknownFeaturesCollector.java b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/UnknownFeaturesCollector.java index a7714b1e04e8..7195a0896de8 100644 --- a/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/UnknownFeaturesCollector.java +++ b/platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/pluginsAdvertisement/UnknownFeaturesCollector.java @@ -46,11 +46,11 @@ public class UnknownFeaturesCollector implements PersistentStateComponent myURLs; private final ClassPath myClassPath; + private final WeakStringInterner myClassNameInterner; private final boolean myAllowBootstrapResources; /** @deprecated use {@link #build()}, left for compatibility with java.system.class.loader setting */ @@ -172,6 +176,7 @@ public class UrlClassLoader extends ClassLoader { }); myClassPath = createClassPath(builder); myAllowBootstrapResources = builder.myAllowBootstrapResources; + myClassNameInterner = ourParallel ? new WeakStringInterner() : null; } @NotNull @@ -335,6 +340,10 @@ public class UrlClassLoader extends ClassLoader { else return ""; } + protected Object getClassLoadingLock(String className) { + return myClassNameInterner != null ? myClassNameInterner.intern(new String(className)) : this; + } + /** * An interface for a pool to store internal class loader caches, that can be shared between several different class loaders, * if they contain the same URLs in their classpaths.

diff --git a/plugins/IntentionPowerPak/src/com/siyeh/ipp/conditional/ReplaceConditionalWithIfIntention.java b/plugins/IntentionPowerPak/src/com/siyeh/ipp/conditional/ReplaceConditionalWithIfIntention.java index eea00041ab06..4aac975580c9 100644 --- a/plugins/IntentionPowerPak/src/com/siyeh/ipp/conditional/ReplaceConditionalWithIfIntention.java +++ b/plugins/IntentionPowerPak/src/com/siyeh/ipp/conditional/ReplaceConditionalWithIfIntention.java @@ -50,12 +50,10 @@ public class ReplaceConditionalWithIfIntention extends Intention { private static void replaceConditionalWithIf(PsiConditionalExpression expression) throws IncorrectOperationException { final PsiElement expressionParent = expression.getParent(); if (expressionParent instanceof PsiLambdaExpression) { - String blockText = "{"; - blockText += PsiType.VOID.equals(LambdaUtil.getFunctionalInterfaceReturnType((PsiLambdaExpression)expressionParent)) ? "" : "return "; - blockText += expression.getText() + ";}"; - final PsiCodeBlock codeBlock = (PsiCodeBlock)expression.replace( - JavaPsiFacade.getElementFactory(expression.getProject()).createCodeBlockFromText(blockText, expression)); - final PsiStatement statement = codeBlock.getStatements()[0]; + final PsiElement codeBlock = + ((PsiLambdaExpression)RefactoringUtil.expandExpressionLambdaToCodeBlock(expression)).getBody(); + LOG.assertTrue(codeBlock instanceof PsiCodeBlock, codeBlock); + final PsiStatement statement = ((PsiCodeBlock)codeBlock).getStatements()[0]; expression = (PsiConditionalExpression)(statement instanceof PsiReturnStatement ? ((PsiReturnStatement)statement).getReturnValue() : ((PsiExpressionStatement)statement).getExpression()); } diff --git a/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ExpandOneLineLambda2CodeBlockIntention.java b/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ExpandOneLineLambda2CodeBlockIntention.java index 0a3a0beafbc2..62feddffd6d4 100644 --- a/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ExpandOneLineLambda2CodeBlockIntention.java +++ b/plugins/IntentionPowerPak/src/com/siyeh/ipp/types/ExpandOneLineLambda2CodeBlockIntention.java @@ -17,8 +17,8 @@ package com.siyeh.ipp.types; import com.intellij.openapi.diagnostic.Logger; import com.intellij.psi.*; -import com.intellij.psi.codeStyle.CodeStyleManager; import com.intellij.psi.util.PsiTreeUtil; +import com.intellij.refactoring.util.RefactoringUtil; import com.intellij.util.IncorrectOperationException; import com.siyeh.ipp.base.Intention; import com.siyeh.ipp.base.PsiElementPredicate; @@ -40,21 +40,9 @@ public class ExpandOneLineLambda2CodeBlockIntention extends Intention { @Override protected void processIntention(@NotNull PsiElement element) throws IncorrectOperationException { - final PsiLambdaExpression lambdaExpression = PsiTreeUtil.getParentOfType(element, PsiLambdaExpression.class); - LOG.assertTrue(lambdaExpression != null); - final PsiElement body = lambdaExpression.getBody(); - LOG.assertTrue(body instanceof PsiExpression); - String blockText = "{"; - blockText += PsiType.VOID.equals(LambdaUtil.getFunctionalInterfaceReturnType(lambdaExpression)) ? "" : "return "; - blockText += body.getText() + ";}"; - - final String resultedLambdaText = lambdaExpression.getParameterList().getText() + "->" + blockText; - final PsiExpression expressionFromText = - JavaPsiFacade.getElementFactory(element.getProject()).createExpressionFromText(resultedLambdaText, lambdaExpression); - CodeStyleManager.getInstance(element.getProject()).reformat(lambdaExpression.replace(expressionFromText)); + RefactoringUtil.expandExpressionLambdaToCodeBlock(element); } - private static class LambdaExpressionPredicate implements PsiElementPredicate { @Override diff --git a/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/ForkedGroovyc.java b/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/ForkedGroovyc.java index 94690e146d42..694b9df8756e 100644 --- a/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/ForkedGroovyc.java +++ b/plugins/groovy/jps-plugin/src/org/jetbrains/jps/incremental/groovy/ForkedGroovyc.java @@ -69,7 +69,7 @@ class ForkedGroovyc implements GroovycFlavor { } List vmParams = ContainerUtilRt.newArrayList(); - vmParams.add("-Xmx" + settings.heapSize + "m"); + vmParams.add("-Xmx" + System.getProperty("groovyc.heap.size", settings.heapSize) + "m"); vmParams.add("-Dfile.encoding=" + System.getProperty("file.encoding")); //vmParams.add("-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5239"); diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/GroovyCompilerConfigurable.form b/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/GroovyCompilerConfigurable.form index 0fc52a4c9264..5dd2805cf780 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/GroovyCompilerConfigurable.form +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/GroovyCompilerConfigurable.form @@ -1,6 +1,6 @@

- + @@ -8,7 +8,7 @@ - + @@ -25,6 +25,7 @@ + @@ -33,18 +34,28 @@ - + + + + + + + + + + + - + @@ -53,14 +64,6 @@ - - - - - - - -