From 70965334b101deebc7328585b5acdf29e0ff602c Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Fri, 22 Mar 2013 00:05:02 +0400 Subject: [PATCH] Force activating post processing actions in order to initialize built-ins properly --- .../AddOpenModifierToClassDeclarationFix.java | 2 +- .../MakeClassAnAnnotationClassFix.java | 2 +- .../quickfix/MakeOverriddenMemberOpenFix.java | 6 ++++-- .../jet/plugin/quickfix/QuickFixUtil.java | 6 ++++++ .../references/BuiltInsReferenceResolver.java | 20 +++++++++++++++---- .../importOptimizer/OptimizeImportsTest.java | 8 ++++++++ .../plugin/quickfix/AbstractQuickFixTest.java | 8 ++++++++ 7 files changed, 44 insertions(+), 8 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/AddOpenModifierToClassDeclarationFix.java b/idea/src/org/jetbrains/jet/plugin/quickfix/AddOpenModifierToClassDeclarationFix.java index 10b6bea79d1..8fa3b39a8c6 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/AddOpenModifierToClassDeclarationFix.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/AddOpenModifierToClassDeclarationFix.java @@ -54,7 +54,7 @@ public class AddOpenModifierToClassDeclarationFix extends JetIntentionAction builtInsSources = Sets.newHashSet(); public BuiltInsReferenceResolver( Project project, @@ -85,9 +90,10 @@ public class BuiltInsReferenceResolver extends AbstractProjectComponent { scope.changeLockLevel(WritableScope.LockLevel.BOTH); jetNamespace.setMemberScope(scope); - TopDownAnalyzer.processStandardLibraryNamespace(myProject, context, scope, jetNamespace, - getJetFiles("jet", Predicates.alwaysTrue())); + List jetBuiltInsFiles = getJetFiles("jet", Predicates.alwaysTrue()); + TopDownAnalyzer.processStandardLibraryNamespace(myProject, context, scope, jetNamespace, jetBuiltInsFiles); + builtInsSources = Sets.newHashSet(jetBuiltInsFiles); bindingContext = context.getBindingContext(); } @@ -170,9 +176,9 @@ public class BuiltInsReferenceResolver extends AbstractProjectComponent { } @NotNull - public Collection resolveStandardLibrarySymbol(@NotNull BindingContext originalContext, - @Nullable JetReferenceExpression referenceExpression) { + public Collection resolveStandardLibrarySymbol(@NotNull BindingContext originalContext, @Nullable JetReferenceExpression referenceExpression) { if (bindingContext == null) { + assert DumbService.getInstance(myProject).isDumb() : "Builtins component wasn't initialized properly"; return Collections.emptyList(); } @@ -184,6 +190,7 @@ public class BuiltInsReferenceResolver extends AbstractProjectComponent { @NotNull public Collection resolveStandardLibrarySymbol(@NotNull DeclarationDescriptor declarationDescriptor) { if (bindingContext == null) { + assert DumbService.getInstance(myProject).isDumb() : "Builtins component wasn't initialized properly"; return Collections.emptyList(); } @@ -197,6 +204,11 @@ public class BuiltInsReferenceResolver extends AbstractProjectComponent { return Collections.emptyList(); } + public static boolean isFromBuiltIns(@NotNull PsiElement element) { + assert ApplicationManager.getApplication().isUnitTestMode() : "In non tested mode element.isWritable() should be sufficient"; + return element.getProject().getComponent(BuiltInsReferenceResolver.class).builtInsSources.contains(element.getContainingFile()); + } + @Nullable private static JetScope getMemberScope(@Nullable DeclarationDescriptor parent) { if (parent instanceof ClassDescriptor) { diff --git a/idea/tests/org/jetbrains/jet/plugin/importOptimizer/OptimizeImportsTest.java b/idea/tests/org/jetbrains/jet/plugin/importOptimizer/OptimizeImportsTest.java index f3622dc07ed..7824311e972 100644 --- a/idea/tests/org/jetbrains/jet/plugin/importOptimizer/OptimizeImportsTest.java +++ b/idea/tests/org/jetbrains/jet/plugin/importOptimizer/OptimizeImportsTest.java @@ -16,10 +16,12 @@ package org.jetbrains.jet.plugin.importOptimizer; +import com.intellij.ide.startup.impl.StartupManagerImpl; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.command.UndoConfirmationPolicy; import com.intellij.openapi.projectRoots.JavaSdk; import com.intellij.openapi.projectRoots.Sdk; +import com.intellij.openapi.startup.StartupManager; import com.intellij.testFramework.LightCodeInsightTestCase; import org.apache.commons.lang.SystemUtils; import org.jetbrains.jet.plugin.PluginTestCaseBase; @@ -29,6 +31,12 @@ import org.jetbrains.jet.testing.ConfigLibraryUtil; import java.io.File; public class OptimizeImportsTest extends LightCodeInsightTestCase { + @Override + protected void setUp() throws Exception { + super.setUp(); + ((StartupManagerImpl) StartupManager.getInstance(getProject())).runPostStartupActivities(); + } + public void testAlreadyOptimized() throws Exception { doTest(); } diff --git a/idea/tests/org/jetbrains/jet/plugin/quickfix/AbstractQuickFixTest.java b/idea/tests/org/jetbrains/jet/plugin/quickfix/AbstractQuickFixTest.java index e97b103e840..9d2171039b5 100644 --- a/idea/tests/org/jetbrains/jet/plugin/quickfix/AbstractQuickFixTest.java +++ b/idea/tests/org/jetbrains/jet/plugin/quickfix/AbstractQuickFixTest.java @@ -18,8 +18,10 @@ package org.jetbrains.jet.plugin.quickfix; import com.intellij.codeInsight.daemon.quickFix.LightQuickFixTestCase; import com.intellij.codeInsight.intention.IntentionAction; +import com.intellij.ide.startup.impl.StartupManagerImpl; import com.intellij.openapi.projectRoots.JavaSdk; import com.intellij.openapi.projectRoots.Sdk; +import com.intellij.openapi.startup.StartupManager; import com.intellij.openapi.util.Pair; import org.apache.commons.lang.SystemUtils; import org.jetbrains.annotations.NotNull; @@ -31,6 +33,12 @@ import org.jetbrains.jet.testing.ConfigLibraryUtil; import java.util.List; public abstract class AbstractQuickFixTest extends LightQuickFixTestCase { + @Override + protected void setUp() throws Exception { + super.setUp(); + ((StartupManagerImpl) StartupManager.getInstance(getProject())).runPostStartupActivities(); + } + protected void doTest(@NotNull String beforeFileName) throws Exception { boolean isWithRuntime = beforeFileName.endsWith("Runtime.kt");