diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/JavaLineBreakpointTypeBase.java b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/JavaLineBreakpointTypeBase.java
index ebaee1e6d5ee..1be1fb56557d 100644
--- a/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/JavaLineBreakpointTypeBase.java
+++ b/java/debugger/impl/src/com/intellij/debugger/ui/breakpoints/JavaLineBreakpointTypeBase.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2015 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,7 +16,6 @@
package com.intellij.debugger.ui.breakpoints;
import com.intellij.debugger.engine.DebuggerUtils;
-import com.intellij.execution.filters.LineNumbersMapping;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.fileTypes.StdFileTypes;
@@ -129,9 +128,6 @@ public abstract class JavaLineBreakpointTypeBase
{ }
interface Base { }
class Foo implements Base {
- void get(Bar bar) { }
+ public void get(Bar bar) { }
}
\ No newline at end of file
diff --git a/java/java-tests/testSrc/com/intellij/openapi/editor/impl/FoldingProcessingOnDocumentModificationTest.java b/java/java-tests/testSrc/com/intellij/openapi/editor/impl/FoldingProcessingOnDocumentModificationTest.java
index 6da536d86d2c..ad12ef131055 100644
--- a/java/java-tests/testSrc/com/intellij/openapi/editor/impl/FoldingProcessingOnDocumentModificationTest.java
+++ b/java/java-tests/testSrc/com/intellij/openapi/editor/impl/FoldingProcessingOnDocumentModificationTest.java
@@ -16,6 +16,7 @@
package com.intellij.openapi.editor.impl;
import com.intellij.codeInsight.folding.CodeFoldingManager;
+import com.intellij.openapi.actionSystem.IdeActions;
import com.intellij.openapi.editor.CaretModel;
import com.intellij.openapi.editor.FoldRegion;
import com.intellij.testFramework.TestFileType;
@@ -55,7 +56,31 @@ public class FoldingProcessingOnDocumentModificationTest extends AbstractEditorT
assertFalse(foldRegion.isExpanded());
}
+ public void testCollapseAllHappensBeforeFirstCodeFoldingPass() throws Exception {
+ init("class Foo {\n" +
+ " void m() {\n" +
+ " System.out.println();\n" +
+ " System.out.println();\n" +
+ " }\n" +
+ "}", TestFileType.JAVA);
+
+ buildInitialFoldRegions();
+ executeAction(IdeActions.ACTION_COLLAPSE_ALL_REGIONS);
+ runFoldingPass(true);
+ assertEquals(1, myEditor.getFoldingModel().getAllFoldRegions().length);
+ }
+
+ private static void buildInitialFoldRegions() {
+ CodeFoldingManager.getInstance(getProject()).buildInitialFoldings(myEditor);
+ }
+
private static void updateFoldRegions() {
CodeFoldingManager.getInstance(getProject()).updateFoldRegions(myEditor);
}
+
+ private static void runFoldingPass(boolean firstTime) {
+ Runnable runnable = CodeFoldingManager.getInstance(getProject()).updateFoldRegionsAsync(myEditor, firstTime);
+ assertNotNull(runnable);
+ runnable.run();
+ }
}
diff --git a/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java b/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java
index 2f82e8df8b21..f8f576dec0fa 100644
--- a/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java
+++ b/jps/jps-builders/src/org/jetbrains/jps/incremental/IncProjectBuilder.java
@@ -16,10 +16,7 @@
package org.jetbrains.jps.incremental;
import com.intellij.openapi.diagnostic.Logger;
-import com.intellij.openapi.util.LowMemoryWatcher;
-import com.intellij.openapi.util.SystemInfo;
-import com.intellij.openapi.util.UserDataHolder;
-import com.intellij.openapi.util.UserDataHolderBase;
+import com.intellij.openapi.util.*;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.SmartList;
@@ -84,7 +81,7 @@ import java.util.concurrent.atomic.AtomicReference;
public class IncProjectBuilder {
private static final Logger LOG = Logger.getInstance("#org.jetbrains.jps.incremental.IncProjectBuilder");
- private static final String CLASSPATH_INDEX_FINE_NAME = "classpath.index";
+ private static final String CLASSPATH_INDEX_FILE_NAME = "classpath.index";
private static final boolean GENERATE_CLASSPATH_INDEX = Boolean.parseBoolean(System.getProperty(GlobalOptions.GENERATE_CLASSPATH_INDEX_OPTION, "false"));
private static final boolean SYNC_DELETE = Boolean.parseBoolean(System.getProperty("jps.sync.delete", SystemInfo.isWindows ? "true" : "false"));
private static final GlobalContextKey>> TARGET_WITH_CLEARED_OUTPUT = GlobalContextKey.create("_targets_with_cleared_output_");
@@ -334,7 +331,25 @@ public class IncProjectBuilder {
BuildRunner.PARALLEL_BUILD_ENABLED);
context.addBuildListener(new ChainedTargetsBuildListener(context));
+
+ //Deletes class loader classpath index files for changed output roots
+ context.addBuildListener(new BuildListener() {
+ @Override
+ public void filesGenerated(Collection> paths) {
+ final Set outputs = new THashSet(FileUtil.FILE_HASHING_STRATEGY);
+ for (Pair pair : paths) {
+ outputs.add(new File(pair.getFirst()));
+ }
+ for (File root : outputs) {
+ //noinspection ResultOfMethodCallIgnored
+ new File(root, CLASSPATH_INDEX_FILE_NAME).delete();
+ }
+ }
+ @Override
+ public void filesDeleted(Collection paths) {
+ }
+ });
for (TargetBuilder builder : myBuilderRegistry.getTargetBuilders()) {
builder.buildStarted(context);
}
@@ -965,7 +980,7 @@ public class IncProjectBuilder {
File outputDir = ((ModuleBuildTarget)target).getOutputDir();
if (outputDir != null && outputDirs.add(outputDir)) {
try {
- BufferedWriter writer = new BufferedWriter(new FileWriter(new File(outputDir, CLASSPATH_INDEX_FINE_NAME)));
+ BufferedWriter writer = new BufferedWriter(new FileWriter(new File(outputDir, CLASSPATH_INDEX_FILE_NAME)));
try {
writeIndex(writer, outputDir, "");
}
diff --git a/platform/icons/src/debugger/console_log.png b/platform/icons/src/debugger/console_log.png
index 3e9ae80c01d4..9b18e1e769a8 100644
Binary files a/platform/icons/src/debugger/console_log.png and b/platform/icons/src/debugger/console_log.png differ
diff --git a/platform/icons/src/debugger/console_log@2x.png b/platform/icons/src/debugger/console_log@2x.png
index 794e9dbfd507..993bdd5e4576 100644
Binary files a/platform/icons/src/debugger/console_log@2x.png and b/platform/icons/src/debugger/console_log@2x.png differ
diff --git a/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/FoldingUpdate.java b/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/FoldingUpdate.java
index 07bd92cb687a..333725920ac6 100644
--- a/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/FoldingUpdate.java
+++ b/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/FoldingUpdate.java
@@ -281,6 +281,13 @@ public class FoldingUpdate {
}
public static class FoldingMap extends MultiMap{
+ public FoldingMap() {
+ }
+
+ public FoldingMap(FoldingMap map) {
+ super(map);
+ }
+
@NotNull
@Override
protected Map> createMap() {
diff --git a/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/UpdateFoldRegionsOperation.java b/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/UpdateFoldRegionsOperation.java
index ad0992d6128f..3e0d504fddd2 100644
--- a/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/UpdateFoldRegionsOperation.java
+++ b/platform/lang-impl/src/com/intellij/codeInsight/folding/impl/UpdateFoldRegionsOperation.java
@@ -76,11 +76,14 @@ class UpdateFoldRegionsOperation implements Runnable {
FoldingModelEx foldingModel = (FoldingModelEx)myEditor.getFoldingModel();
Map rangeToExpandStatusMap = newTroveMap();
- removeInvalidRegions(info, foldingModel, rangeToExpandStatusMap);
+ // FoldingUpdate caches instances of our object, so they must be immutable.
+ FoldingUpdate.FoldingMap elementsToFold = new FoldingUpdate.FoldingMap(myElementsToFoldMap);
+
+ removeInvalidRegions(info, foldingModel, elementsToFold, rangeToExpandStatusMap);
Map shouldExpand = newTroveMap();
Map groupExpand = newTroveMap();
- List newRegions = addNewRegions(info, foldingModel, rangeToExpandStatusMap, shouldExpand, groupExpand);
+ List newRegions = addNewRegions(info, foldingModel, elementsToFold, rangeToExpandStatusMap, shouldExpand, groupExpand);
applyExpandStatus(newRegions, shouldExpand, groupExpand);
}
@@ -100,14 +103,14 @@ class UpdateFoldRegionsOperation implements Runnable {
private List addNewRegions(@NotNull EditorFoldingInfo info,
@NotNull FoldingModelEx foldingModel,
- @NotNull Map rangeToExpandStatusMap,
+ FoldingUpdate.FoldingMap elementsToFold, @NotNull Map rangeToExpandStatusMap,
@NotNull Map shouldExpand,
@NotNull Map groupExpand) {
List newRegions = newArrayList();
SmartPointerManager smartPointerManager = SmartPointerManager.getInstance(myProject);
- for (PsiElement element : myElementsToFoldMap.keySet()) {
+ for (PsiElement element : elementsToFold.keySet()) {
ProgressManager.checkCanceled();
- final Collection descriptors = myElementsToFoldMap.get(element);
+ final Collection descriptors = elementsToFold.get(element);
for (FoldingDescriptor descriptor : descriptors) {
FoldingGroup group = descriptor.getGroup();
TextRange range = descriptor.getRange();
@@ -165,7 +168,7 @@ class UpdateFoldRegionsOperation implements Runnable {
private void removeInvalidRegions(@NotNull EditorFoldingInfo info,
@NotNull FoldingModelEx foldingModel,
- @NotNull Map rangeToExpandStatusMap) {
+ FoldingUpdate.FoldingMap elementsToFold, @NotNull Map rangeToExpandStatusMap) {
List toRemove = newArrayList();
InjectedLanguageManager injectedManager = InjectedLanguageManager.getInstance(myProject);
for (FoldRegion region : foldingModel.getAllFoldRegions()) {
@@ -176,7 +179,7 @@ class UpdateFoldRegionsOperation implements Runnable {
if (isInjected != myForInjected) continue;
}
final Collection descriptors;
- if (element != null && !(descriptors = myElementsToFoldMap.get(element)).isEmpty()) {
+ if (element != null && !(descriptors = elementsToFold.get(element)).isEmpty()) {
boolean matchingDescriptorFound = false;
FoldingDescriptor[] array = descriptors.toArray(new FoldingDescriptor[descriptors.size()]);
for (FoldingDescriptor descriptor : array) {
@@ -194,7 +197,7 @@ class UpdateFoldRegionsOperation implements Runnable {
break;
}
else {
- myElementsToFoldMap.remove(element, descriptor);
+ elementsToFold.remove(element, descriptor);
}
}
}
diff --git a/platform/lang-impl/src/com/intellij/ide/actions/SearchEverywhereAction.java b/platform/lang-impl/src/com/intellij/ide/actions/SearchEverywhereAction.java
index 4bcc12c7164f..6ce52a5ab56e 100644
--- a/platform/lang-impl/src/com/intellij/ide/actions/SearchEverywhereAction.java
+++ b/platform/lang-impl/src/com/intellij/ide/actions/SearchEverywhereAction.java
@@ -1682,10 +1682,10 @@ public class SearchEverywhereAction extends AnAction implements CustomComponentA
myProgressIndicator, new Processor