mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-131718 Syntax errors make code foldings unfold
This commit is contained in:
+50
@@ -20,6 +20,7 @@ import com.intellij.codeInsight.completion.CompletionContributor;
|
||||
import com.intellij.codeInsight.daemon.*;
|
||||
import com.intellij.codeInsight.daemon.impl.quickfix.DeleteCatchFix;
|
||||
import com.intellij.codeInsight.daemon.quickFix.LightQuickFixTestCase;
|
||||
import com.intellij.codeInsight.folding.CodeFoldingManager;
|
||||
import com.intellij.codeInsight.generation.actions.CommentByLineCommentAction;
|
||||
import com.intellij.codeInsight.hint.EditorHintListener;
|
||||
import com.intellij.codeInsight.intention.AbstractIntentionAction;
|
||||
@@ -2078,5 +2079,54 @@ public class DaemonRespondToChangesTest extends DaemonAnalyzerTestCase {
|
||||
|
||||
assertEmpty(visibleHints);
|
||||
}
|
||||
|
||||
public void testCodeFoldingPassRestartsOnRegionUnfolding() throws Exception {
|
||||
DaemonCodeAnalyzerSettings settings = DaemonCodeAnalyzerSettings.getInstance();
|
||||
int savedDelay = settings.AUTOREPARSE_DELAY;
|
||||
settings.AUTOREPARSE_DELAY = 0;
|
||||
try {
|
||||
configureByText(StdFileTypes.JAVA, "class Foo {\n" +
|
||||
" void m() {\n" +
|
||||
"\n" +
|
||||
" }\n" +
|
||||
"}");
|
||||
CodeFoldingManager.getInstance(getProject()).buildInitialFoldings(myEditor);
|
||||
EditorTestUtil.executeAction(myEditor, IdeActions.ACTION_COLLAPSE_ALL_REGIONS);
|
||||
waitForDaemon();
|
||||
checkFoldingState("[FoldRegion +(25:33), placeholder='{...}']");
|
||||
|
||||
new WriteCommandAction<Void>(myProject){
|
||||
@Override
|
||||
protected void run(@NotNull Result<Void> result) throws Throwable {
|
||||
myEditor.getDocument().insertString(0, "/*");
|
||||
}
|
||||
}.execute();
|
||||
waitForDaemon();
|
||||
checkFoldingState("[FoldRegion -(0:37), placeholder='/.../', FoldRegion +(27:35), placeholder='{...}']");
|
||||
|
||||
EditorTestUtil.executeAction(myEditor, IdeActions.ACTION_EXPAND_ALL_REGIONS);
|
||||
waitForDaemon();
|
||||
checkFoldingState("[FoldRegion -(0:37), placeholder='/.../']");
|
||||
}
|
||||
finally {
|
||||
settings.AUTOREPARSE_DELAY = savedDelay;
|
||||
}
|
||||
}
|
||||
|
||||
private void checkFoldingState(String expected) {
|
||||
assertEquals(expected, Arrays.toString(myEditor.getFoldingModel().getAllFoldRegions()));
|
||||
}
|
||||
|
||||
private void waitForDaemon() {
|
||||
long deadline = System.currentTimeMillis() + 10000;
|
||||
while (!myDaemonCodeAnalyzer.isRunning()) {
|
||||
if (System.currentTimeMillis() > deadline) fail("Too long waiting for daemon to start");
|
||||
UIUtil.dispatchAllInvocationEvents();
|
||||
}
|
||||
while (myDaemonCodeAnalyzer.isRunning()) {
|
||||
if (System.currentTimeMillis() > deadline) fail("Too long waiting for daemon to finish");
|
||||
UIUtil.dispatchAllInvocationEvents();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user