diff --git a/.bunch b/.bunch index fc975797515..5fccd2fd6ab 100644 --- a/.bunch +++ b/.bunch @@ -1,8 +1,7 @@ -193 201 -202_201 -203_202_201 -192 -as36_192 -as40 -as41_201 \ No newline at end of file +202 +193 +192_193 +as36_192_193 +as40_193 +as41 \ No newline at end of file diff --git a/build-common/src/com/intellij/util/io/JpsPersistentHashMap.java b/build-common/src/com/intellij/util/io/JpsPersistentHashMap.java.193 similarity index 100% rename from build-common/src/com/intellij/util/io/JpsPersistentHashMap.java rename to build-common/src/com/intellij/util/io/JpsPersistentHashMap.java.193 diff --git a/build-common/src/org/jetbrains/kotlin/incremental/storage/NonCachingLazyStorage.kt b/build-common/src/org/jetbrains/kotlin/incremental/storage/NonCachingLazyStorage.kt index 7cfcb00a89f..614426e0b1e 100644 --- a/build-common/src/org/jetbrains/kotlin/incremental/storage/NonCachingLazyStorage.kt +++ b/build-common/src/org/jetbrains/kotlin/incremental/storage/NonCachingLazyStorage.kt @@ -18,7 +18,7 @@ package org.jetbrains.kotlin.incremental.storage import com.intellij.util.io.DataExternalizer import com.intellij.util.io.KeyDescriptor -import com.intellij.util.io.JpsPersistentHashMap +import com.intellij.util.io.PersistentHashMap import java.io.File @@ -28,10 +28,10 @@ class NonCachingLazyStorage( private val valueExternalizer: DataExternalizer ) : LazyStorage { @Volatile - private var storage: JpsPersistentHashMap? = null + private var storage: PersistentHashMap? = null @Synchronized - private fun getStorageIfExists(): JpsPersistentHashMap? { + private fun getStorageIfExists(): PersistentHashMap? { if (storage != null) return storage if (storageFile.exists()) { @@ -43,7 +43,7 @@ class NonCachingLazyStorage( } @Synchronized - private fun getStorageOrCreateNew(): JpsPersistentHashMap { + private fun getStorageOrCreateNew(): PersistentHashMap { if (storage == null) { storage = createMap() } @@ -69,7 +69,7 @@ class NonCachingLazyStorage( } override fun append(key: K, value: V) { - getStorageOrCreateNew().appendDataWithoutCache(key, value) + getStorageOrCreateNew().appendData(key) { dataOutput -> valueExternalizer.save(dataOutput, value) } } @Synchronized @@ -79,7 +79,7 @@ class NonCachingLazyStorage( } catch (ignored: Throwable) { } - JpsPersistentHashMap.deleteFilesStartingWith(storageFile) + PersistentHashMap.deleteFilesStartingWith(storageFile) storage = null } @@ -101,6 +101,6 @@ class NonCachingLazyStorage( storage?.close() } - private fun createMap(): JpsPersistentHashMap = - JpsPersistentHashMap(storageFile, keyDescriptor, valueExternalizer) + private fun createMap(): PersistentHashMap = + PersistentHashMap(storageFile, keyDescriptor, valueExternalizer) } diff --git a/build-common/src/org/jetbrains/kotlin/incremental/storage/NonCachingLazyStorage.kt.201 b/build-common/src/org/jetbrains/kotlin/incremental/storage/NonCachingLazyStorage.kt.193 similarity index 81% rename from build-common/src/org/jetbrains/kotlin/incremental/storage/NonCachingLazyStorage.kt.201 rename to build-common/src/org/jetbrains/kotlin/incremental/storage/NonCachingLazyStorage.kt.193 index 614426e0b1e..7cfcb00a89f 100644 --- a/build-common/src/org/jetbrains/kotlin/incremental/storage/NonCachingLazyStorage.kt.201 +++ b/build-common/src/org/jetbrains/kotlin/incremental/storage/NonCachingLazyStorage.kt.193 @@ -18,7 +18,7 @@ package org.jetbrains.kotlin.incremental.storage import com.intellij.util.io.DataExternalizer import com.intellij.util.io.KeyDescriptor -import com.intellij.util.io.PersistentHashMap +import com.intellij.util.io.JpsPersistentHashMap import java.io.File @@ -28,10 +28,10 @@ class NonCachingLazyStorage( private val valueExternalizer: DataExternalizer ) : LazyStorage { @Volatile - private var storage: PersistentHashMap? = null + private var storage: JpsPersistentHashMap? = null @Synchronized - private fun getStorageIfExists(): PersistentHashMap? { + private fun getStorageIfExists(): JpsPersistentHashMap? { if (storage != null) return storage if (storageFile.exists()) { @@ -43,7 +43,7 @@ class NonCachingLazyStorage( } @Synchronized - private fun getStorageOrCreateNew(): PersistentHashMap { + private fun getStorageOrCreateNew(): JpsPersistentHashMap { if (storage == null) { storage = createMap() } @@ -69,7 +69,7 @@ class NonCachingLazyStorage( } override fun append(key: K, value: V) { - getStorageOrCreateNew().appendData(key) { dataOutput -> valueExternalizer.save(dataOutput, value) } + getStorageOrCreateNew().appendDataWithoutCache(key, value) } @Synchronized @@ -79,7 +79,7 @@ class NonCachingLazyStorage( } catch (ignored: Throwable) { } - PersistentHashMap.deleteFilesStartingWith(storageFile) + JpsPersistentHashMap.deleteFilesStartingWith(storageFile) storage = null } @@ -101,6 +101,6 @@ class NonCachingLazyStorage( storage?.close() } - private fun createMap(): PersistentHashMap = - PersistentHashMap(storageFile, keyDescriptor, valueExternalizer) + private fun createMap(): JpsPersistentHashMap = + JpsPersistentHashMap(storageFile, keyDescriptor, valueExternalizer) } diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreApplicationEnvironment.java b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreApplicationEnvironment.java index f5a5525c63e..26562e4a6be 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreApplicationEnvironment.java +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreApplicationEnvironment.java @@ -4,147 +4,52 @@ */ package org.jetbrains.kotlin.cli.jvm.compiler; +import com.intellij.DynamicBundle; import com.intellij.codeInsight.ContainerProvider; -import com.intellij.codeInsight.JavaContainerProvider; -import com.intellij.codeInsight.folding.JavaCodeFoldingSettings; -import com.intellij.codeInsight.folding.impl.JavaCodeFoldingSettingsBase; -import com.intellij.codeInsight.folding.impl.JavaFoldingBuilderBase; import com.intellij.codeInsight.runner.JavaMainMethodProvider; -import com.intellij.core.CoreApplicationEnvironment; -import com.intellij.core.CoreJavaDirectoryService; -import com.intellij.core.CorePsiPackageImplementationHelper; -import com.intellij.ide.highlighter.ArchiveFileType; -import com.intellij.ide.highlighter.JavaClassFileType; -import com.intellij.ide.highlighter.JavaFileType; -import com.intellij.lang.LanguageASTFactory; +import com.intellij.core.JavaCoreApplicationEnvironment; import com.intellij.lang.MetaLanguage; -import com.intellij.lang.folding.LanguageFolding; -import com.intellij.lang.java.JavaLanguage; -import com.intellij.lang.java.JavaParserDefinition; -import com.intellij.navigation.ItemPresentationProviders; import com.intellij.openapi.Disposable; import com.intellij.openapi.extensions.Extensions; -import com.intellij.openapi.extensions.ExtensionsArea; -import com.intellij.openapi.fileTypes.FileTypeExtensionPoint; -import com.intellij.openapi.fileTypes.PlainTextFileType; -import com.intellij.openapi.fileTypes.PlainTextLanguage; -import com.intellij.openapi.fileTypes.PlainTextParserDefinition; -import com.intellij.openapi.projectRoots.JavaVersionService; import com.intellij.openapi.vfs.VirtualFileSystem; -import com.intellij.psi.*; +import com.intellij.psi.FileContextProvider; import com.intellij.psi.augment.PsiAugmentProvider; -import com.intellij.psi.augment.TypeAnnotationModifier; import com.intellij.psi.compiled.ClassFileDecompilers; -import com.intellij.psi.impl.LanguageConstantExpressionEvaluator; -import com.intellij.psi.impl.PsiExpressionEvaluator; -import com.intellij.psi.impl.PsiSubstitutorFactoryImpl; -import com.intellij.psi.impl.compiled.ClassFileStubBuilder; -import com.intellij.psi.impl.file.PsiPackageImplementationHelper; -import com.intellij.psi.impl.search.MethodSuperSearcher; -import com.intellij.psi.impl.source.tree.JavaASTFactory; -import com.intellij.psi.impl.source.tree.PlainTextASTFactory; import com.intellij.psi.meta.MetaDataContributor; -import com.intellij.psi.presentation.java.*; -import com.intellij.psi.search.searches.SuperMethodsSearch; -import com.intellij.psi.stubs.BinaryFileStubBuilders; -import com.intellij.util.QueryExecutor; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.cli.jvm.modules.CoreJrtFileSystem; -/** - * adapted from com.intellij.core.JavaCoreApplicationEnvironment - * TODO: initiate removal original from com.intellij.core since it seems that there are no usages left - */ -public class KotlinCoreApplicationEnvironment extends CoreApplicationEnvironment { +public class KotlinCoreApplicationEnvironment extends JavaCoreApplicationEnvironment { + public static KotlinCoreApplicationEnvironment create(@NotNull Disposable parentDisposable, boolean unitTestMode) { + KotlinCoreApplicationEnvironment environment = new KotlinCoreApplicationEnvironment(parentDisposable, unitTestMode); + registerExtensionPoints(); + return environment; + } - public static KotlinCoreApplicationEnvironment create(@NotNull Disposable parentDisposable, boolean unitTestMode) { - return new KotlinCoreApplicationEnvironment(parentDisposable, unitTestMode); - } + private KotlinCoreApplicationEnvironment(@NotNull Disposable parentDisposable, boolean unitTestMode) { + super(parentDisposable, unitTestMode); + } - private KotlinCoreApplicationEnvironment(@NotNull Disposable parentDisposable, boolean unitTestMode) { - super(parentDisposable, unitTestMode); + private static void registerExtensionPoints() { + registerApplicationExtensionPoint(DynamicBundle.LanguageBundleEP.EP_NAME, DynamicBundle.LanguageBundleEP.class); + registerApplicationExtensionPoint(FileContextProvider.EP_NAME, FileContextProvider.class); - registerExtensionPoints(); + registerApplicationExtensionPoint(MetaDataContributor.EP_NAME, MetaDataContributor.class); + registerApplicationExtensionPoint(PsiAugmentProvider.EP_NAME, PsiAugmentProvider.class); + registerApplicationExtensionPoint(JavaMainMethodProvider.EP_NAME, JavaMainMethodProvider.class); - registerExtensions(); - } + registerApplicationExtensionPoint(ContainerProvider.EP_NAME, ContainerProvider.class); + registerApplicationExtensionPoint(ClassFileDecompilers.EP_NAME, ClassFileDecompilers.Decompiler.class); - private void registerExtensionPoints() { - ExtensionsArea area = Extensions.getRootArea(); + registerApplicationExtensionPoint(MetaLanguage.EP_NAME, MetaLanguage.class); - CoreApplicationEnvironment.registerExtensionPoint(area, BinaryFileStubBuilders.EP_NAME, FileTypeExtensionPoint.class); - CoreApplicationEnvironment.registerExtensionPoint(area, FileContextProvider.EP_NAME, FileContextProvider.class); + IdeaExtensionPoints.INSTANCE.registerVersionSpecificAppExtensionPoints(Extensions.getRootArea()); + } - CoreApplicationEnvironment.registerExtensionPoint(area, MetaDataContributor.EP_NAME, MetaDataContributor.class); - CoreApplicationEnvironment.registerExtensionPoint(area, PsiAugmentProvider.EP_NAME, PsiAugmentProvider.class); - CoreApplicationEnvironment.registerExtensionPoint(area, JavaMainMethodProvider.EP_NAME, JavaMainMethodProvider.class); - - CoreApplicationEnvironment.registerExtensionPoint(area, ContainerProvider.EP_NAME, ContainerProvider.class); - CoreApplicationEnvironment.registerExtensionPoint(area, ClassFileDecompilers.EP_NAME, ClassFileDecompilers.Decompiler.class); - - CoreApplicationEnvironment.registerExtensionPoint(area, TypeAnnotationModifier.EP_NAME, TypeAnnotationModifier.class); - CoreApplicationEnvironment.registerExtensionPoint(area, MetaLanguage.EP_NAME, MetaLanguage.class); - - IdeaExtensionPoints.INSTANCE.registerVersionSpecificAppExtensionPoints(area); - } - - private void registerExtensions() { - registerFileType(JavaClassFileType.INSTANCE, "class"); - registerFileType(JavaFileType.INSTANCE, "java"); - registerFileType(ArchiveFileType.INSTANCE, "jar;zip"); - registerFileType(PlainTextFileType.INSTANCE, "txt;sh;bat;cmd;policy;log;cgi;MF;jad;jam;htaccess"); - - addExplicitExtension(LanguageASTFactory.INSTANCE, PlainTextLanguage.INSTANCE, new PlainTextASTFactory()); - registerParserDefinition(new PlainTextParserDefinition()); - - addExplicitExtension(FileTypeFileViewProviders.INSTANCE, JavaClassFileType.INSTANCE, new ClassFileViewProviderFactory()); - addExplicitExtension(BinaryFileStubBuilders.INSTANCE, JavaClassFileType.INSTANCE, new ClassFileStubBuilder()); - - addExplicitExtension(LanguageASTFactory.INSTANCE, JavaLanguage.INSTANCE, new JavaASTFactory()); - registerParserDefinition(new JavaParserDefinition()); - addExplicitExtension(LanguageConstantExpressionEvaluator.INSTANCE, JavaLanguage.INSTANCE, new PsiExpressionEvaluator()); - - addExtension(ContainerProvider.EP_NAME, new JavaContainerProvider()); - - myApplication.registerService(PsiPackageImplementationHelper.class, new CorePsiPackageImplementationHelper()); - myApplication.registerService(PsiSubstitutorFactory.class, new PsiSubstitutorFactoryImpl()); - - myApplication.registerService(JavaDirectoryService.class, createJavaDirectoryService()); - myApplication.registerService(JavaVersionService.class, new JavaVersionService()); - - addExplicitExtension(ItemPresentationProviders.INSTANCE, PsiPackage.class, new PackagePresentationProvider()); - addExplicitExtension(ItemPresentationProviders.INSTANCE, PsiClass.class, new ClassPresentationProvider()); - addExplicitExtension(ItemPresentationProviders.INSTANCE, PsiMethod.class, new MethodPresentationProvider()); - addExplicitExtension(ItemPresentationProviders.INSTANCE, PsiField.class, new FieldPresentationProvider()); - addExplicitExtension(ItemPresentationProviders.INSTANCE, PsiLocalVariable.class, new VariablePresentationProvider()); - addExplicitExtension(ItemPresentationProviders.INSTANCE, PsiParameter.class, new VariablePresentationProvider()); - - registerApplicationService(JavaCodeFoldingSettings.class, new JavaCodeFoldingSettingsBase()); - addExplicitExtension(LanguageFolding.INSTANCE, JavaLanguage.INSTANCE, new JavaFoldingBuilderBase() { - @Override - protected boolean shouldShowExplicitLambdaType(@NotNull PsiAnonymousClass anonymousClass, @NotNull PsiNewExpression expression) { - return false; - } - - @Override - protected boolean isBelowRightMargin(@NotNull PsiFile file, int lineLength) { - return false; - } - }); - - registerApplicationExtensionPoint(SuperMethodsSearch.EP_NAME, QueryExecutor.class); - addExtension(SuperMethodsSearch.EP_NAME, new MethodSuperSearcher()); - } - - // overridden in upsource - protected CoreJavaDirectoryService createJavaDirectoryService() { - return new CoreJavaDirectoryService(); - } - - @Nullable - @Override - protected VirtualFileSystem createJrtFileSystem() { - return new CoreJrtFileSystem(); - } + @Nullable + @Override + protected VirtualFileSystem createJrtFileSystem() { + return new CoreJrtFileSystem(); + } } \ No newline at end of file diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreApplicationEnvironment.java.193 b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreApplicationEnvironment.java.193 new file mode 100644 index 00000000000..f5a5525c63e --- /dev/null +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreApplicationEnvironment.java.193 @@ -0,0 +1,150 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ +package org.jetbrains.kotlin.cli.jvm.compiler; + +import com.intellij.codeInsight.ContainerProvider; +import com.intellij.codeInsight.JavaContainerProvider; +import com.intellij.codeInsight.folding.JavaCodeFoldingSettings; +import com.intellij.codeInsight.folding.impl.JavaCodeFoldingSettingsBase; +import com.intellij.codeInsight.folding.impl.JavaFoldingBuilderBase; +import com.intellij.codeInsight.runner.JavaMainMethodProvider; +import com.intellij.core.CoreApplicationEnvironment; +import com.intellij.core.CoreJavaDirectoryService; +import com.intellij.core.CorePsiPackageImplementationHelper; +import com.intellij.ide.highlighter.ArchiveFileType; +import com.intellij.ide.highlighter.JavaClassFileType; +import com.intellij.ide.highlighter.JavaFileType; +import com.intellij.lang.LanguageASTFactory; +import com.intellij.lang.MetaLanguage; +import com.intellij.lang.folding.LanguageFolding; +import com.intellij.lang.java.JavaLanguage; +import com.intellij.lang.java.JavaParserDefinition; +import com.intellij.navigation.ItemPresentationProviders; +import com.intellij.openapi.Disposable; +import com.intellij.openapi.extensions.Extensions; +import com.intellij.openapi.extensions.ExtensionsArea; +import com.intellij.openapi.fileTypes.FileTypeExtensionPoint; +import com.intellij.openapi.fileTypes.PlainTextFileType; +import com.intellij.openapi.fileTypes.PlainTextLanguage; +import com.intellij.openapi.fileTypes.PlainTextParserDefinition; +import com.intellij.openapi.projectRoots.JavaVersionService; +import com.intellij.openapi.vfs.VirtualFileSystem; +import com.intellij.psi.*; +import com.intellij.psi.augment.PsiAugmentProvider; +import com.intellij.psi.augment.TypeAnnotationModifier; +import com.intellij.psi.compiled.ClassFileDecompilers; +import com.intellij.psi.impl.LanguageConstantExpressionEvaluator; +import com.intellij.psi.impl.PsiExpressionEvaluator; +import com.intellij.psi.impl.PsiSubstitutorFactoryImpl; +import com.intellij.psi.impl.compiled.ClassFileStubBuilder; +import com.intellij.psi.impl.file.PsiPackageImplementationHelper; +import com.intellij.psi.impl.search.MethodSuperSearcher; +import com.intellij.psi.impl.source.tree.JavaASTFactory; +import com.intellij.psi.impl.source.tree.PlainTextASTFactory; +import com.intellij.psi.meta.MetaDataContributor; +import com.intellij.psi.presentation.java.*; +import com.intellij.psi.search.searches.SuperMethodsSearch; +import com.intellij.psi.stubs.BinaryFileStubBuilders; +import com.intellij.util.QueryExecutor; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.jetbrains.kotlin.cli.jvm.modules.CoreJrtFileSystem; + +/** + * adapted from com.intellij.core.JavaCoreApplicationEnvironment + * TODO: initiate removal original from com.intellij.core since it seems that there are no usages left + */ +public class KotlinCoreApplicationEnvironment extends CoreApplicationEnvironment { + + public static KotlinCoreApplicationEnvironment create(@NotNull Disposable parentDisposable, boolean unitTestMode) { + return new KotlinCoreApplicationEnvironment(parentDisposable, unitTestMode); + } + + private KotlinCoreApplicationEnvironment(@NotNull Disposable parentDisposable, boolean unitTestMode) { + super(parentDisposable, unitTestMode); + + registerExtensionPoints(); + + registerExtensions(); + } + + private void registerExtensionPoints() { + ExtensionsArea area = Extensions.getRootArea(); + + CoreApplicationEnvironment.registerExtensionPoint(area, BinaryFileStubBuilders.EP_NAME, FileTypeExtensionPoint.class); + CoreApplicationEnvironment.registerExtensionPoint(area, FileContextProvider.EP_NAME, FileContextProvider.class); + + CoreApplicationEnvironment.registerExtensionPoint(area, MetaDataContributor.EP_NAME, MetaDataContributor.class); + CoreApplicationEnvironment.registerExtensionPoint(area, PsiAugmentProvider.EP_NAME, PsiAugmentProvider.class); + CoreApplicationEnvironment.registerExtensionPoint(area, JavaMainMethodProvider.EP_NAME, JavaMainMethodProvider.class); + + CoreApplicationEnvironment.registerExtensionPoint(area, ContainerProvider.EP_NAME, ContainerProvider.class); + CoreApplicationEnvironment.registerExtensionPoint(area, ClassFileDecompilers.EP_NAME, ClassFileDecompilers.Decompiler.class); + + CoreApplicationEnvironment.registerExtensionPoint(area, TypeAnnotationModifier.EP_NAME, TypeAnnotationModifier.class); + CoreApplicationEnvironment.registerExtensionPoint(area, MetaLanguage.EP_NAME, MetaLanguage.class); + + IdeaExtensionPoints.INSTANCE.registerVersionSpecificAppExtensionPoints(area); + } + + private void registerExtensions() { + registerFileType(JavaClassFileType.INSTANCE, "class"); + registerFileType(JavaFileType.INSTANCE, "java"); + registerFileType(ArchiveFileType.INSTANCE, "jar;zip"); + registerFileType(PlainTextFileType.INSTANCE, "txt;sh;bat;cmd;policy;log;cgi;MF;jad;jam;htaccess"); + + addExplicitExtension(LanguageASTFactory.INSTANCE, PlainTextLanguage.INSTANCE, new PlainTextASTFactory()); + registerParserDefinition(new PlainTextParserDefinition()); + + addExplicitExtension(FileTypeFileViewProviders.INSTANCE, JavaClassFileType.INSTANCE, new ClassFileViewProviderFactory()); + addExplicitExtension(BinaryFileStubBuilders.INSTANCE, JavaClassFileType.INSTANCE, new ClassFileStubBuilder()); + + addExplicitExtension(LanguageASTFactory.INSTANCE, JavaLanguage.INSTANCE, new JavaASTFactory()); + registerParserDefinition(new JavaParserDefinition()); + addExplicitExtension(LanguageConstantExpressionEvaluator.INSTANCE, JavaLanguage.INSTANCE, new PsiExpressionEvaluator()); + + addExtension(ContainerProvider.EP_NAME, new JavaContainerProvider()); + + myApplication.registerService(PsiPackageImplementationHelper.class, new CorePsiPackageImplementationHelper()); + myApplication.registerService(PsiSubstitutorFactory.class, new PsiSubstitutorFactoryImpl()); + + myApplication.registerService(JavaDirectoryService.class, createJavaDirectoryService()); + myApplication.registerService(JavaVersionService.class, new JavaVersionService()); + + addExplicitExtension(ItemPresentationProviders.INSTANCE, PsiPackage.class, new PackagePresentationProvider()); + addExplicitExtension(ItemPresentationProviders.INSTANCE, PsiClass.class, new ClassPresentationProvider()); + addExplicitExtension(ItemPresentationProviders.INSTANCE, PsiMethod.class, new MethodPresentationProvider()); + addExplicitExtension(ItemPresentationProviders.INSTANCE, PsiField.class, new FieldPresentationProvider()); + addExplicitExtension(ItemPresentationProviders.INSTANCE, PsiLocalVariable.class, new VariablePresentationProvider()); + addExplicitExtension(ItemPresentationProviders.INSTANCE, PsiParameter.class, new VariablePresentationProvider()); + + registerApplicationService(JavaCodeFoldingSettings.class, new JavaCodeFoldingSettingsBase()); + addExplicitExtension(LanguageFolding.INSTANCE, JavaLanguage.INSTANCE, new JavaFoldingBuilderBase() { + @Override + protected boolean shouldShowExplicitLambdaType(@NotNull PsiAnonymousClass anonymousClass, @NotNull PsiNewExpression expression) { + return false; + } + + @Override + protected boolean isBelowRightMargin(@NotNull PsiFile file, int lineLength) { + return false; + } + }); + + registerApplicationExtensionPoint(SuperMethodsSearch.EP_NAME, QueryExecutor.class); + addExtension(SuperMethodsSearch.EP_NAME, new MethodSuperSearcher()); + } + + // overridden in upsource + protected CoreJavaDirectoryService createJavaDirectoryService() { + return new CoreJavaDirectoryService(); + } + + @Nullable + @Override + protected VirtualFileSystem createJrtFileSystem() { + return new CoreJrtFileSystem(); + } +} \ No newline at end of file diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreApplicationEnvironment.java.201 b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreApplicationEnvironment.java.201 deleted file mode 100644 index 26562e4a6be..00000000000 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreApplicationEnvironment.java.201 +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ -package org.jetbrains.kotlin.cli.jvm.compiler; - -import com.intellij.DynamicBundle; -import com.intellij.codeInsight.ContainerProvider; -import com.intellij.codeInsight.runner.JavaMainMethodProvider; -import com.intellij.core.JavaCoreApplicationEnvironment; -import com.intellij.lang.MetaLanguage; -import com.intellij.openapi.Disposable; -import com.intellij.openapi.extensions.Extensions; -import com.intellij.openapi.vfs.VirtualFileSystem; -import com.intellij.psi.FileContextProvider; -import com.intellij.psi.augment.PsiAugmentProvider; -import com.intellij.psi.compiled.ClassFileDecompilers; -import com.intellij.psi.meta.MetaDataContributor; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import org.jetbrains.kotlin.cli.jvm.modules.CoreJrtFileSystem; - -public class KotlinCoreApplicationEnvironment extends JavaCoreApplicationEnvironment { - public static KotlinCoreApplicationEnvironment create(@NotNull Disposable parentDisposable, boolean unitTestMode) { - KotlinCoreApplicationEnvironment environment = new KotlinCoreApplicationEnvironment(parentDisposable, unitTestMode); - registerExtensionPoints(); - return environment; - } - - private KotlinCoreApplicationEnvironment(@NotNull Disposable parentDisposable, boolean unitTestMode) { - super(parentDisposable, unitTestMode); - } - - private static void registerExtensionPoints() { - registerApplicationExtensionPoint(DynamicBundle.LanguageBundleEP.EP_NAME, DynamicBundle.LanguageBundleEP.class); - registerApplicationExtensionPoint(FileContextProvider.EP_NAME, FileContextProvider.class); - - registerApplicationExtensionPoint(MetaDataContributor.EP_NAME, MetaDataContributor.class); - registerApplicationExtensionPoint(PsiAugmentProvider.EP_NAME, PsiAugmentProvider.class); - registerApplicationExtensionPoint(JavaMainMethodProvider.EP_NAME, JavaMainMethodProvider.class); - - registerApplicationExtensionPoint(ContainerProvider.EP_NAME, ContainerProvider.class); - registerApplicationExtensionPoint(ClassFileDecompilers.EP_NAME, ClassFileDecompilers.Decompiler.class); - - registerApplicationExtensionPoint(MetaLanguage.EP_NAME, MetaLanguage.class); - - IdeaExtensionPoints.INSTANCE.registerVersionSpecificAppExtensionPoints(Extensions.getRootArea()); - } - - @Nullable - @Override - protected VirtualFileSystem createJrtFileSystem() { - return new CoreJrtFileSystem(); - } -} \ No newline at end of file diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/MockExternalAnnotationsManager.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/MockExternalAnnotationsManager.kt index 746e54decd7..c352086207c 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/MockExternalAnnotationsManager.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/MockExternalAnnotationsManager.kt @@ -22,6 +22,7 @@ import com.intellij.psi.* class MockExternalAnnotationsManager : ExternalAnnotationsManager() { override fun chooseAnnotationsPlace(element: PsiElement): AnnotationPlace = AnnotationPlace.NOWHERE + override fun chooseAnnotationsPlaceNoUi(element: PsiElement): AnnotationPlace = AnnotationPlace.NOWHERE override fun isExternalAnnotationWritable(listOwner: PsiModifierListOwner, annotationFQN: String): Boolean = false override fun isExternalAnnotation(annotation: PsiAnnotation): Boolean = false diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/MockExternalAnnotationsManager.kt.201 b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/MockExternalAnnotationsManager.kt.193 similarity index 96% rename from compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/MockExternalAnnotationsManager.kt.201 rename to compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/MockExternalAnnotationsManager.kt.193 index c352086207c..746e54decd7 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/MockExternalAnnotationsManager.kt.201 +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/MockExternalAnnotationsManager.kt.193 @@ -22,7 +22,6 @@ import com.intellij.psi.* class MockExternalAnnotationsManager : ExternalAnnotationsManager() { override fun chooseAnnotationsPlace(element: PsiElement): AnnotationPlace = AnnotationPlace.NOWHERE - override fun chooseAnnotationsPlaceNoUi(element: PsiElement): AnnotationPlace = AnnotationPlace.NOWHERE override fun isExternalAnnotationWritable(listOwner: PsiModifierListOwner, annotationFQN: String): Boolean = false override fun isExternalAnnotation(annotation: PsiAnnotation): Boolean = false diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/compat.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/compat.kt index e7316778db5..1a12369aa17 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/compat.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/compat.kt @@ -6,4 +6,10 @@ package org.jetbrains.kotlin.cli.jvm.compiler fun setupIdeaStandaloneExecution() { + System.getProperties().setProperty("idea.plugins.compatible.build", "201.6668.13") + System.getProperties().setProperty("project.structure.add.tools.jar.to.new.jdk", "false") + System.getProperties().setProperty("psi.track.invalidation", "true") + System.getProperties().setProperty("psi.incremental.reparse.depth.limit", "1000") + System.getProperties().setProperty("ide.hide.excluded.files", "false") + System.getProperties().setProperty("ast.loading.filter", "false") } \ No newline at end of file diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/compat.kt.193 b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/compat.kt.193 new file mode 100644 index 00000000000..e7316778db5 --- /dev/null +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/compat.kt.193 @@ -0,0 +1,9 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.cli.jvm.compiler + +fun setupIdeaStandaloneExecution() { +} \ No newline at end of file diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/compat.kt.201 b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/compat.kt.201 deleted file mode 100644 index 1a12369aa17..00000000000 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/compat.kt.201 +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.cli.jvm.compiler - -fun setupIdeaStandaloneExecution() { - System.getProperties().setProperty("idea.plugins.compatible.build", "201.6668.13") - System.getProperties().setProperty("project.structure.add.tools.jar.to.new.jdk", "false") - System.getProperties().setProperty("psi.track.invalidation", "true") - System.getProperties().setProperty("psi.incremental.reparse.depth.limit", "1000") - System.getProperties().setProperty("ide.hide.excluded.files", "false") - System.getProperties().setProperty("ast.loading.filter", "false") -} \ No newline at end of file diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/coreApplicationEnvironmentCompat.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/coreApplicationEnvironmentCompat.kt index 8327a2b97a9..92159dbf2a1 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/coreApplicationEnvironmentCompat.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/coreApplicationEnvironmentCompat.kt @@ -8,9 +8,11 @@ package org.jetbrains.kotlin.cli.jvm.compiler import com.intellij.core.CoreApplicationEnvironment import com.intellij.openapi.extensions.ExtensionsArea import java.io.File +import java.nio.file.FileSystems // FIX ME WHEN BUNCH 193 REMOVED fun registerExtensionPointAndExtensionsEx(pluginFile: File, fileName: String, area: ExtensionsArea) { + val pluginRoot = FileSystems.getDefault().getPath(pluginFile.path) @Suppress("MissingRecentApi") - CoreApplicationEnvironment.registerExtensionPointAndExtensions(pluginFile, fileName, area) + CoreApplicationEnvironment.registerExtensionPointAndExtensions(pluginRoot, fileName, area) } \ No newline at end of file diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/coreApplicationEnvironmentCompat.kt.201 b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/coreApplicationEnvironmentCompat.kt.193 similarity index 82% rename from compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/coreApplicationEnvironmentCompat.kt.201 rename to compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/coreApplicationEnvironmentCompat.kt.193 index 92159dbf2a1..8327a2b97a9 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/coreApplicationEnvironmentCompat.kt.201 +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/coreApplicationEnvironmentCompat.kt.193 @@ -8,11 +8,9 @@ package org.jetbrains.kotlin.cli.jvm.compiler import com.intellij.core.CoreApplicationEnvironment import com.intellij.openapi.extensions.ExtensionsArea import java.io.File -import java.nio.file.FileSystems // FIX ME WHEN BUNCH 193 REMOVED fun registerExtensionPointAndExtensionsEx(pluginFile: File, fileName: String, area: ExtensionsArea) { - val pluginRoot = FileSystems.getDefault().getPath(pluginFile.path) @Suppress("MissingRecentApi") - CoreApplicationEnvironment.registerExtensionPointAndExtensions(pluginRoot, fileName, area) + CoreApplicationEnvironment.registerExtensionPointAndExtensions(pluginFile, fileName, area) } \ No newline at end of file diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/test/testFramework/KtUsefulTestCase.java b/compiler/tests-common/tests/org/jetbrains/kotlin/test/testFramework/KtUsefulTestCase.java index c3bf76c4b25..44833c97938 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/test/testFramework/KtUsefulTestCase.java +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/test/testFramework/KtUsefulTestCase.java @@ -16,6 +16,8 @@ package org.jetbrains.kotlin.test.testFramework; +import com.intellij.codeInsight.CodeInsightSettings; +import com.intellij.concurrency.IdeaForkJoinWorkerThreadFactory; import com.intellij.diagnostic.PerformanceWatcher; import com.intellij.openapi.Disposable; import com.intellij.openapi.application.Application; @@ -23,20 +25,33 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.PathManager; import com.intellij.openapi.application.impl.ApplicationInfoImpl; import com.intellij.openapi.diagnostic.Logger; +import com.intellij.openapi.fileTypes.StdFileTypes; +import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.Disposer; +import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.util.JDOMUtil; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; -import com.intellij.openapi.vfs.*; +import com.intellij.openapi.vfs.LocalFileSystem; +import com.intellij.openapi.vfs.VfsUtilCore; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.vfs.VirtualFileVisitor; +import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.codeStyle.CodeStyleSettings; +import com.intellij.psi.impl.DocumentCommitProcessor; +import com.intellij.psi.impl.DocumentCommitThread; +import com.intellij.psi.impl.source.PostprocessReformattingAspect; import com.intellij.rt.execution.junit.FileComparisonFailure; import com.intellij.testFramework.*; import com.intellij.testFramework.exceptionCases.AbstractExceptionCase; -import com.intellij.util.Consumer; -import com.intellij.util.ReflectionUtil; +import com.intellij.testFramework.fixtures.IdeaTestExecutionPolicy; +import com.intellij.util.*; import com.intellij.util.containers.ContainerUtil; -import com.intellij.util.containers.hash.HashMap; +import com.intellij.util.containers.PeekableIterator; +import com.intellij.util.containers.PeekableIteratorWrapper; +import com.intellij.util.indexing.FileBasedIndex; +import com.intellij.util.indexing.FileBasedIndexImpl; import com.intellij.util.lang.CompoundRuntimeException; import com.intellij.util.ui.UIUtil; import gnu.trove.Equality; @@ -47,11 +62,11 @@ import org.jdom.Element; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.kotlin.test.IdeaSystemPropertiesForParallelRunConfigurator; import org.jetbrains.kotlin.testFramework.MockComponentManagerCreationTracer; import org.jetbrains.kotlin.types.AbstractTypeChecker; import org.jetbrains.kotlin.types.FlexibleTypeImpl; import org.junit.Assert; +import org.junit.ComparisonFailure; import java.io.File; import java.io.FileNotFoundException; @@ -61,14 +76,16 @@ import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; +import java.nio.charset.StandardCharsets; +import java.nio.file.Path; import java.util.*; -import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.TimeUnit; import java.util.function.Supplier; -@SuppressWarnings("UseOfSystemOutOrSystemErr") +@SuppressWarnings("ALL") public abstract class KtUsefulTestCase extends TestCase { public static final boolean IS_UNDER_TEAMCITY = System.getenv("TEAMCITY_VERSION") != null; - private static final String TEMP_DIR_MARKER = "unitTest_"; + public static final String TEMP_DIR_MARKER = "unitTest_"; public static final boolean OVERWRITE_TESTDATA = Boolean.getBoolean("idea.tests.overwrite.data"); private static final String ORIGINAL_TEMP_DIR = FileUtil.getTempDirectory(); @@ -79,24 +96,34 @@ public abstract class KtUsefulTestCase extends TestCase { private Application application; static { - IdeaSystemPropertiesForParallelRunConfigurator.setProperties(); - //TODO: investigate and enable - //IdeaForkJoinWorkerThreadFactory.setupPoisonFactory(); + IdeaForkJoinWorkerThreadFactory.setupPoisonFactory(); Logger.setFactory(TestLoggerFactory.class); } + protected static final Logger LOG = Logger.getInstance(KtUsefulTestCase.class); @NotNull - protected final Disposable myTestRootDisposable = new TestDisposable(); + private final Disposable myTestRootDisposable = new TestDisposable(); - private static final String ourPathToKeep = null; + static Path ourPathToKeep; private final List myPathsToKeep = new ArrayList<>(); - private File myTempDir; + private String myTempDir; + private static final String DEFAULT_SETTINGS_EXTERNALIZED; + private static final CodeInsightSettings defaultSettings = new CodeInsightSettings(); static { // Radar #5755208: Command line Java applications need a way to launch without a Dock icon. System.setProperty("apple.awt.UIElement", "true"); + try { + Element oldS = new Element("temp"); + defaultSettings.writeExternal(oldS); + DEFAULT_SETTINGS_EXTERNALIZED = JDOMUtil.writeElement(oldS); + } + catch (Exception e) { + throw new RuntimeException(e); + } + // -- KOTLIN ADDITIONAL START -- FlexibleTypeImpl.RUN_SLOW_ASSERTIONS = true; @@ -105,6 +132,42 @@ public abstract class KtUsefulTestCase extends TestCase { // -- KOTLIN ADDITIONAL END -- } + /** + * Pass here the exception you want to be thrown first + * E.g.
+     * {@code
+     *   void tearDown() {
+     *     try {
+     *       doTearDowns();
+     *     }
+     *     catch(Exception e) {
+     *       addSuppressedException(e);
+     *     }
+     *     finally {
+     *       super.tearDown();
+     *     }
+     *   }
+     * }
+     * 
+ * + */ + protected void addSuppressedException(@NotNull Throwable e) { + List list = mySuppressedExceptions; + if (list == null) { + mySuppressedExceptions = list = new SmartList<>(); + } + list.add(e); + } + private List mySuppressedExceptions; + + + public KtUsefulTestCase() { + } + + public KtUsefulTestCase(@NotNull String name) { + super(name); + } + protected boolean shouldContainTempFiles() { return true; } @@ -122,11 +185,17 @@ public abstract class KtUsefulTestCase extends TestCase { super.setUp(); if (shouldContainTempFiles()) { - String testName = FileUtil.sanitizeFileName(getTestName(true)); - if (StringUtil.isEmptyOrSpaces(testName)) testName = ""; + IdeaTestExecutionPolicy policy = IdeaTestExecutionPolicy.current(); + String testName = null; + if (policy != null) { + testName = policy.getPerTestTempDirName(); + } + if (testName == null) { + testName = FileUtil.sanitizeFileName(getTestName(true)); + } testName = new File(testName).getName(); // in case the test name contains file separators - myTempDir = FileUtil.createTempDirectory(TEMP_DIR_MARKER, testName, false); - FileUtil.resetCanonicalTempPathCache(myTempDir.getPath()); + myTempDir = FileUtil.createTempDirectory(TEMP_DIR_MARKER + testName, "", false).getPath(); + FileUtil.resetCanonicalTempPathCache(myTempDir); } boolean isStressTest = isStressTest(); @@ -137,6 +206,16 @@ public abstract class KtUsefulTestCase extends TestCase { // turn off Disposer debugging for performance tests Disposer.setDebugMode(!isStressTest); + + if (isIconRequired()) { + // ensure that IconLoader will use dummy empty icon + IconLoader.deactivate(); + //IconManager.activate(); + } + } + + protected boolean isIconRequired() { + return false; } @Override @@ -145,6 +224,11 @@ public abstract class KtUsefulTestCase extends TestCase { // don't use method references here to make stack trace reading easier //noinspection Convert2MethodRef new RunAll( + () -> { + if (isIconRequired()) { + //IconManager.deactivate(); + } + }, () -> disposeRootDisposable(), () -> cleanupSwingDataStructures(), () -> cleanupDeleteOnExitHookList(), @@ -153,7 +237,7 @@ public abstract class KtUsefulTestCase extends TestCase { if (shouldContainTempFiles()) { FileUtil.resetCanonicalTempPathCache(ORIGINAL_TEMP_DIR); if (hasTmpFilesToKeep()) { - File[] files = myTempDir.listFiles(); + File[] files = new File(myTempDir).listFiles(); if (files != null) { for (File file : files) { if (!shouldKeepTmpFile(file)) { @@ -163,15 +247,14 @@ public abstract class KtUsefulTestCase extends TestCase { } } else { - FileUtil.delete(myTempDir); + FileUtil.delete(new File(myTempDir)); } } }, - () -> UIUtil.removeLeakingAppleListeners() - ).run(); + () -> waitForAppLeakingThreads(10, TimeUnit.SECONDS) + ).run(ObjectUtils.notNull(mySuppressedExceptions, Collections.emptyList())); } finally { - super.tearDown(); // -- KOTLIN ADDITIONAL START -- TestApplicationUtilKt.resetApplicationToNull(application); application = null; @@ -188,12 +271,12 @@ public abstract class KtUsefulTestCase extends TestCase { } private boolean hasTmpFilesToKeep() { - return ourPathToKeep != null && FileUtil.isAncestor(myTempDir.getPath(), ourPathToKeep, false) || !myPathsToKeep.isEmpty(); + return ourPathToKeep != null && FileUtil.isAncestor(myTempDir, ourPathToKeep.toString(), false) || !myPathsToKeep.isEmpty(); } private boolean shouldKeepTmpFile(@NotNull File file) { String path = file.getPath(); - if (FileUtil.pathsEqual(path, ourPathToKeep)) return true; + if (FileUtil.pathsEqual(path, ourPathToKeep.toString())) return true; for (String pathToKeep : myPathsToKeep) { if (FileUtil.pathsEqual(path, pathToKeep)) return true; } @@ -201,7 +284,7 @@ public abstract class KtUsefulTestCase extends TestCase { } private static final Set DELETE_ON_EXIT_HOOK_DOT_FILES; - private static final Class DELETE_ON_EXIT_HOOK_CLASS; + private static final Class DELETE_ON_EXIT_HOOK_CLASS; static { Class aClass; try { @@ -237,12 +320,45 @@ public abstract class KtUsefulTestCase extends TestCase { @SuppressWarnings("ConstantConditions") private static void cleanupSwingDataStructures() throws Exception { Object manager = ReflectionUtil.getDeclaredMethod(Class.forName("javax.swing.KeyboardManager"), "getCurrentManager").invoke(null); - Map componentKeyStrokeMap = ReflectionUtil.getField(manager.getClass(), manager, Hashtable.class, "componentKeyStrokeMap"); + Map componentKeyStrokeMap = ReflectionUtil.getField(manager.getClass(), manager, Hashtable.class, "componentKeyStrokeMap"); componentKeyStrokeMap.clear(); - Map containerMap = ReflectionUtil.getField(manager.getClass(), manager, Hashtable.class, "containerMap"); + Map containerMap = ReflectionUtil.getField(manager.getClass(), manager, Hashtable.class, "containerMap"); containerMap.clear(); } + static void doCheckForSettingsDamage(@NotNull CodeStyleSettings oldCodeStyleSettings, @NotNull CodeStyleSettings currentCodeStyleSettings) { + final CodeInsightSettings settings = CodeInsightSettings.getInstance(); + // don't use method references here to make stack trace reading easier + //noinspection Convert2MethodRef + new RunAll() + .append(() -> { + try { + checkCodeInsightSettingsEqual(defaultSettings, settings); + } + catch (AssertionError error) { + CodeInsightSettings clean = new CodeInsightSettings(); + for (Field field : clean.getClass().getFields()) { + try { + ReflectionUtil.copyFieldValue(clean, settings, field); + } + catch (Exception ignored) { + } + } + throw error; + } + }) + .append(() -> { + currentCodeStyleSettings.getIndentOptions(StdFileTypes.JAVA); + try { + checkCodeStyleSettingsEqual(oldCodeStyleSettings, currentCodeStyleSettings); + } + finally { + currentCodeStyleSettings.clearCodeStyleSettings(); + } + }) + .run(); + } + @NotNull public Disposable getTestRootDisposable() { return myTestRootDisposable; @@ -252,13 +368,11 @@ public abstract class KtUsefulTestCase extends TestCase { protected void runTest() throws Throwable { final Throwable[] throwables = new Throwable[1]; - AtomicBoolean completed = new AtomicBoolean(false); Runnable runnable = () -> { try { - //TestLoggerFactory.onTestStarted(); + TestLoggerFactory.onTestStarted(); super.runTest(); TestLoggerFactory.onTestFinished(true); - completed.set(true); } catch (InvocationTargetException e) { TestLoggerFactory.onTestFinished(false); @@ -281,9 +395,6 @@ public abstract class KtUsefulTestCase extends TestCase { if (throwables[0] != null) { throw throwables[0]; } - if (!completed.get()) { - throw new IllegalStateException("test didn't start"); - } } protected boolean shouldRunTest() { @@ -291,19 +402,18 @@ public abstract class KtUsefulTestCase extends TestCase { } protected void invokeTestRunnable(@NotNull Runnable runnable) throws Exception { - //IdeaTestExecutionPolicy policy = IdeaTestExecutionPolicy.current(); - //if (policy != null && !policy.runInDispatchThread()) { - // runnable.run(); - //} - //else { + if (runInDispatchThread()) { EdtTestUtilKt.runInEdtAndWait(() -> { runnable.run(); return null; }); - //} + } + else { + runnable.run(); + } } - private void defaultRunBare() throws Throwable { + protected void defaultRunBare() throws Throwable { Throwable exception = null; try { long setupStart = System.nanoTime(); @@ -324,11 +434,17 @@ public abstract class KtUsefulTestCase extends TestCase { logPerClassCost(teardownCost, TOTAL_TEARDOWN_COST_MILLIS); } catch (Throwable tearingDown) { - if (exception == null) exception = tearingDown; - else exception = new CompoundRuntimeException(Arrays.asList(exception, tearingDown)); + if (exception == null) { + exception = tearingDown; + } + else { + exception = new CompoundRuntimeException(Arrays.asList(exception, tearingDown)); + } } } - if (exception != null) throw exception; + if (exception != null) { + throw exception; + } } /** @@ -368,7 +484,7 @@ public abstract class KtUsefulTestCase extends TestCase { if (runInDispatchThread()) { TestRunnerUtil.replaceIdeEventQueueSafely(); - com.intellij.testFramework.EdtTestUtil.runInEdtAndWait(this::defaultRunBare); + EdtTestUtil.runInEdtAndWait(this::defaultRunBare); } else { defaultRunBare(); @@ -376,13 +492,20 @@ public abstract class KtUsefulTestCase extends TestCase { } protected boolean runInDispatchThread() { - //IdeaTestExecutionPolicy policy = IdeaTestExecutionPolicy.current(); - //if (policy != null) { - // return policy.runInDispatchThread(); - //} + IdeaTestExecutionPolicy policy = IdeaTestExecutionPolicy.current(); + if (policy != null) { + return policy.runInDispatchThread(); + } return true; } + /** + * If you want a more shorter name than runInEdtAndWait. + */ + protected void edt(@NotNull ThrowableRunnable runnable) { + EdtTestUtil.runInEdtAndWait(runnable); + } + @NotNull public static String toString(@NotNull Iterable collection) { if (!collection.iterator().hasNext()) { @@ -515,9 +638,20 @@ public abstract class KtUsefulTestCase extends TestCase { } public static void assertContainsOrdered(@NotNull Collection collection, @NotNull Collection expected) { - ArrayList copy = new ArrayList<>(collection); - copy.retainAll(expected); - assertOrderedEquals(toString(collection), copy, expected); + PeekableIterator expectedIt = new PeekableIteratorWrapper<>(expected.iterator()); + PeekableIterator actualIt = new PeekableIteratorWrapper<>(collection.iterator()); + + while (actualIt.hasNext() && expectedIt.hasNext()) { + T expectedElem = expectedIt.peek(); + T actualElem = actualIt.peek(); + if (expectedElem.equals(actualElem)) { + expectedIt.next(); + } + actualIt.next(); + } + if (expectedIt.hasNext()) { + throw new ComparisonFailure("", toString(expected), toString(collection)); + } } @SafeVarargs @@ -592,7 +726,7 @@ public abstract class KtUsefulTestCase extends TestCase { if (collection.size() != checkers.length) { Assert.fail(toString(collection)); } - Set> checkerSet = new HashSet<>(Arrays.asList(checkers)); + Set> checkerSet = ContainerUtil.set(checkers); int i = 0; Throwable lastError = null; for (final T actual : collection) { @@ -767,7 +901,7 @@ public abstract class KtUsefulTestCase extends TestCase { //noinspection UseOfSystemOutOrSystemErr System.out.println("File " + filePath + " created."); } - fileText = FileUtil.loadFile(new File(filePath), CharsetToolkit.UTF8_CHARSET); + fileText = FileUtil.loadFile(new File(filePath), StandardCharsets.UTF_8); } catch (FileNotFoundException e) { VfsTestUtil.overwriteTestData(filePath, actualText); @@ -784,14 +918,14 @@ public abstract class KtUsefulTestCase extends TestCase { } protected static void clearFields(@NotNull Object test) throws IllegalAccessException { - Class aClass = test.getClass(); + Class aClass = test.getClass(); while (aClass != null) { clearDeclaredFields(test, aClass); aClass = aClass.getSuperclass(); } } - public static void clearDeclaredFields(@NotNull Object test, @NotNull Class aClass) throws IllegalAccessException { + public static void clearDeclaredFields(@NotNull Object test, @NotNull Class aClass) throws IllegalAccessException { for (final Field field : aClass.getDeclaredFields()) { final String name = field.getDeclaringClass().getName(); if (!name.startsWith("junit.framework.") && !name.startsWith("com.intellij.testFramework.")) { @@ -817,6 +951,14 @@ public abstract class KtUsefulTestCase extends TestCase { } } + private static void checkCodeInsightSettingsEqual(@NotNull CodeInsightSettings oldSettings, @NotNull CodeInsightSettings settings) { + if (!oldSettings.equals(settings)) { + Element newS = new Element("temp"); + settings.writeExternal(newS); + Assert.assertEquals("Code insight settings damaged", DEFAULT_SETTINGS_EXTERNALIZED, JDOMUtil.writeElement(newS)); + } + } + public boolean isPerformanceTest() { String testName = getName(); String className = getClass().getSimpleName(); @@ -843,6 +985,21 @@ public abstract class KtUsefulTestCase extends TestCase { return name != null && (name.contains("Stress") || name.contains("Slow")); } + public static void doPostponedFormatting(@NotNull Project project) { + DocumentUtil.writeInRunUndoTransparentAction(() -> { + PsiDocumentManager.getInstance(project).commitAllDocuments(); + PostprocessReformattingAspect.getInstance(project).doPostponedFormatting(); + }); + } + + /** + * Checks that code block throw corresponding exception. + * + * @param exceptionCase Block annotated with some exception type + */ + protected void assertException(@NotNull AbstractExceptionCase exceptionCase) { + assertException(exceptionCase, null); + } /** * Checks that code block throw corresponding exception with expected error msg. @@ -856,6 +1013,42 @@ public abstract class KtUsefulTestCase extends TestCase { assertExceptionOccurred(true, exceptionCase, expectedErrorMsg); } + /** + * Checks that the code block throws an exception of the specified class. + * + * @param exceptionClass Expected exception type + * @param runnable Block annotated with some exception type + */ + public static void assertThrows(@NotNull Class exceptionClass, + @NotNull ThrowableRunnable runnable) { + assertThrows(exceptionClass, null, runnable); + } + + /** + * Checks that the code block throws an exception of the specified class with expected error msg. + * If expected error message is null it will not be checked. + * + * @param exceptionClass Expected exception type + * @param expectedErrorMsgPart expected error message, of any + * @param runnable Block annotated with some exception type + */ + @SuppressWarnings({"unchecked", "SameParameterValue"}) + public static void assertThrows(@NotNull Class exceptionClass, + @Nullable String expectedErrorMsgPart, + @NotNull ThrowableRunnable runnable) { + assertExceptionOccurred(true, new AbstractExceptionCase() { + @Override + public Class getExpectedExceptionClass() { + return (Class)exceptionClass; + } + + @Override + public void tryClosure() throws Throwable { + runnable.run(); + } + }, expectedErrorMsgPart); + } + /** * Checks that code block doesn't throw corresponding exception. * @@ -878,21 +1071,23 @@ public abstract class KtUsefulTestCase extends TestCase { private static void assertExceptionOccurred(boolean shouldOccur, @NotNull AbstractExceptionCase exceptionCase, - String expectedErrorMsg) throws T { + String expectedErrorMsgPart) throws T { boolean wasThrown = false; try { exceptionCase.tryClosure(); } catch (Throwable e) { + Throwable cause = e; + if (shouldOccur) { wasThrown = true; final String errorMessage = exceptionCase.getAssertionErrorMessage(); - assertEquals(errorMessage, exceptionCase.getExpectedExceptionClass(), e.getClass()); - if (expectedErrorMsg != null) { - assertEquals("Compare error messages", expectedErrorMsg, e.getMessage()); + assertEquals(errorMessage, exceptionCase.getExpectedExceptionClass(), cause.getClass()); + if (expectedErrorMsgPart != null) { + assertTrue(cause.getMessage(), cause.getMessage().contains(expectedErrorMsgPart)); } } - else if (exceptionCase.getExpectedExceptionClass().equals(e.getClass())) { + else if (exceptionCase.getExpectedExceptionClass().equals(cause.getClass())) { wasThrown = true; //noinspection UseOfSystemOutOrSystemErr @@ -900,7 +1095,7 @@ public abstract class KtUsefulTestCase extends TestCase { //noinspection UseOfSystemOutOrSystemErr e.printStackTrace(System.out); - fail("Exception isn't expected here. Exception message: " + e.getMessage()); + fail("Exception isn't expected here. Exception message: " + cause.getMessage()); } else { throw e; @@ -937,7 +1132,7 @@ public abstract class KtUsefulTestCase extends TestCase { } public static void refreshRecursively(@NotNull VirtualFile file) { - VfsUtilCore.visitChildrenRecursively(file, new VirtualFileVisitor() { + VfsUtilCore.visitChildrenRecursively(file, new VirtualFileVisitor() { @Override public boolean visitFile(@NotNull VirtualFile file) { file.getChildren(); @@ -947,11 +1142,27 @@ public abstract class KtUsefulTestCase extends TestCase { file.refresh(false, true); } - @Nullable public static VirtualFile refreshAndFindFile(@NotNull final File file) { return UIUtil.invokeAndWaitIfNeeded(() -> LocalFileSystem.getInstance().refreshAndFindFileByIoFile(file)); } + public static void waitForAppLeakingThreads(long timeout, @NotNull TimeUnit timeUnit) { + EdtTestUtil.runInEdtAndWait(() -> { + Application app = ApplicationManager.getApplication(); + if (app != null && !app.isDisposed()) { + FileBasedIndexImpl index = (FileBasedIndexImpl)app.getServiceIfCreated(FileBasedIndex.class); + if (index != null) { + index.getChangedFilesCollector().waitForVfsEventsExecuted(timeout, timeUnit); + } + + DocumentCommitThread commitThread = (DocumentCommitThread)app.getServiceIfCreated(DocumentCommitProcessor.class); + if (commitThread != null) { + commitThread.waitForAllCommits(timeout, timeUnit); + } + } + }); + } + protected class TestDisposable implements Disposable { private volatile boolean myDisposed; @@ -972,5 +1183,5 @@ public abstract class KtUsefulTestCase extends TestCase { String testName = getTestName(false); return KtUsefulTestCase.this.getClass() + (StringUtil.isEmpty(testName) ? "" : ".test" + testName); } - }; -} + } +} \ No newline at end of file diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/test/testFramework/KtUsefulTestCase.java.201 b/compiler/tests-common/tests/org/jetbrains/kotlin/test/testFramework/KtUsefulTestCase.java.193 similarity index 75% rename from compiler/tests-common/tests/org/jetbrains/kotlin/test/testFramework/KtUsefulTestCase.java.201 rename to compiler/tests-common/tests/org/jetbrains/kotlin/test/testFramework/KtUsefulTestCase.java.193 index 44833c97938..c3bf76c4b25 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/test/testFramework/KtUsefulTestCase.java.201 +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/test/testFramework/KtUsefulTestCase.java.193 @@ -16,8 +16,6 @@ package org.jetbrains.kotlin.test.testFramework; -import com.intellij.codeInsight.CodeInsightSettings; -import com.intellij.concurrency.IdeaForkJoinWorkerThreadFactory; import com.intellij.diagnostic.PerformanceWatcher; import com.intellij.openapi.Disposable; import com.intellij.openapi.application.Application; @@ -25,33 +23,20 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.PathManager; import com.intellij.openapi.application.impl.ApplicationInfoImpl; import com.intellij.openapi.diagnostic.Logger; -import com.intellij.openapi.fileTypes.StdFileTypes; -import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.Disposer; -import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.util.JDOMUtil; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; -import com.intellij.openapi.vfs.LocalFileSystem; -import com.intellij.openapi.vfs.VfsUtilCore; -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.openapi.vfs.VirtualFileVisitor; -import com.intellij.psi.PsiDocumentManager; +import com.intellij.openapi.vfs.*; import com.intellij.psi.codeStyle.CodeStyleSettings; -import com.intellij.psi.impl.DocumentCommitProcessor; -import com.intellij.psi.impl.DocumentCommitThread; -import com.intellij.psi.impl.source.PostprocessReformattingAspect; import com.intellij.rt.execution.junit.FileComparisonFailure; import com.intellij.testFramework.*; import com.intellij.testFramework.exceptionCases.AbstractExceptionCase; -import com.intellij.testFramework.fixtures.IdeaTestExecutionPolicy; -import com.intellij.util.*; +import com.intellij.util.Consumer; +import com.intellij.util.ReflectionUtil; import com.intellij.util.containers.ContainerUtil; -import com.intellij.util.containers.PeekableIterator; -import com.intellij.util.containers.PeekableIteratorWrapper; -import com.intellij.util.indexing.FileBasedIndex; -import com.intellij.util.indexing.FileBasedIndexImpl; +import com.intellij.util.containers.hash.HashMap; import com.intellij.util.lang.CompoundRuntimeException; import com.intellij.util.ui.UIUtil; import gnu.trove.Equality; @@ -62,11 +47,11 @@ import org.jdom.Element; import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.kotlin.test.IdeaSystemPropertiesForParallelRunConfigurator; import org.jetbrains.kotlin.testFramework.MockComponentManagerCreationTracer; import org.jetbrains.kotlin.types.AbstractTypeChecker; import org.jetbrains.kotlin.types.FlexibleTypeImpl; import org.junit.Assert; -import org.junit.ComparisonFailure; import java.io.File; import java.io.FileNotFoundException; @@ -76,16 +61,14 @@ import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; -import java.nio.charset.StandardCharsets; -import java.nio.file.Path; import java.util.*; -import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Supplier; -@SuppressWarnings("ALL") +@SuppressWarnings("UseOfSystemOutOrSystemErr") public abstract class KtUsefulTestCase extends TestCase { public static final boolean IS_UNDER_TEAMCITY = System.getenv("TEAMCITY_VERSION") != null; - public static final String TEMP_DIR_MARKER = "unitTest_"; + private static final String TEMP_DIR_MARKER = "unitTest_"; public static final boolean OVERWRITE_TESTDATA = Boolean.getBoolean("idea.tests.overwrite.data"); private static final String ORIGINAL_TEMP_DIR = FileUtil.getTempDirectory(); @@ -96,34 +79,24 @@ public abstract class KtUsefulTestCase extends TestCase { private Application application; static { - IdeaForkJoinWorkerThreadFactory.setupPoisonFactory(); + IdeaSystemPropertiesForParallelRunConfigurator.setProperties(); + //TODO: investigate and enable + //IdeaForkJoinWorkerThreadFactory.setupPoisonFactory(); Logger.setFactory(TestLoggerFactory.class); } - protected static final Logger LOG = Logger.getInstance(KtUsefulTestCase.class); @NotNull - private final Disposable myTestRootDisposable = new TestDisposable(); + protected final Disposable myTestRootDisposable = new TestDisposable(); - static Path ourPathToKeep; + private static final String ourPathToKeep = null; private final List myPathsToKeep = new ArrayList<>(); - private String myTempDir; + private File myTempDir; - private static final String DEFAULT_SETTINGS_EXTERNALIZED; - private static final CodeInsightSettings defaultSettings = new CodeInsightSettings(); static { // Radar #5755208: Command line Java applications need a way to launch without a Dock icon. System.setProperty("apple.awt.UIElement", "true"); - try { - Element oldS = new Element("temp"); - defaultSettings.writeExternal(oldS); - DEFAULT_SETTINGS_EXTERNALIZED = JDOMUtil.writeElement(oldS); - } - catch (Exception e) { - throw new RuntimeException(e); - } - // -- KOTLIN ADDITIONAL START -- FlexibleTypeImpl.RUN_SLOW_ASSERTIONS = true; @@ -132,42 +105,6 @@ public abstract class KtUsefulTestCase extends TestCase { // -- KOTLIN ADDITIONAL END -- } - /** - * Pass here the exception you want to be thrown first - * E.g.
-     * {@code
-     *   void tearDown() {
-     *     try {
-     *       doTearDowns();
-     *     }
-     *     catch(Exception e) {
-     *       addSuppressedException(e);
-     *     }
-     *     finally {
-     *       super.tearDown();
-     *     }
-     *   }
-     * }
-     * 
- * - */ - protected void addSuppressedException(@NotNull Throwable e) { - List list = mySuppressedExceptions; - if (list == null) { - mySuppressedExceptions = list = new SmartList<>(); - } - list.add(e); - } - private List mySuppressedExceptions; - - - public KtUsefulTestCase() { - } - - public KtUsefulTestCase(@NotNull String name) { - super(name); - } - protected boolean shouldContainTempFiles() { return true; } @@ -185,17 +122,11 @@ public abstract class KtUsefulTestCase extends TestCase { super.setUp(); if (shouldContainTempFiles()) { - IdeaTestExecutionPolicy policy = IdeaTestExecutionPolicy.current(); - String testName = null; - if (policy != null) { - testName = policy.getPerTestTempDirName(); - } - if (testName == null) { - testName = FileUtil.sanitizeFileName(getTestName(true)); - } + String testName = FileUtil.sanitizeFileName(getTestName(true)); + if (StringUtil.isEmptyOrSpaces(testName)) testName = ""; testName = new File(testName).getName(); // in case the test name contains file separators - myTempDir = FileUtil.createTempDirectory(TEMP_DIR_MARKER + testName, "", false).getPath(); - FileUtil.resetCanonicalTempPathCache(myTempDir); + myTempDir = FileUtil.createTempDirectory(TEMP_DIR_MARKER, testName, false); + FileUtil.resetCanonicalTempPathCache(myTempDir.getPath()); } boolean isStressTest = isStressTest(); @@ -206,16 +137,6 @@ public abstract class KtUsefulTestCase extends TestCase { // turn off Disposer debugging for performance tests Disposer.setDebugMode(!isStressTest); - - if (isIconRequired()) { - // ensure that IconLoader will use dummy empty icon - IconLoader.deactivate(); - //IconManager.activate(); - } - } - - protected boolean isIconRequired() { - return false; } @Override @@ -224,11 +145,6 @@ public abstract class KtUsefulTestCase extends TestCase { // don't use method references here to make stack trace reading easier //noinspection Convert2MethodRef new RunAll( - () -> { - if (isIconRequired()) { - //IconManager.deactivate(); - } - }, () -> disposeRootDisposable(), () -> cleanupSwingDataStructures(), () -> cleanupDeleteOnExitHookList(), @@ -237,7 +153,7 @@ public abstract class KtUsefulTestCase extends TestCase { if (shouldContainTempFiles()) { FileUtil.resetCanonicalTempPathCache(ORIGINAL_TEMP_DIR); if (hasTmpFilesToKeep()) { - File[] files = new File(myTempDir).listFiles(); + File[] files = myTempDir.listFiles(); if (files != null) { for (File file : files) { if (!shouldKeepTmpFile(file)) { @@ -247,14 +163,15 @@ public abstract class KtUsefulTestCase extends TestCase { } } else { - FileUtil.delete(new File(myTempDir)); + FileUtil.delete(myTempDir); } } }, - () -> waitForAppLeakingThreads(10, TimeUnit.SECONDS) - ).run(ObjectUtils.notNull(mySuppressedExceptions, Collections.emptyList())); + () -> UIUtil.removeLeakingAppleListeners() + ).run(); } finally { + super.tearDown(); // -- KOTLIN ADDITIONAL START -- TestApplicationUtilKt.resetApplicationToNull(application); application = null; @@ -271,12 +188,12 @@ public abstract class KtUsefulTestCase extends TestCase { } private boolean hasTmpFilesToKeep() { - return ourPathToKeep != null && FileUtil.isAncestor(myTempDir, ourPathToKeep.toString(), false) || !myPathsToKeep.isEmpty(); + return ourPathToKeep != null && FileUtil.isAncestor(myTempDir.getPath(), ourPathToKeep, false) || !myPathsToKeep.isEmpty(); } private boolean shouldKeepTmpFile(@NotNull File file) { String path = file.getPath(); - if (FileUtil.pathsEqual(path, ourPathToKeep.toString())) return true; + if (FileUtil.pathsEqual(path, ourPathToKeep)) return true; for (String pathToKeep : myPathsToKeep) { if (FileUtil.pathsEqual(path, pathToKeep)) return true; } @@ -284,7 +201,7 @@ public abstract class KtUsefulTestCase extends TestCase { } private static final Set DELETE_ON_EXIT_HOOK_DOT_FILES; - private static final Class DELETE_ON_EXIT_HOOK_CLASS; + private static final Class DELETE_ON_EXIT_HOOK_CLASS; static { Class aClass; try { @@ -320,45 +237,12 @@ public abstract class KtUsefulTestCase extends TestCase { @SuppressWarnings("ConstantConditions") private static void cleanupSwingDataStructures() throws Exception { Object manager = ReflectionUtil.getDeclaredMethod(Class.forName("javax.swing.KeyboardManager"), "getCurrentManager").invoke(null); - Map componentKeyStrokeMap = ReflectionUtil.getField(manager.getClass(), manager, Hashtable.class, "componentKeyStrokeMap"); + Map componentKeyStrokeMap = ReflectionUtil.getField(manager.getClass(), manager, Hashtable.class, "componentKeyStrokeMap"); componentKeyStrokeMap.clear(); - Map containerMap = ReflectionUtil.getField(manager.getClass(), manager, Hashtable.class, "containerMap"); + Map containerMap = ReflectionUtil.getField(manager.getClass(), manager, Hashtable.class, "containerMap"); containerMap.clear(); } - static void doCheckForSettingsDamage(@NotNull CodeStyleSettings oldCodeStyleSettings, @NotNull CodeStyleSettings currentCodeStyleSettings) { - final CodeInsightSettings settings = CodeInsightSettings.getInstance(); - // don't use method references here to make stack trace reading easier - //noinspection Convert2MethodRef - new RunAll() - .append(() -> { - try { - checkCodeInsightSettingsEqual(defaultSettings, settings); - } - catch (AssertionError error) { - CodeInsightSettings clean = new CodeInsightSettings(); - for (Field field : clean.getClass().getFields()) { - try { - ReflectionUtil.copyFieldValue(clean, settings, field); - } - catch (Exception ignored) { - } - } - throw error; - } - }) - .append(() -> { - currentCodeStyleSettings.getIndentOptions(StdFileTypes.JAVA); - try { - checkCodeStyleSettingsEqual(oldCodeStyleSettings, currentCodeStyleSettings); - } - finally { - currentCodeStyleSettings.clearCodeStyleSettings(); - } - }) - .run(); - } - @NotNull public Disposable getTestRootDisposable() { return myTestRootDisposable; @@ -368,11 +252,13 @@ public abstract class KtUsefulTestCase extends TestCase { protected void runTest() throws Throwable { final Throwable[] throwables = new Throwable[1]; + AtomicBoolean completed = new AtomicBoolean(false); Runnable runnable = () -> { try { - TestLoggerFactory.onTestStarted(); + //TestLoggerFactory.onTestStarted(); super.runTest(); TestLoggerFactory.onTestFinished(true); + completed.set(true); } catch (InvocationTargetException e) { TestLoggerFactory.onTestFinished(false); @@ -395,6 +281,9 @@ public abstract class KtUsefulTestCase extends TestCase { if (throwables[0] != null) { throw throwables[0]; } + if (!completed.get()) { + throw new IllegalStateException("test didn't start"); + } } protected boolean shouldRunTest() { @@ -402,18 +291,19 @@ public abstract class KtUsefulTestCase extends TestCase { } protected void invokeTestRunnable(@NotNull Runnable runnable) throws Exception { - if (runInDispatchThread()) { + //IdeaTestExecutionPolicy policy = IdeaTestExecutionPolicy.current(); + //if (policy != null && !policy.runInDispatchThread()) { + // runnable.run(); + //} + //else { EdtTestUtilKt.runInEdtAndWait(() -> { runnable.run(); return null; }); - } - else { - runnable.run(); - } + //} } - protected void defaultRunBare() throws Throwable { + private void defaultRunBare() throws Throwable { Throwable exception = null; try { long setupStart = System.nanoTime(); @@ -434,17 +324,11 @@ public abstract class KtUsefulTestCase extends TestCase { logPerClassCost(teardownCost, TOTAL_TEARDOWN_COST_MILLIS); } catch (Throwable tearingDown) { - if (exception == null) { - exception = tearingDown; - } - else { - exception = new CompoundRuntimeException(Arrays.asList(exception, tearingDown)); - } + if (exception == null) exception = tearingDown; + else exception = new CompoundRuntimeException(Arrays.asList(exception, tearingDown)); } } - if (exception != null) { - throw exception; - } + if (exception != null) throw exception; } /** @@ -484,7 +368,7 @@ public abstract class KtUsefulTestCase extends TestCase { if (runInDispatchThread()) { TestRunnerUtil.replaceIdeEventQueueSafely(); - EdtTestUtil.runInEdtAndWait(this::defaultRunBare); + com.intellij.testFramework.EdtTestUtil.runInEdtAndWait(this::defaultRunBare); } else { defaultRunBare(); @@ -492,20 +376,13 @@ public abstract class KtUsefulTestCase extends TestCase { } protected boolean runInDispatchThread() { - IdeaTestExecutionPolicy policy = IdeaTestExecutionPolicy.current(); - if (policy != null) { - return policy.runInDispatchThread(); - } + //IdeaTestExecutionPolicy policy = IdeaTestExecutionPolicy.current(); + //if (policy != null) { + // return policy.runInDispatchThread(); + //} return true; } - /** - * If you want a more shorter name than runInEdtAndWait. - */ - protected void edt(@NotNull ThrowableRunnable runnable) { - EdtTestUtil.runInEdtAndWait(runnable); - } - @NotNull public static String toString(@NotNull Iterable collection) { if (!collection.iterator().hasNext()) { @@ -638,20 +515,9 @@ public abstract class KtUsefulTestCase extends TestCase { } public static void assertContainsOrdered(@NotNull Collection collection, @NotNull Collection expected) { - PeekableIterator expectedIt = new PeekableIteratorWrapper<>(expected.iterator()); - PeekableIterator actualIt = new PeekableIteratorWrapper<>(collection.iterator()); - - while (actualIt.hasNext() && expectedIt.hasNext()) { - T expectedElem = expectedIt.peek(); - T actualElem = actualIt.peek(); - if (expectedElem.equals(actualElem)) { - expectedIt.next(); - } - actualIt.next(); - } - if (expectedIt.hasNext()) { - throw new ComparisonFailure("", toString(expected), toString(collection)); - } + ArrayList copy = new ArrayList<>(collection); + copy.retainAll(expected); + assertOrderedEquals(toString(collection), copy, expected); } @SafeVarargs @@ -726,7 +592,7 @@ public abstract class KtUsefulTestCase extends TestCase { if (collection.size() != checkers.length) { Assert.fail(toString(collection)); } - Set> checkerSet = ContainerUtil.set(checkers); + Set> checkerSet = new HashSet<>(Arrays.asList(checkers)); int i = 0; Throwable lastError = null; for (final T actual : collection) { @@ -901,7 +767,7 @@ public abstract class KtUsefulTestCase extends TestCase { //noinspection UseOfSystemOutOrSystemErr System.out.println("File " + filePath + " created."); } - fileText = FileUtil.loadFile(new File(filePath), StandardCharsets.UTF_8); + fileText = FileUtil.loadFile(new File(filePath), CharsetToolkit.UTF8_CHARSET); } catch (FileNotFoundException e) { VfsTestUtil.overwriteTestData(filePath, actualText); @@ -918,14 +784,14 @@ public abstract class KtUsefulTestCase extends TestCase { } protected static void clearFields(@NotNull Object test) throws IllegalAccessException { - Class aClass = test.getClass(); + Class aClass = test.getClass(); while (aClass != null) { clearDeclaredFields(test, aClass); aClass = aClass.getSuperclass(); } } - public static void clearDeclaredFields(@NotNull Object test, @NotNull Class aClass) throws IllegalAccessException { + public static void clearDeclaredFields(@NotNull Object test, @NotNull Class aClass) throws IllegalAccessException { for (final Field field : aClass.getDeclaredFields()) { final String name = field.getDeclaringClass().getName(); if (!name.startsWith("junit.framework.") && !name.startsWith("com.intellij.testFramework.")) { @@ -951,14 +817,6 @@ public abstract class KtUsefulTestCase extends TestCase { } } - private static void checkCodeInsightSettingsEqual(@NotNull CodeInsightSettings oldSettings, @NotNull CodeInsightSettings settings) { - if (!oldSettings.equals(settings)) { - Element newS = new Element("temp"); - settings.writeExternal(newS); - Assert.assertEquals("Code insight settings damaged", DEFAULT_SETTINGS_EXTERNALIZED, JDOMUtil.writeElement(newS)); - } - } - public boolean isPerformanceTest() { String testName = getName(); String className = getClass().getSimpleName(); @@ -985,21 +843,6 @@ public abstract class KtUsefulTestCase extends TestCase { return name != null && (name.contains("Stress") || name.contains("Slow")); } - public static void doPostponedFormatting(@NotNull Project project) { - DocumentUtil.writeInRunUndoTransparentAction(() -> { - PsiDocumentManager.getInstance(project).commitAllDocuments(); - PostprocessReformattingAspect.getInstance(project).doPostponedFormatting(); - }); - } - - /** - * Checks that code block throw corresponding exception. - * - * @param exceptionCase Block annotated with some exception type - */ - protected void assertException(@NotNull AbstractExceptionCase exceptionCase) { - assertException(exceptionCase, null); - } /** * Checks that code block throw corresponding exception with expected error msg. @@ -1013,42 +856,6 @@ public abstract class KtUsefulTestCase extends TestCase { assertExceptionOccurred(true, exceptionCase, expectedErrorMsg); } - /** - * Checks that the code block throws an exception of the specified class. - * - * @param exceptionClass Expected exception type - * @param runnable Block annotated with some exception type - */ - public static void assertThrows(@NotNull Class exceptionClass, - @NotNull ThrowableRunnable runnable) { - assertThrows(exceptionClass, null, runnable); - } - - /** - * Checks that the code block throws an exception of the specified class with expected error msg. - * If expected error message is null it will not be checked. - * - * @param exceptionClass Expected exception type - * @param expectedErrorMsgPart expected error message, of any - * @param runnable Block annotated with some exception type - */ - @SuppressWarnings({"unchecked", "SameParameterValue"}) - public static void assertThrows(@NotNull Class exceptionClass, - @Nullable String expectedErrorMsgPart, - @NotNull ThrowableRunnable runnable) { - assertExceptionOccurred(true, new AbstractExceptionCase() { - @Override - public Class getExpectedExceptionClass() { - return (Class)exceptionClass; - } - - @Override - public void tryClosure() throws Throwable { - runnable.run(); - } - }, expectedErrorMsgPart); - } - /** * Checks that code block doesn't throw corresponding exception. * @@ -1071,23 +878,21 @@ public abstract class KtUsefulTestCase extends TestCase { private static void assertExceptionOccurred(boolean shouldOccur, @NotNull AbstractExceptionCase exceptionCase, - String expectedErrorMsgPart) throws T { + String expectedErrorMsg) throws T { boolean wasThrown = false; try { exceptionCase.tryClosure(); } catch (Throwable e) { - Throwable cause = e; - if (shouldOccur) { wasThrown = true; final String errorMessage = exceptionCase.getAssertionErrorMessage(); - assertEquals(errorMessage, exceptionCase.getExpectedExceptionClass(), cause.getClass()); - if (expectedErrorMsgPart != null) { - assertTrue(cause.getMessage(), cause.getMessage().contains(expectedErrorMsgPart)); + assertEquals(errorMessage, exceptionCase.getExpectedExceptionClass(), e.getClass()); + if (expectedErrorMsg != null) { + assertEquals("Compare error messages", expectedErrorMsg, e.getMessage()); } } - else if (exceptionCase.getExpectedExceptionClass().equals(cause.getClass())) { + else if (exceptionCase.getExpectedExceptionClass().equals(e.getClass())) { wasThrown = true; //noinspection UseOfSystemOutOrSystemErr @@ -1095,7 +900,7 @@ public abstract class KtUsefulTestCase extends TestCase { //noinspection UseOfSystemOutOrSystemErr e.printStackTrace(System.out); - fail("Exception isn't expected here. Exception message: " + cause.getMessage()); + fail("Exception isn't expected here. Exception message: " + e.getMessage()); } else { throw e; @@ -1132,7 +937,7 @@ public abstract class KtUsefulTestCase extends TestCase { } public static void refreshRecursively(@NotNull VirtualFile file) { - VfsUtilCore.visitChildrenRecursively(file, new VirtualFileVisitor() { + VfsUtilCore.visitChildrenRecursively(file, new VirtualFileVisitor() { @Override public boolean visitFile(@NotNull VirtualFile file) { file.getChildren(); @@ -1142,27 +947,11 @@ public abstract class KtUsefulTestCase extends TestCase { file.refresh(false, true); } + @Nullable public static VirtualFile refreshAndFindFile(@NotNull final File file) { return UIUtil.invokeAndWaitIfNeeded(() -> LocalFileSystem.getInstance().refreshAndFindFileByIoFile(file)); } - public static void waitForAppLeakingThreads(long timeout, @NotNull TimeUnit timeUnit) { - EdtTestUtil.runInEdtAndWait(() -> { - Application app = ApplicationManager.getApplication(); - if (app != null && !app.isDisposed()) { - FileBasedIndexImpl index = (FileBasedIndexImpl)app.getServiceIfCreated(FileBasedIndex.class); - if (index != null) { - index.getChangedFilesCollector().waitForVfsEventsExecuted(timeout, timeUnit); - } - - DocumentCommitThread commitThread = (DocumentCommitThread)app.getServiceIfCreated(DocumentCommitProcessor.class); - if (commitThread != null) { - commitThread.waitForAllCommits(timeout, timeUnit); - } - } - }); - } - protected class TestDisposable implements Disposable { private volatile boolean myDisposed; @@ -1183,5 +972,5 @@ public abstract class KtUsefulTestCase extends TestCase { String testName = getTestName(false); return KtUsefulTestCase.this.getClass() + (StringUtil.isEmpty(testName) ? "" : ".test" + testName); } - } -} \ No newline at end of file + }; +} diff --git a/gradle/versions.properties b/gradle/versions.properties index 0d985de36f1..bd6471bb797 100644 --- a/gradle/versions.properties +++ b/gradle/versions.properties @@ -1,18 +1,18 @@ -versions.intellijSdk=193.6494.35 +versions.intellijSdk=201.7223.91 versions.androidBuildTools=r23.0.1 -versions.idea.NodeJS=181.3494.12 +versions.idea.NodeJS=193.6494.7 versions.jar.asm-all=7.0.1 -versions.jar.guava=27.1-jre +versions.jar.guava=28.2-jre versions.jar.groovy-all=2.4.17 versions.jar.lombok-ast=0.2.3 versions.jar.swingx-core=1.6.2-2 versions.jar.kxml2=2.3.0 -versions.jar.streamex=0.6.8 -versions.jar.gson=2.8.5 +versions.jar.streamex=0.7.2 +versions.jar.gson=2.8.6 versions.jar.oro=2.0.8 versions.jar.picocontainer=1.2 versions.jar.serviceMessages=2019.1.4 -versions.jar.lz4-java=1.6.0 +versions.jar.lz4-java=1.7.1 ignore.jar.snappy-in-java=true versions.gradle-api=4.5.1 versions.shadow=5.2.0 \ No newline at end of file diff --git a/gradle/versions.properties.201 b/gradle/versions.properties.193 similarity index 66% rename from gradle/versions.properties.201 rename to gradle/versions.properties.193 index bd6471bb797..0d985de36f1 100644 --- a/gradle/versions.properties.201 +++ b/gradle/versions.properties.193 @@ -1,18 +1,18 @@ -versions.intellijSdk=201.7223.91 +versions.intellijSdk=193.6494.35 versions.androidBuildTools=r23.0.1 -versions.idea.NodeJS=193.6494.7 +versions.idea.NodeJS=181.3494.12 versions.jar.asm-all=7.0.1 -versions.jar.guava=28.2-jre +versions.jar.guava=27.1-jre versions.jar.groovy-all=2.4.17 versions.jar.lombok-ast=0.2.3 versions.jar.swingx-core=1.6.2-2 versions.jar.kxml2=2.3.0 -versions.jar.streamex=0.7.2 -versions.jar.gson=2.8.6 +versions.jar.streamex=0.6.8 +versions.jar.gson=2.8.5 versions.jar.oro=2.0.8 versions.jar.picocontainer=1.2 versions.jar.serviceMessages=2019.1.4 -versions.jar.lz4-java=1.7.1 +versions.jar.lz4-java=1.6.0 ignore.jar.snappy-in-java=true versions.gradle-api=4.5.1 versions.shadow=5.2.0 \ No newline at end of file diff --git a/idea/ide-common/src/org/jetbrains/kotlin/util/AbstractKotlinBundle.kt b/idea/ide-common/src/org/jetbrains/kotlin/util/AbstractKotlinBundle.kt index b7670d34e5d..c54005698d5 100644 --- a/idea/ide-common/src/org/jetbrains/kotlin/util/AbstractKotlinBundle.kt +++ b/idea/ide-common/src/org/jetbrains/kotlin/util/AbstractKotlinBundle.kt @@ -5,8 +5,8 @@ package org.jetbrains.kotlin.util -import com.intellij.AbstractBundle +import com.intellij.DynamicBundle -abstract class AbstractKotlinBundle protected constructor(pathToBundle: String) : AbstractBundle(pathToBundle) { +abstract class AbstractKotlinBundle protected constructor(pathToBundle: String) : DynamicBundle(pathToBundle) { protected fun String.withHtml(): String = "$this" } \ No newline at end of file diff --git a/idea/ide-common/src/org/jetbrains/kotlin/util/AbstractKotlinBundle.kt.201 b/idea/ide-common/src/org/jetbrains/kotlin/util/AbstractKotlinBundle.kt.193 similarity index 81% rename from idea/ide-common/src/org/jetbrains/kotlin/util/AbstractKotlinBundle.kt.201 rename to idea/ide-common/src/org/jetbrains/kotlin/util/AbstractKotlinBundle.kt.193 index c54005698d5..b7670d34e5d 100644 --- a/idea/ide-common/src/org/jetbrains/kotlin/util/AbstractKotlinBundle.kt.201 +++ b/idea/ide-common/src/org/jetbrains/kotlin/util/AbstractKotlinBundle.kt.193 @@ -5,8 +5,8 @@ package org.jetbrains.kotlin.util -import com.intellij.DynamicBundle +import com.intellij.AbstractBundle -abstract class AbstractKotlinBundle protected constructor(pathToBundle: String) : DynamicBundle(pathToBundle) { +abstract class AbstractKotlinBundle protected constructor(pathToBundle: String) : AbstractBundle(pathToBundle) { protected fun String.withHtml(): String = "$this" } \ No newline at end of file diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/compat.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/compat.kt index 1b2cf1f7396..a265dd04b7d 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/compat.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/compat.kt @@ -9,6 +9,6 @@ import com.intellij.psi.PsiMethod import com.intellij.util.Processor // FIX ME WHEN BUNCH 193 REMOVED -typealias StringProcessor = Processor -typealias PsiMethodProcessor = Processor +typealias StringProcessor = Processor +typealias PsiMethodProcessor = Processor diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/compat.kt.201 b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/compat.kt.193 similarity index 77% rename from idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/compat.kt.201 rename to idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/compat.kt.193 index a265dd04b7d..1b2cf1f7396 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/compat.kt.201 +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/compat.kt.193 @@ -9,6 +9,6 @@ import com.intellij.psi.PsiMethod import com.intellij.util.Processor // FIX ME WHEN BUNCH 193 REMOVED -typealias StringProcessor = Processor -typealias PsiMethodProcessor = Processor +typealias StringProcessor = Processor +typealias PsiMethodProcessor = Processor diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/AnnotationPresentationInfo.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/AnnotationPresentationInfo.kt index 107e57169c9..cfb3997b2c1 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/AnnotationPresentationInfo.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/AnnotationPresentationInfo.kt @@ -8,13 +8,17 @@ package org.jetbrains.kotlin.idea.highlighter import com.intellij.codeInsight.intention.EmptyIntentionAction import com.intellij.codeInsight.intention.IntentionAction import com.intellij.codeInspection.ProblemHighlightType -import com.intellij.lang.annotation.Annotation +import com.intellij.lang.annotation.AnnotationBuilder import com.intellij.lang.annotation.AnnotationHolder +import com.intellij.lang.annotation.HighlightSeverity +import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.editor.colors.TextAttributesKey import com.intellij.openapi.util.TextRange import com.intellij.util.containers.MultiMap +import com.intellij.xml.util.XmlStringUtil import org.jetbrains.kotlin.diagnostics.Diagnostic import org.jetbrains.kotlin.diagnostics.Severity +import org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages import org.jetbrains.kotlin.idea.inspections.KotlinUniversalQuickFix class AnnotationPresentationInfo( @@ -28,35 +32,67 @@ class AnnotationPresentationInfo( for (range in ranges) { for (diagnostic in diagnostics) { val fixes = fixesMap[diagnostic] - val annotation = create(diagnostic, range, holder) - - fixes.forEach { - when (it) { - is KotlinUniversalQuickFix -> annotation.registerUniversalFix(it, null, null) - is IntentionAction -> annotation.registerFix(it) + create(diagnostic, range, holder) { annotation -> + fixes.forEach { + when (it) { + is KotlinUniversalQuickFix -> annotation.newFix(it).universal().registerFix() + is IntentionAction -> annotation.newFix(it).registerFix() + } } - } - if (diagnostic.severity == Severity.WARNING) { - annotation.problemGroup = KotlinSuppressableWarningProblemGroup(diagnostic.factory) + if (diagnostic.severity == Severity.WARNING) { + annotation.problemGroup(KotlinSuppressableWarningProblemGroup(diagnostic.factory)) - if (fixes.isEmpty()) { - // if there are no quick fixes we need to register an EmptyIntentionAction to enable 'suppress' actions - annotation.registerFix(EmptyIntentionAction(diagnostic.factory.name)) + if (fixes.isEmpty()) { + // if there are no quick fixes we need to register an EmptyIntentionAction to enable 'suppress' actions + annotation.newFix(EmptyIntentionAction(diagnostic.factory.name)).registerFix() + } } } } } } - private fun create(diagnostic: Diagnostic, range: TextRange, holder: AnnotationHolder): Annotation = - Diagnostic2Annotation.createAnnotation( - diagnostic, - range, - holder, - nonDefaultMessage, - textAttributes, - highlightType, - IdeErrorMessages::render - ) + private fun create(diagnostic: Diagnostic, range: TextRange, holder: AnnotationHolder, consumer: (AnnotationBuilder) -> Unit) { + val severity = when (diagnostic.severity) { + Severity.ERROR -> HighlightSeverity.ERROR + Severity.WARNING -> if (highlightType == ProblemHighlightType.WEAK_WARNING) { + HighlightSeverity.WEAK_WARNING + } else HighlightSeverity.WARNING + Severity.INFO -> HighlightSeverity.WEAK_WARNING + } + + holder.newAnnotation(severity, nonDefaultMessage ?: getDefaultMessage(diagnostic)) + .range(range) + .tooltip(getMessage(diagnostic)) + .also { builder -> highlightType?.let { builder.highlightType(it) } } + .also { builder -> textAttributes?.let { builder.textAttributes(it) } } + .also { consumer(it) } + .create() + } + + private fun getMessage(diagnostic: Diagnostic): String { + var message = IdeErrorMessages.render(diagnostic) + if (ApplicationManager.getApplication().isInternal || ApplicationManager.getApplication().isUnitTestMode) { + val factoryName = diagnostic.factory.name + message = if (message.startsWith("")) { + "[$factoryName] ${message.substring("".length)}" + } else { + "[$factoryName] $message" + } + } + if (!message.startsWith("")) { + message = "${XmlStringUtil.escapeString(message)}" + } + return message + } + + private fun getDefaultMessage(diagnostic: Diagnostic): String { + val message = DefaultErrorMessages.render(diagnostic) + if (ApplicationManager.getApplication().isInternal || ApplicationManager.getApplication().isUnitTestMode) { + return "[${diagnostic.factory.name}] $message" + } + return message + } + } diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/AnnotationPresentationInfo.kt.193 b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/AnnotationPresentationInfo.kt.193 new file mode 100644 index 00000000000..107e57169c9 --- /dev/null +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/AnnotationPresentationInfo.kt.193 @@ -0,0 +1,62 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.idea.highlighter + +import com.intellij.codeInsight.intention.EmptyIntentionAction +import com.intellij.codeInsight.intention.IntentionAction +import com.intellij.codeInspection.ProblemHighlightType +import com.intellij.lang.annotation.Annotation +import com.intellij.lang.annotation.AnnotationHolder +import com.intellij.openapi.editor.colors.TextAttributesKey +import com.intellij.openapi.util.TextRange +import com.intellij.util.containers.MultiMap +import org.jetbrains.kotlin.diagnostics.Diagnostic +import org.jetbrains.kotlin.diagnostics.Severity +import org.jetbrains.kotlin.idea.inspections.KotlinUniversalQuickFix + +class AnnotationPresentationInfo( + val ranges: List, + val nonDefaultMessage: String? = null, + val highlightType: ProblemHighlightType? = null, + val textAttributes: TextAttributesKey? = null +) { + + fun processDiagnostics(holder: AnnotationHolder, diagnostics: List, fixesMap: MultiMap) { + for (range in ranges) { + for (diagnostic in diagnostics) { + val fixes = fixesMap[diagnostic] + val annotation = create(diagnostic, range, holder) + + fixes.forEach { + when (it) { + is KotlinUniversalQuickFix -> annotation.registerUniversalFix(it, null, null) + is IntentionAction -> annotation.registerFix(it) + } + } + + if (diagnostic.severity == Severity.WARNING) { + annotation.problemGroup = KotlinSuppressableWarningProblemGroup(diagnostic.factory) + + if (fixes.isEmpty()) { + // if there are no quick fixes we need to register an EmptyIntentionAction to enable 'suppress' actions + annotation.registerFix(EmptyIntentionAction(diagnostic.factory.name)) + } + } + } + } + } + + private fun create(diagnostic: Diagnostic, range: TextRange, holder: AnnotationHolder): Annotation = + Diagnostic2Annotation.createAnnotation( + diagnostic, + range, + holder, + nonDefaultMessage, + textAttributes, + highlightType, + IdeErrorMessages::render + ) +} diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/AnnotationPresentationInfo.kt.201 b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/AnnotationPresentationInfo.kt.201 deleted file mode 100644 index cfb3997b2c1..00000000000 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/highlighter/AnnotationPresentationInfo.kt.201 +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.idea.highlighter - -import com.intellij.codeInsight.intention.EmptyIntentionAction -import com.intellij.codeInsight.intention.IntentionAction -import com.intellij.codeInspection.ProblemHighlightType -import com.intellij.lang.annotation.AnnotationBuilder -import com.intellij.lang.annotation.AnnotationHolder -import com.intellij.lang.annotation.HighlightSeverity -import com.intellij.openapi.application.ApplicationManager -import com.intellij.openapi.editor.colors.TextAttributesKey -import com.intellij.openapi.util.TextRange -import com.intellij.util.containers.MultiMap -import com.intellij.xml.util.XmlStringUtil -import org.jetbrains.kotlin.diagnostics.Diagnostic -import org.jetbrains.kotlin.diagnostics.Severity -import org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages -import org.jetbrains.kotlin.idea.inspections.KotlinUniversalQuickFix - -class AnnotationPresentationInfo( - val ranges: List, - val nonDefaultMessage: String? = null, - val highlightType: ProblemHighlightType? = null, - val textAttributes: TextAttributesKey? = null -) { - - fun processDiagnostics(holder: AnnotationHolder, diagnostics: List, fixesMap: MultiMap) { - for (range in ranges) { - for (diagnostic in diagnostics) { - val fixes = fixesMap[diagnostic] - create(diagnostic, range, holder) { annotation -> - fixes.forEach { - when (it) { - is KotlinUniversalQuickFix -> annotation.newFix(it).universal().registerFix() - is IntentionAction -> annotation.newFix(it).registerFix() - } - } - - if (diagnostic.severity == Severity.WARNING) { - annotation.problemGroup(KotlinSuppressableWarningProblemGroup(diagnostic.factory)) - - if (fixes.isEmpty()) { - // if there are no quick fixes we need to register an EmptyIntentionAction to enable 'suppress' actions - annotation.newFix(EmptyIntentionAction(diagnostic.factory.name)).registerFix() - } - } - } - } - } - } - - private fun create(diagnostic: Diagnostic, range: TextRange, holder: AnnotationHolder, consumer: (AnnotationBuilder) -> Unit) { - val severity = when (diagnostic.severity) { - Severity.ERROR -> HighlightSeverity.ERROR - Severity.WARNING -> if (highlightType == ProblemHighlightType.WEAK_WARNING) { - HighlightSeverity.WEAK_WARNING - } else HighlightSeverity.WARNING - Severity.INFO -> HighlightSeverity.WEAK_WARNING - } - - holder.newAnnotation(severity, nonDefaultMessage ?: getDefaultMessage(diagnostic)) - .range(range) - .tooltip(getMessage(diagnostic)) - .also { builder -> highlightType?.let { builder.highlightType(it) } } - .also { builder -> textAttributes?.let { builder.textAttributes(it) } } - .also { consumer(it) } - .create() - } - - private fun getMessage(diagnostic: Diagnostic): String { - var message = IdeErrorMessages.render(diagnostic) - if (ApplicationManager.getApplication().isInternal || ApplicationManager.getApplication().isUnitTestMode) { - val factoryName = diagnostic.factory.name - message = if (message.startsWith("")) { - "[$factoryName] ${message.substring("".length)}" - } else { - "[$factoryName] $message" - } - } - if (!message.startsWith("")) { - message = "${XmlStringUtil.escapeString(message)}" - } - return message - } - - private fun getDefaultMessage(diagnostic: Diagnostic): String { - val message = DefaultErrorMessages.render(diagnostic) - if (ApplicationManager.getApplication().isInternal || ApplicationManager.getApplication().isUnitTestMode) { - return "[${diagnostic.factory.name}] $message" - } - return message - } - -} diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/modules/ModuleHighlightUtil2.java b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/modules/ModuleHighlightUtil2.java index 053f070e51d..0d3c844510a 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/modules/ModuleHighlightUtil2.java +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/modules/ModuleHighlightUtil2.java @@ -64,7 +64,7 @@ public class ModuleHighlightUtil2 { } } else if (root.getFileSystem() instanceof JarFileSystem && "jar".equalsIgnoreCase(root.getExtension())) { - return LightJavaModule.getModule(PsiManager.getInstance(project), root); + return LightJavaModule.findModule(PsiManager.getInstance(project), root); } } else if ((root = index.getSourceRootForFile(file)) != null) { diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/modules/ModuleHighlightUtil2.java.201 b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/modules/ModuleHighlightUtil2.java.193 similarity index 98% rename from idea/idea-analysis/src/org/jetbrains/kotlin/idea/modules/ModuleHighlightUtil2.java.201 rename to idea/idea-analysis/src/org/jetbrains/kotlin/idea/modules/ModuleHighlightUtil2.java.193 index 0d3c844510a..053f070e51d 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/modules/ModuleHighlightUtil2.java.201 +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/modules/ModuleHighlightUtil2.java.193 @@ -64,7 +64,7 @@ public class ModuleHighlightUtil2 { } } else if (root.getFileSystem() instanceof JarFileSystem && "jar".equalsIgnoreCase(root.getExtension())) { - return LightJavaModule.findModule(PsiManager.getInstance(project), root); + return LightJavaModule.getModule(PsiManager.getInstance(project), root); } } else if ((root = index.getSourceRootForFile(file)) != null) { diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinReferenceScopeOptimizer.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinReferenceScopeOptimizer.kt index 4a72c824f0a..65c73521073 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinReferenceScopeOptimizer.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinReferenceScopeOptimizer.kt @@ -6,12 +6,9 @@ package org.jetbrains.kotlin.idea.search.ideaExtensions import com.intellij.ide.highlighter.JavaFileType +import com.intellij.openapi.vfs.VirtualFile import com.intellij.psi.PsiElement -import com.intellij.psi.impl.cache.CacheManager -import com.intellij.psi.search.GlobalSearchScope -import com.intellij.psi.search.ScopeOptimizer -import com.intellij.psi.search.SearchScope -import com.intellij.psi.search.UsageSearchContext +import com.intellij.psi.search.* import org.jetbrains.kotlin.fileClasses.javaFileFacadeFqName import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.search.excludeFileTypes @@ -31,19 +28,22 @@ class KotlinReferenceScopeOptimizer : ScopeOptimizer { val file = callable.parent as KtFile val packageName = file.packageFqName.takeUnless { it.isRoot } ?: return null val project = file.project - val cacheManager = CacheManager.SERVICE.getInstance(project) + val searchHelper = PsiSearchHelper.getInstance(project) val kotlinScope = GlobalSearchScope.getScopeRestrictedByFileTypes(useScope, KotlinFileType.INSTANCE) val javaScope = GlobalSearchScope.getScopeRestrictedByFileTypes(useScope, JavaFileType.INSTANCE) val restScope = useScope.excludeFileTypes(KotlinFileType.INSTANCE, JavaFileType.INSTANCE) as GlobalSearchScope - //TODO: use all components of package name? - val shortPackageName = packageName.shortName().identifier - val kotlinFiles = cacheManager.getVirtualFilesWithWord(shortPackageName, UsageSearchContext.IN_CODE, kotlinScope, true) + val kotlinFiles = mutableListOf() + searchHelper.processCandidateFilesForText(kotlinScope, UsageSearchContext.IN_CODE, true, packageName.asString()) { + kotlinFiles.add(it) + } - val javaFacadeName = file.javaFileFacadeFqName.shortName().identifier - val javaFiles = cacheManager.getVirtualFilesWithWord(javaFacadeName, UsageSearchContext.IN_CODE, javaScope, true) + val javaFiles = mutableListOf() + searchHelper.processCandidateFilesForText(javaScope, UsageSearchContext.IN_CODE, true, file.javaFileFacadeFqName.asString()) { + javaFiles.add(it) + } - return GlobalSearchScope.filesScope(project, (kotlinFiles + javaFiles).asList()).uniteWith(restScope) + return GlobalSearchScope.filesScope(project, kotlinFiles + javaFiles).uniteWith(restScope) } } \ No newline at end of file diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinReferenceScopeOptimizer.kt.201 b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinReferenceScopeOptimizer.kt.193 similarity index 65% rename from idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinReferenceScopeOptimizer.kt.201 rename to idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinReferenceScopeOptimizer.kt.193 index 65c73521073..4a72c824f0a 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinReferenceScopeOptimizer.kt.201 +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinReferenceScopeOptimizer.kt.193 @@ -6,9 +6,12 @@ package org.jetbrains.kotlin.idea.search.ideaExtensions import com.intellij.ide.highlighter.JavaFileType -import com.intellij.openapi.vfs.VirtualFile import com.intellij.psi.PsiElement -import com.intellij.psi.search.* +import com.intellij.psi.impl.cache.CacheManager +import com.intellij.psi.search.GlobalSearchScope +import com.intellij.psi.search.ScopeOptimizer +import com.intellij.psi.search.SearchScope +import com.intellij.psi.search.UsageSearchContext import org.jetbrains.kotlin.fileClasses.javaFileFacadeFqName import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.search.excludeFileTypes @@ -28,22 +31,19 @@ class KotlinReferenceScopeOptimizer : ScopeOptimizer { val file = callable.parent as KtFile val packageName = file.packageFqName.takeUnless { it.isRoot } ?: return null val project = file.project - val searchHelper = PsiSearchHelper.getInstance(project) + val cacheManager = CacheManager.SERVICE.getInstance(project) val kotlinScope = GlobalSearchScope.getScopeRestrictedByFileTypes(useScope, KotlinFileType.INSTANCE) val javaScope = GlobalSearchScope.getScopeRestrictedByFileTypes(useScope, JavaFileType.INSTANCE) val restScope = useScope.excludeFileTypes(KotlinFileType.INSTANCE, JavaFileType.INSTANCE) as GlobalSearchScope - val kotlinFiles = mutableListOf() - searchHelper.processCandidateFilesForText(kotlinScope, UsageSearchContext.IN_CODE, true, packageName.asString()) { - kotlinFiles.add(it) - } + //TODO: use all components of package name? + val shortPackageName = packageName.shortName().identifier + val kotlinFiles = cacheManager.getVirtualFilesWithWord(shortPackageName, UsageSearchContext.IN_CODE, kotlinScope, true) - val javaFiles = mutableListOf() - searchHelper.processCandidateFilesForText(javaScope, UsageSearchContext.IN_CODE, true, file.javaFileFacadeFqName.asString()) { - javaFiles.add(it) - } + val javaFacadeName = file.javaFileFacadeFqName.shortName().identifier + val javaFiles = cacheManager.getVirtualFilesWithWord(javaFacadeName, UsageSearchContext.IN_CODE, javaScope, true) - return GlobalSearchScope.filesScope(project, kotlinFiles + javaFiles).uniteWith(restScope) + return GlobalSearchScope.filesScope(project, (kotlinFiles + javaFiles).asList()).uniteWith(restScope) } } \ No newline at end of file diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/handlers/compat.kt b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/handlers/compat.kt index fdd15cc431c..b40f0149539 100644 --- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/handlers/compat.kt +++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/handlers/compat.kt @@ -5,9 +5,10 @@ package org.jetbrains.kotlin.idea.completion.test.handlers +import com.intellij.codeInsight.lookup.LookupFocusDegree import com.intellij.codeInsight.lookup.impl.LookupImpl // FIX ME WHEN BUNCH 193 REMOVED fun LookupImpl.setFocusedFocusDegree() { - focusDegree = LookupImpl.FocusDegree.FOCUSED + this.lookupFocusDegree = LookupFocusDegree.FOCUSED } \ No newline at end of file diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/handlers/compat.kt.201 b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/handlers/compat.kt.193 similarity index 78% rename from idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/handlers/compat.kt.201 rename to idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/handlers/compat.kt.193 index b40f0149539..fdd15cc431c 100644 --- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/handlers/compat.kt.201 +++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/handlers/compat.kt.193 @@ -5,10 +5,9 @@ package org.jetbrains.kotlin.idea.completion.test.handlers -import com.intellij.codeInsight.lookup.LookupFocusDegree import com.intellij.codeInsight.lookup.impl.LookupImpl // FIX ME WHEN BUNCH 193 REMOVED fun LookupImpl.setFocusedFocusDegree() { - this.lookupFocusDegree = LookupFocusDegree.FOCUSED + focusDegree = LookupImpl.FocusDegree.FOCUSED } \ No newline at end of file diff --git a/idea/idea-frontend-independent/src/org/jetbrains/kotlin/idea/caches/trackers/KotlinCodeBlockModificationListener.kt b/idea/idea-frontend-independent/src/org/jetbrains/kotlin/idea/caches/trackers/KotlinCodeBlockModificationListener.kt index 49e33e28d1d..6a49adbc373 100644 --- a/idea/idea-frontend-independent/src/org/jetbrains/kotlin/idea/caches/trackers/KotlinCodeBlockModificationListener.kt +++ b/idea/idea-frontend-independent/src/org/jetbrains/kotlin/idea/caches/trackers/KotlinCodeBlockModificationListener.kt @@ -1,28 +1,27 @@ /* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ - package org.jetbrains.kotlin.idea.caches.trackers import com.intellij.openapi.project.Project import com.intellij.openapi.util.SimpleModificationTracker import com.intellij.pom.tree.TreeAspect +import com.intellij.psi.util.PsiModificationTracker import org.jetbrains.kotlin.idea.KotlinLanguage +import org.jetbrains.kotlin.idea.util.application.getServiceSafe +import org.jetbrains.kotlin.psi.KtFile /** * Tested in OutOfBlockModificationTestGenerated */ // FIX ME WHEN BUNCH 193 REMOVED -class KotlinCodeBlockModificationListener( - project: Project, - treeAspect: TreeAspect -) : KotlinCodeBlockModificationListenerCompat(project) { +class KotlinCodeBlockModificationListener(project: Project) : KotlinCodeBlockModificationListenerCompat(project) { init { init( - treeAspect, + TreeAspect.getInstance(project), incOCBCounter = { ktFile -> kotlinOutOfCodeBlockTrackerImpl.incModificationCount() perModuleOutOfCodeBlockTrackerUpdater.onKotlinPhysicalFileOutOfBlockChange(ktFile, true) @@ -31,7 +30,6 @@ class KotlinCodeBlockModificationListener( SimpleModificationTracker() }, psiModificationTrackerListener = { - @Suppress("UnstableApiUsage") val kotlinTrackerInternalIDECount = modificationTrackerImpl.forLanguage(KotlinLanguage.INSTANCE).modificationCount if (kotlinModificationTracker == kotlinTrackerInternalIDECount) { @@ -47,7 +45,6 @@ class KotlinCodeBlockModificationListener( } companion object { - fun getInstance(project: Project): KotlinCodeBlockModificationListener = - project.getComponent(KotlinCodeBlockModificationListener::class.java) + fun getInstance(project: Project): KotlinCodeBlockModificationListener = project.getServiceSafe() } -} +} \ No newline at end of file diff --git a/idea/idea-frontend-independent/src/org/jetbrains/kotlin/idea/caches/trackers/KotlinCodeBlockModificationListener.kt.201 b/idea/idea-frontend-independent/src/org/jetbrains/kotlin/idea/caches/trackers/KotlinCodeBlockModificationListener.kt.193 similarity index 79% rename from idea/idea-frontend-independent/src/org/jetbrains/kotlin/idea/caches/trackers/KotlinCodeBlockModificationListener.kt.201 rename to idea/idea-frontend-independent/src/org/jetbrains/kotlin/idea/caches/trackers/KotlinCodeBlockModificationListener.kt.193 index 6a49adbc373..49e33e28d1d 100644 --- a/idea/idea-frontend-independent/src/org/jetbrains/kotlin/idea/caches/trackers/KotlinCodeBlockModificationListener.kt.201 +++ b/idea/idea-frontend-independent/src/org/jetbrains/kotlin/idea/caches/trackers/KotlinCodeBlockModificationListener.kt.193 @@ -1,27 +1,28 @@ /* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ + package org.jetbrains.kotlin.idea.caches.trackers import com.intellij.openapi.project.Project import com.intellij.openapi.util.SimpleModificationTracker import com.intellij.pom.tree.TreeAspect -import com.intellij.psi.util.PsiModificationTracker import org.jetbrains.kotlin.idea.KotlinLanguage -import org.jetbrains.kotlin.idea.util.application.getServiceSafe -import org.jetbrains.kotlin.psi.KtFile /** * Tested in OutOfBlockModificationTestGenerated */ // FIX ME WHEN BUNCH 193 REMOVED -class KotlinCodeBlockModificationListener(project: Project) : KotlinCodeBlockModificationListenerCompat(project) { +class KotlinCodeBlockModificationListener( + project: Project, + treeAspect: TreeAspect +) : KotlinCodeBlockModificationListenerCompat(project) { init { init( - TreeAspect.getInstance(project), + treeAspect, incOCBCounter = { ktFile -> kotlinOutOfCodeBlockTrackerImpl.incModificationCount() perModuleOutOfCodeBlockTrackerUpdater.onKotlinPhysicalFileOutOfBlockChange(ktFile, true) @@ -30,6 +31,7 @@ class KotlinCodeBlockModificationListener(project: Project) : KotlinCodeBlockMod SimpleModificationTracker() }, psiModificationTrackerListener = { + @Suppress("UnstableApiUsage") val kotlinTrackerInternalIDECount = modificationTrackerImpl.forLanguage(KotlinLanguage.INSTANCE).modificationCount if (kotlinModificationTracker == kotlinTrackerInternalIDECount) { @@ -45,6 +47,7 @@ class KotlinCodeBlockModificationListener(project: Project) : KotlinCodeBlockMod } companion object { - fun getInstance(project: Project): KotlinCodeBlockModificationListener = project.getServiceSafe() + fun getInstance(project: Project): KotlinCodeBlockModificationListener = + project.getComponent(KotlinCodeBlockModificationListener::class.java) } -} \ No newline at end of file +} diff --git a/idea/idea-frontend-independent/src/org/jetbrains/kotlin/idea/util/ApplicationUtils.kt b/idea/idea-frontend-independent/src/org/jetbrains/kotlin/idea/util/ApplicationUtils.kt index de743788afd..a6b388083f0 100644 --- a/idea/idea-frontend-independent/src/org/jetbrains/kotlin/idea/util/ApplicationUtils.kt +++ b/idea/idea-frontend-independent/src/org/jetbrains/kotlin/idea/util/ApplicationUtils.kt @@ -1,6 +1,17 @@ /* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + * Copyright 2010-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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. */ package org.jetbrains.kotlin.idea.util.application @@ -8,8 +19,8 @@ package org.jetbrains.kotlin.idea.util.application import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.command.CommandProcessor import com.intellij.openapi.components.ComponentManager +import com.intellij.openapi.progress.impl.CancellationCheck import com.intellij.openapi.project.Project -import org.jetbrains.annotations.Nls fun runReadAction(action: () -> T): T { return ApplicationManager.getApplication().runReadAction(action) @@ -19,22 +30,22 @@ fun runWriteAction(action: () -> T): T { return ApplicationManager.getApplication().runWriteAction(action) } -fun Project.executeWriteCommand(@Nls name: String, command: () -> Unit) { +fun Project.executeWriteCommand(name: String, command: () -> Unit) { CommandProcessor.getInstance().executeCommand(this, { runWriteAction(command) }, name, null) } -fun Project.executeWriteCommand(@Nls name: String, groupId: Any? = null, command: () -> T): T { +fun Project.executeWriteCommand(name: String, groupId: Any? = null, command: () -> T): T { return executeCommand(name, groupId) { runWriteAction(command) } } -fun Project.executeCommand(@Nls name: String, groupId: Any? = null, command: () -> T): T { +fun Project.executeCommand(name: String, groupId: Any? = null, command: () -> T): T { @Suppress("UNCHECKED_CAST") var result: T = null as T CommandProcessor.getInstance().executeCommand(this, { result = command() }, name, groupId) @Suppress("USELESS_CAST") return result as T } -fun runWithCancellationCheck(block: () -> T): T = block() +fun runWithCancellationCheck(block: () -> T): T = CancellationCheck.runWithCancellationCheck(block) inline fun executeOnPooledThread(crossinline action: () -> Unit) = ApplicationManager.getApplication().executeOnPooledThread { action() } diff --git a/idea/idea-frontend-independent/src/org/jetbrains/kotlin/idea/util/ApplicationUtils.kt.201 b/idea/idea-frontend-independent/src/org/jetbrains/kotlin/idea/util/ApplicationUtils.kt.193 similarity index 59% rename from idea/idea-frontend-independent/src/org/jetbrains/kotlin/idea/util/ApplicationUtils.kt.201 rename to idea/idea-frontend-independent/src/org/jetbrains/kotlin/idea/util/ApplicationUtils.kt.193 index a6b388083f0..de743788afd 100644 --- a/idea/idea-frontend-independent/src/org/jetbrains/kotlin/idea/util/ApplicationUtils.kt.201 +++ b/idea/idea-frontend-independent/src/org/jetbrains/kotlin/idea/util/ApplicationUtils.kt.193 @@ -1,17 +1,6 @@ /* - * Copyright 2010-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. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ package org.jetbrains.kotlin.idea.util.application @@ -19,8 +8,8 @@ package org.jetbrains.kotlin.idea.util.application import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.command.CommandProcessor import com.intellij.openapi.components.ComponentManager -import com.intellij.openapi.progress.impl.CancellationCheck import com.intellij.openapi.project.Project +import org.jetbrains.annotations.Nls fun runReadAction(action: () -> T): T { return ApplicationManager.getApplication().runReadAction(action) @@ -30,22 +19,22 @@ fun runWriteAction(action: () -> T): T { return ApplicationManager.getApplication().runWriteAction(action) } -fun Project.executeWriteCommand(name: String, command: () -> Unit) { +fun Project.executeWriteCommand(@Nls name: String, command: () -> Unit) { CommandProcessor.getInstance().executeCommand(this, { runWriteAction(command) }, name, null) } -fun Project.executeWriteCommand(name: String, groupId: Any? = null, command: () -> T): T { +fun Project.executeWriteCommand(@Nls name: String, groupId: Any? = null, command: () -> T): T { return executeCommand(name, groupId) { runWriteAction(command) } } -fun Project.executeCommand(name: String, groupId: Any? = null, command: () -> T): T { +fun Project.executeCommand(@Nls name: String, groupId: Any? = null, command: () -> T): T { @Suppress("UNCHECKED_CAST") var result: T = null as T CommandProcessor.getInstance().executeCommand(this, { result = command() }, name, groupId) @Suppress("USELESS_CAST") return result as T } -fun runWithCancellationCheck(block: () -> T): T = CancellationCheck.runWithCancellationCheck(block) +fun runWithCancellationCheck(block: () -> T): T = block() inline fun executeOnPooledThread(crossinline action: () -> Unit) = ApplicationManager.getApplication().executeOnPooledThread { action() } diff --git a/idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/EditorPosition.java b/idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/EditorPosition.java.193 similarity index 100% rename from idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/EditorPosition.java rename to idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/EditorPosition.java.193 diff --git a/idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/EditorReport.java b/idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/EditorReport.java.193 similarity index 100% rename from idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/EditorReport.java rename to idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/EditorReport.java.193 diff --git a/idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/EditorReportSeverity.java b/idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/EditorReportSeverity.java.193 similarity index 100% rename from idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/EditorReportSeverity.java rename to idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/EditorReportSeverity.java.193 diff --git a/idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/KotlinDslModelsParameters.java b/idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/KotlinDslModelsParameters.java.193 similarity index 100% rename from idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/KotlinDslModelsParameters.java rename to idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/KotlinDslModelsParameters.java.193 diff --git a/idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/KotlinDslScriptModel.java b/idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/KotlinDslScriptModel.java.193 similarity index 100% rename from idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/KotlinDslScriptModel.java rename to idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/KotlinDslScriptModel.java.193 diff --git a/idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/KotlinDslScriptsModel.java b/idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/KotlinDslScriptsModel.java.193 similarity index 100% rename from idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/KotlinDslScriptsModel.java rename to idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/KotlinDslScriptsModel.java.193 diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/AbstractProjectResolverExtensionCompat.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/AbstractProjectResolverExtensionCompat.kt index ec55659d9e8..dff12e159aa 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/AbstractProjectResolverExtensionCompat.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/AbstractProjectResolverExtensionCompat.kt @@ -13,8 +13,8 @@ import org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExten // FIX ME WHEN BUNCH 193 REMOVED abstract class AbstractProjectResolverExtensionCompat : AbstractProjectResolverExtension() { - override fun createModule(gradleModule: IdeaModule, projectDataNode: DataNode): DataNode { - return super.createModule(gradleModule, projectDataNode).also { + override fun createModule(gradleModule: IdeaModule, projectDataNode: DataNode): DataNode? { + return super.createModule(gradleModule, projectDataNode)?.also { initializeModuleNode(gradleModule, it, projectDataNode) } } diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/AbstractProjectResolverExtensionCompat.kt.201 b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/AbstractProjectResolverExtensionCompat.kt.193 similarity index 94% rename from idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/AbstractProjectResolverExtensionCompat.kt.201 rename to idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/AbstractProjectResolverExtensionCompat.kt.193 index dff12e159aa..ec55659d9e8 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/AbstractProjectResolverExtensionCompat.kt.201 +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/AbstractProjectResolverExtensionCompat.kt.193 @@ -13,8 +13,8 @@ import org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExten // FIX ME WHEN BUNCH 193 REMOVED abstract class AbstractProjectResolverExtensionCompat : AbstractProjectResolverExtension() { - override fun createModule(gradleModule: IdeaModule, projectDataNode: DataNode): DataNode? { - return super.createModule(gradleModule, projectDataNode)?.also { + override fun createModule(gradleModule: IdeaModule, projectDataNode: DataNode): DataNode { + return super.createModule(gradleModule, projectDataNode).also { initializeModuleNode(gradleModule, it, projectDataNode) } } diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinNonJvmGutterConfigurator.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinNonJvmGutterConfigurator.kt.193 similarity index 100% rename from idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinNonJvmGutterConfigurator.kt rename to idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinNonJvmGutterConfigurator.kt.193 diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/AsyncFileChangeListenerHelper.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/AsyncFileChangeListenerHelper.kt index ccc50c982c4..77ed5aa9825 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/AsyncFileChangeListenerHelper.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/AsyncFileChangeListenerHelper.kt @@ -5,7 +5,8 @@ package org.jetbrains.kotlin.idea.scripting.gradle -import com.intellij.openapi.externalSystem.service.project.autoimport.AsyncFileChangeListenerBase +import com.intellij.openapi.externalSystem.autoimport.AsyncFileChangeListenerBase +import com.intellij.openapi.vfs.LocalFileSystem import com.intellij.openapi.vfs.VirtualFile import com.intellij.openapi.vfs.VirtualFileManager import com.intellij.openapi.vfs.newvfs.events.VFileEvent @@ -17,19 +18,27 @@ fun addVfsListener( ) { VirtualFileManager.getInstance().addAsyncFileListener( object : AsyncFileChangeListenerBase() { + val changedFiles = mutableListOf() + + override fun init() { + changedFiles.clear() + } + override fun isRelevant(path: String): Boolean { return buildRootsManager.maybeAffectedGradleProjectFile(path) } override fun updateFile(file: VirtualFile, event: VFileEvent) { - watcher.fileChanged(event.path, file.timeStamp) + changedFiles.add(event.path) } - // do nothing - override fun prepareFileDeletion(file: VirtualFile) {} - override fun apply() {} - override fun reset() {} - + override fun apply() { + changedFiles.forEach { + LocalFileSystem.getInstance().findFileByPath(it)?.let { f -> + watcher.fileChanged(f.path, f.timeStamp) + } + } + } }, watcher.project ) diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/AsyncFileChangeListenerHelper.kt.201 b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/AsyncFileChangeListenerHelper.kt.193 similarity index 62% rename from idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/AsyncFileChangeListenerHelper.kt.201 rename to idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/AsyncFileChangeListenerHelper.kt.193 index 77ed5aa9825..ccc50c982c4 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/AsyncFileChangeListenerHelper.kt.201 +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/AsyncFileChangeListenerHelper.kt.193 @@ -5,8 +5,7 @@ package org.jetbrains.kotlin.idea.scripting.gradle -import com.intellij.openapi.externalSystem.autoimport.AsyncFileChangeListenerBase -import com.intellij.openapi.vfs.LocalFileSystem +import com.intellij.openapi.externalSystem.service.project.autoimport.AsyncFileChangeListenerBase import com.intellij.openapi.vfs.VirtualFile import com.intellij.openapi.vfs.VirtualFileManager import com.intellij.openapi.vfs.newvfs.events.VFileEvent @@ -18,27 +17,19 @@ fun addVfsListener( ) { VirtualFileManager.getInstance().addAsyncFileListener( object : AsyncFileChangeListenerBase() { - val changedFiles = mutableListOf() - - override fun init() { - changedFiles.clear() - } - override fun isRelevant(path: String): Boolean { return buildRootsManager.maybeAffectedGradleProjectFile(path) } override fun updateFile(file: VirtualFile, event: VFileEvent) { - changedFiles.add(event.path) + watcher.fileChanged(event.path, file.timeStamp) } - override fun apply() { - changedFiles.forEach { - LocalFileSystem.getInstance().findFileByPath(it)?.let { f -> - watcher.fileChanged(f.path, f.timeStamp) - } - } - } + // do nothing + override fun prepareFileDeletion(file: VirtualFile) {} + override fun apply() {} + override fun reset() {} + }, watcher.project ) diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleImportHelper.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleImportHelper.kt index 472e342dfef..a26d34d684d 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleImportHelper.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleImportHelper.kt @@ -7,31 +7,32 @@ package org.jetbrains.kotlin.idea.scripting.gradle -import com.intellij.notification.* +import com.intellij.diff.util.DiffUtil import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.actionSystem.AnActionEvent -import com.intellij.openapi.application.ApplicationManager -import com.intellij.openapi.components.ServiceManager +import com.intellij.openapi.actionSystem.CommonDataKeys +import com.intellij.openapi.editor.Editor import com.intellij.openapi.externalSystem.importing.ImportSpecBuilder -import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil import com.intellij.openapi.externalSystem.util.ExternalSystemUtil +import com.intellij.openapi.fileEditor.FileDocumentManager import com.intellij.openapi.project.Project -import com.intellij.openapi.util.Key import com.intellij.openapi.util.registry.Registry import com.intellij.openapi.vfs.VirtualFile -import org.gradle.util.GradleVersion +import com.intellij.testFramework.LightVirtualFileBase +import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.KotlinIcons import org.jetbrains.kotlin.idea.KotlinIdeaGradleBundle +import org.jetbrains.kotlin.idea.core.script.settings.KotlinScriptingSettings +import org.jetbrains.kotlin.idea.scripting.gradle.importing.KotlinDslScriptModelResolver import org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRoot import org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsManager -import org.jetbrains.kotlin.idea.util.application.getServiceSafe -import org.jetbrains.kotlin.psi.UserDataProperty -import org.jetbrains.plugins.gradle.service.GradleInstallationManager +import org.jetbrains.kotlin.scripting.definitions.findScriptDefinition +import org.jetbrains.plugins.gradle.service.project.GradlePartialResolverPolicy import org.jetbrains.plugins.gradle.settings.GradleProjectSettings import org.jetbrains.plugins.gradle.util.GradleConstants val scriptConfigurationsNeedToBeUpdatedBalloon - get() = Registry.`is`("kotlin.gradle.scripts.scriptConfigurationsNeedToBeUpdatedBalloon", false) + get() = Registry.`is`("kotlin.gradle.scripts.scriptConfigurationsNeedToBeUpdatedFloatingNotification", true) fun runPartialGradleImportForAllRoots(project: Project) { GradleBuildRootsManager.getInstance(project).getAllRoots().forEach { root -> @@ -45,97 +46,83 @@ fun runPartialGradleImport(project: Project, root: GradleBuildRoot) { ExternalSystemUtil.refreshProject( root.pathPrefix, ImportSpecBuilder(project, GradleConstants.SYSTEM_ID) - .build() + .projectResolverPolicy( + GradlePartialResolverPolicy { it is KotlinDslScriptModelResolver } + ) ) } -fun getMissingConfigurationActionText() = KotlinIdeaGradleBundle.message("action.label.import.project") +fun getMissingConfigurationActionText() = KotlinIdeaGradleBundle.message("action.text.load.script.configurations") -fun autoReloadScriptConfigurations(project: Project, root: GradleBuildRoot): Boolean { - return ExternalSystemApiUtil - .getSettings(project, GradleConstants.SYSTEM_ID) - .getLinkedProjectSettings(root.pathPrefix) - ?.isUseAutoImport ?: false +fun autoReloadScriptConfigurations(project: Project, file: VirtualFile): Boolean { + val definition = file.findScriptDefinition(project) ?: return false + + return KotlinScriptingSettings.getInstance(project).autoReloadConfigurations(definition) } -private const val kotlinDslNotificationGroupId = "Gradle Kotlin DSL Scripts" -private var Project.notificationPanel: ScriptConfigurationChangedNotification? - by UserDataProperty(Key.create("load.script.configuration.panel")) - fun scriptConfigurationsNeedToBeUpdated(project: Project, file: VirtualFile) { - if (!scriptConfigurationsNeedToBeUpdatedBalloon) return - - val root = GradleBuildRootsManager.getInstance(project).getScriptInfo(file)?.buildRoot ?: return - if (autoReloadScriptConfigurations(project, root)) { - // import should be run automatically by Gradle plugin - return - } - - val existingPanel = project.notificationPanel - if (existingPanel != null) { - return - } - - val notificationGroup = NotificationGroup.findRegisteredGroup(kotlinDslNotificationGroupId) - if (notificationGroup == null) { - NotificationsConfiguration.getNotificationsConfiguration().register( - kotlinDslNotificationGroupId, NotificationDisplayType.STICKY_BALLOON, false - ) - } - - val notification = ScriptConfigurationChangedNotification(project) - project.notificationPanel = notification - notification.notify(project) -} - -fun scriptConfigurationsAreUpToDate(project: Project): Boolean { - if (project.notificationPanel == null) return false - project.notificationPanel?.expire() - return true -} - -private class ScriptConfigurationChangedNotification(val project: Project) : - Notification( - kotlinDslNotificationGroupId, - KotlinIcons.LOAD_SCRIPT_CONFIGURATION, - KotlinIdeaGradleBundle.message("notification.title.script.configuration.has.been.changed"), - null, - KotlinIdeaGradleBundle.message("notification.text.script.configuration.has.been.changed"), - NotificationType.INFORMATION, - null - ) { - - init { - addAction(LoadConfigurationAction()) - addAction(NotificationAction.createSimple(KotlinIdeaGradleBundle.message("action.label.enable.auto.import")) { - GradleBuildRootsManager.getInstance(project).getAllRoots().forEach { root -> - val projectSettings = getGradleProjectSettings(project).find { it.externalProjectPath == root.pathPrefix } - if (projectSettings != null) { - projectSettings.isUseAutoImport = true - } - runPartialGradleImport(project, root) - } - }) - } - - override fun expire() { - super.expire() - - project.notificationPanel = null - } - - private class LoadConfigurationAction : AnAction(KotlinIdeaGradleBundle.message("action.label.import.project")) { - override fun actionPerformed(e: AnActionEvent) { - val project = e.project ?: return - runPartialGradleImportForAllRoots(project) + if (autoReloadScriptConfigurations(project, file)) { + GradleBuildRootsManager.getInstance(project).getScriptInfo(file)?.buildRoot?.let { + runPartialGradleImport(project, it) } + } else { + // notification is shown in LoadConfigurationAction + } +} + +fun scriptConfigurationsAreUpToDate(project: Project): Boolean = true + +class LoadConfigurationAction : AnAction( + KotlinIdeaGradleBundle.message("action.text.load.script.configurations"), + KotlinIdeaGradleBundle.message("action.description.load.script.configurations"), + KotlinIcons.LOAD_SCRIPT_CONFIGURATION +) { + override fun actionPerformed(e: AnActionEvent) { + val project = e.project ?: return + val editor = e.getData(CommonDataKeys.EDITOR) ?: return + val file = getKotlinScriptFile(editor) ?: return + val root = GradleBuildRootsManager.getInstance(project).getScriptInfo(file)?.buildRoot ?: return + + runPartialGradleImport(project, root) + } + + override fun update(e: AnActionEvent) { + ensureValidActionVisibility(e) + } + + private fun ensureValidActionVisibility(e: AnActionEvent) { + val editor = e.getData(CommonDataKeys.EDITOR) ?: return + + e.presentation.isVisible = getNotificationVisibility(editor) + } + + private fun getNotificationVisibility(editor: Editor): Boolean { + if (!scriptConfigurationsNeedToBeUpdatedBalloon) return false + + if (DiffUtil.isDiffEditor(editor)) return false + + val project = editor.project ?: return false + val file = getKotlinScriptFile(editor) ?: return false + + if (autoReloadScriptConfigurations(project, file)) { + return false + } + + return GradleBuildRootsManager.getInstance(project).isConfigurationOutOfDate(file) + } + + private fun getKotlinScriptFile(editor: Editor): VirtualFile? { + return FileDocumentManager.getInstance() + .getFile(editor.document) + ?.takeIf { + it !is LightVirtualFileBase + && it.isValid + && it.fileType == KotlinFileType.INSTANCE + && isGradleKotlinScript(it) + } } } fun getGradleVersion(project: Project, settings: GradleProjectSettings): String { - // workaround for bug in settings.resolveGradleVersion().version (fixed in 201) - return GradleInstallationManager.getGradleVersion( - ServiceManager.getService(GradleInstallationManager::class.java) - .getGradleHome(project, settings.externalProjectPath)?.path - ) ?: GradleVersion.current().version + return settings.resolveGradleVersion().version } \ No newline at end of file diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleImportHelper.kt.193 b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleImportHelper.kt.193 new file mode 100644 index 00000000000..472e342dfef --- /dev/null +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleImportHelper.kt.193 @@ -0,0 +1,141 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +@file:Suppress("UnstableApiUsage") + +package org.jetbrains.kotlin.idea.scripting.gradle + +import com.intellij.notification.* +import com.intellij.openapi.actionSystem.AnAction +import com.intellij.openapi.actionSystem.AnActionEvent +import com.intellij.openapi.application.ApplicationManager +import com.intellij.openapi.components.ServiceManager +import com.intellij.openapi.externalSystem.importing.ImportSpecBuilder +import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil +import com.intellij.openapi.externalSystem.util.ExternalSystemUtil +import com.intellij.openapi.project.Project +import com.intellij.openapi.util.Key +import com.intellij.openapi.util.registry.Registry +import com.intellij.openapi.vfs.VirtualFile +import org.gradle.util.GradleVersion +import org.jetbrains.kotlin.idea.KotlinIcons +import org.jetbrains.kotlin.idea.KotlinIdeaGradleBundle +import org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRoot +import org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsManager +import org.jetbrains.kotlin.idea.util.application.getServiceSafe +import org.jetbrains.kotlin.psi.UserDataProperty +import org.jetbrains.plugins.gradle.service.GradleInstallationManager +import org.jetbrains.plugins.gradle.settings.GradleProjectSettings +import org.jetbrains.plugins.gradle.util.GradleConstants + +val scriptConfigurationsNeedToBeUpdatedBalloon + get() = Registry.`is`("kotlin.gradle.scripts.scriptConfigurationsNeedToBeUpdatedBalloon", false) + +fun runPartialGradleImportForAllRoots(project: Project) { + GradleBuildRootsManager.getInstance(project).getAllRoots().forEach { root -> + runPartialGradleImport(project, root) + } +} + +fun runPartialGradleImport(project: Project, root: GradleBuildRoot) { + if (root.isImportingInProgress()) return + + ExternalSystemUtil.refreshProject( + root.pathPrefix, + ImportSpecBuilder(project, GradleConstants.SYSTEM_ID) + .build() + ) +} + +fun getMissingConfigurationActionText() = KotlinIdeaGradleBundle.message("action.label.import.project") + +fun autoReloadScriptConfigurations(project: Project, root: GradleBuildRoot): Boolean { + return ExternalSystemApiUtil + .getSettings(project, GradleConstants.SYSTEM_ID) + .getLinkedProjectSettings(root.pathPrefix) + ?.isUseAutoImport ?: false +} + +private const val kotlinDslNotificationGroupId = "Gradle Kotlin DSL Scripts" +private var Project.notificationPanel: ScriptConfigurationChangedNotification? + by UserDataProperty(Key.create("load.script.configuration.panel")) + +fun scriptConfigurationsNeedToBeUpdated(project: Project, file: VirtualFile) { + if (!scriptConfigurationsNeedToBeUpdatedBalloon) return + + val root = GradleBuildRootsManager.getInstance(project).getScriptInfo(file)?.buildRoot ?: return + if (autoReloadScriptConfigurations(project, root)) { + // import should be run automatically by Gradle plugin + return + } + + val existingPanel = project.notificationPanel + if (existingPanel != null) { + return + } + + val notificationGroup = NotificationGroup.findRegisteredGroup(kotlinDslNotificationGroupId) + if (notificationGroup == null) { + NotificationsConfiguration.getNotificationsConfiguration().register( + kotlinDslNotificationGroupId, NotificationDisplayType.STICKY_BALLOON, false + ) + } + + val notification = ScriptConfigurationChangedNotification(project) + project.notificationPanel = notification + notification.notify(project) +} + +fun scriptConfigurationsAreUpToDate(project: Project): Boolean { + if (project.notificationPanel == null) return false + project.notificationPanel?.expire() + return true +} + +private class ScriptConfigurationChangedNotification(val project: Project) : + Notification( + kotlinDslNotificationGroupId, + KotlinIcons.LOAD_SCRIPT_CONFIGURATION, + KotlinIdeaGradleBundle.message("notification.title.script.configuration.has.been.changed"), + null, + KotlinIdeaGradleBundle.message("notification.text.script.configuration.has.been.changed"), + NotificationType.INFORMATION, + null + ) { + + init { + addAction(LoadConfigurationAction()) + addAction(NotificationAction.createSimple(KotlinIdeaGradleBundle.message("action.label.enable.auto.import")) { + GradleBuildRootsManager.getInstance(project).getAllRoots().forEach { root -> + val projectSettings = getGradleProjectSettings(project).find { it.externalProjectPath == root.pathPrefix } + if (projectSettings != null) { + projectSettings.isUseAutoImport = true + } + runPartialGradleImport(project, root) + } + }) + } + + override fun expire() { + super.expire() + + project.notificationPanel = null + } + + private class LoadConfigurationAction : AnAction(KotlinIdeaGradleBundle.message("action.label.import.project")) { + override fun actionPerformed(e: AnActionEvent) { + val project = e.project ?: return + runPartialGradleImportForAllRoots(project) + } + } +} + +fun getGradleVersion(project: Project, settings: GradleProjectSettings): String { + // workaround for bug in settings.resolveGradleVersion().version (fixed in 201) + return GradleInstallationManager.getGradleVersion( + ServiceManager.getService(GradleInstallationManager::class.java) + .getGradleHome(project, settings.externalProjectPath)?.path + ) ?: GradleVersion.current().version +} \ No newline at end of file diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleImportHelper.kt.201 b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleImportHelper.kt.201 deleted file mode 100644 index a26d34d684d..00000000000 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleImportHelper.kt.201 +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -@file:Suppress("UnstableApiUsage") - -package org.jetbrains.kotlin.idea.scripting.gradle - -import com.intellij.diff.util.DiffUtil -import com.intellij.openapi.actionSystem.AnAction -import com.intellij.openapi.actionSystem.AnActionEvent -import com.intellij.openapi.actionSystem.CommonDataKeys -import com.intellij.openapi.editor.Editor -import com.intellij.openapi.externalSystem.importing.ImportSpecBuilder -import com.intellij.openapi.externalSystem.util.ExternalSystemUtil -import com.intellij.openapi.fileEditor.FileDocumentManager -import com.intellij.openapi.project.Project -import com.intellij.openapi.util.registry.Registry -import com.intellij.openapi.vfs.VirtualFile -import com.intellij.testFramework.LightVirtualFileBase -import org.jetbrains.kotlin.idea.KotlinFileType -import org.jetbrains.kotlin.idea.KotlinIcons -import org.jetbrains.kotlin.idea.KotlinIdeaGradleBundle -import org.jetbrains.kotlin.idea.core.script.settings.KotlinScriptingSettings -import org.jetbrains.kotlin.idea.scripting.gradle.importing.KotlinDslScriptModelResolver -import org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRoot -import org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsManager -import org.jetbrains.kotlin.scripting.definitions.findScriptDefinition -import org.jetbrains.plugins.gradle.service.project.GradlePartialResolverPolicy -import org.jetbrains.plugins.gradle.settings.GradleProjectSettings -import org.jetbrains.plugins.gradle.util.GradleConstants - -val scriptConfigurationsNeedToBeUpdatedBalloon - get() = Registry.`is`("kotlin.gradle.scripts.scriptConfigurationsNeedToBeUpdatedFloatingNotification", true) - -fun runPartialGradleImportForAllRoots(project: Project) { - GradleBuildRootsManager.getInstance(project).getAllRoots().forEach { root -> - runPartialGradleImport(project, root) - } -} - -fun runPartialGradleImport(project: Project, root: GradleBuildRoot) { - if (root.isImportingInProgress()) return - - ExternalSystemUtil.refreshProject( - root.pathPrefix, - ImportSpecBuilder(project, GradleConstants.SYSTEM_ID) - .projectResolverPolicy( - GradlePartialResolverPolicy { it is KotlinDslScriptModelResolver } - ) - ) -} - -fun getMissingConfigurationActionText() = KotlinIdeaGradleBundle.message("action.text.load.script.configurations") - -fun autoReloadScriptConfigurations(project: Project, file: VirtualFile): Boolean { - val definition = file.findScriptDefinition(project) ?: return false - - return KotlinScriptingSettings.getInstance(project).autoReloadConfigurations(definition) -} - -fun scriptConfigurationsNeedToBeUpdated(project: Project, file: VirtualFile) { - if (autoReloadScriptConfigurations(project, file)) { - GradleBuildRootsManager.getInstance(project).getScriptInfo(file)?.buildRoot?.let { - runPartialGradleImport(project, it) - } - } else { - // notification is shown in LoadConfigurationAction - } -} - -fun scriptConfigurationsAreUpToDate(project: Project): Boolean = true - -class LoadConfigurationAction : AnAction( - KotlinIdeaGradleBundle.message("action.text.load.script.configurations"), - KotlinIdeaGradleBundle.message("action.description.load.script.configurations"), - KotlinIcons.LOAD_SCRIPT_CONFIGURATION -) { - override fun actionPerformed(e: AnActionEvent) { - val project = e.project ?: return - val editor = e.getData(CommonDataKeys.EDITOR) ?: return - val file = getKotlinScriptFile(editor) ?: return - val root = GradleBuildRootsManager.getInstance(project).getScriptInfo(file)?.buildRoot ?: return - - runPartialGradleImport(project, root) - } - - override fun update(e: AnActionEvent) { - ensureValidActionVisibility(e) - } - - private fun ensureValidActionVisibility(e: AnActionEvent) { - val editor = e.getData(CommonDataKeys.EDITOR) ?: return - - e.presentation.isVisible = getNotificationVisibility(editor) - } - - private fun getNotificationVisibility(editor: Editor): Boolean { - if (!scriptConfigurationsNeedToBeUpdatedBalloon) return false - - if (DiffUtil.isDiffEditor(editor)) return false - - val project = editor.project ?: return false - val file = getKotlinScriptFile(editor) ?: return false - - if (autoReloadScriptConfigurations(project, file)) { - return false - } - - return GradleBuildRootsManager.getInstance(project).isConfigurationOutOfDate(file) - } - - private fun getKotlinScriptFile(editor: Editor): VirtualFile? { - return FileDocumentManager.getInstance() - .getFile(editor.document) - ?.takeIf { - it !is LightVirtualFileBase - && it.isValid - && it.fileType == KotlinFileType.INSTANCE - && isGradleKotlinScript(it) - } - } -} - -fun getGradleVersion(project: Project, settings: GradleProjectSettings): String { - return settings.resolveGradleVersion().version -} \ No newline at end of file diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleKotlinScriptDefinitionWrapper.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleKotlinScriptDefinitionWrapper.kt index fe57d04f814..04c0961b005 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleKotlinScriptDefinitionWrapper.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleKotlinScriptDefinitionWrapper.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition import org.jetbrains.kotlin.scripting.resolve.KotlinScriptDefinitionFromAnnotatedTemplate import kotlin.script.experimental.api.* import kotlin.script.experimental.host.ScriptingHostConfiguration +import kotlin.script.experimental.location.ScriptExpectedLocation class GradleKotlinScriptDefinitionWrapper( hostConfiguration: ScriptingHostConfiguration, @@ -25,6 +26,5 @@ class GradleKotlinScriptDefinitionWrapper( } } - override val canAutoReloadScriptConfigurationsBeSwitchedOff = !kotlinDslScriptsModelImportSupported(gradleVersion) override val canDefinitionBeSwitchedOff: Boolean = false } \ No newline at end of file diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleKotlinScriptDefinitionWrapper.kt.201 b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleKotlinScriptDefinitionWrapper.kt.193 similarity index 91% rename from idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleKotlinScriptDefinitionWrapper.kt.201 rename to idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleKotlinScriptDefinitionWrapper.kt.193 index 04c0961b005..fe57d04f814 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleKotlinScriptDefinitionWrapper.kt.201 +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/GradleKotlinScriptDefinitionWrapper.kt.193 @@ -10,7 +10,6 @@ import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition import org.jetbrains.kotlin.scripting.resolve.KotlinScriptDefinitionFromAnnotatedTemplate import kotlin.script.experimental.api.* import kotlin.script.experimental.host.ScriptingHostConfiguration -import kotlin.script.experimental.location.ScriptExpectedLocation class GradleKotlinScriptDefinitionWrapper( hostConfiguration: ScriptingHostConfiguration, @@ -26,5 +25,6 @@ class GradleKotlinScriptDefinitionWrapper( } } + override val canAutoReloadScriptConfigurationsBeSwitchedOff = !kotlinDslScriptsModelImportSupported(gradleVersion) override val canDefinitionBeSwitchedOff: Boolean = false } \ No newline at end of file diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslScriptModelResolver.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslScriptModelResolver.kt index eb3bb6ecc78..1dad8d7effa 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslScriptModelResolver.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslScriptModelResolver.kt @@ -5,16 +5,16 @@ package org.jetbrains.kotlin.idea.scripting.gradle.importing -import com.intellij.openapi.externalSystem.model.DataNode -import com.intellij.openapi.externalSystem.model.project.ProjectData -import org.gradle.tooling.model.idea.IdeaProject import org.gradle.tooling.model.kotlin.dsl.KotlinDslScriptsModel import org.jetbrains.kotlin.gradle.KotlinDslScriptAdditionalTask import org.jetbrains.kotlin.gradle.KotlinDslScriptModelProvider import org.jetbrains.kotlin.idea.scripting.gradle.kotlinDslScriptsModelImportSupported -import org.jetbrains.plugins.gradle.model.Build import org.jetbrains.plugins.gradle.model.ClassSetImportModelProvider import org.jetbrains.plugins.gradle.model.ProjectImportModelProvider +import org.jetbrains.plugins.gradle.service.project.ModifiableGradleProjectModel +import org.jetbrains.plugins.gradle.service.project.ProjectModelContributor +import org.jetbrains.plugins.gradle.service.project.ProjectResolverContext +import org.jetbrains.plugins.gradle.service.project.ToolingModelsProvider class KotlinDslScriptModelResolver : KotlinDslScriptModelResolverCommon() { override fun requiresTaskRunning() = true @@ -27,26 +27,22 @@ class KotlinDslScriptModelResolver : KotlinDslScriptModelResolverCommon() { setOf(KotlinDslScriptAdditionalTask::class.java) ) } +} - override fun populateProjectExtraModels(gradleProject: IdeaProject, ideProject: DataNode) { - super.populateProjectExtraModels(gradleProject, ideProject) - - populateBuildModels(resolverCtx.models.mainBuild, ideProject) - - resolverCtx.models.includedBuilds.forEach { includedRoot -> - populateBuildModels(includedRoot, ideProject) - } - } - - private fun populateBuildModels( - root: Build, - ideProject: DataNode +@Suppress("UnstableApiUsage") +class KotlinDslScriptModelContributor : ProjectModelContributor { + override fun accept( + projectModelBuilder: ModifiableGradleProjectModel, + toolingModelsProvider: ToolingModelsProvider, + resolverCtx: ProjectResolverContext ) { - root.projects.forEach { - if (it.projectIdentifier.projectPath == ":") { + toolingModelsProvider.projects().forEach { + val projectIdentifier = it.projectIdentifier.projectPath + if (projectIdentifier == ":") { if (kotlinDslScriptsModelImportSupported(resolverCtx.projectGradleVersion)) { - resolverCtx.models.getModel(it, KotlinDslScriptsModel::class.java)?.let { model -> - processScriptModel(resolverCtx, model, it.projectIdentifier.projectPath) + val model = toolingModelsProvider.getProjectModel(it, KotlinDslScriptsModel::class.java) + if (model != null) { + processScriptModel(resolverCtx, model, projectIdentifier) } } diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslScriptModelResolver.kt.201 b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslScriptModelResolver.kt.193 similarity index 57% rename from idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslScriptModelResolver.kt.201 rename to idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslScriptModelResolver.kt.193 index 1dad8d7effa..eb3bb6ecc78 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslScriptModelResolver.kt.201 +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslScriptModelResolver.kt.193 @@ -5,16 +5,16 @@ package org.jetbrains.kotlin.idea.scripting.gradle.importing +import com.intellij.openapi.externalSystem.model.DataNode +import com.intellij.openapi.externalSystem.model.project.ProjectData +import org.gradle.tooling.model.idea.IdeaProject import org.gradle.tooling.model.kotlin.dsl.KotlinDslScriptsModel import org.jetbrains.kotlin.gradle.KotlinDslScriptAdditionalTask import org.jetbrains.kotlin.gradle.KotlinDslScriptModelProvider import org.jetbrains.kotlin.idea.scripting.gradle.kotlinDslScriptsModelImportSupported +import org.jetbrains.plugins.gradle.model.Build import org.jetbrains.plugins.gradle.model.ClassSetImportModelProvider import org.jetbrains.plugins.gradle.model.ProjectImportModelProvider -import org.jetbrains.plugins.gradle.service.project.ModifiableGradleProjectModel -import org.jetbrains.plugins.gradle.service.project.ProjectModelContributor -import org.jetbrains.plugins.gradle.service.project.ProjectResolverContext -import org.jetbrains.plugins.gradle.service.project.ToolingModelsProvider class KotlinDslScriptModelResolver : KotlinDslScriptModelResolverCommon() { override fun requiresTaskRunning() = true @@ -27,22 +27,26 @@ class KotlinDslScriptModelResolver : KotlinDslScriptModelResolverCommon() { setOf(KotlinDslScriptAdditionalTask::class.java) ) } -} -@Suppress("UnstableApiUsage") -class KotlinDslScriptModelContributor : ProjectModelContributor { - override fun accept( - projectModelBuilder: ModifiableGradleProjectModel, - toolingModelsProvider: ToolingModelsProvider, - resolverCtx: ProjectResolverContext + override fun populateProjectExtraModels(gradleProject: IdeaProject, ideProject: DataNode) { + super.populateProjectExtraModels(gradleProject, ideProject) + + populateBuildModels(resolverCtx.models.mainBuild, ideProject) + + resolverCtx.models.includedBuilds.forEach { includedRoot -> + populateBuildModels(includedRoot, ideProject) + } + } + + private fun populateBuildModels( + root: Build, + ideProject: DataNode ) { - toolingModelsProvider.projects().forEach { - val projectIdentifier = it.projectIdentifier.projectPath - if (projectIdentifier == ":") { + root.projects.forEach { + if (it.projectIdentifier.projectPath == ":") { if (kotlinDslScriptsModelImportSupported(resolverCtx.projectGradleVersion)) { - val model = toolingModelsProvider.getProjectModel(it, KotlinDslScriptsModel::class.java) - if (model != null) { - processScriptModel(resolverCtx, model, projectIdentifier) + resolverCtx.models.getModel(it, KotlinDslScriptsModel::class.java)?.let { model -> + processScriptModel(resolverCtx, model, it.projectIdentifier.projectPath) } } diff --git a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/AbstractModelBuilderTest.java b/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/AbstractModelBuilderTest.java index b473aa5f250..32075c9d9ec 100644 --- a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/AbstractModelBuilderTest.java +++ b/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/AbstractModelBuilderTest.java @@ -147,8 +147,8 @@ public abstract class AbstractModelBuilderTest { } @NotNull - private static Set getToolingExtensionClasses() { - Set classes = ContainerUtil.set( + private static Set> getToolingExtensionClasses() { + Set> classes = ContainerUtil.set( ExternalProject.class, // gradle-tooling-extension-api jar ProjectImportAction.class, @@ -163,7 +163,7 @@ public abstract class AbstractModelBuilderTest { } @NotNull - private static Set doGetToolingExtensionClasses() { + private static Set> doGetToolingExtensionClasses() { return Collections.emptySet(); } @@ -174,7 +174,7 @@ public abstract class AbstractModelBuilderTest { } } - protected abstract Set getModels(); + protected abstract Set> getModels(); private static void ensureTempDirCreated() throws IOException { diff --git a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/AbstractModelBuilderTest.java.201 b/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/AbstractModelBuilderTest.java.193 similarity index 97% rename from idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/AbstractModelBuilderTest.java.201 rename to idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/AbstractModelBuilderTest.java.193 index 32075c9d9ec..b473aa5f250 100644 --- a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/AbstractModelBuilderTest.java.201 +++ b/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/AbstractModelBuilderTest.java.193 @@ -147,8 +147,8 @@ public abstract class AbstractModelBuilderTest { } @NotNull - private static Set> getToolingExtensionClasses() { - Set> classes = ContainerUtil.set( + private static Set getToolingExtensionClasses() { + Set classes = ContainerUtil.set( ExternalProject.class, // gradle-tooling-extension-api jar ProjectImportAction.class, @@ -163,7 +163,7 @@ public abstract class AbstractModelBuilderTest { } @NotNull - private static Set> doGetToolingExtensionClasses() { + private static Set doGetToolingExtensionClasses() { return Collections.emptySet(); } @@ -174,7 +174,7 @@ public abstract class AbstractModelBuilderTest { } } - protected abstract Set> getModels(); + protected abstract Set getModels(); private static void ensureTempDirCreated() throws IOException { diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/actions/ShowKotlinBytecodeAction.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/actions/ShowKotlinBytecodeAction.kt index bf588f63d1b..69903c264a0 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/actions/ShowKotlinBytecodeAction.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/actions/ShowKotlinBytecodeAction.kt @@ -30,15 +30,18 @@ class ShowKotlinBytecodeAction : AnAction() { override fun actionPerformed(e: AnActionEvent) { val project = e.project ?: return val toolWindowManager = ToolWindowManager.getInstance(project) - var toolWindow = toolWindowManager.getToolWindow(TOOLWINDOW_ID) - if (toolWindow == null) { - toolWindow = toolWindowManager.registerToolWindow(TOOLWINDOW_ID, false, ToolWindowAnchor.RIGHT) - toolWindow.icon = KotlinIcons.SMALL_LOGO_13 - val contentManager = toolWindow.contentManager - val contentFactory = ContentFactory.SERVICE.getInstance() - contentManager.addContent(contentFactory.createContent(KotlinBytecodeToolWindow(project, toolWindow), "", false)) - } + val toolWindow = toolWindowManager.getToolWindow(TOOLWINDOW_ID) ?: toolWindowManager.registerToolWindow( + TOOLWINDOW_ID, + false, + ToolWindowAnchor.RIGHT, + ) + .apply { + setIcon(KotlinIcons.SMALL_LOGO_13) + val contentFactory = ContentFactory.SERVICE.getInstance() + contentManager.addContent(contentFactory.createContent(KotlinBytecodeToolWindow(project, this), "", false)) + } + toolWindow.activate(null) } diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/actions/ShowKotlinBytecodeAction.kt.201 b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/actions/ShowKotlinBytecodeAction.kt.193 similarity index 75% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/actions/ShowKotlinBytecodeAction.kt.201 rename to idea/idea-jvm/src/org/jetbrains/kotlin/idea/actions/ShowKotlinBytecodeAction.kt.193 index 69903c264a0..bf588f63d1b 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/actions/ShowKotlinBytecodeAction.kt.201 +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/actions/ShowKotlinBytecodeAction.kt.193 @@ -30,18 +30,15 @@ class ShowKotlinBytecodeAction : AnAction() { override fun actionPerformed(e: AnActionEvent) { val project = e.project ?: return val toolWindowManager = ToolWindowManager.getInstance(project) + var toolWindow = toolWindowManager.getToolWindow(TOOLWINDOW_ID) + if (toolWindow == null) { + toolWindow = toolWindowManager.registerToolWindow(TOOLWINDOW_ID, false, ToolWindowAnchor.RIGHT) + toolWindow.icon = KotlinIcons.SMALL_LOGO_13 - val toolWindow = toolWindowManager.getToolWindow(TOOLWINDOW_ID) ?: toolWindowManager.registerToolWindow( - TOOLWINDOW_ID, - false, - ToolWindowAnchor.RIGHT, - ) - .apply { - setIcon(KotlinIcons.SMALL_LOGO_13) - val contentFactory = ContentFactory.SERVICE.getInstance() - contentManager.addContent(contentFactory.createContent(KotlinBytecodeToolWindow(project, this), "", false)) - } - + val contentManager = toolWindow.contentManager + val contentFactory = ContentFactory.SERVICE.getInstance() + contentManager.addContent(contentFactory.createContent(KotlinBytecodeToolWindow(project, toolWindow), "", false)) + } toolWindow.activate(null) } diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/output/ToolWindowScratchOutputHandler.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/output/ToolWindowScratchOutputHandler.kt index 5c0dd47c0cc..cebce96dc18 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/output/ToolWindowScratchOutputHandler.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/output/ToolWindowScratchOutputHandler.kt @@ -20,12 +20,12 @@ import com.intellij.execution.filters.OpenFileHyperlinkInfo import com.intellij.execution.impl.ConsoleViewImpl import com.intellij.execution.runners.ExecutionUtil import com.intellij.execution.ui.ConsoleViewContentType +import com.intellij.ide.scratch.ScratchFileType import com.intellij.openapi.Disposable import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.TransactionGuard import com.intellij.openapi.command.WriteCommandAction import com.intellij.openapi.editor.ex.EditorEx -import com.intellij.openapi.fileTypes.PlainTextFileType import com.intellij.openapi.project.Project import com.intellij.openapi.util.Disposer import com.intellij.openapi.wm.ToolWindow @@ -113,8 +113,8 @@ private class ToolWindowScratchOutputHandler(private val parentDisposable: Dispo OpenFileHyperlinkInfo( project, psiFile.virtualFile, - expression.lineStart, - ), + expression.lineStart + ) ) print(" ", ConsoleViewContentType.NORMAL_OUTPUT) } @@ -149,7 +149,7 @@ private class ToolWindowScratchOutputHandler(private val parentDisposable: Dispo toolWindow.show(null) } - toolWindow.icon = ExecutionUtil.getLiveIndicator(scratchIcon()) + toolWindow.setIcon(ExecutionUtil.getLiveIndicator(ScratchFileType.INSTANCE.icon)) } } @@ -168,7 +168,7 @@ private class ToolWindowScratchOutputHandler(private val parentDisposable: Dispo toolWindow.hide(null) } - toolWindow.icon = scratchIcon() + toolWindow.setIcon(ScratchFileType.INSTANCE.icon ?: error("Text icon is expected to be present")) } } @@ -187,22 +187,18 @@ private class ToolWindowScratchOutputHandler(private val parentDisposable: Dispo val project = file.project val toolWindowManager = ToolWindowManager.getInstance(project) toolWindowManager.registerToolWindow(ScratchToolWindowFactory.ID, true, ToolWindowAnchor.BOTTOM) - val window = toolWindowManager.getToolWindow(ScratchToolWindowFactory.ID) + val window = + toolWindowManager.getToolWindow(ScratchToolWindowFactory.ID) ?: error("ScratchToolWindowFactory.ID should be registered") ScratchToolWindowFactory().createToolWindowContent(project, window) - Disposer.register( - parentDisposable, - Disposable { - toolWindowManager.unregisterToolWindow(ScratchToolWindowFactory.ID) - }, - ) + Disposer.register(parentDisposable, Disposable { + toolWindowManager.unregisterToolWindow(ScratchToolWindowFactory.ID) + }) return window } } -private fun scratchIcon() = PlainTextFileType.INSTANCE.icon - private fun getLineInfo(psiFile: PsiFile, expression: ScratchExpression) = "${psiFile.name}:${expression.lineStart + 1}" @@ -213,8 +209,8 @@ private class ScratchToolWindowFactory : ToolWindowFactory { override fun createToolWindowContent(project: Project, toolWindow: ToolWindow) { val consoleView = ConsoleViewImpl(project, true) - toolWindow.isToHideOnEmptyContent = true - toolWindow.icon = scratchIcon() + toolWindow.setToHideOnEmptyContent(true) + toolWindow.setIcon(ScratchFileType.INSTANCE.icon ?: error("Text icon should be present")) toolWindow.hide(null) val contentManager = toolWindow.contentManager @@ -242,33 +238,27 @@ private object TestOutputHandler : ScratchOutputHandlerAdapter() { } override fun onFinish(file: ScratchFile) { - TransactionGuard.submitTransaction( - file.project, - Runnable { - val psiFile = file.getPsiFile() - ?: error( - "PsiFile cannot be found for scratch to render inlays in tests:\n" + - "project.isDisposed = ${file.project.isDisposed}\n" + - "inlays = ${inlays.joinToString { it.second }}\n" + - "errors = ${errors.joinToString()}", - ) + TransactionGuard.submitTransaction(file.project, Runnable { + val psiFile = file.getPsiFile() + ?: error( + "PsiFile cannot be found for scratch to render inlays in tests:\n" + + "project.isDisposed = ${file.project.isDisposed}\n" + + "inlays = ${inlays.joinToString { it.second }}\n" + + "errors = ${errors.joinToString()}" + ) - if (inlays.isNotEmpty()) { - testPrint( - psiFile, - inlays.map { (expression, text) -> - "/** ${getLineInfo(psiFile, expression)} $text */" - }, - ) - inlays.clear() - } + if (inlays.isNotEmpty()) { + testPrint(psiFile, inlays.map { (expression, text) -> + "/** ${getLineInfo(psiFile, expression)} $text */" + }) + inlays.clear() + } - if (errors.isNotEmpty()) { - testPrint(psiFile, listOf(errors.joinToString(prefix = "/** ", postfix = " */"))) - errors.clear() - } - }, - ) + if (errors.isNotEmpty()) { + testPrint(psiFile, listOf(errors.joinToString(prefix = "/** ", postfix = " */"))) + errors.clear() + } + }) } private fun testPrint(file: PsiFile, comments: List) { @@ -276,7 +266,7 @@ private object TestOutputHandler : ScratchOutputHandlerAdapter() { for (comment in comments) { file.addAfter( KtPsiFactory(file.project).createComment(comment), - file.lastChild, + file.lastChild ) } } diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/output/ToolWindowScratchOutputHandler.kt.201 b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/output/ToolWindowScratchOutputHandler.kt.193 similarity index 82% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/output/ToolWindowScratchOutputHandler.kt.201 rename to idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/output/ToolWindowScratchOutputHandler.kt.193 index cebce96dc18..5c0dd47c0cc 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/output/ToolWindowScratchOutputHandler.kt.201 +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/output/ToolWindowScratchOutputHandler.kt.193 @@ -20,12 +20,12 @@ import com.intellij.execution.filters.OpenFileHyperlinkInfo import com.intellij.execution.impl.ConsoleViewImpl import com.intellij.execution.runners.ExecutionUtil import com.intellij.execution.ui.ConsoleViewContentType -import com.intellij.ide.scratch.ScratchFileType import com.intellij.openapi.Disposable import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.TransactionGuard import com.intellij.openapi.command.WriteCommandAction import com.intellij.openapi.editor.ex.EditorEx +import com.intellij.openapi.fileTypes.PlainTextFileType import com.intellij.openapi.project.Project import com.intellij.openapi.util.Disposer import com.intellij.openapi.wm.ToolWindow @@ -113,8 +113,8 @@ private class ToolWindowScratchOutputHandler(private val parentDisposable: Dispo OpenFileHyperlinkInfo( project, psiFile.virtualFile, - expression.lineStart - ) + expression.lineStart, + ), ) print(" ", ConsoleViewContentType.NORMAL_OUTPUT) } @@ -149,7 +149,7 @@ private class ToolWindowScratchOutputHandler(private val parentDisposable: Dispo toolWindow.show(null) } - toolWindow.setIcon(ExecutionUtil.getLiveIndicator(ScratchFileType.INSTANCE.icon)) + toolWindow.icon = ExecutionUtil.getLiveIndicator(scratchIcon()) } } @@ -168,7 +168,7 @@ private class ToolWindowScratchOutputHandler(private val parentDisposable: Dispo toolWindow.hide(null) } - toolWindow.setIcon(ScratchFileType.INSTANCE.icon ?: error("Text icon is expected to be present")) + toolWindow.icon = scratchIcon() } } @@ -187,18 +187,22 @@ private class ToolWindowScratchOutputHandler(private val parentDisposable: Dispo val project = file.project val toolWindowManager = ToolWindowManager.getInstance(project) toolWindowManager.registerToolWindow(ScratchToolWindowFactory.ID, true, ToolWindowAnchor.BOTTOM) - val window = - toolWindowManager.getToolWindow(ScratchToolWindowFactory.ID) ?: error("ScratchToolWindowFactory.ID should be registered") + val window = toolWindowManager.getToolWindow(ScratchToolWindowFactory.ID) ScratchToolWindowFactory().createToolWindowContent(project, window) - Disposer.register(parentDisposable, Disposable { - toolWindowManager.unregisterToolWindow(ScratchToolWindowFactory.ID) - }) + Disposer.register( + parentDisposable, + Disposable { + toolWindowManager.unregisterToolWindow(ScratchToolWindowFactory.ID) + }, + ) return window } } +private fun scratchIcon() = PlainTextFileType.INSTANCE.icon + private fun getLineInfo(psiFile: PsiFile, expression: ScratchExpression) = "${psiFile.name}:${expression.lineStart + 1}" @@ -209,8 +213,8 @@ private class ScratchToolWindowFactory : ToolWindowFactory { override fun createToolWindowContent(project: Project, toolWindow: ToolWindow) { val consoleView = ConsoleViewImpl(project, true) - toolWindow.setToHideOnEmptyContent(true) - toolWindow.setIcon(ScratchFileType.INSTANCE.icon ?: error("Text icon should be present")) + toolWindow.isToHideOnEmptyContent = true + toolWindow.icon = scratchIcon() toolWindow.hide(null) val contentManager = toolWindow.contentManager @@ -238,27 +242,33 @@ private object TestOutputHandler : ScratchOutputHandlerAdapter() { } override fun onFinish(file: ScratchFile) { - TransactionGuard.submitTransaction(file.project, Runnable { - val psiFile = file.getPsiFile() - ?: error( - "PsiFile cannot be found for scratch to render inlays in tests:\n" + - "project.isDisposed = ${file.project.isDisposed}\n" + - "inlays = ${inlays.joinToString { it.second }}\n" + - "errors = ${errors.joinToString()}" - ) + TransactionGuard.submitTransaction( + file.project, + Runnable { + val psiFile = file.getPsiFile() + ?: error( + "PsiFile cannot be found for scratch to render inlays in tests:\n" + + "project.isDisposed = ${file.project.isDisposed}\n" + + "inlays = ${inlays.joinToString { it.second }}\n" + + "errors = ${errors.joinToString()}", + ) - if (inlays.isNotEmpty()) { - testPrint(psiFile, inlays.map { (expression, text) -> - "/** ${getLineInfo(psiFile, expression)} $text */" - }) - inlays.clear() - } + if (inlays.isNotEmpty()) { + testPrint( + psiFile, + inlays.map { (expression, text) -> + "/** ${getLineInfo(psiFile, expression)} $text */" + }, + ) + inlays.clear() + } - if (errors.isNotEmpty()) { - testPrint(psiFile, listOf(errors.joinToString(prefix = "/** ", postfix = " */"))) - errors.clear() - } - }) + if (errors.isNotEmpty()) { + testPrint(psiFile, listOf(errors.joinToString(prefix = "/** ", postfix = " */"))) + errors.clear() + } + }, + ) } private fun testPrint(file: PsiFile, comments: List) { @@ -266,7 +276,7 @@ private object TestOutputHandler : ScratchOutputHandlerAdapter() { for (comment in comments) { file.addAfter( KtPsiFactory(file.project).createComment(comment), - file.lastChild + file.lastChild, ) } } diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/ui/TextEditorWithPreview.java b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/ui/TextEditorWithPreview.java index 43aae0cf629..d990603fafa 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/ui/TextEditorWithPreview.java +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/ui/TextEditorWithPreview.java @@ -22,7 +22,6 @@ import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.JBSplitter; import com.intellij.util.ui.JBUI; import com.intellij.util.ui.UIUtil; -import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.idea.KotlinJvmBundle; @@ -473,7 +472,6 @@ class SplitEditorToolbar extends JPanel implements Disposable { } @Deprecated - @ApiStatus.ScheduledForRemoval public void addGutterToTrack(@NotNull EditorGutterComponentEx gutterComponentEx) {} public void refresh() { @@ -481,7 +479,6 @@ class SplitEditorToolbar extends JPanel implements Disposable { } @Deprecated - @ApiStatus.ScheduledForRemoval @Override public void dispose() {} } \ No newline at end of file diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/ui/TextEditorWithPreview.java.201 b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/ui/TextEditorWithPreview.java.193 similarity index 99% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/ui/TextEditorWithPreview.java.201 rename to idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/ui/TextEditorWithPreview.java.193 index d990603fafa..43aae0cf629 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/ui/TextEditorWithPreview.java.201 +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/ui/TextEditorWithPreview.java.193 @@ -22,6 +22,7 @@ import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.ui.JBSplitter; import com.intellij.util.ui.JBUI; import com.intellij.util.ui.UIUtil; +import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.idea.KotlinJvmBundle; @@ -472,6 +473,7 @@ class SplitEditorToolbar extends JPanel implements Disposable { } @Deprecated + @ApiStatus.ScheduledForRemoval public void addGutterToTrack(@NotNull EditorGutterComponentEx gutterComponentEx) {} public void refresh() { @@ -479,6 +481,7 @@ class SplitEditorToolbar extends JPanel implements Disposable { } @Deprecated + @ApiStatus.ScheduledForRemoval @Override public void dispose() {} } \ No newline at end of file diff --git a/idea/idea-live-templates/tests/org/jetbrains/kotlin/idea/liveTemplates/compat.kt b/idea/idea-live-templates/tests/org/jetbrains/kotlin/idea/liveTemplates/compat.kt index 1f4d2a86180..d7f1fa72b74 100644 --- a/idea/idea-live-templates/tests/org/jetbrains/kotlin/idea/liveTemplates/compat.kt +++ b/idea/idea-live-templates/tests/org/jetbrains/kotlin/idea/liveTemplates/compat.kt @@ -11,5 +11,5 @@ import com.intellij.openapi.project.Project // FIX ME WHEN BUNCH 193 REMOVED fun setTemplateTestingCompat(project: Project, disposable: Disposable) { - TemplateManagerImpl.setTemplateTesting(project, disposable) + TemplateManagerImpl.setTemplateTesting(disposable) } \ No newline at end of file diff --git a/idea/idea-live-templates/tests/org/jetbrains/kotlin/idea/liveTemplates/compat.kt.201 b/idea/idea-live-templates/tests/org/jetbrains/kotlin/idea/liveTemplates/compat.kt.193 similarity index 88% rename from idea/idea-live-templates/tests/org/jetbrains/kotlin/idea/liveTemplates/compat.kt.201 rename to idea/idea-live-templates/tests/org/jetbrains/kotlin/idea/liveTemplates/compat.kt.193 index d7f1fa72b74..1f4d2a86180 100644 --- a/idea/idea-live-templates/tests/org/jetbrains/kotlin/idea/liveTemplates/compat.kt.201 +++ b/idea/idea-live-templates/tests/org/jetbrains/kotlin/idea/liveTemplates/compat.kt.193 @@ -11,5 +11,5 @@ import com.intellij.openapi.project.Project // FIX ME WHEN BUNCH 193 REMOVED fun setTemplateTestingCompat(project: Project, disposable: Disposable) { - TemplateManagerImpl.setTemplateTesting(disposable) + TemplateManagerImpl.setTemplateTesting(project, disposable) } \ No newline at end of file diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaGradleWizardService.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaGradleWizardService.kt index 6d485c9908c..73cf9b5bf34 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaGradleWizardService.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaGradleWizardService.kt @@ -16,6 +16,7 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.isGradle import org.jetbrains.plugins.gradle.service.project.open.linkAndRefreshGradleProject import java.nio.file.Path +// FIX ME WHEN BUNCH 201 REMOVED class IdeaGradleWizardService(private val project: Project) : ProjectImportingWizardService, IdeaWizardService { override fun isSuitableFor(buildSystemType: BuildSystemType): Boolean = diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaGradleWizardService.kt.201 b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaGradleWizardService.kt.193 similarity index 98% rename from idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaGradleWizardService.kt.201 rename to idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaGradleWizardService.kt.193 index 73cf9b5bf34..6d485c9908c 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaGradleWizardService.kt.201 +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaGradleWizardService.kt.193 @@ -16,7 +16,6 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.isGradle import org.jetbrains.plugins.gradle.service.project.open.linkAndRefreshGradleProject import java.nio.file.Path -// FIX ME WHEN BUNCH 201 REMOVED class IdeaGradleWizardService(private val project: Project) : ProjectImportingWizardService, IdeaWizardService { override fun isSuitableFor(buildSystemType: BuildSystemType): Boolean = diff --git a/idea/idea-repl/src/org/jetbrains/kotlin/console/ConsoleCompilerHelper.kt b/idea/idea-repl/src/org/jetbrains/kotlin/console/ConsoleCompilerHelper.kt index 296417b6c85..573c2368332 100644 --- a/idea/idea-repl/src/org/jetbrains/kotlin/console/ConsoleCompilerHelper.kt +++ b/idea/idea-repl/src/org/jetbrains/kotlin/console/ConsoleCompilerHelper.kt @@ -41,12 +41,14 @@ class ConsoleCompilerHelper( } fun compileModule() { - if (ExecutionManager.getInstance(project).contentManager.removeRunContent(executor, contentDescriptor)) { - ProjectTaskManager.getInstance(project).build(module).onSuccess { executionResult -> - if (!module.isDisposed) { - KotlinConsoleKeeper.getInstance(project).run(module, previousCompilationFailed = executionResult.hasErrors()) + if (ExecutionManager.getInstance(project).getContentManager().removeRunContent(executor, contentDescriptor)) { + ProjectTaskManager.getInstance(project).build(arrayOf(module), object : ProjectTaskNotification { + override fun finished(context: ProjectTaskContext, executionResult: ProjectTaskResult) { + if (!module.isDisposed) { + KotlinConsoleKeeper.getInstance(project).run(module, previousCompilationFailed = executionResult.errors > 0) + } } - } + }) } } } \ No newline at end of file diff --git a/idea/idea-repl/src/org/jetbrains/kotlin/console/ConsoleCompilerHelper.kt.201 b/idea/idea-repl/src/org/jetbrains/kotlin/console/ConsoleCompilerHelper.kt.193 similarity index 74% rename from idea/idea-repl/src/org/jetbrains/kotlin/console/ConsoleCompilerHelper.kt.201 rename to idea/idea-repl/src/org/jetbrains/kotlin/console/ConsoleCompilerHelper.kt.193 index 573c2368332..296417b6c85 100644 --- a/idea/idea-repl/src/org/jetbrains/kotlin/console/ConsoleCompilerHelper.kt.201 +++ b/idea/idea-repl/src/org/jetbrains/kotlin/console/ConsoleCompilerHelper.kt.193 @@ -41,14 +41,12 @@ class ConsoleCompilerHelper( } fun compileModule() { - if (ExecutionManager.getInstance(project).getContentManager().removeRunContent(executor, contentDescriptor)) { - ProjectTaskManager.getInstance(project).build(arrayOf(module), object : ProjectTaskNotification { - override fun finished(context: ProjectTaskContext, executionResult: ProjectTaskResult) { - if (!module.isDisposed) { - KotlinConsoleKeeper.getInstance(project).run(module, previousCompilationFailed = executionResult.errors > 0) - } + if (ExecutionManager.getInstance(project).contentManager.removeRunContent(executor, contentDescriptor)) { + ProjectTaskManager.getInstance(project).build(module).onSuccess { executionResult -> + if (!module.isDisposed) { + KotlinConsoleKeeper.getInstance(project).run(module, previousCompilationFailed = executionResult.hasErrors()) } - }) + } } } } \ No newline at end of file diff --git a/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/compat.kt b/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/compat.kt index 9e8fc23e4b9..dccbbd0ff5d 100644 --- a/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/compat.kt +++ b/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/compat.kt @@ -17,5 +17,5 @@ fun editorTrackerProjectOpened(project: Project) { // FIX ME WHEN BUNCH 193 REMOVED fun runPostStartupActivitiesOnce(project: Project) { - (StartupManager.getInstance(project) as StartupManagerImpl).runPostStartupActivities() + (StartupManager.getInstance(project) as StartupManagerImpl).runPostStartupActivitiesRegisteredDynamically() } \ No newline at end of file diff --git a/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/compat.kt.201 b/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/compat.kt.193 similarity index 93% rename from idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/compat.kt.201 rename to idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/compat.kt.193 index dccbbd0ff5d..9e8fc23e4b9 100644 --- a/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/compat.kt.201 +++ b/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/compat.kt.193 @@ -17,5 +17,5 @@ fun editorTrackerProjectOpened(project: Project) { // FIX ME WHEN BUNCH 193 REMOVED fun runPostStartupActivitiesOnce(project: Project) { - (StartupManager.getInstance(project) as StartupManagerImpl).runPostStartupActivitiesRegisteredDynamically() + (StartupManager.getInstance(project) as StartupManagerImpl).runPostStartupActivities() } \ No newline at end of file diff --git a/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/data/coroutineStackFrameItems.kt b/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/data/coroutineStackFrameItems.kt index e7796e3b3cf..d69db4cc07d 100644 --- a/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/data/coroutineStackFrameItems.kt +++ b/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/data/coroutineStackFrameItems.kt @@ -6,20 +6,22 @@ package org.jetbrains.kotlin.idea.debugger.coroutine.data import com.intellij.debugger.engine.DebugProcessImpl -import com.intellij.debugger.engine.JVMStackFrameInfoProvider +import com.intellij.debugger.engine.JavaStackFrame import com.intellij.debugger.engine.evaluation.EvaluationContextImpl import com.intellij.debugger.jdi.StackFrameProxyImpl import com.intellij.debugger.memory.utils.StackFrameItem +import com.intellij.debugger.ui.tree.render.DescriptorLabelListener +import com.intellij.xdebugger.XSourcePosition import com.intellij.xdebugger.frame.XCompositeNode import com.intellij.xdebugger.frame.XNamedValue import com.intellij.xdebugger.frame.XStackFrame import com.intellij.xdebugger.frame.XValueChildrenList +import com.intellij.xdebugger.impl.frame.XDebuggerFramesList import com.sun.jdi.Location import org.jetbrains.kotlin.idea.debugger.* import org.jetbrains.kotlin.idea.debugger.coroutine.KotlinDebuggerCoroutinesBundle import org.jetbrains.kotlin.idea.debugger.coroutine.proxy.LocationStackFrameProxyImpl import org.jetbrains.kotlin.idea.debugger.coroutine.util.findPosition -import org.jetbrains.kotlin.idea.debugger.coroutine.util.isFilteredInvokeSuspend import org.jetbrains.kotlin.idea.debugger.coroutine.util.logger import org.jetbrains.kotlin.idea.debugger.stackFrame.KotlinStackFrame @@ -32,12 +34,12 @@ class CreationCoroutineStackFrameItem( val first: Boolean ) : CoroutineStackFrameItem(location, emptyList()) { - override fun createFrame(debugProcess: DebugProcessImpl): CoroutineGeneratedFrame? { + override fun createFrame(debugProcess: DebugProcessImpl): XStackFrame? { return debugProcess.invokeInManagerThread { val frame = debugProcess.findFirstFrame() ?: return@invokeInManagerThread null val locationFrame = LocationStackFrameProxyImpl(location, frame) val position = location.findPosition(debugProcess.project) - CreationCoroutineStackFrame(debugProcess, this, first) + CreationCoroutineStackFrame(locationFrame, position, first) } } } @@ -51,18 +53,19 @@ class SuspendCoroutineStackFrameItem( spilledVariables: List = emptyList() ) : CoroutineStackFrameItem(location, spilledVariables) + /** * Restored from memory dump */ class DefaultCoroutineStackFrameItem(location: Location, spilledVariables: List) : CoroutineStackFrameItem(location, spilledVariables) { - override fun createFrame(debugProcess: DebugProcessImpl): CoroutineGeneratedFrame? { + override fun createFrame(debugProcess: DebugProcessImpl): XStackFrame? { return debugProcess.invokeInManagerThread { val frame = debugProcess.findFirstFrame() ?: return@invokeInManagerThread null val locationStackFrameProxyImpl = LocationStackFrameProxyImpl(location, frame) val position = location.findPosition(debugProcess.project) ?: return@invokeInManagerThread null - CoroutineStackFrame(debugProcess, this) + CoroutineStackFrame(locationStackFrameProxyImpl, position, spilledVariables, false) } } } @@ -82,24 +85,25 @@ class DefaultCoroutineStackFrameItem(location: Location, spilledVariables: List< open class RunningCoroutineStackFrameItem( val frame: StackFrameProxyImpl, spilledVariables: List = emptyList() -) : CoroutineStackFrameItem(frame.location(), spilledVariables), FrameProvider { - override fun createFrame(debugProcess: DebugProcessImpl): CoroutineGeneratedFrame? { +) : CoroutineStackFrameItem(frame.location(), spilledVariables) { + override fun createFrame(debugProcess: DebugProcessImpl): XStackFrame? { return debugProcess.invokeInManagerThread { - CoroutineStackFrame(debugProcess, this) + val position = frame.location().findPosition(debugProcess.project) + CoroutineStackFrame(frame, position) } } - - override fun provideFrame(debugProcess: DebugProcessImpl): XStackFrame? = - debugProcess.invokeInManagerThread { KotlinStackFrame(frame) } } sealed class CoroutineStackFrameItem(val location: Location, val spilledVariables: List) : StackFrameItem(location, spilledVariables) { val log by logger - override fun createFrame(debugProcess: DebugProcessImpl): CoroutineGeneratedFrame? { + override fun createFrame(debugProcess: DebugProcessImpl): XStackFrame? { return debugProcess.invokeInManagerThread { - CoroutineStackFrame(debugProcess, this) + val frame = debugProcess.findFirstFrame() ?: return@invokeInManagerThread null + val locationFrame = LocationStackFrameProxyImpl(location, frame) + val position = location.findPosition(debugProcess.project) + CoroutineStackFrame(locationFrame, position) } } @@ -108,10 +112,6 @@ sealed class CoroutineStackFrameItem(val location: Location, val spilledVariable location.safeLineNumber() + ":" + location.safeKotlinPreferredLineNumber() } -interface FrameProvider { - fun provideFrame(debugProcess: DebugProcessImpl): XStackFrame? -} - fun DebugProcessImpl.findFirstFrame(): StackFrameProxyImpl? = suspendManager.pausedContext.thread?.forceFrames()?.firstOrNull() @@ -123,19 +123,71 @@ fun DebugProcessImpl.findFirstFrame(): StackFrameProxyImpl? = */ class CoroutinePreflightFrame( val coroutineInfoData: CoroutineInfoData, - private val frame: StackFrameProxyImpl, + val frame: StackFrameProxyImpl, val threadPreCoroutineFrames: List, - val mode: SuspendExitMode -) : KotlinStackFrame(frame), JVMStackFrameInfoProvider { + val mode: SuspendExitMode, + private val firstFrameVariables: List = coroutineInfoData.topFrameVariables() +) : CoroutineStackFrame(frame, null, firstFrameVariables) { + + override fun isInLibraryContent() = false + + override fun isSynthetic() = false + +} + +class CreationCoroutineStackFrame( + frame: StackFrameProxyImpl, + sourcePosition: XSourcePosition?, + val first: Boolean +) : CoroutineStackFrame(frame, sourcePosition, emptyList(), false), XDebuggerFramesList.ItemWithSeparatorAbove { + + override fun getCaptionAboveOf() = + KotlinDebuggerCoroutinesBundle.message("coroutine.dump.creation.trace") + + override fun hasSeparatorAbove() = + first +} + +open class CoroutineStackFrame( + frame: StackFrameProxyImpl, + val position: XSourcePosition?, + private val spilledVariables: List? = null, + private val includeFrameVariables: Boolean = true, +) : KotlinStackFrame(frame) { + + init { + descriptor.updateRepresentation(null, DescriptorLabelListener.DUMMY_LISTENER) + } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + + val frame = other as? JavaStackFrame ?: return false + + return descriptor.frameProxy == frame.descriptor.frameProxy + } + + override fun hashCode(): Int { + return descriptor.frameProxy.hashCode() + } + + override fun computeChildren(node: XCompositeNode) { + if (includeFrameVariables || spilledVariables == null) { + super.computeChildren(node) + } else { + // ignore original frame variables + val list = XValueChildrenList() + spilledVariables.forEach { list.add(it) } + node.addChildren(list, true) + } + } override fun superBuildVariables(evaluationContext: EvaluationContextImpl, children: XValueChildrenList) { super.superBuildVariables(evaluationContext, children) - val topRestoredFrame = coroutineInfoData.stackTrace.firstOrNull() - if (topRestoredFrame != null && topRestoredFrame.location.isFilteredInvokeSuspend()) { - val firstFrameVariables: List = topRestoredFrame.spilledVariables + if (spilledVariables != null) { children.let { val varNames = (0 until children.size()).map { children.getName(it) }.toSet() - firstFrameVariables.forEach { + spilledVariables.forEach { if (!varNames.contains(it.name)) children.add(it) } @@ -143,32 +195,6 @@ class CoroutinePreflightFrame( } } - override fun isInLibraryContent() = false - - override fun isSynthetic() = false -} - -class CreationCoroutineStackFrame(debugProcess: DebugProcessImpl, item: CoroutineStackFrameItem, val first: Boolean) : CoroutineStackFrame(debugProcess, item) { - override fun getCaptionAboveOf() = KotlinDebuggerCoroutinesBundle.message("coroutine.dump.creation.trace") - - override fun hasSeparatorAbove(): Boolean = - first -} - -open class CoroutineStackFrame(val debugProcess: DebugProcessImpl, val item: CoroutineStackFrameItem) : - StackFrameItem.CapturedStackFrame(debugProcess, item) { - - override fun computeChildren(node: XCompositeNode) { - if (item is FrameProvider) - item.provideFrame(debugProcess)?.computeChildren(node) - else - super.computeChildren(node) - } - - override fun getCaptionAboveOf() = "CoroutineExit" - - override fun hasSeparatorAbove(): Boolean = - false -} - -typealias CoroutineGeneratedFrame = StackFrameItem.CapturedStackFrame \ No newline at end of file + override fun getSourcePosition() = + position ?: super.getSourcePosition() +} \ No newline at end of file diff --git a/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/data/coroutineStackFrameItems.kt.201 b/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/data/coroutineStackFrameItems.kt.193 similarity index 61% rename from idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/data/coroutineStackFrameItems.kt.201 rename to idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/data/coroutineStackFrameItems.kt.193 index d69db4cc07d..e7796e3b3cf 100644 --- a/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/data/coroutineStackFrameItems.kt.201 +++ b/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/data/coroutineStackFrameItems.kt.193 @@ -6,22 +6,20 @@ package org.jetbrains.kotlin.idea.debugger.coroutine.data import com.intellij.debugger.engine.DebugProcessImpl -import com.intellij.debugger.engine.JavaStackFrame +import com.intellij.debugger.engine.JVMStackFrameInfoProvider import com.intellij.debugger.engine.evaluation.EvaluationContextImpl import com.intellij.debugger.jdi.StackFrameProxyImpl import com.intellij.debugger.memory.utils.StackFrameItem -import com.intellij.debugger.ui.tree.render.DescriptorLabelListener -import com.intellij.xdebugger.XSourcePosition import com.intellij.xdebugger.frame.XCompositeNode import com.intellij.xdebugger.frame.XNamedValue import com.intellij.xdebugger.frame.XStackFrame import com.intellij.xdebugger.frame.XValueChildrenList -import com.intellij.xdebugger.impl.frame.XDebuggerFramesList import com.sun.jdi.Location import org.jetbrains.kotlin.idea.debugger.* import org.jetbrains.kotlin.idea.debugger.coroutine.KotlinDebuggerCoroutinesBundle import org.jetbrains.kotlin.idea.debugger.coroutine.proxy.LocationStackFrameProxyImpl import org.jetbrains.kotlin.idea.debugger.coroutine.util.findPosition +import org.jetbrains.kotlin.idea.debugger.coroutine.util.isFilteredInvokeSuspend import org.jetbrains.kotlin.idea.debugger.coroutine.util.logger import org.jetbrains.kotlin.idea.debugger.stackFrame.KotlinStackFrame @@ -34,12 +32,12 @@ class CreationCoroutineStackFrameItem( val first: Boolean ) : CoroutineStackFrameItem(location, emptyList()) { - override fun createFrame(debugProcess: DebugProcessImpl): XStackFrame? { + override fun createFrame(debugProcess: DebugProcessImpl): CoroutineGeneratedFrame? { return debugProcess.invokeInManagerThread { val frame = debugProcess.findFirstFrame() ?: return@invokeInManagerThread null val locationFrame = LocationStackFrameProxyImpl(location, frame) val position = location.findPosition(debugProcess.project) - CreationCoroutineStackFrame(locationFrame, position, first) + CreationCoroutineStackFrame(debugProcess, this, first) } } } @@ -53,19 +51,18 @@ class SuspendCoroutineStackFrameItem( spilledVariables: List = emptyList() ) : CoroutineStackFrameItem(location, spilledVariables) - /** * Restored from memory dump */ class DefaultCoroutineStackFrameItem(location: Location, spilledVariables: List) : CoroutineStackFrameItem(location, spilledVariables) { - override fun createFrame(debugProcess: DebugProcessImpl): XStackFrame? { + override fun createFrame(debugProcess: DebugProcessImpl): CoroutineGeneratedFrame? { return debugProcess.invokeInManagerThread { val frame = debugProcess.findFirstFrame() ?: return@invokeInManagerThread null val locationStackFrameProxyImpl = LocationStackFrameProxyImpl(location, frame) val position = location.findPosition(debugProcess.project) ?: return@invokeInManagerThread null - CoroutineStackFrame(locationStackFrameProxyImpl, position, spilledVariables, false) + CoroutineStackFrame(debugProcess, this) } } } @@ -85,25 +82,24 @@ class DefaultCoroutineStackFrameItem(location: Location, spilledVariables: List< open class RunningCoroutineStackFrameItem( val frame: StackFrameProxyImpl, spilledVariables: List = emptyList() -) : CoroutineStackFrameItem(frame.location(), spilledVariables) { - override fun createFrame(debugProcess: DebugProcessImpl): XStackFrame? { +) : CoroutineStackFrameItem(frame.location(), spilledVariables), FrameProvider { + override fun createFrame(debugProcess: DebugProcessImpl): CoroutineGeneratedFrame? { return debugProcess.invokeInManagerThread { - val position = frame.location().findPosition(debugProcess.project) - CoroutineStackFrame(frame, position) + CoroutineStackFrame(debugProcess, this) } } + + override fun provideFrame(debugProcess: DebugProcessImpl): XStackFrame? = + debugProcess.invokeInManagerThread { KotlinStackFrame(frame) } } sealed class CoroutineStackFrameItem(val location: Location, val spilledVariables: List) : StackFrameItem(location, spilledVariables) { val log by logger - override fun createFrame(debugProcess: DebugProcessImpl): XStackFrame? { + override fun createFrame(debugProcess: DebugProcessImpl): CoroutineGeneratedFrame? { return debugProcess.invokeInManagerThread { - val frame = debugProcess.findFirstFrame() ?: return@invokeInManagerThread null - val locationFrame = LocationStackFrameProxyImpl(location, frame) - val position = location.findPosition(debugProcess.project) - CoroutineStackFrame(locationFrame, position) + CoroutineStackFrame(debugProcess, this) } } @@ -112,6 +108,10 @@ sealed class CoroutineStackFrameItem(val location: Location, val spilledVariable location.safeLineNumber() + ":" + location.safeKotlinPreferredLineNumber() } +interface FrameProvider { + fun provideFrame(debugProcess: DebugProcessImpl): XStackFrame? +} + fun DebugProcessImpl.findFirstFrame(): StackFrameProxyImpl? = suspendManager.pausedContext.thread?.forceFrames()?.firstOrNull() @@ -123,71 +123,19 @@ fun DebugProcessImpl.findFirstFrame(): StackFrameProxyImpl? = */ class CoroutinePreflightFrame( val coroutineInfoData: CoroutineInfoData, - val frame: StackFrameProxyImpl, + private val frame: StackFrameProxyImpl, val threadPreCoroutineFrames: List, - val mode: SuspendExitMode, - private val firstFrameVariables: List = coroutineInfoData.topFrameVariables() -) : CoroutineStackFrame(frame, null, firstFrameVariables) { - - override fun isInLibraryContent() = false - - override fun isSynthetic() = false - -} - -class CreationCoroutineStackFrame( - frame: StackFrameProxyImpl, - sourcePosition: XSourcePosition?, - val first: Boolean -) : CoroutineStackFrame(frame, sourcePosition, emptyList(), false), XDebuggerFramesList.ItemWithSeparatorAbove { - - override fun getCaptionAboveOf() = - KotlinDebuggerCoroutinesBundle.message("coroutine.dump.creation.trace") - - override fun hasSeparatorAbove() = - first -} - -open class CoroutineStackFrame( - frame: StackFrameProxyImpl, - val position: XSourcePosition?, - private val spilledVariables: List? = null, - private val includeFrameVariables: Boolean = true, -) : KotlinStackFrame(frame) { - - init { - descriptor.updateRepresentation(null, DescriptorLabelListener.DUMMY_LISTENER) - } - - override fun equals(other: Any?): Boolean { - if (this === other) return true - - val frame = other as? JavaStackFrame ?: return false - - return descriptor.frameProxy == frame.descriptor.frameProxy - } - - override fun hashCode(): Int { - return descriptor.frameProxy.hashCode() - } - - override fun computeChildren(node: XCompositeNode) { - if (includeFrameVariables || spilledVariables == null) { - super.computeChildren(node) - } else { - // ignore original frame variables - val list = XValueChildrenList() - spilledVariables.forEach { list.add(it) } - node.addChildren(list, true) - } - } + val mode: SuspendExitMode +) : KotlinStackFrame(frame), JVMStackFrameInfoProvider { override fun superBuildVariables(evaluationContext: EvaluationContextImpl, children: XValueChildrenList) { super.superBuildVariables(evaluationContext, children) - if (spilledVariables != null) { + val topRestoredFrame = coroutineInfoData.stackTrace.firstOrNull() + if (topRestoredFrame != null && topRestoredFrame.location.isFilteredInvokeSuspend()) { + val firstFrameVariables: List = topRestoredFrame.spilledVariables children.let { val varNames = (0 until children.size()).map { children.getName(it) }.toSet() - spilledVariables.forEach { + firstFrameVariables.forEach { if (!varNames.contains(it.name)) children.add(it) } @@ -195,6 +143,32 @@ open class CoroutineStackFrame( } } - override fun getSourcePosition() = - position ?: super.getSourcePosition() -} \ No newline at end of file + override fun isInLibraryContent() = false + + override fun isSynthetic() = false +} + +class CreationCoroutineStackFrame(debugProcess: DebugProcessImpl, item: CoroutineStackFrameItem, val first: Boolean) : CoroutineStackFrame(debugProcess, item) { + override fun getCaptionAboveOf() = KotlinDebuggerCoroutinesBundle.message("coroutine.dump.creation.trace") + + override fun hasSeparatorAbove(): Boolean = + first +} + +open class CoroutineStackFrame(val debugProcess: DebugProcessImpl, val item: CoroutineStackFrameItem) : + StackFrameItem.CapturedStackFrame(debugProcess, item) { + + override fun computeChildren(node: XCompositeNode) { + if (item is FrameProvider) + item.provideFrame(debugProcess)?.computeChildren(node) + else + super.computeChildren(node) + } + + override fun getCaptionAboveOf() = "CoroutineExit" + + override fun hasSeparatorAbove(): Boolean = + false +} + +typealias CoroutineGeneratedFrame = StackFrameItem.CapturedStackFrame \ No newline at end of file diff --git a/idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/compat.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/compat.kt index e9542b8cb9d..b2c9e7ed0ff 100644 --- a/idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/compat.kt +++ b/idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/compat.kt @@ -11,8 +11,8 @@ import com.intellij.openapi.project.ex.ProjectManagerEx // FIX ME WHEN BUNCH 193 REMOVED fun ProjectManagerEx.forceCloseProjectEx(project: Project, dispose: Boolean): Boolean { if (!dispose) error("dispose should be true") - return this.forceCloseProject(project, true) + return this.forceCloseProject(project) } // FIX ME WHEN BUNCH 193 REMOVED -typealias TestApplicationManager = com.intellij.idea.IdeaTestApplication +typealias TestApplicationManager = com.intellij.testFramework.TestApplicationManager \ No newline at end of file diff --git a/idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/compat.kt.201 b/idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/compat.kt.193 similarity index 81% rename from idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/compat.kt.201 rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/compat.kt.193 index b2c9e7ed0ff..e9542b8cb9d 100644 --- a/idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/compat.kt.201 +++ b/idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/compat.kt.193 @@ -11,8 +11,8 @@ import com.intellij.openapi.project.ex.ProjectManagerEx // FIX ME WHEN BUNCH 193 REMOVED fun ProjectManagerEx.forceCloseProjectEx(project: Project, dispose: Boolean): Boolean { if (!dispose) error("dispose should be true") - return this.forceCloseProject(project) + return this.forceCloseProject(project, true) } // FIX ME WHEN BUNCH 193 REMOVED -typealias TestApplicationManager = com.intellij.testFramework.TestApplicationManager \ No newline at end of file +typealias TestApplicationManager = com.intellij.idea.IdeaTestApplication diff --git a/idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/gradleRoutines.kt b/idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/gradleRoutines.kt index d1d47e8a7e4..65ef655c68d 100644 --- a/idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/gradleRoutines.kt +++ b/idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/gradleRoutines.kt @@ -65,8 +65,6 @@ private fun _attachGradleProjectAndRefresh( ExternalSystemUtil.ensureToolWindowInitialized(project, GradleConstants.SYSTEM_ID) } } - - ExternalProjectsManagerImpl.disableProjectWatcherAutoUpdate(project) val settings = ExternalSystemApiUtil.getSettings(project, GradleConstants.SYSTEM_ID) if (settings.getLinkedProjectSettings(externalProjectPath) == null) { settings.linkProject(gradleProjectSettings) diff --git a/idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/gradleRoutines.kt.201 b/idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/gradleRoutines.kt.193 similarity index 97% rename from idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/gradleRoutines.kt.201 rename to idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/gradleRoutines.kt.193 index 65ef655c68d..d1d47e8a7e4 100644 --- a/idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/gradleRoutines.kt.201 +++ b/idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/gradleRoutines.kt.193 @@ -65,6 +65,8 @@ private fun _attachGradleProjectAndRefresh( ExternalSystemUtil.ensureToolWindowInitialized(project, GradleConstants.SYSTEM_ID) } } + + ExternalProjectsManagerImpl.disableProjectWatcherAutoUpdate(project) val settings = ExternalSystemApiUtil.getSettings(project, GradleConstants.SYSTEM_ID) if (settings.getLinkedProjectSettings(externalProjectPath) == null) { settings.linkProject(gradleProjectSettings) diff --git a/idea/resources-descriptors/META-INF/plugin.xml b/idea/resources-descriptors/META-INF/plugin.xml index e0b9060504b..b62fd98c138 100644 --- a/idea/resources-descriptors/META-INF/plugin.xml +++ b/idea/resources-descriptors/META-INF/plugin.xml @@ -13,7 +13,7 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio. @snapshot@ JetBrains - + com.intellij.modules.platform @@ -60,12 +60,6 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio. - - - org.jetbrains.kotlin.idea.caches.trackers.KotlinCodeBlockModificationListener - - - @@ -97,6 +91,8 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio. + + @@ -118,8 +114,12 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio. + - + + + @snapshot@ JetBrains - + com.intellij.modules.platform @@ -60,6 +60,12 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio. + + + org.jetbrains.kotlin.idea.caches.trackers.KotlinCodeBlockModificationListener + + + @@ -91,8 +97,6 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio. - - @@ -114,12 +118,8 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio. - - - - + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + - - - - + + + + - + - - - - - - - + + + + + + + - - - + + + - - + + - + diff --git a/idea/resources/META-INF/gradle-java.xml.193 b/idea/resources/META-INF/gradle-java.xml.193 new file mode 100644 index 00000000000..c0b25a55d59 --- /dev/null +++ b/idea/resources/META-INF/gradle-java.xml.193 @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/idea/resources/META-INF/gradle-java.xml.201 b/idea/resources/META-INF/gradle-java.xml.201 deleted file mode 100644 index 5ecfbfc77dd..00000000000 --- a/idea/resources/META-INF/gradle-java.xml.201 +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/idea/resources/META-INF/gradle.xml b/idea/resources/META-INF/gradle.xml index 0e9c4af8ec8..88b3459575a 100644 --- a/idea/resources/META-INF/gradle.xml +++ b/idea/resources/META-INF/gradle.xml @@ -25,6 +25,8 @@ + + @@ -39,9 +41,9 @@ defaultValue="true" restartRequired="false"/> - @@ -51,5 +53,9 @@ + + + + diff --git a/idea/resources/META-INF/gradle.xml.201 b/idea/resources/META-INF/gradle.xml.193 similarity index 85% rename from idea/resources/META-INF/gradle.xml.201 rename to idea/resources/META-INF/gradle.xml.193 index 88b3459575a..0e9c4af8ec8 100644 --- a/idea/resources/META-INF/gradle.xml.201 +++ b/idea/resources/META-INF/gradle.xml.193 @@ -25,8 +25,6 @@ - - @@ -41,9 +39,9 @@ defaultValue="true" restartRequired="false"/> - @@ -53,9 +51,5 @@ - - - - diff --git a/idea/resources/META-INF/jvm.xml b/idea/resources/META-INF/jvm.xml index dac175407f7..a320eca80d8 100644 --- a/idea/resources/META-INF/jvm.xml +++ b/idea/resources/META-INF/jvm.xml @@ -1,5 +1,9 @@ + + + + diff --git a/idea/resources/META-INF/jvm.xml.201 b/idea/resources/META-INF/jvm.xml.193 similarity index 77% rename from idea/resources/META-INF/jvm.xml.201 rename to idea/resources/META-INF/jvm.xml.193 index a320eca80d8..dac175407f7 100644 --- a/idea/resources/META-INF/jvm.xml.201 +++ b/idea/resources/META-INF/jvm.xml.193 @@ -1,9 +1,5 @@ - - - - diff --git a/idea/src/org/jetbrains/kotlin/idea/KotlinDocumentationProviderCompat.kt b/idea/src/org/jetbrains/kotlin/idea/KotlinDocumentationProviderCompat.kt index e1c7159a232..91c6bd97c3b 100644 --- a/idea/src/org/jetbrains/kotlin/idea/KotlinDocumentationProviderCompat.kt +++ b/idea/src/org/jetbrains/kotlin/idea/KotlinDocumentationProviderCompat.kt @@ -5,5 +5,35 @@ package org.jetbrains.kotlin.idea +import com.intellij.codeInsight.javadoc.JavaDocExternalFilter +import com.intellij.psi.PsiDocCommentBase +import com.intellij.psi.PsiElement +import com.intellij.psi.PsiFile +import com.intellij.psi.util.PsiTreeUtil +import org.jetbrains.kotlin.psi.KtDeclaration +import org.jetbrains.kotlin.psi.KtFile +import java.util.function.Consumer + // FIX ME WHEN BUNCH 201 REMOVED -class KotlinDocumentationProvider : KotlinDocumentationProviderCompatBase() \ No newline at end of file +class KotlinDocumentationProvider : KotlinDocumentationProviderCompatBase() { + + override fun collectDocComments(file: PsiFile, sink: Consumer) { + if (file !is KtFile) return + + PsiTreeUtil.processElements(file) { + val comment = (it as? KtDeclaration)?.docComment + if (comment != null) sink.accept(comment) + true + } + } + + override fun generateRenderedDoc(element: PsiElement): String? { + val docComment = (element as? KtDeclaration)?.docComment ?: return null + + val result = StringBuilder().also { + it.renderKDoc(docComment.getDefaultSection(), docComment.getAllSections()) + } + + return JavaDocExternalFilter.filterInternalDocInfo(result.toString()) + } +} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/KotlinDocumentationProviderCompat.kt.193 b/idea/src/org/jetbrains/kotlin/idea/KotlinDocumentationProviderCompat.kt.193 new file mode 100644 index 00000000000..e1c7159a232 --- /dev/null +++ b/idea/src/org/jetbrains/kotlin/idea/KotlinDocumentationProviderCompat.kt.193 @@ -0,0 +1,9 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.idea + +// FIX ME WHEN BUNCH 201 REMOVED +class KotlinDocumentationProvider : KotlinDocumentationProviderCompatBase() \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/KotlinDocumentationProviderCompat.kt.201 b/idea/src/org/jetbrains/kotlin/idea/KotlinDocumentationProviderCompat.kt.201 deleted file mode 100644 index 91c6bd97c3b..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/KotlinDocumentationProviderCompat.kt.201 +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.idea - -import com.intellij.codeInsight.javadoc.JavaDocExternalFilter -import com.intellij.psi.PsiDocCommentBase -import com.intellij.psi.PsiElement -import com.intellij.psi.PsiFile -import com.intellij.psi.util.PsiTreeUtil -import org.jetbrains.kotlin.psi.KtDeclaration -import org.jetbrains.kotlin.psi.KtFile -import java.util.function.Consumer - -// FIX ME WHEN BUNCH 201 REMOVED -class KotlinDocumentationProvider : KotlinDocumentationProviderCompatBase() { - - override fun collectDocComments(file: PsiFile, sink: Consumer) { - if (file !is KtFile) return - - PsiTreeUtil.processElements(file) { - val comment = (it as? KtDeclaration)?.docComment - if (comment != null) sink.accept(comment) - true - } - } - - override fun generateRenderedDoc(element: PsiElement): String? { - val docComment = (element as? KtDeclaration)?.docComment ?: return null - - val result = StringBuilder().also { - it.renderKDoc(docComment.getDefaultSection(), docComment.getAllSections()) - } - - return JavaDocExternalFilter.filterInternalDocInfo(result.toString()) - } -} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/BreadcrumbsProviderCompatBase.kt b/idea/src/org/jetbrains/kotlin/idea/codeInsight/BreadcrumbsProviderCompatBase.kt index ed8af9ec992..feae10da8d9 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/BreadcrumbsProviderCompatBase.kt +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/BreadcrumbsProviderCompatBase.kt @@ -5,7 +5,11 @@ package org.jetbrains.kotlin.idea.codeInsight -import com.intellij.xml.breadcrumbs.BreadcrumbsInfoProvider +import com.intellij.ide.ui.UISettings +import com.intellij.ui.breadcrumbs.BreadcrumbsProvider // FIX ME WHEN BUNCH 201 REMOVED -typealias BreadcrumbsProviderCompatBase = BreadcrumbsInfoProvider \ No newline at end of file +abstract class BreadcrumbsProviderCompatBase : BreadcrumbsProvider { + override fun isShownByDefault(): Boolean = + !UISettings.instance.showMembersInNavigationBar +} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/BreadcrumbsProviderCompatBase.kt.201 b/idea/src/org/jetbrains/kotlin/idea/codeInsight/BreadcrumbsProviderCompatBase.kt.193 similarity index 52% rename from idea/src/org/jetbrains/kotlin/idea/codeInsight/BreadcrumbsProviderCompatBase.kt.201 rename to idea/src/org/jetbrains/kotlin/idea/codeInsight/BreadcrumbsProviderCompatBase.kt.193 index feae10da8d9..ed8af9ec992 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/BreadcrumbsProviderCompatBase.kt.201 +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/BreadcrumbsProviderCompatBase.kt.193 @@ -5,11 +5,7 @@ package org.jetbrains.kotlin.idea.codeInsight -import com.intellij.ide.ui.UISettings -import com.intellij.ui.breadcrumbs.BreadcrumbsProvider +import com.intellij.xml.breadcrumbs.BreadcrumbsInfoProvider // FIX ME WHEN BUNCH 201 REMOVED -abstract class BreadcrumbsProviderCompatBase : BreadcrumbsProvider { - override fun isShownByDefault(): Boolean = - !UISettings.instance.showMembersInNavigationBar -} \ No newline at end of file +typealias BreadcrumbsProviderCompatBase = BreadcrumbsInfoProvider \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinRefactoringHelperForDelayedRequests.kt b/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinRefactoringHelperForDelayedRequests.kt index fef84de6423..5493af06523 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinRefactoringHelperForDelayedRequests.kt +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinRefactoringHelperForDelayedRequests.kt @@ -24,8 +24,8 @@ import org.jetbrains.kotlin.idea.codeInsight.shorten.prepareDelayedRequests import org.jetbrains.kotlin.idea.util.application.runWriteAction class KotlinRefactoringHelperForDelayedRequests : RefactoringHelper { - override fun prepareOperation(usages: Array?): Any? { - if (usages != null && usages.isNotEmpty()) { + override fun prepareOperation(usages: Array): Any? { + if (usages.isNotEmpty()) { val project = usages[0].project prepareDelayedRequests(project) } diff --git a/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinRefactoringHelperForDelayedRequests.kt.201 b/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinRefactoringHelperForDelayedRequests.kt.193 similarity index 91% rename from idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinRefactoringHelperForDelayedRequests.kt.201 rename to idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinRefactoringHelperForDelayedRequests.kt.193 index 5493af06523..fef84de6423 100644 --- a/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinRefactoringHelperForDelayedRequests.kt.201 +++ b/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinRefactoringHelperForDelayedRequests.kt.193 @@ -24,8 +24,8 @@ import org.jetbrains.kotlin.idea.codeInsight.shorten.prepareDelayedRequests import org.jetbrains.kotlin.idea.util.application.runWriteAction class KotlinRefactoringHelperForDelayedRequests : RefactoringHelper { - override fun prepareOperation(usages: Array): Any? { - if (usages.isNotEmpty()) { + override fun prepareOperation(usages: Array?): Any? { + if (usages != null && usages.isNotEmpty()) { val project = usages[0].project prepareDelayedRequests(project) } diff --git a/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinUsageTypeProvider.kt b/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinUsageTypeProvider.kt index 859d2253b26..6f479b95fc0 100644 --- a/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinUsageTypeProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinUsageTypeProvider.kt @@ -75,35 +75,35 @@ object KotlinUsageTypeProvider : UsageTypeProviderEx { object KotlinUsageTypes { // types - val TYPE_CONSTRAINT = UsageType(KotlinBundle.message("find.usages.type.type.constraint")) - val VALUE_PARAMETER_TYPE = UsageType(KotlinBundle.message("find.usages.type.value.parameter.type")) - val NON_LOCAL_PROPERTY_TYPE = UsageType(KotlinBundle.message("find.usages.type.nonLocal.property.type")) - val FUNCTION_RETURN_TYPE = UsageType(KotlinBundle.message("find.usages.type.function.return.type")) - val SUPER_TYPE = UsageType(KotlinBundle.message("find.usages.type.superType")) - val IS = UsageType(KotlinBundle.message("find.usages.type.is")) - val CLASS_OBJECT_ACCESS = UsageType(KotlinBundle.message("find.usages.type.class.object")) - val COMPANION_OBJECT_ACCESS = UsageType(KotlinBundle.message("find.usages.type.companion.object")) - val EXTENSION_RECEIVER_TYPE = UsageType(KotlinBundle.message("find.usages.type.extension.receiver.type")) - val SUPER_TYPE_QUALIFIER = UsageType(KotlinBundle.message("find.usages.type.super.type.qualifier")) - val TYPE_ALIAS = UsageType(KotlinBundle.message("find.usages.type.type.alias")) + val TYPE_CONSTRAINT = UsageType(KotlinBundle.lazyMessage("find.usages.type.type.constraint")) + val VALUE_PARAMETER_TYPE = UsageType(KotlinBundle.lazyMessage("find.usages.type.value.parameter.type")) + val NON_LOCAL_PROPERTY_TYPE = UsageType(KotlinBundle.lazyMessage("find.usages.type.nonLocal.property.type")) + val FUNCTION_RETURN_TYPE = UsageType(KotlinBundle.lazyMessage("find.usages.type.function.return.type")) + val SUPER_TYPE = UsageType(KotlinBundle.lazyMessage("find.usages.type.superType")) + val IS = UsageType(KotlinBundle.lazyMessage("find.usages.type.is")) + val CLASS_OBJECT_ACCESS = UsageType(KotlinBundle.lazyMessage("find.usages.type.class.object")) + val COMPANION_OBJECT_ACCESS = UsageType(KotlinBundle.lazyMessage("find.usages.type.companion.object")) + val EXTENSION_RECEIVER_TYPE = UsageType(KotlinBundle.lazyMessage("find.usages.type.extension.receiver.type")) + val SUPER_TYPE_QUALIFIER = UsageType(KotlinBundle.lazyMessage("find.usages.type.super.type.qualifier")) + val TYPE_ALIAS = UsageType(KotlinBundle.lazyMessage("find.usages.type.type.alias")) // functions - val FUNCTION_CALL = UsageType(KotlinBundle.message("find.usages.type.function.call")) - val IMPLICIT_GET = UsageType(KotlinBundle.message("find.usages.type.implicit.get")) - val IMPLICIT_SET = UsageType(KotlinBundle.message("find.usages.type.implicit.set")) - val IMPLICIT_INVOKE = UsageType(KotlinBundle.message("find.usages.type.implicit.invoke")) - val IMPLICIT_ITERATION = UsageType(KotlinBundle.message("find.usages.type.implicit.iteration")) - val PROPERTY_DELEGATION = UsageType(KotlinBundle.message("find.usages.type.property.delegation")) + val FUNCTION_CALL = UsageType(KotlinBundle.lazyMessage("find.usages.type.function.call")) + val IMPLICIT_GET = UsageType(KotlinBundle.lazyMessage("find.usages.type.implicit.get")) + val IMPLICIT_SET = UsageType(KotlinBundle.lazyMessage("find.usages.type.implicit.set")) + val IMPLICIT_INVOKE = UsageType(KotlinBundle.lazyMessage("find.usages.type.implicit.invoke")) + val IMPLICIT_ITERATION = UsageType(KotlinBundle.lazyMessage("find.usages.type.implicit.iteration")) + val PROPERTY_DELEGATION = UsageType(KotlinBundle.lazyMessage("find.usages.type.property.delegation")) // values - val RECEIVER = UsageType(KotlinBundle.message("find.usages.type.receiver")) - val DELEGATE = UsageType(KotlinBundle.message("find.usages.type.delegate")) + val RECEIVER = UsageType(KotlinBundle.lazyMessage("find.usages.type.receiver")) + val DELEGATE = UsageType(KotlinBundle.lazyMessage("find.usages.type.delegate")) // packages - val PACKAGE_DIRECTIVE = UsageType(KotlinBundle.message("find.usages.type.packageDirective")) - val PACKAGE_MEMBER_ACCESS = UsageType(KotlinBundle.message("find.usages.type.packageMemberAccess")) + val PACKAGE_DIRECTIVE = UsageType(KotlinBundle.lazyMessage("find.usages.type.packageDirective")) + val PACKAGE_MEMBER_ACCESS = UsageType(KotlinBundle.lazyMessage("find.usages.type.packageMemberAccess")) // common usage types - val CALLABLE_REFERENCE = UsageType(KotlinBundle.message("find.usages.type.callable.reference")) - val NAMED_ARGUMENT = UsageType(KotlinBundle.message("find.usages.type.named.argument")) + val CALLABLE_REFERENCE = UsageType(KotlinBundle.lazyMessage("find.usages.type.callable.reference")) + val NAMED_ARGUMENT = UsageType(KotlinBundle.lazyMessage("find.usages.type.named.argument")) } diff --git a/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinUsageTypeProvider.kt.201 b/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinUsageTypeProvider.kt.193 similarity index 60% rename from idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinUsageTypeProvider.kt.201 rename to idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinUsageTypeProvider.kt.193 index 6f479b95fc0..859d2253b26 100644 --- a/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinUsageTypeProvider.kt.201 +++ b/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinUsageTypeProvider.kt.193 @@ -75,35 +75,35 @@ object KotlinUsageTypeProvider : UsageTypeProviderEx { object KotlinUsageTypes { // types - val TYPE_CONSTRAINT = UsageType(KotlinBundle.lazyMessage("find.usages.type.type.constraint")) - val VALUE_PARAMETER_TYPE = UsageType(KotlinBundle.lazyMessage("find.usages.type.value.parameter.type")) - val NON_LOCAL_PROPERTY_TYPE = UsageType(KotlinBundle.lazyMessage("find.usages.type.nonLocal.property.type")) - val FUNCTION_RETURN_TYPE = UsageType(KotlinBundle.lazyMessage("find.usages.type.function.return.type")) - val SUPER_TYPE = UsageType(KotlinBundle.lazyMessage("find.usages.type.superType")) - val IS = UsageType(KotlinBundle.lazyMessage("find.usages.type.is")) - val CLASS_OBJECT_ACCESS = UsageType(KotlinBundle.lazyMessage("find.usages.type.class.object")) - val COMPANION_OBJECT_ACCESS = UsageType(KotlinBundle.lazyMessage("find.usages.type.companion.object")) - val EXTENSION_RECEIVER_TYPE = UsageType(KotlinBundle.lazyMessage("find.usages.type.extension.receiver.type")) - val SUPER_TYPE_QUALIFIER = UsageType(KotlinBundle.lazyMessage("find.usages.type.super.type.qualifier")) - val TYPE_ALIAS = UsageType(KotlinBundle.lazyMessage("find.usages.type.type.alias")) + val TYPE_CONSTRAINT = UsageType(KotlinBundle.message("find.usages.type.type.constraint")) + val VALUE_PARAMETER_TYPE = UsageType(KotlinBundle.message("find.usages.type.value.parameter.type")) + val NON_LOCAL_PROPERTY_TYPE = UsageType(KotlinBundle.message("find.usages.type.nonLocal.property.type")) + val FUNCTION_RETURN_TYPE = UsageType(KotlinBundle.message("find.usages.type.function.return.type")) + val SUPER_TYPE = UsageType(KotlinBundle.message("find.usages.type.superType")) + val IS = UsageType(KotlinBundle.message("find.usages.type.is")) + val CLASS_OBJECT_ACCESS = UsageType(KotlinBundle.message("find.usages.type.class.object")) + val COMPANION_OBJECT_ACCESS = UsageType(KotlinBundle.message("find.usages.type.companion.object")) + val EXTENSION_RECEIVER_TYPE = UsageType(KotlinBundle.message("find.usages.type.extension.receiver.type")) + val SUPER_TYPE_QUALIFIER = UsageType(KotlinBundle.message("find.usages.type.super.type.qualifier")) + val TYPE_ALIAS = UsageType(KotlinBundle.message("find.usages.type.type.alias")) // functions - val FUNCTION_CALL = UsageType(KotlinBundle.lazyMessage("find.usages.type.function.call")) - val IMPLICIT_GET = UsageType(KotlinBundle.lazyMessage("find.usages.type.implicit.get")) - val IMPLICIT_SET = UsageType(KotlinBundle.lazyMessage("find.usages.type.implicit.set")) - val IMPLICIT_INVOKE = UsageType(KotlinBundle.lazyMessage("find.usages.type.implicit.invoke")) - val IMPLICIT_ITERATION = UsageType(KotlinBundle.lazyMessage("find.usages.type.implicit.iteration")) - val PROPERTY_DELEGATION = UsageType(KotlinBundle.lazyMessage("find.usages.type.property.delegation")) + val FUNCTION_CALL = UsageType(KotlinBundle.message("find.usages.type.function.call")) + val IMPLICIT_GET = UsageType(KotlinBundle.message("find.usages.type.implicit.get")) + val IMPLICIT_SET = UsageType(KotlinBundle.message("find.usages.type.implicit.set")) + val IMPLICIT_INVOKE = UsageType(KotlinBundle.message("find.usages.type.implicit.invoke")) + val IMPLICIT_ITERATION = UsageType(KotlinBundle.message("find.usages.type.implicit.iteration")) + val PROPERTY_DELEGATION = UsageType(KotlinBundle.message("find.usages.type.property.delegation")) // values - val RECEIVER = UsageType(KotlinBundle.lazyMessage("find.usages.type.receiver")) - val DELEGATE = UsageType(KotlinBundle.lazyMessage("find.usages.type.delegate")) + val RECEIVER = UsageType(KotlinBundle.message("find.usages.type.receiver")) + val DELEGATE = UsageType(KotlinBundle.message("find.usages.type.delegate")) // packages - val PACKAGE_DIRECTIVE = UsageType(KotlinBundle.lazyMessage("find.usages.type.packageDirective")) - val PACKAGE_MEMBER_ACCESS = UsageType(KotlinBundle.lazyMessage("find.usages.type.packageMemberAccess")) + val PACKAGE_DIRECTIVE = UsageType(KotlinBundle.message("find.usages.type.packageDirective")) + val PACKAGE_MEMBER_ACCESS = UsageType(KotlinBundle.message("find.usages.type.packageMemberAccess")) // common usage types - val CALLABLE_REFERENCE = UsageType(KotlinBundle.lazyMessage("find.usages.type.callable.reference")) - val NAMED_ARGUMENT = UsageType(KotlinBundle.lazyMessage("find.usages.type.named.argument")) + val CALLABLE_REFERENCE = UsageType(KotlinBundle.message("find.usages.type.callable.reference")) + val NAMED_ARGUMENT = UsageType(KotlinBundle.message("find.usages.type.named.argument")) } diff --git a/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/compat.kt b/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/compat.kt index 7fbb5130f69..a8d8434f434 100644 --- a/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/compat.kt +++ b/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/compat.kt @@ -10,5 +10,5 @@ import com.intellij.usageView.UsageInfo import com.intellij.util.Processor // FIX ME WHEN BUNCH 193 REMOVED -typealias UsageInfoProcessor = Processor -typealias SliceUsageProcessor = Processor \ No newline at end of file +typealias UsageInfoProcessor = Processor +typealias SliceUsageProcessor = Processor \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/compat.kt.201 b/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/compat.kt.193 similarity index 78% rename from idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/compat.kt.201 rename to idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/compat.kt.193 index a8d8434f434..7fbb5130f69 100644 --- a/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/compat.kt.201 +++ b/idea/src/org/jetbrains/kotlin/idea/findUsages/handlers/compat.kt.193 @@ -10,5 +10,5 @@ import com.intellij.usageView.UsageInfo import com.intellij.util.Processor // FIX ME WHEN BUNCH 193 REMOVED -typealias UsageInfoProcessor = Processor -typealias SliceUsageProcessor = Processor \ No newline at end of file +typealias UsageInfoProcessor = Processor +typealias SliceUsageProcessor = Processor \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/compat.kt b/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/compat.kt index 0b7f86715d6..f107283542f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/compat.kt +++ b/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/compat.kt @@ -3,21 +3,22 @@ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -@file:Suppress("TYPEALIAS_EXPANSION_DEPRECATION", "DEPRECATION", "UnstableApiUsage") +@file:Suppress("TYPEALIAS_EXPANSION_DEPRECATION", "DEPRECATION") package org.jetbrains.kotlin.idea.hierarchy.calls import com.intellij.ide.hierarchy.call.CalleeMethodsTreeStructure import com.intellij.ide.hierarchy.call.CallerMethodsTreeStructure import com.intellij.openapi.project.Project +import com.intellij.psi.PsiMember import com.intellij.psi.PsiMethod // FIX ME WHEN BUNCH 193 REMOVED fun createCallerMethodsTreeStructure(project: Project, method: PsiMethod, scopeType: String): CallerMethodsTreeStructure { - return CallerMethodsTreeStructure(project, method, scopeType) + return CallerMethodsTreeStructure(project, method as PsiMember, scopeType) } // FIX ME WHEN BUNCH 193 REMOVED fun createCalleeMethodsTreeStructure(project: Project, method: PsiMethod, scopeType: String): CalleeMethodsTreeStructure { - return CalleeMethodsTreeStructure(project, method, scopeType) + return CalleeMethodsTreeStructure(project, method as PsiMember, scopeType) } diff --git a/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/compat.kt.201 b/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/compat.kt.193 similarity index 75% rename from idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/compat.kt.201 rename to idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/compat.kt.193 index f107283542f..0b7f86715d6 100644 --- a/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/compat.kt.201 +++ b/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/compat.kt.193 @@ -3,22 +3,21 @@ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -@file:Suppress("TYPEALIAS_EXPANSION_DEPRECATION", "DEPRECATION") +@file:Suppress("TYPEALIAS_EXPANSION_DEPRECATION", "DEPRECATION", "UnstableApiUsage") package org.jetbrains.kotlin.idea.hierarchy.calls import com.intellij.ide.hierarchy.call.CalleeMethodsTreeStructure import com.intellij.ide.hierarchy.call.CallerMethodsTreeStructure import com.intellij.openapi.project.Project -import com.intellij.psi.PsiMember import com.intellij.psi.PsiMethod // FIX ME WHEN BUNCH 193 REMOVED fun createCallerMethodsTreeStructure(project: Project, method: PsiMethod, scopeType: String): CallerMethodsTreeStructure { - return CallerMethodsTreeStructure(project, method as PsiMember, scopeType) + return CallerMethodsTreeStructure(project, method, scopeType) } // FIX ME WHEN BUNCH 193 REMOVED fun createCalleeMethodsTreeStructure(project: Project, method: PsiMethod, scopeType: String): CalleeMethodsTreeStructure { - return CalleeMethodsTreeStructure(project, method as PsiMember, scopeType) + return CalleeMethodsTreeStructure(project, method, scopeType) } diff --git a/idea/src/org/jetbrains/kotlin/idea/navigationToolbar/AbstractNavBarModelExtensionCompatBase.kt b/idea/src/org/jetbrains/kotlin/idea/navigationToolbar/AbstractNavBarModelExtensionCompatBase.kt index 14c48d2e50d..c5794523587 100644 --- a/idea/src/org/jetbrains/kotlin/idea/navigationToolbar/AbstractNavBarModelExtensionCompatBase.kt +++ b/idea/src/org/jetbrains/kotlin/idea/navigationToolbar/AbstractNavBarModelExtensionCompatBase.kt @@ -5,14 +5,28 @@ package org.jetbrains.kotlin.idea.navigationToolbar -import com.intellij.ide.navigationToolbar.AbstractNavBarModelExtension +import com.intellij.ide.navigationToolbar.StructureAwareNavBarModelExtension +import com.intellij.lang.Language import com.intellij.psi.PsiElement +import org.jetbrains.kotlin.idea.KotlinIconProvider +import org.jetbrains.kotlin.idea.KotlinLanguage +import org.jetbrains.kotlin.psi.KtFile // FIX ME WHEN BUNCH 193 REMOVED -abstract class AbstractNavBarModelExtensionCompatBase : AbstractNavBarModelExtension() { +abstract class AbstractNavBarModelExtensionCompatBase : StructureAwareNavBarModelExtension() { protected abstract fun adjustElementImpl(psiElement: PsiElement?): PsiElement? override fun adjustElement(psiElement: PsiElement): PsiElement? = adjustElementImpl(psiElement) + + override val language: Language + get() = KotlinLanguage.INSTANCE + + override fun acceptParentFromModel(psiElement: PsiElement?): Boolean { + if (psiElement is KtFile) { + return KotlinIconProvider.getSingleClass(psiElement) == null + } + return true + } } \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/navigationToolbar/AbstractNavBarModelExtensionCompatBase.kt.193 b/idea/src/org/jetbrains/kotlin/idea/navigationToolbar/AbstractNavBarModelExtensionCompatBase.kt.193 new file mode 100644 index 00000000000..14c48d2e50d --- /dev/null +++ b/idea/src/org/jetbrains/kotlin/idea/navigationToolbar/AbstractNavBarModelExtensionCompatBase.kt.193 @@ -0,0 +1,18 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.idea.navigationToolbar + +import com.intellij.ide.navigationToolbar.AbstractNavBarModelExtension +import com.intellij.psi.PsiElement + +// FIX ME WHEN BUNCH 193 REMOVED +abstract class AbstractNavBarModelExtensionCompatBase : AbstractNavBarModelExtension() { + + protected abstract fun adjustElementImpl(psiElement: PsiElement?): PsiElement? + + override fun adjustElement(psiElement: PsiElement): PsiElement? = + adjustElementImpl(psiElement) +} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/navigationToolbar/AbstractNavBarModelExtensionCompatBase.kt.201 b/idea/src/org/jetbrains/kotlin/idea/navigationToolbar/AbstractNavBarModelExtensionCompatBase.kt.201 deleted file mode 100644 index c5794523587..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/navigationToolbar/AbstractNavBarModelExtensionCompatBase.kt.201 +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.idea.navigationToolbar - -import com.intellij.ide.navigationToolbar.StructureAwareNavBarModelExtension -import com.intellij.lang.Language -import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.idea.KotlinIconProvider -import org.jetbrains.kotlin.idea.KotlinLanguage -import org.jetbrains.kotlin.psi.KtFile - -// FIX ME WHEN BUNCH 193 REMOVED -abstract class AbstractNavBarModelExtensionCompatBase : StructureAwareNavBarModelExtension() { - - protected abstract fun adjustElementImpl(psiElement: PsiElement?): PsiElement? - - override fun adjustElement(psiElement: PsiElement): PsiElement? = - adjustElementImpl(psiElement) - - override val language: Language - get() = KotlinLanguage.INSTANCE - - override fun acceptParentFromModel(psiElement: PsiElement?): Boolean { - if (psiElement is KtFile) { - return KotlinIconProvider.getSingleClass(psiElement) == null - } - return true - } -} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/projectView/compat.kt b/idea/src/org/jetbrains/kotlin/idea/projectView/compat.kt index e05f305edd5..eab090985d7 100644 --- a/idea/src/org/jetbrains/kotlin/idea/projectView/compat.kt +++ b/idea/src/org/jetbrains/kotlin/idea/projectView/compat.kt @@ -8,4 +8,4 @@ package org.jetbrains.kotlin.idea.projectView import com.intellij.ide.util.treeView.AbstractTreeNode // FIX ME WHEN BUNCH 193 REMOVED -typealias AbstractTreeNodeAny = AbstractTreeNode \ No newline at end of file +typealias AbstractTreeNodeAny = AbstractTreeNode<*> \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/projectView/compat.kt.201 b/idea/src/org/jetbrains/kotlin/idea/projectView/compat.kt.193 similarity index 86% rename from idea/src/org/jetbrains/kotlin/idea/projectView/compat.kt.201 rename to idea/src/org/jetbrains/kotlin/idea/projectView/compat.kt.193 index eab090985d7..e05f305edd5 100644 --- a/idea/src/org/jetbrains/kotlin/idea/projectView/compat.kt.201 +++ b/idea/src/org/jetbrains/kotlin/idea/projectView/compat.kt.193 @@ -8,4 +8,4 @@ package org.jetbrains.kotlin.idea.projectView import com.intellij.ide.util.treeView.AbstractTreeNode // FIX ME WHEN BUNCH 193 REMOVED -typealias AbstractTreeNodeAny = AbstractTreeNode<*> \ No newline at end of file +typealias AbstractTreeNodeAny = AbstractTreeNode \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/BunchedDeprecation.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/BunchedDeprecation.java index b62633af738..4c0d1a7b3ab 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/BunchedDeprecation.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/BunchedDeprecation.java @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.idea.refactoring.changeSignature; import com.intellij.psi.PsiElement; +import com.intellij.psi.search.GlobalSearchScope; import com.intellij.refactoring.util.TextOccurrencesUtil; import com.intellij.usageView.UsageInfo; @@ -20,6 +21,7 @@ final class BunchedDeprecation { boolean searchInNonJavaFiles, String newQName, Collection results) { - TextOccurrencesUtil.findNonCodeUsages(element, stringToSearch, searchInStringsAndComments, searchInNonJavaFiles, newQName, results); + TextOccurrencesUtil.findNonCodeUsages(element, GlobalSearchScope.projectScope(element.getProject()), + stringToSearch, searchInStringsAndComments, searchInNonJavaFiles, newQName, results); } } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/BunchedDeprecation.java.201 b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/BunchedDeprecation.java.193 similarity index 73% rename from idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/BunchedDeprecation.java.201 rename to idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/BunchedDeprecation.java.193 index 4c0d1a7b3ab..b62633af738 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/BunchedDeprecation.java.201 +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/BunchedDeprecation.java.193 @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.idea.refactoring.changeSignature; import com.intellij.psi.PsiElement; -import com.intellij.psi.search.GlobalSearchScope; import com.intellij.refactoring.util.TextOccurrencesUtil; import com.intellij.usageView.UsageInfo; @@ -21,7 +20,6 @@ final class BunchedDeprecation { boolean searchInNonJavaFiles, String newQName, Collection results) { - TextOccurrencesUtil.findNonCodeUsages(element, GlobalSearchScope.projectScope(element.getProject()), - stringToSearch, searchInStringsAndComments, searchInNonJavaFiles, newQName, results); + TextOccurrencesUtil.findNonCodeUsages(element, stringToSearch, searchInStringsAndComments, searchInNonJavaFiles, newQName, results); } } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/ui/KotlinChangeSignatureCompat.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/ui/KotlinChangeSignatureCompat.kt index f39465db594..84a4342f79a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/ui/KotlinChangeSignatureCompat.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/ui/KotlinChangeSignatureCompat.kt @@ -24,8 +24,10 @@ fun showOkCancelDialog( project, message, title, + Messages.getOkButton(), + Messages.getCancelButton(), icon ) } -typealias ComboBox = javax.swing.JComboBox +typealias ComboBox = com.intellij.openapi.ui.ComboBox diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/ui/KotlinChangeSignatureCompat.kt.201 b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/ui/KotlinChangeSignatureCompat.kt.193 similarity index 85% rename from idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/ui/KotlinChangeSignatureCompat.kt.201 rename to idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/ui/KotlinChangeSignatureCompat.kt.193 index 84a4342f79a..f39465db594 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/ui/KotlinChangeSignatureCompat.kt.201 +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/ui/KotlinChangeSignatureCompat.kt.193 @@ -24,10 +24,8 @@ fun showOkCancelDialog( project, message, title, - Messages.getOkButton(), - Messages.getCancelButton(), icon ) } -typealias ComboBox = com.intellij.openapi.ui.ComboBox +typealias ComboBox = javax.swing.JComboBox diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/MoveKotlinInnerHandler.kt.201 b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/MoveKotlinInnerHandler.kt similarity index 100% rename from idea/src/org/jetbrains/kotlin/idea/refactoring/move/MoveKotlinInnerHandler.kt.201 rename to idea/src/org/jetbrains/kotlin/idea/refactoring/move/MoveKotlinInnerHandler.kt diff --git a/build-common/src/com/intellij/util/io/JpsPersistentHashMap.java.201 b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/MoveKotlinInnerHandler.kt.193 similarity index 100% rename from build-common/src/com/intellij/util/io/JpsPersistentHashMap.java.201 rename to idea/src/org/jetbrains/kotlin/idea/refactoring/move/MoveKotlinInnerHandler.kt.193 diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/BunchedDeprecation.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/BunchedDeprecation.java index a7542175dec..04e417a5d18 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/BunchedDeprecation.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/BunchedDeprecation.java @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations; import com.intellij.psi.PsiElement; +import com.intellij.psi.search.GlobalSearchScope; import com.intellij.refactoring.util.TextOccurrencesUtil; import com.intellij.usageView.UsageInfo; @@ -20,6 +21,7 @@ final class BunchedDeprecation { boolean searchInNonJavaFiles, String newQName, Collection results) { - TextOccurrencesUtil.findNonCodeUsages(element, stringToSearch, searchInStringsAndComments, searchInNonJavaFiles, newQName, results); + TextOccurrencesUtil.findNonCodeUsages(element, GlobalSearchScope.projectScope(element.getProject()), + stringToSearch, searchInStringsAndComments, searchInNonJavaFiles, newQName, results); } } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/BunchedDeprecation.java.201 b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/BunchedDeprecation.java.193 similarity index 73% rename from idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/BunchedDeprecation.java.201 rename to idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/BunchedDeprecation.java.193 index 04e417a5d18..a7542175dec 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/BunchedDeprecation.java.201 +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/BunchedDeprecation.java.193 @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations; import com.intellij.psi.PsiElement; -import com.intellij.psi.search.GlobalSearchScope; import com.intellij.refactoring.util.TextOccurrencesUtil; import com.intellij.usageView.UsageInfo; @@ -21,7 +20,6 @@ final class BunchedDeprecation { boolean searchInNonJavaFiles, String newQName, Collection results) { - TextOccurrencesUtil.findNonCodeUsages(element, GlobalSearchScope.projectScope(element.getProject()), - stringToSearch, searchInStringsAndComments, searchInNonJavaFiles, newQName, results); + TextOccurrencesUtil.findNonCodeUsages(element, stringToSearch, searchInStringsAndComments, searchInNonJavaFiles, newQName, results); } } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSignaturePresentationBuilder.kt.201 b/idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSignaturePresentationBuilder.kt similarity index 100% rename from idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSignaturePresentationBuilder.kt.201 rename to idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSignaturePresentationBuilder.kt diff --git a/idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/EditorPosition.java.201 b/idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSignaturePresentationBuilder.kt.193 similarity index 100% rename from idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/EditorPosition.java.201 rename to idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSignaturePresentationBuilder.kt.193 diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringAvailability.kt.201 b/idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringAvailability.kt similarity index 100% rename from idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringAvailability.kt.201 rename to idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringAvailability.kt diff --git a/idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/EditorReport.java.201 b/idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringAvailability.kt.193 similarity index 100% rename from idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/EditorReport.java.201 rename to idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringAvailability.kt.193 diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringExecution.kt.201 b/idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringExecution.kt similarity index 100% rename from idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringExecution.kt.201 rename to idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringExecution.kt diff --git a/idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/EditorReportSeverity.java.201 b/idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringExecution.kt.193 similarity index 100% rename from idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/EditorReportSeverity.java.201 rename to idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringExecution.kt.193 diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringStateChanges.kt.201 b/idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringStateChanges.kt similarity index 100% rename from idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringStateChanges.kt.201 rename to idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringStateChanges.kt diff --git a/idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/KotlinDslModelsParameters.java.201 b/idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringStateChanges.kt.193 similarity index 100% rename from idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/KotlinDslModelsParameters.java.201 rename to idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringStateChanges.kt.193 diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringSupport.kt.201 b/idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringSupport.kt similarity index 100% rename from idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringSupport.kt.201 rename to idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringSupport.kt diff --git a/idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/KotlinDslScriptModel.java.201 b/idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringSupport.kt.193 similarity index 100% rename from idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/KotlinDslScriptModel.java.201 rename to idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringSupport.kt.193 diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringUI.kt.201 b/idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringUI.kt similarity index 100% rename from idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringUI.kt.201 rename to idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringUI.kt diff --git a/idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/KotlinDslScriptsModel.java.201 b/idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringUI.kt.193 similarity index 100% rename from idea/idea-gradle-tooling-api/src/org/gradle/tooling/model/kotlin/dsl/KotlinDslScriptsModel.java.201 rename to idea/src/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringUI.kt.193 diff --git a/idea/src/org/jetbrains/kotlin/idea/slicer/KotlinUsageContextDataFlowPanelBase.kt b/idea/src/org/jetbrains/kotlin/idea/slicer/KotlinUsageContextDataFlowPanelBase.kt index 219bb5527a0..073926738e9 100644 --- a/idea/src/org/jetbrains/kotlin/idea/slicer/KotlinUsageContextDataFlowPanelBase.kt +++ b/idea/src/org/jetbrains/kotlin/idea/slicer/KotlinUsageContextDataFlowPanelBase.kt @@ -55,7 +55,7 @@ sealed class KotlinUsageContextDataFlowPanelBase( } protected fun createPanel(element: PsiElement, dataFlowToThis: Boolean): JPanel { - val toolWindow = ToolWindowManager.getInstance(myProject).getToolWindow(ToolWindowId.FIND) + val toolWindow = ToolWindowManager.getInstance(myProject).getToolWindow(ToolWindowId.FIND) ?: error("Can't find ToolWindowId.FIND") val params = createParams(element) val rootNode = SliceRootNode(myProject, DuplicateMap(), KotlinSliceUsage(element, params)) diff --git a/idea/src/org/jetbrains/kotlin/idea/slicer/KotlinUsageContextDataFlowPanelBase.kt.201 b/idea/src/org/jetbrains/kotlin/idea/slicer/KotlinUsageContextDataFlowPanelBase.kt.193 similarity index 98% rename from idea/src/org/jetbrains/kotlin/idea/slicer/KotlinUsageContextDataFlowPanelBase.kt.201 rename to idea/src/org/jetbrains/kotlin/idea/slicer/KotlinUsageContextDataFlowPanelBase.kt.193 index 073926738e9..219bb5527a0 100644 --- a/idea/src/org/jetbrains/kotlin/idea/slicer/KotlinUsageContextDataFlowPanelBase.kt.201 +++ b/idea/src/org/jetbrains/kotlin/idea/slicer/KotlinUsageContextDataFlowPanelBase.kt.193 @@ -55,7 +55,7 @@ sealed class KotlinUsageContextDataFlowPanelBase( } protected fun createPanel(element: PsiElement, dataFlowToThis: Boolean): JPanel { - val toolWindow = ToolWindowManager.getInstance(myProject).getToolWindow(ToolWindowId.FIND) ?: error("Can't find ToolWindowId.FIND") + val toolWindow = ToolWindowManager.getInstance(myProject).getToolWindow(ToolWindowId.FIND) val params = createParams(element) val rootNode = SliceRootNode(myProject, DuplicateMap(), KotlinSliceUsage(element, params)) diff --git a/idea/src/org/jetbrains/kotlin/idea/startupCompat.kt b/idea/src/org/jetbrains/kotlin/idea/startupCompat.kt index ba5a504a5b8..391616ac93a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/startupCompat.kt +++ b/idea/src/org/jetbrains/kotlin/idea/startupCompat.kt @@ -5,9 +5,28 @@ package org.jetbrains.kotlin.idea +import com.intellij.codeInsight.daemon.impl.DaemonCodeAnalyzerImpl +import com.intellij.openapi.application.ModalityState +import com.intellij.openapi.application.ReadAction.nonBlocking import com.intellij.openapi.project.Project +import com.intellij.psi.search.FileTypeIndex +import com.intellij.psi.search.GlobalSearchScope +import com.intellij.util.concurrency.AppExecutorUtil +import java.util.concurrent.Callable + +// FIX ME WHEN BUNCH 201 REMOVED -// FIX ME WHEN BUNCH 193 REMOVED fun runActivity(project: Project) { - // nothing for 193 + nonBlocking(Callable { + return@Callable FileTypeIndex.containsFileOfType(KotlinFileType.INSTANCE, GlobalSearchScope.projectScope(project)) + }) + .inSmartMode(project) + .expireWith(project) + .finishOnUiThread(ModalityState.any()) { hasKotlinFiles -> + if (!hasKotlinFiles) return@finishOnUiThread + + val daemonCodeAnalyzer = DaemonCodeAnalyzerImpl.getInstanceEx(project) as DaemonCodeAnalyzerImpl + daemonCodeAnalyzer.runLocalInspectionPassAfterCompletionOfGeneralHighlightPass(true) + } + .submit(AppExecutorUtil.getAppExecutorService()) } \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/startupCompat.kt.193 b/idea/src/org/jetbrains/kotlin/idea/startupCompat.kt.193 new file mode 100644 index 00000000000..ba5a504a5b8 --- /dev/null +++ b/idea/src/org/jetbrains/kotlin/idea/startupCompat.kt.193 @@ -0,0 +1,13 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.idea + +import com.intellij.openapi.project.Project + +// FIX ME WHEN BUNCH 193 REMOVED +fun runActivity(project: Project) { + // nothing for 193 +} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/startupCompat.kt.201 b/idea/src/org/jetbrains/kotlin/idea/startupCompat.kt.201 deleted file mode 100644 index 391616ac93a..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/startupCompat.kt.201 +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.idea - -import com.intellij.codeInsight.daemon.impl.DaemonCodeAnalyzerImpl -import com.intellij.openapi.application.ModalityState -import com.intellij.openapi.application.ReadAction.nonBlocking -import com.intellij.openapi.project.Project -import com.intellij.psi.search.FileTypeIndex -import com.intellij.psi.search.GlobalSearchScope -import com.intellij.util.concurrency.AppExecutorUtil -import java.util.concurrent.Callable - -// FIX ME WHEN BUNCH 201 REMOVED - -fun runActivity(project: Project) { - nonBlocking(Callable { - return@Callable FileTypeIndex.containsFileOfType(KotlinFileType.INSTANCE, GlobalSearchScope.projectScope(project)) - }) - .inSmartMode(project) - .expireWith(project) - .finishOnUiThread(ModalityState.any()) { hasKotlinFiles -> - if (!hasKotlinFiles) return@finishOnUiThread - - val daemonCodeAnalyzer = DaemonCodeAnalyzerImpl.getInstanceEx(project) as DaemonCodeAnalyzerImpl - daemonCodeAnalyzer.runLocalInspectionPassAfterCompletionOfGeneralHighlightPass(true) - } - .submit(AppExecutorUtil.getAppExecutorService()) -} \ No newline at end of file diff --git a/idea/testData/gradle/testRunConfigurations/preferredConfigurations/src/test/kotlin/MyKotlinTest.kt b/idea/testData/gradle/testRunConfigurations/preferredConfigurations/src/test/kotlin/MyKotlinTest.kt old mode 100755 new mode 100644 index 62944811dec..7fb60e22420 --- a/idea/testData/gradle/testRunConfigurations/preferredConfigurations/src/test/kotlin/MyKotlinTest.kt +++ b/idea/testData/gradle/testRunConfigurations/preferredConfigurations/src/test/kotlin/MyKotlinTest.kt @@ -1,11 +1,11 @@ import org.junit.Test -class MyKotlinTest { +class MyKotlinTest { @Test - fun testA() { + fun testA() { } @Test - fun testB() { + fun testB() { } } \ No newline at end of file diff --git a/idea/testData/gradle/testRunConfigurations/preferredConfigurations/src/test/kotlin/MyKotlinTest.kt.193 b/idea/testData/gradle/testRunConfigurations/preferredConfigurations/src/test/kotlin/MyKotlinTest.kt.193 new file mode 100644 index 00000000000..62944811dec --- /dev/null +++ b/idea/testData/gradle/testRunConfigurations/preferredConfigurations/src/test/kotlin/MyKotlinTest.kt.193 @@ -0,0 +1,11 @@ +import org.junit.Test + +class MyKotlinTest { + @Test + fun testA() { + } + + @Test + fun testB() { + } +} \ No newline at end of file diff --git a/idea/testData/gradle/testRunConfigurations/preferredConfigurations/src/test/kotlin/MyKotlinTest.kt.201 b/idea/testData/gradle/testRunConfigurations/preferredConfigurations/src/test/kotlin/MyKotlinTest.kt.201 deleted file mode 100755 index 7fb60e22420..00000000000 --- a/idea/testData/gradle/testRunConfigurations/preferredConfigurations/src/test/kotlin/MyKotlinTest.kt.201 +++ /dev/null @@ -1,11 +0,0 @@ -import org.junit.Test - -class MyKotlinTest { - @Test - fun testA() { - } - - @Test - fun testB() { - } -} \ No newline at end of file diff --git a/idea/testData/navigationToolbar/ClassProperty.kt b/idea/testData/navigationToolbar/ClassProperty.kt index 4a43c8154c8..9c21c983ec7 100644 --- a/idea/testData/navigationToolbar/ClassProperty.kt +++ b/idea/testData/navigationToolbar/ClassProperty.kt @@ -1,4 +1,4 @@ -// NAV_BAR_ITEMS: src, ClassProperty +// NAV_BAR_ITEMS: src, ClassProperty, foo: Int class ClassProperty { val foo: Int diff --git a/idea/testData/navigationToolbar/ClassProperty.kt.201 b/idea/testData/navigationToolbar/ClassProperty.kt.193 similarity index 67% rename from idea/testData/navigationToolbar/ClassProperty.kt.201 rename to idea/testData/navigationToolbar/ClassProperty.kt.193 index 9c21c983ec7..4a43c8154c8 100644 --- a/idea/testData/navigationToolbar/ClassProperty.kt.201 +++ b/idea/testData/navigationToolbar/ClassProperty.kt.193 @@ -1,4 +1,4 @@ -// NAV_BAR_ITEMS: src, ClassProperty, foo: Int +// NAV_BAR_ITEMS: src, ClassProperty class ClassProperty { val foo: Int diff --git a/idea/testData/navigationToolbar/MethodInClass.kt b/idea/testData/navigationToolbar/MethodInClass.kt index 48d174267b7..c752419bacb 100644 --- a/idea/testData/navigationToolbar/MethodInClass.kt +++ b/idea/testData/navigationToolbar/MethodInClass.kt @@ -1,4 +1,4 @@ -// NAV_BAR_ITEMS: src, MethodInClass +// NAV_BAR_ITEMS: src, MethodInClass, foo() class MethodInClass { fun foo() { } diff --git a/idea/testData/navigationToolbar/MethodInClass.kt.201 b/idea/testData/navigationToolbar/MethodInClass.kt.193 similarity index 53% rename from idea/testData/navigationToolbar/MethodInClass.kt.201 rename to idea/testData/navigationToolbar/MethodInClass.kt.193 index c752419bacb..48d174267b7 100644 --- a/idea/testData/navigationToolbar/MethodInClass.kt.201 +++ b/idea/testData/navigationToolbar/MethodInClass.kt.193 @@ -1,4 +1,4 @@ -// NAV_BAR_ITEMS: src, MethodInClass, foo() +// NAV_BAR_ITEMS: src, MethodInClass class MethodInClass { fun foo() { } diff --git a/idea/testData/navigationToolbar/SeveralClassesInFile.kt b/idea/testData/navigationToolbar/SeveralClassesInFile.kt index 513cc5c22d8..38f65c1ed00 100644 --- a/idea/testData/navigationToolbar/SeveralClassesInFile.kt +++ b/idea/testData/navigationToolbar/SeveralClassesInFile.kt @@ -1,4 +1,4 @@ -// NAV_BAR_ITEMS: src, SeveralClassesInFile.kt +// NAV_BAR_ITEMS: src, SeveralClassesInFile.kt, SeveralClassesInFile class Foo { diff --git a/idea/testData/navigationToolbar/SeveralClassesInFile.kt.201 b/idea/testData/navigationToolbar/SeveralClassesInFile.kt.193 similarity index 53% rename from idea/testData/navigationToolbar/SeveralClassesInFile.kt.201 rename to idea/testData/navigationToolbar/SeveralClassesInFile.kt.193 index 38f65c1ed00..513cc5c22d8 100644 --- a/idea/testData/navigationToolbar/SeveralClassesInFile.kt.201 +++ b/idea/testData/navigationToolbar/SeveralClassesInFile.kt.193 @@ -1,4 +1,4 @@ -// NAV_BAR_ITEMS: src, SeveralClassesInFile.kt, SeveralClassesInFile +// NAV_BAR_ITEMS: src, SeveralClassesInFile.kt class Foo { diff --git a/idea/testData/navigationToolbar/fileNameDoesntMatchClassName.kt b/idea/testData/navigationToolbar/fileNameDoesntMatchClassName.kt index 972955af0c3..d408983153f 100644 --- a/idea/testData/navigationToolbar/fileNameDoesntMatchClassName.kt +++ b/idea/testData/navigationToolbar/fileNameDoesntMatchClassName.kt @@ -1,4 +1,4 @@ -// NAV_BAR_ITEMS: src, fileNameDoesntMatchClassName.kt +// NAV_BAR_ITEMS: src, fileNameDoesntMatchClassName.kt, Foo, bar() class Foo { fun bar() { } diff --git a/idea/testData/navigationToolbar/fileNameDoesntMatchClassName.kt.193 b/idea/testData/navigationToolbar/fileNameDoesntMatchClassName.kt.193 new file mode 100644 index 00000000000..972955af0c3 --- /dev/null +++ b/idea/testData/navigationToolbar/fileNameDoesntMatchClassName.kt.193 @@ -0,0 +1,5 @@ +// NAV_BAR_ITEMS: src, fileNameDoesntMatchClassName.kt + +class Foo { + fun bar() { } +} diff --git a/idea/testData/navigationToolbar/fileNameDoesntMatchClassName.kt.201 b/idea/testData/navigationToolbar/fileNameDoesntMatchClassName.kt.201 deleted file mode 100644 index d408983153f..00000000000 --- a/idea/testData/navigationToolbar/fileNameDoesntMatchClassName.kt.201 +++ /dev/null @@ -1,5 +0,0 @@ -// NAV_BAR_ITEMS: src, fileNameDoesntMatchClassName.kt, Foo, bar() - -class Foo { - fun bar() { } -} diff --git a/idea/testData/navigationToolbar/topLevelFunction.kt b/idea/testData/navigationToolbar/topLevelFunction.kt index 0694a9a3a68..1db12d66c5c 100644 --- a/idea/testData/navigationToolbar/topLevelFunction.kt +++ b/idea/testData/navigationToolbar/topLevelFunction.kt @@ -1,4 +1,4 @@ -// NAV_BAR_ITEMS: src, topLevelFunction.kt +// NAV_BAR_ITEMS: src, topLevelFunction.kt, foo() fun foo() { val bar = "string" diff --git a/idea/testData/navigationToolbar/topLevelFunction.kt.201 b/idea/testData/navigationToolbar/topLevelFunction.kt.193 similarity index 57% rename from idea/testData/navigationToolbar/topLevelFunction.kt.201 rename to idea/testData/navigationToolbar/topLevelFunction.kt.193 index 1db12d66c5c..0694a9a3a68 100644 --- a/idea/testData/navigationToolbar/topLevelFunction.kt.201 +++ b/idea/testData/navigationToolbar/topLevelFunction.kt.193 @@ -1,4 +1,4 @@ -// NAV_BAR_ITEMS: src, topLevelFunction.kt, foo() +// NAV_BAR_ITEMS: src, topLevelFunction.kt fun foo() { val bar = "string" diff --git a/idea/testData/navigationToolbar/topLevelProperty.kt b/idea/testData/navigationToolbar/topLevelProperty.kt index 055c49a1509..a2b73b386bb 100644 --- a/idea/testData/navigationToolbar/topLevelProperty.kt +++ b/idea/testData/navigationToolbar/topLevelProperty.kt @@ -1,4 +1,4 @@ -// NAV_BAR_ITEMS: src, topLevelProperty.kt +// NAV_BAR_ITEMS: src, topLevelProperty.kt, foo: Int val foo: Int get() { diff --git a/idea/testData/navigationToolbar/topLevelProperty.kt.201 b/idea/testData/navigationToolbar/topLevelProperty.kt.193 similarity index 50% rename from idea/testData/navigationToolbar/topLevelProperty.kt.201 rename to idea/testData/navigationToolbar/topLevelProperty.kt.193 index a2b73b386bb..055c49a1509 100644 --- a/idea/testData/navigationToolbar/topLevelProperty.kt.201 +++ b/idea/testData/navigationToolbar/topLevelProperty.kt.193 @@ -1,4 +1,4 @@ -// NAV_BAR_ITEMS: src, topLevelProperty.kt, foo: Int +// NAV_BAR_ITEMS: src, topLevelProperty.kt val foo: Int get() { diff --git a/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInAnotherPackage/after/a/specificImport.kt b/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInAnotherPackage/after/a/specificImport.kt index d1a9d5d7720..de4724e28fb 100644 --- a/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInAnotherPackage/after/a/specificImport.kt +++ b/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInAnotherPackage/after/a/specificImport.kt @@ -1,5 +1,7 @@ package a +import b.X as XX + fun bar() { - val t: b.X = b.X() + val t: XX = XX() } \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInAnotherPackage/after/a/specificImport.kt.193 b/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInAnotherPackage/after/a/specificImport.kt.193 new file mode 100644 index 00000000000..d1a9d5d7720 --- /dev/null +++ b/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInAnotherPackage/after/a/specificImport.kt.193 @@ -0,0 +1,5 @@ +package a + +fun bar() { + val t: b.X = b.X() +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInAnotherPackage/after/a/specificImport.kt.201 b/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInAnotherPackage/after/a/specificImport.kt.201 deleted file mode 100644 index de4724e28fb..00000000000 --- a/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInAnotherPackage/after/a/specificImport.kt.201 +++ /dev/null @@ -1,7 +0,0 @@ -package a - -import b.X as XX - -fun bar() { - val t: XX = XX() -} \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInAnotherPackage/after/b/specificImport.kt b/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInAnotherPackage/after/b/specificImport.kt index 20a79ef33ae..c7894ca9438 100644 --- a/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInAnotherPackage/after/b/specificImport.kt +++ b/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInAnotherPackage/after/b/specificImport.kt @@ -1,5 +1,7 @@ package b +import b.X as XX + fun bar() { - val t: b.X = b.X() + val t: XX = XX() } \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInAnotherPackage/after/b/specificImport.kt.193 b/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInAnotherPackage/after/b/specificImport.kt.193 new file mode 100644 index 00000000000..20a79ef33ae --- /dev/null +++ b/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInAnotherPackage/after/b/specificImport.kt.193 @@ -0,0 +1,5 @@ +package b + +fun bar() { + val t: b.X = b.X() +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInAnotherPackage/after/b/specificImport.kt.201 b/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInAnotherPackage/after/b/specificImport.kt.201 deleted file mode 100644 index c7894ca9438..00000000000 --- a/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInAnotherPackage/after/b/specificImport.kt.201 +++ /dev/null @@ -1,7 +0,0 @@ -package b - -import b.X as XX - -fun bar() { - val t: XX = XX() -} \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInTheSamePackage/after/a/specificImport.kt b/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInTheSamePackage/after/a/specificImport.kt index c097f16a1e9..a1a29b37e5c 100644 --- a/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInTheSamePackage/after/a/specificImport.kt +++ b/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInTheSamePackage/after/a/specificImport.kt @@ -1,5 +1,7 @@ package a +import a.X as XX + fun bar(s: String) { - val t: a.X = a.X() + val t: XX = XX() } \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInTheSamePackage/after/a/specificImport.kt.193 b/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInTheSamePackage/after/a/specificImport.kt.193 new file mode 100644 index 00000000000..c097f16a1e9 --- /dev/null +++ b/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInTheSamePackage/after/a/specificImport.kt.193 @@ -0,0 +1,5 @@ +package a + +fun bar(s: String) { + val t: a.X = a.X() +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInTheSamePackage/after/a/specificImport.kt.201 b/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInTheSamePackage/after/a/specificImport.kt.201 deleted file mode 100644 index a1a29b37e5c..00000000000 --- a/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInTheSamePackage/after/a/specificImport.kt.201 +++ /dev/null @@ -1,7 +0,0 @@ -package a - -import a.X as XX - -fun bar(s: String) { - val t: XX = XX() -} \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInTheSamePackageAndRename/after/a/specificImport.kt b/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInTheSamePackageAndRename/after/a/specificImport.kt index 6ed96e3c617..970ea3c44b1 100644 --- a/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInTheSamePackageAndRename/after/a/specificImport.kt +++ b/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInTheSamePackageAndRename/after/a/specificImport.kt @@ -1,5 +1,7 @@ package a +import a.Y as XX + fun bar(s: String) { - val t: a.Y = a.Y() + val t: XX = XX() } \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInTheSamePackageAndRename/after/a/specificImport.kt.193 b/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInTheSamePackageAndRename/after/a/specificImport.kt.193 new file mode 100644 index 00000000000..6ed96e3c617 --- /dev/null +++ b/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInTheSamePackageAndRename/after/a/specificImport.kt.193 @@ -0,0 +1,5 @@ +package a + +fun bar(s: String) { + val t: a.Y = a.Y() +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInTheSamePackageAndRename/after/a/specificImport.kt.201 b/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInTheSamePackageAndRename/after/a/specificImport.kt.201 deleted file mode 100644 index 970ea3c44b1..00000000000 --- a/idea/testData/refactoring/move/java/moveClass/moveInnerToTop/moveNestedClassToTopLevelInTheSamePackageAndRename/after/a/specificImport.kt.201 +++ /dev/null @@ -1,7 +0,0 @@ -package a - -import a.Y as XX - -fun bar(s: String) { - val t: XX = XX() -} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/findUsages/customUsageSearcher.kt b/idea/tests/org/jetbrains/kotlin/findUsages/customUsageSearcher.kt index 08d9f4b8f3c..af83951f5ef 100644 --- a/idea/tests/org/jetbrains/kotlin/findUsages/customUsageSearcher.kt +++ b/idea/tests/org/jetbrains/kotlin/findUsages/customUsageSearcher.kt @@ -7,5 +7,5 @@ package org.jetbrains.kotlin.findUsages import com.intellij.util.Processor -// FIX ME WHEN BUNCH 193 REMOVED -typealias ProcessorInCompat = Processor \ No newline at end of file +// FIX ME WHEN BUNCH 201 REMOVED +typealias ProcessorInCompat = Processor \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/findUsages/customUsageSearcher.kt.201 b/idea/tests/org/jetbrains/kotlin/findUsages/customUsageSearcher.kt.193 similarity index 77% rename from idea/tests/org/jetbrains/kotlin/findUsages/customUsageSearcher.kt.201 rename to idea/tests/org/jetbrains/kotlin/findUsages/customUsageSearcher.kt.193 index af83951f5ef..08d9f4b8f3c 100644 --- a/idea/tests/org/jetbrains/kotlin/findUsages/customUsageSearcher.kt.201 +++ b/idea/tests/org/jetbrains/kotlin/findUsages/customUsageSearcher.kt.193 @@ -7,5 +7,5 @@ package org.jetbrains.kotlin.findUsages import com.intellij.util.Processor -// FIX ME WHEN BUNCH 201 REMOVED -typealias ProcessorInCompat = Processor \ No newline at end of file +// FIX ME WHEN BUNCH 193 REMOVED +typealias ProcessorInCompat = Processor \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/PsiElementChecker.kt b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/PsiElementChecker.kt index 26fe638f7ec..14a10982ad1 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/PsiElementChecker.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/PsiElementChecker.kt @@ -48,7 +48,7 @@ object PsiElementChecker { with(element) { try { - Assert.assertEquals("Number of methods has changed. Please update test.", 55, PsiElement::class.java.methods.size) + Assert.assertEquals("Number of methods has changed. Please update test.", 56, PsiElement::class.java.methods.size) project Assert.assertTrue(language == KotlinLanguage.INSTANCE) @@ -95,6 +95,7 @@ object PsiElementChecker { Assert.assertTrue(isValid) isWritable + @Suppress("UnstableApiUsage") ownReferences reference references putCopyableUserData(TEST_DATA_KEY, 12) diff --git a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/PsiElementChecker.kt.201 b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/PsiElementChecker.kt.193 similarity index 97% rename from idea/tests/org/jetbrains/kotlin/idea/caches/resolve/PsiElementChecker.kt.201 rename to idea/tests/org/jetbrains/kotlin/idea/caches/resolve/PsiElementChecker.kt.193 index 14a10982ad1..26fe638f7ec 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/PsiElementChecker.kt.201 +++ b/idea/tests/org/jetbrains/kotlin/idea/caches/resolve/PsiElementChecker.kt.193 @@ -48,7 +48,7 @@ object PsiElementChecker { with(element) { try { - Assert.assertEquals("Number of methods has changed. Please update test.", 56, PsiElement::class.java.methods.size) + Assert.assertEquals("Number of methods has changed. Please update test.", 55, PsiElement::class.java.methods.size) project Assert.assertTrue(language == KotlinLanguage.INSTANCE) @@ -95,7 +95,6 @@ object PsiElementChecker { Assert.assertTrue(isValid) isWritable - @Suppress("UnstableApiUsage") ownReferences reference references putCopyableUserData(TEST_DATA_KEY, 12) diff --git a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/AbstractRenderingKDocTest.kt b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/AbstractRenderingKDocTest.kt index 865bde9426d..8b029f4b1a7 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/AbstractRenderingKDocTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/AbstractRenderingKDocTest.kt @@ -5,9 +5,32 @@ package org.jetbrains.kotlin.idea.codeInsight +import com.intellij.testFramework.UsefulTestCase +import org.jetbrains.kotlin.idea.KotlinDocumentationProvider import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase +import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor +import org.jetbrains.kotlin.test.InTextDirectivesUtils //BUNCH 201 abstract class AbstractRenderingKDocTest : KotlinLightCodeInsightFixtureTestCase() { - protected fun doTest(path: String) = Unit + + override fun getProjectDescriptor() = KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE + + protected fun doTest(path: String) { + myFixture.configureByFile(fileName()) + val file = myFixture.file + + val kDocProvider = KotlinDocumentationProvider() + + val comments = mutableListOf() + kDocProvider.collectDocComments(file) { + val rendered = it.owner?.let { owner -> kDocProvider.generateRenderedDoc(owner) } + if (rendered != null) { + comments.add(rendered.replace("\n", "")) + } + } + + val expectedRenders = InTextDirectivesUtils.findLinesWithPrefixesRemoved(file.text, "// RENDER: ") + UsefulTestCase.assertOrderedEquals(comments, expectedRenders) + } } diff --git a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/AbstractRenderingKDocTest.kt.193 b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/AbstractRenderingKDocTest.kt.193 new file mode 100644 index 00000000000..865bde9426d --- /dev/null +++ b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/AbstractRenderingKDocTest.kt.193 @@ -0,0 +1,13 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.idea.codeInsight + +import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase + +//BUNCH 201 +abstract class AbstractRenderingKDocTest : KotlinLightCodeInsightFixtureTestCase() { + protected fun doTest(path: String) = Unit +} diff --git a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/AbstractRenderingKDocTest.kt.201 b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/AbstractRenderingKDocTest.kt.201 deleted file mode 100644 index 8b029f4b1a7..00000000000 --- a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/AbstractRenderingKDocTest.kt.201 +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.idea.codeInsight - -import com.intellij.testFramework.UsefulTestCase -import org.jetbrains.kotlin.idea.KotlinDocumentationProvider -import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase -import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor -import org.jetbrains.kotlin.test.InTextDirectivesUtils - -//BUNCH 201 -abstract class AbstractRenderingKDocTest : KotlinLightCodeInsightFixtureTestCase() { - - override fun getProjectDescriptor() = KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE - - protected fun doTest(path: String) { - myFixture.configureByFile(fileName()) - val file = myFixture.file - - val kDocProvider = KotlinDocumentationProvider() - - val comments = mutableListOf() - kDocProvider.collectDocComments(file) { - val rendered = it.owner?.let { owner -> kDocProvider.generateRenderedDoc(owner) } - if (rendered != null) { - comments.add(rendered.replace("\n", "")) - } - } - - val expectedRenders = InTextDirectivesUtils.findLinesWithPrefixesRemoved(file.text, "// RENDER: ") - UsefulTestCase.assertOrderedEquals(comments, expectedRenders) - } -} diff --git a/idea/tests/org/jetbrains/kotlin/idea/navigationToolbar/AbstractKotlinNavBarTest.kt b/idea/tests/org/jetbrains/kotlin/idea/navigationToolbar/AbstractKotlinNavBarTest.kt index 8c65f9b10fd..9fd4aa9700b 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/navigationToolbar/AbstractKotlinNavBarTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/navigationToolbar/AbstractKotlinNavBarTest.kt @@ -26,7 +26,7 @@ abstract class AbstractKotlinNavBarTest : KotlinLightCodeInsightFixtureTestCase( .invoke(model, (myFixture.editor as EditorEx).dataContext) val actualItems = (0 until model.size()).map { - NavBarPresentation.calcPresentableText(model[it]) + NavBarPresentation.calcPresentableText(model[it], false) } val expectedItems = InTextDirectivesUtils.findListWithPrefixes(psiFile.text, "// NAV_BAR_ITEMS:") assertOrderedEquals(actualItems, expectedItems) diff --git a/idea/tests/org/jetbrains/kotlin/idea/navigationToolbar/AbstractKotlinNavBarTest.kt.201 b/idea/tests/org/jetbrains/kotlin/idea/navigationToolbar/AbstractKotlinNavBarTest.kt.193 similarity index 95% rename from idea/tests/org/jetbrains/kotlin/idea/navigationToolbar/AbstractKotlinNavBarTest.kt.201 rename to idea/tests/org/jetbrains/kotlin/idea/navigationToolbar/AbstractKotlinNavBarTest.kt.193 index 9fd4aa9700b..8c65f9b10fd 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/navigationToolbar/AbstractKotlinNavBarTest.kt.201 +++ b/idea/tests/org/jetbrains/kotlin/idea/navigationToolbar/AbstractKotlinNavBarTest.kt.193 @@ -26,7 +26,7 @@ abstract class AbstractKotlinNavBarTest : KotlinLightCodeInsightFixtureTestCase( .invoke(model, (myFixture.editor as EditorEx).dataContext) val actualItems = (0 until model.size()).map { - NavBarPresentation.calcPresentableText(model[it], false) + NavBarPresentation.calcPresentableText(model[it]) } val expectedItems = InTextDirectivesUtils.findListWithPrefixes(psiFile.text, "// NAV_BAR_ITEMS:") assertOrderedEquals(actualItems, expectedItems) diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/compat.kt b/idea/tests/org/jetbrains/kotlin/idea/quickfix/compat.kt index 4b0b9bdc2a4..63c5a48cb3f 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/compat.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/compat.kt @@ -12,5 +12,5 @@ import com.intellij.testFramework.fixtures.impl.CodeInsightTestFixtureImpl // FIX ME WHEN BUNCH 193 REMOVED fun invokeIntentionCompat(action: IntentionAction, file: PsiFile, editor: Editor) { - CodeInsightTestFixtureImpl.invokeIntention(action, file, editor, action.text) + CodeInsightTestFixtureImpl.invokeIntention(action, file, editor) } \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/compat.kt.201 b/idea/tests/org/jetbrains/kotlin/idea/quickfix/compat.kt.193 similarity index 97% rename from idea/tests/org/jetbrains/kotlin/idea/quickfix/compat.kt.201 rename to idea/tests/org/jetbrains/kotlin/idea/quickfix/compat.kt.193 index 63c5a48cb3f..4b0b9bdc2a4 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/compat.kt.201 +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/compat.kt.193 @@ -12,5 +12,5 @@ import com.intellij.testFramework.fixtures.impl.CodeInsightTestFixtureImpl // FIX ME WHEN BUNCH 193 REMOVED fun invokeIntentionCompat(action: IntentionAction, file: PsiFile, editor: Editor) { - CodeInsightTestFixtureImpl.invokeIntention(action, file, editor) + CodeInsightTestFixtureImpl.invokeIntention(action, file, editor, action.text) } \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSignatureChangePresentationTest.kt.201 b/idea/tests/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSignatureChangePresentationTest.kt similarity index 100% rename from idea/tests/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSignatureChangePresentationTest.kt.201 rename to idea/tests/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSignatureChangePresentationTest.kt diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinNonJvmGutterConfigurator.kt.201 b/idea/tests/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSignatureChangePresentationTest.kt.193 similarity index 100% rename from idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinNonJvmGutterConfigurator.kt.201 rename to idea/tests/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSignatureChangePresentationTest.kt.193 diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringAvailabilityTest.kt.201 b/idea/tests/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringAvailabilityTest.kt similarity index 100% rename from idea/tests/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringAvailabilityTest.kt.201 rename to idea/tests/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringAvailabilityTest.kt diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringAvailabilityTest.kt.193 b/idea/tests/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringAvailabilityTest.kt.193 new file mode 100644 index 00000000000..e69de29bb2d diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringChangeCollectorTest.kt.201 b/idea/tests/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringChangeCollectorTest.kt similarity index 100% rename from idea/tests/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringChangeCollectorTest.kt.201 rename to idea/tests/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringChangeCollectorTest.kt diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringChangeCollectorTest.kt.193 b/idea/tests/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringChangeCollectorTest.kt.193 new file mode 100644 index 00000000000..e69de29bb2d diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringChangeListenerTest.kt.201 b/idea/tests/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringChangeListenerTest.kt similarity index 100% rename from idea/tests/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringChangeListenerTest.kt.201 rename to idea/tests/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringChangeListenerTest.kt diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringChangeListenerTest.kt.193 b/idea/tests/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringChangeListenerTest.kt.193 new file mode 100644 index 00000000000..e69de29bb2d diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringTest.kt.201 b/idea/tests/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringTest.kt similarity index 100% rename from idea/tests/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringTest.kt.201 rename to idea/tests/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringTest.kt diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringTest.kt.193 b/idea/tests/org/jetbrains/kotlin/idea/refactoring/suggested/KotlinSuggestedRefactoringTest.kt.193 new file mode 100644 index 00000000000..e69de29bb2d diff --git a/idea/tests/org/jetbrains/kotlin/idea/resolve/compat.kt b/idea/tests/org/jetbrains/kotlin/idea/resolve/compat.kt index 7b7285977c6..032076246f8 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/resolve/compat.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/resolve/compat.kt @@ -12,9 +12,8 @@ import org.jetbrains.kotlin.idea.caches.trackers.KotlinCodeBlockModificationList internal fun createAndRegisterKotlinCodeBlockModificationListener(project: MockProject, pomModel: PomModel, treeAspect: TreeAspect) { project.registerService(PomModel::class.java, pomModel) - project.picoContainer.registerComponentInstance( - KotlinCodeBlockModificationListener(project, treeAspect) - ) + project.registerService(TreeAspect::class.java, treeAspect) + project.registerService(KotlinCodeBlockModificationListener::class.java, KotlinCodeBlockModificationListener(project)) } internal fun unregisterKotlinCodeBlockModificationListener(project: MockProject) { diff --git a/idea/tests/org/jetbrains/kotlin/idea/resolve/compat.kt.201 b/idea/tests/org/jetbrains/kotlin/idea/resolve/compat.kt.193 similarity index 83% rename from idea/tests/org/jetbrains/kotlin/idea/resolve/compat.kt.201 rename to idea/tests/org/jetbrains/kotlin/idea/resolve/compat.kt.193 index 032076246f8..7b7285977c6 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/resolve/compat.kt.201 +++ b/idea/tests/org/jetbrains/kotlin/idea/resolve/compat.kt.193 @@ -12,8 +12,9 @@ import org.jetbrains.kotlin.idea.caches.trackers.KotlinCodeBlockModificationList internal fun createAndRegisterKotlinCodeBlockModificationListener(project: MockProject, pomModel: PomModel, treeAspect: TreeAspect) { project.registerService(PomModel::class.java, pomModel) - project.registerService(TreeAspect::class.java, treeAspect) - project.registerService(KotlinCodeBlockModificationListener::class.java, KotlinCodeBlockModificationListener(project)) + project.picoContainer.registerComponentInstance( + KotlinCodeBlockModificationListener(project, treeAspect) + ) } internal fun unregisterKotlinCodeBlockModificationListener(project: MockProject) { diff --git a/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterForWebDemoTest.kt b/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterForWebDemoTest.kt index 44f97066eb6..9a897743bbe 100644 --- a/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterForWebDemoTest.kt +++ b/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterForWebDemoTest.kt @@ -27,7 +27,6 @@ import com.intellij.lang.MetaLanguage import com.intellij.lang.jvm.facade.JvmElementProvider import com.intellij.openapi.extensions.Extensions import com.intellij.openapi.extensions.ExtensionsArea -import com.intellij.openapi.fileTypes.FileTypeExtensionPoint import com.intellij.openapi.util.Disposer import com.intellij.openapi.util.io.FileUtil import com.intellij.psi.* @@ -37,7 +36,6 @@ import com.intellij.psi.compiled.ClassFileDecompilers import com.intellij.psi.impl.JavaClassSupersImpl import com.intellij.psi.impl.PsiTreeChangePreprocessor import com.intellij.psi.meta.MetaDataContributor -import com.intellij.psi.stubs.BinaryFileStubBuilders import com.intellij.psi.util.JavaClassSupers import junit.framework.TestCase import org.jetbrains.kotlin.utils.PathUtil @@ -104,7 +102,6 @@ abstract class AbstractJavaToKotlinConverterForWebDemoTest : TestCase() { } private fun registerExtensionPoints(area: ExtensionsArea) { - CoreApplicationEnvironment.registerExtensionPoint(area, BinaryFileStubBuilders.EP_NAME, FileTypeExtensionPoint::class.java) CoreApplicationEnvironment.registerExtensionPoint(area, FileContextProvider.EP_NAME, FileContextProvider::class.java) CoreApplicationEnvironment.registerExtensionPoint(area, MetaDataContributor.EP_NAME, MetaDataContributor::class.java) diff --git a/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterForWebDemoTest.kt.201 b/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterForWebDemoTest.kt.193 similarity index 96% rename from j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterForWebDemoTest.kt.201 rename to j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterForWebDemoTest.kt.193 index 9a897743bbe..44f97066eb6 100644 --- a/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterForWebDemoTest.kt.201 +++ b/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterForWebDemoTest.kt.193 @@ -27,6 +27,7 @@ import com.intellij.lang.MetaLanguage import com.intellij.lang.jvm.facade.JvmElementProvider import com.intellij.openapi.extensions.Extensions import com.intellij.openapi.extensions.ExtensionsArea +import com.intellij.openapi.fileTypes.FileTypeExtensionPoint import com.intellij.openapi.util.Disposer import com.intellij.openapi.util.io.FileUtil import com.intellij.psi.* @@ -36,6 +37,7 @@ import com.intellij.psi.compiled.ClassFileDecompilers import com.intellij.psi.impl.JavaClassSupersImpl import com.intellij.psi.impl.PsiTreeChangePreprocessor import com.intellij.psi.meta.MetaDataContributor +import com.intellij.psi.stubs.BinaryFileStubBuilders import com.intellij.psi.util.JavaClassSupers import junit.framework.TestCase import org.jetbrains.kotlin.utils.PathUtil @@ -102,6 +104,7 @@ abstract class AbstractJavaToKotlinConverterForWebDemoTest : TestCase() { } private fun registerExtensionPoints(area: ExtensionsArea) { + CoreApplicationEnvironment.registerExtensionPoint(area, BinaryFileStubBuilders.EP_NAME, FileTypeExtensionPoint::class.java) CoreApplicationEnvironment.registerExtensionPoint(area, FileContextProvider.EP_NAME, FileContextProvider::class.java) CoreApplicationEnvironment.registerExtensionPoint(area, MetaDataContributor.EP_NAME, MetaDataContributor::class.java) diff --git a/plugins/uast-kotlin-idea/src/org/jetbrains/uast/kotlin/generate/KotlinUastCodeGenerationPlugin.kt.201 b/plugins/uast-kotlin-idea/src/org/jetbrains/uast/kotlin/generate/KotlinUastCodeGenerationPlugin.kt similarity index 100% rename from plugins/uast-kotlin-idea/src/org/jetbrains/uast/kotlin/generate/KotlinUastCodeGenerationPlugin.kt.201 rename to plugins/uast-kotlin-idea/src/org/jetbrains/uast/kotlin/generate/KotlinUastCodeGenerationPlugin.kt diff --git a/plugins/uast-kotlin-idea/src/org/jetbrains/uast/kotlin/generate/KotlinUastCodeGenerationPlugin.kt.193 b/plugins/uast-kotlin-idea/src/org/jetbrains/uast/kotlin/generate/KotlinUastCodeGenerationPlugin.kt.193 new file mode 100644 index 00000000000..e69de29bb2d diff --git a/plugins/uast-kotlin/tests/KotlinUastGenerationTest.kt.201 b/plugins/uast-kotlin/tests/KotlinUastGenerationTest.kt similarity index 100% rename from plugins/uast-kotlin/tests/KotlinUastGenerationTest.kt.201 rename to plugins/uast-kotlin/tests/KotlinUastGenerationTest.kt diff --git a/plugins/uast-kotlin/tests/KotlinUastGenerationTest.kt.193 b/plugins/uast-kotlin/tests/KotlinUastGenerationTest.kt.193 new file mode 100644 index 00000000000..e69de29bb2d diff --git a/tests/mute-platform.csv b/tests/mute-platform.csv index f43f7c1cbda..3f9b26e489d 100644 --- a/tests/mute-platform.csv +++ b/tests/mute-platform.csv @@ -2,15 +2,45 @@ Test key, Issue, State (optional: MUTE or FAIL), Status (optional: FLAKY) org.jetbrains.kotlin.findUsages.KotlinFindUsagesWithLibraryTestGenerated.KotlinLibrary.testLibraryClassUsages, KT-34542, FAIL, org.jetbrains.kotlin.findUsages.KotlinFindUsagesWithLibraryTestGenerated.KotlinLibrary.testLibraryNestedClassUsages, KT-34542, FAIL, org.jetbrains.kotlin.findUsages.KotlinFindUsagesWithLibraryTestGenerated.KotlinLibrary.testLibraryObjectUsages, KT-34542, FAIL, +"org.jetbrains.kotlin.gradle.HierarchicalMultiplatformProjectImportingTest.testJvmWithJavaOnHMPP[1: Gradle-4.9, KotlinGradlePlugin-latest stable]", No module dependency found,, +"org.jetbrains.kotlin.gradle.HierarchicalMultiplatformProjectImportingTest.testJvmWithJavaOnHMPP[3: Gradle-5.6.4, KotlinGradlePlugin-latest stable]", No module dependency found,, org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.simpleAndroidAppWithCommonModule, KT-35225,, +"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testDependenciesReachableViaImpl[0: Gradle-4.9, KotlinGradlePlugin-minimal]", Gradle Tests in 201,, +"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testDependenciesReachableViaImpl[1: Gradle-4.9, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, +"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testDependenciesReachableViaImpl[2: Gradle-5.6.4, KotlinGradlePlugin-minimal]", Gradle Tests in 201,, +"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testDependenciesReachableViaImpl[3: Gradle-5.6.4, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, +"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testJsTestOutputFileInProjectWithAndroid[0: Gradle-4.9, KotlinGradlePlugin-minimal]", NPE - no facet configured,, +"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testJsTestOutputFileInProjectWithAndroid[1: Gradle-4.9, KotlinGradlePlugin-latest stable]", NPE - no facet configured,, +"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testJsTestOutputFileInProjectWithAndroid[2: Gradle-5.6.4, KotlinGradlePlugin-minimal]", NPE - no facet configured,, +"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testJsTestOutputFileInProjectWithAndroid[3: Gradle-5.6.4, KotlinGradlePlugin-latest stable]", NPE - no facet configured,, org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testTransitiveImplementWithAndroid, KT-35225,, +"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testTransitiveImplementWithNonDefaultConfig[0: Gradle-4.9, KotlinGradlePlugin-minimal]", Gradle Tests in 201,, +"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testTransitiveImplementWithNonDefaultConfig[1: Gradle-4.9, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, +"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testTransitiveImplementWithNonDefaultConfig[2: Gradle-5.6.4, KotlinGradlePlugin-minimal]", Gradle Tests in 201,, +"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testTransitiveImplementWithNonDefaultConfig[3: Gradle-5.6.4, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, +"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testTransitiveImplement[0: Gradle-4.9, KotlinGradlePlugin-minimal]", Gradle Tests in 201,, +"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testTransitiveImplement[1: Gradle-4.9, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, +"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testTransitiveImplement[2: Gradle-5.6.4, KotlinGradlePlugin-minimal]", Gradle Tests in 201,, +"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testTransitiveImplement[3: Gradle-5.6.4, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, +"org.jetbrains.kotlin.gradle.NewMultiplatformProjectImportingTest.testDependencyOnRoot[1: Gradle-4.9, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, +"org.jetbrains.kotlin.gradle.NewMultiplatformProjectImportingTest.testDependencyOnRoot[3: Gradle-5.6.4, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, +"org.jetbrains.kotlin.gradle.NewMultiplatformProjectImportingTest.testImportBeforeBuild[1: Gradle-4.9, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, +"org.jetbrains.kotlin.gradle.NewMultiplatformProjectImportingTest.testImportBeforeBuild[3: Gradle-5.6.4, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, +"org.jetbrains.kotlin.gradle.NewMultiplatformProjectImportingTest.testJavaTransitiveOnMPP[1: Gradle-4.9, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, +"org.jetbrains.kotlin.gradle.NewMultiplatformProjectImportingTest.testJavaTransitiveOnMPP[3: Gradle-5.6.4, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, +"org.jetbrains.kotlin.gradle.NewMultiplatformProjectImportingTest.testJvmWithJava[1: Gradle-4.9, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, +"org.jetbrains.kotlin.gradle.NewMultiplatformProjectImportingTest.testJvmWithJava[3: Gradle-5.6.4, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, +"org.jetbrains.kotlin.gradle.NewMultiplatformProjectImportingTest.testNestedDependencies[1: Gradle-4.9, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, +"org.jetbrains.kotlin.gradle.NewMultiplatformProjectImportingTest.testNestedDependencies[3: Gradle-5.6.4, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, +"org.jetbrains.kotlin.gradle.NewMultiplatformProjectImportingTest.testProjectDependency[1: Gradle-4.9, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, +"org.jetbrains.kotlin.gradle.NewMultiplatformProjectImportingTest.testProjectDependency[3: Gradle-5.6.4, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, org.jetbrains.kotlin.idea.caches.resolve.MultiModuleLineMarkerTestGenerated.testKotlinTestAnnotations, No line markers for test run,, org.jetbrains.kotlin.idea.codeInsight.InspectionTestGenerated.Inspections.testAndroidIllegalIdentifiers_inspectionData_Inspections_test, Unprocessed,, +org.jetbrains.kotlin.idea.codeInsight.gradle.GradleFacetImportTest.testAndroidGradleJsDetection, NPE during import,, org.jetbrains.kotlin.idea.codeInsight.surroundWith.SurroundWithTestGenerated.If.MoveDeclarationsOut.Order.testTwoClasses,,, FLAKY org.jetbrains.kotlin.idea.codeInsight.surroundWith.SurroundWithTestGenerated.If.MoveDeclarationsOut.Order.testValAndClass,,, FLAKY org.jetbrains.kotlin.idea.codeInsight.surroundWith.SurroundWithTestGenerated.If.MoveDeclarationsOut.Order.testValOrder,,, FLAKY org.jetbrains.kotlin.idea.codeInsight.surroundWith.SurroundWithTestGenerated.If.MoveDeclarationsOut.Val.testValWithTypeWoInitializer,,, FLAKY -org.jetbrains.kotlin.idea.codeInsight.surroundWith.SurroundWithTestGenerated.If.MoveDeclarationsOut.Var.testVarWithTypeWoInitializer, Unprocessed,, FLAKY org.jetbrains.kotlin.idea.completion.test.JvmBasicCompletionTestGenerated.Common.StaticMembers.testJavaStaticMethodsFromImports, KT-32919,, org.jetbrains.kotlin.idea.completion.test.JvmBasicCompletionTestGenerated.Java.BoldOrGrayed.testNonPredictableSmartCast1, KT-32919,, org.jetbrains.kotlin.idea.completion.test.JvmBasicCompletionTestGenerated.Java.BoldOrGrayed.testNonPredictableSmartCast2, KT-32919,, @@ -68,8 +98,6 @@ org.jetbrains.kotlin.idea.inspections.LocalInspectionTestGenerated.RedundantRequ org.jetbrains.kotlin.idea.inspections.LocalInspectionTestGenerated.RedundantRequireNotNullCall.testUsedAsExpression3, KT-34672, FAIL, org.jetbrains.kotlin.idea.intentions.IntentionTestGenerated.ConvertFunctionTypeParameterToReceiver.testNonFirstParameterPrimaryConstructor, on ConvertFunctionTypeParameterToReceiver rerun,, FLAKY org.jetbrains.kotlin.idea.intentions.IntentionTestGenerated.ConvertFunctionTypeParameterToReceiver.testNonFirstParameterSecondaryConstructor, on ConvertFunctionTypeParameterToReceiver rerun,, FLAKY -org.jetbrains.kotlin.idea.intentions.IntentionTestGenerated.ConvertSealedClassToEnum.testInstancesAndMembers, Enum reorder,, FLAKY -org.jetbrains.kotlin.idea.intentions.IntentionTestGenerated.ConvertSealedClassToEnum.testInstancesOnly, Generated entries reordered,, FLAKY org.jetbrains.kotlin.idea.intentions.declarations.JoinLinesTestGenerated.DeclarationAndAssignment.testBlankLineBetween, KT-34408,, org.jetbrains.kotlin.idea.intentions.declarations.JoinLinesTestGenerated.DeclarationAndAssignment.testLongInit, KT-34408,, org.jetbrains.kotlin.idea.intentions.declarations.JoinLinesTestGenerated.DeclarationAndAssignment.testLongInit2, KT-34408,, @@ -91,23 +119,76 @@ org.jetbrains.kotlin.idea.intentions.declarations.JoinLinesTestGenerated.RemoveB org.jetbrains.kotlin.idea.intentions.declarations.JoinLinesTestGenerated.RemoveBraces.testIf, KT-34408,, org.jetbrains.kotlin.idea.intentions.declarations.JoinLinesTestGenerated.RemoveBraces.testNotSingleLineStatement, KT-34408,, org.jetbrains.kotlin.idea.intentions.declarations.JoinLinesTestGenerated.RemoveBraces.testWhenEntry, KT-34408,, +org.jetbrains.kotlin.idea.intentions.IntentionTestGenerated.ConvertSealedClassToEnum.testWithNonObjectInheritors, Enum reorder,, FLAKY org.jetbrains.kotlin.idea.navigation.KotlinGotoImplementationMultiModuleTestGenerated.testExpectClassSuperclassFun,,, FLAKY org.jetbrains.kotlin.idea.parameterInfo.ParameterInfoTestGenerated.WithLib1.testUseJavaFromLib, KT-34542, FAIL, org.jetbrains.kotlin.idea.parameterInfo.ParameterInfoTestGenerated.WithLib2.testUseJavaSAMFromLib, KT-34542, FAIL, org.jetbrains.kotlin.idea.parameterInfo.ParameterInfoTestGenerated.WithLib3.testUseJavaSAMFromLib, KT-34542, FAIL, org.jetbrains.kotlin.idea.quickfix.QuickFixMultiFileTestGenerated.ChangeSignature.Jk.testJkKeepValOnParameterTypeChange, Unprocessed,, +org.jetbrains.kotlin.idea.quickfix.QuickFixMultiModuleTestGenerated.AddMissingActualMembers.testClassFunctionWithIncompatibleConstructor, Range must be inside element being annotated,, org.jetbrains.kotlin.idea.quickfix.QuickFixMultiModuleTestGenerated.Other.testConvertActualSealedClassToEnum, Enum reorder,, org.jetbrains.kotlin.idea.quickfix.QuickFixMultiModuleTestGenerated.Other.testConvertExpectSealedClassToEnum, Enum reorder,, +org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.CreateFromUsage.CreateSecondaryConstructor.testNoneApplicable, Range must be inside element being annotated,, +org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testNonApplicableInsertSuper, Range must be inside element being annotated,, +org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testNonApplicableInsertSuper, Range must be inside element being annotated,, +org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testNonApplicableInsertThis, Range must be inside element being annotated,, +org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testNonApplicableInsertThis, Range must be inside element being annotated,, +org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testNonApplicableOnEmpty, Range must be inside element being annotated,, +org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testNonApplicableOnEmpty, Range must be inside element being annotated,, +org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testNonApplicableWithOneConstructor, Range must be inside element being annotated,, +org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testNonApplicableWithOneConstructor, Range must be inside element being annotated,, +org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testPrimaryRequiredNoSuper, Range must be inside element being annotated,, +org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testPrimaryRequiredNoSuper, Range must be inside element being annotated,, +org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testPrimaryRequiredParameterless, Range must be inside element being annotated,, +org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testPrimaryRequiredParameterless, Range must be inside element being annotated,, +org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testPrimaryRequiredWithBody, Range must be inside element being annotated,, +org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testPrimaryRequiredWithBody, Range must be inside element being annotated,, +org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testPrimaryRequiredWithParameter, Range must be inside element being annotated,, +org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testPrimaryRequiredWithParameter, Range must be inside element being annotated,, org.jetbrains.kotlin.idea.refactoring.inline.InlineTestGenerated.Function.ExpressionBody.testMultipleInExpression, Unstable order of usages,,FLAKY +org.jetbrains.kotlin.idea.refactoring.introduce.ExtractionTestGenerated.IntroduceJavaParameter.testJavaMethodOverridingKotlinFunctionWithUsages, Unprocessed,, FLAKY org.jetbrains.kotlin.idea.refactoring.move.MoveTestGenerated.testJava_moveClass_moveInnerToTop_moveNestedClassToTopLevelInTheSamePackageAndAddOuterInstanceWithLambda_MoveNestedClassToTopLevelInTheSamePackageAndAddOuterInstanceWithLambda, final modifier added,, org.jetbrains.kotlin.idea.refactoring.move.MoveTestGenerated.testJava_moveClass_moveInnerToTop_moveNestedClassToTopLevelInTheSamePackageAndAddOuterInstance_MoveNestedClassToTopLevelInTheSamePackageAndAddOuterInstance, final modifier added,, +org.jetbrains.kotlin.idea.refactoring.rename.RenameTestGenerated.testOverloadsWithSameOrigin_OverloadsWithSameOrigin, Bad imports after rename,, FLAKY +org.jetbrains.kotlin.idea.refactoring.suggested.KotlinSuggestedRefactoringChangeListenerTest.test1, Additional signature,, +org.jetbrains.kotlin.idea.refactoring.suggested.KotlinSuggestedRefactoringChangeListenerTest.testAddImport, Additional signature,, +org.jetbrains.kotlin.idea.refactoring.suggested.KotlinSuggestedRefactoringChangeListenerTest.testAddImportWithBlankLineInsertion, Additional signature,, +org.jetbrains.kotlin.idea.refactoring.suggested.KotlinSuggestedRefactoringChangeListenerTest.testAddImportWithBlankLinesRemoval, Additional signature,, +org.jetbrains.kotlin.idea.refactoring.suggested.KotlinSuggestedRefactoringChangeListenerTest.testCommentTyping, Additional signature,, org.jetbrains.kotlin.idea.repl.IdeReplCompletionTestGenerated.testDefinedExtension, KT-34825,, org.jetbrains.kotlin.idea.resolve.ReferenceResolveInLibrarySourcesTestGenerated.testInLibrarySource, KT-34542, FAIL, org.jetbrains.kotlin.idea.resolve.ReferenceResolveInLibrarySourcesTestGenerated.testToFunParameter, KT-34542, FAIL, org.jetbrains.kotlin.idea.resolve.ReferenceResolveInLibrarySourcesTestGenerated.testToLocalFun, KT-34542, FAIL, -org.jetbrains.uast.test.kotlin.KotlinUastReferencesTest.`test original getter is visible when reference is under renaming`, Extensions API changed,, -org.jetbrains.kotlin.idea.refactoring.introduce.ExtractionTestGenerated.IntroduceJavaParameter.testJavaMethodOverridingKotlinFunctionWithUsages, Unprocessed,, FLAKY -org.jetbrains.kotlin.idea.refactoring.move.MoveTestGenerated.testKotlin_moveTopLevelDeclarations_moveFunctionToPackage_MoveFunctionToPackage, fail on TeamCity but works well locally,, FLAKY +org.jetbrains.kotlin.idea.slicer.SlicerTreeTestGenerated.testInflow_SecondaryConstructorParameter, IDEA-234737 element.parent must not be null,, +org.jetbrains.kotlin.idea.slicer.SlicerTreeTestGenerated.testInflow_SecondaryConstructorParameterWithDefault, IDEA-234737 element.parent must not be null,, +org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testAnnotationArgBySpELRefInXMLConf_AnnotationArgBySpELRefInXMLConf, Rename failed in Spring,, +org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testAnnotationArgBySpELRefInXMLConf_AnnotationArgBySpELRefInXMLConf, Rename failed in Spring,, +org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testIsPropertyWithXmlRefsBySpelRef_IsPropertyWithXmlRefBySpelRef, Rename failed in Spring,, +org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testIsPropertyWithXmlRefsBySpelRef_IsPropertyWithXmlRefBySpelRef, Rename failed in Spring,, +org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testJavaSpelRefToJavaAnnotated_JavaSpelRefToJavaAnnotated, Rename failed in Spring,, +org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testJavaSpelRefToJavaAnnotated_JavaSpelRefToJavaAnnotated, Rename failed in Spring,, +org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testJavaSpelRefToJava_JavaSpelRefToJava, Rename failed in Spring,, +org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testJavaSpelRefToJava_JavaSpelRefToJava, Rename failed in Spring,, +org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testJavaSpelRefToKtAnnotated_JavaSpelRefToKtAnnotated, Rename failed in Spring,, +org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testJavaSpelRefToKtAnnotated_JavaSpelRefToKtAnnotated, Rename failed in Spring,, +org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testJavaSpelRefToKt_JavaSpelRefToKt, Rename failed in Spring,, +org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testJavaSpelRefToKt_JavaSpelRefToKt, Rename failed in Spring,, +org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testKtSpelRefToJavaAnnotated_KtSpelRefToJavaAnnotated, Rename failed in Spring,, +org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testKtSpelRefToJavaAnnotated_KtSpelRefToJavaAnnotated, Rename failed in Spring,, +org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testKtSpelRefToJava_KtSpelRefToJava, Rename failed in Spring,, +org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testKtSpelRefToJava_KtSpelRefToJava, Rename failed in Spring,, +org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testKtSpelRefToKtAnnotated_KtSpelRefToKtAnnotated, Rename failed in Spring,, +org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testKtSpelRefToKtAnnotated_KtSpelRefToKtAnnotated, Rename failed in Spring,, +org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testKtSpelRefToKt_KtSpelRefToKt, Rename failed in Spring,, +org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testKtSpelRefToKt_KtSpelRefToKt, Rename failed in Spring,, +org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testParameterWithXmlRefsBySpelRef_ParameterWithXmlRefBySpelRef, Rename failed in Spring,, +org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testParameterWithXmlRefsBySpelRef_ParameterWithXmlRefBySpelRef, Rename failed in Spring,, +org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testPropertyWithXmlRefsBySpelRef_PropertyWithXmlRefBySpelRef, Rename failed in Spring,, +org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testPropertyWithXmlRefsBySpelRef_PropertyWithXmlRefBySpelRef, Rename failed in Spring,, +org.jetbrains.kotlin.jps.build.IncrementalConstantSearchTest.testJavaConstantChangedUsedInKotlin, Incremental compilation in 201,, +org.jetbrains.kotlin.jps.build.IncrementalJvmJpsTestGenerated.WithJava.JavaUsedInKotlin.testConstantChanged, Incremental compilation in 201,, +org.jetbrains.kotlin.idea.codeInsight.surroundWith.SurroundWithTestGenerated.If.MoveDeclarationsOut.Var.testVarWithTypeWoInitializer, Unprocessed,, FLAKY org.jetbrains.kotlin.idea.refactoring.pullUp.PullUpTestGenerated.K2K.testAccidentalOverrides, Unprocessed,, FLAKY -org.jetbrains.kotlin.idea.refactoring.rename.RenameTestGenerated.testOverloadsWithSameOrigin_OverloadsWithSameOrigin, Bad imports after rename,, FLAKY -org.jetbrains.kotlin.idea.intentions.IntentionTestGenerated.ConvertSealedClassToEnum.testWithNonObjectInheritors, Enum reorder,, FLAKY \ No newline at end of file +org.jetbrains.kotlin.idea.refactoring.move.MoveTestGenerated.testKotlin_moveTopLevelDeclarations_moveFunctionToPackage_MoveFunctionToPackage, fail on TeamCity but works well locally,, FLAKY +org.jetbrains.kotlin.idea.intentions.IntentionTestGenerated.ConvertSealedClassToEnum.testInstancesOnly, Generated entries reordered,, FLAKY +org.jetbrains.kotlin.idea.intentions.IntentionTestGenerated.ConvertSealedClassToEnum.testInstancesAndMembers, Enum reorder,, FLAKY \ No newline at end of file diff --git a/tests/mute-platform.csv.201 b/tests/mute-platform.csv.193 similarity index 53% rename from tests/mute-platform.csv.201 rename to tests/mute-platform.csv.193 index 3f9b26e489d..f43f7c1cbda 100644 --- a/tests/mute-platform.csv.201 +++ b/tests/mute-platform.csv.193 @@ -2,45 +2,15 @@ Test key, Issue, State (optional: MUTE or FAIL), Status (optional: FLAKY) org.jetbrains.kotlin.findUsages.KotlinFindUsagesWithLibraryTestGenerated.KotlinLibrary.testLibraryClassUsages, KT-34542, FAIL, org.jetbrains.kotlin.findUsages.KotlinFindUsagesWithLibraryTestGenerated.KotlinLibrary.testLibraryNestedClassUsages, KT-34542, FAIL, org.jetbrains.kotlin.findUsages.KotlinFindUsagesWithLibraryTestGenerated.KotlinLibrary.testLibraryObjectUsages, KT-34542, FAIL, -"org.jetbrains.kotlin.gradle.HierarchicalMultiplatformProjectImportingTest.testJvmWithJavaOnHMPP[1: Gradle-4.9, KotlinGradlePlugin-latest stable]", No module dependency found,, -"org.jetbrains.kotlin.gradle.HierarchicalMultiplatformProjectImportingTest.testJvmWithJavaOnHMPP[3: Gradle-5.6.4, KotlinGradlePlugin-latest stable]", No module dependency found,, org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.simpleAndroidAppWithCommonModule, KT-35225,, -"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testDependenciesReachableViaImpl[0: Gradle-4.9, KotlinGradlePlugin-minimal]", Gradle Tests in 201,, -"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testDependenciesReachableViaImpl[1: Gradle-4.9, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, -"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testDependenciesReachableViaImpl[2: Gradle-5.6.4, KotlinGradlePlugin-minimal]", Gradle Tests in 201,, -"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testDependenciesReachableViaImpl[3: Gradle-5.6.4, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, -"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testJsTestOutputFileInProjectWithAndroid[0: Gradle-4.9, KotlinGradlePlugin-minimal]", NPE - no facet configured,, -"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testJsTestOutputFileInProjectWithAndroid[1: Gradle-4.9, KotlinGradlePlugin-latest stable]", NPE - no facet configured,, -"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testJsTestOutputFileInProjectWithAndroid[2: Gradle-5.6.4, KotlinGradlePlugin-minimal]", NPE - no facet configured,, -"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testJsTestOutputFileInProjectWithAndroid[3: Gradle-5.6.4, KotlinGradlePlugin-latest stable]", NPE - no facet configured,, org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testTransitiveImplementWithAndroid, KT-35225,, -"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testTransitiveImplementWithNonDefaultConfig[0: Gradle-4.9, KotlinGradlePlugin-minimal]", Gradle Tests in 201,, -"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testTransitiveImplementWithNonDefaultConfig[1: Gradle-4.9, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, -"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testTransitiveImplementWithNonDefaultConfig[2: Gradle-5.6.4, KotlinGradlePlugin-minimal]", Gradle Tests in 201,, -"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testTransitiveImplementWithNonDefaultConfig[3: Gradle-5.6.4, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, -"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testTransitiveImplement[0: Gradle-4.9, KotlinGradlePlugin-minimal]", Gradle Tests in 201,, -"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testTransitiveImplement[1: Gradle-4.9, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, -"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testTransitiveImplement[2: Gradle-5.6.4, KotlinGradlePlugin-minimal]", Gradle Tests in 201,, -"org.jetbrains.kotlin.gradle.MultiplatformProjectImportingTest.testTransitiveImplement[3: Gradle-5.6.4, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, -"org.jetbrains.kotlin.gradle.NewMultiplatformProjectImportingTest.testDependencyOnRoot[1: Gradle-4.9, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, -"org.jetbrains.kotlin.gradle.NewMultiplatformProjectImportingTest.testDependencyOnRoot[3: Gradle-5.6.4, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, -"org.jetbrains.kotlin.gradle.NewMultiplatformProjectImportingTest.testImportBeforeBuild[1: Gradle-4.9, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, -"org.jetbrains.kotlin.gradle.NewMultiplatformProjectImportingTest.testImportBeforeBuild[3: Gradle-5.6.4, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, -"org.jetbrains.kotlin.gradle.NewMultiplatformProjectImportingTest.testJavaTransitiveOnMPP[1: Gradle-4.9, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, -"org.jetbrains.kotlin.gradle.NewMultiplatformProjectImportingTest.testJavaTransitiveOnMPP[3: Gradle-5.6.4, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, -"org.jetbrains.kotlin.gradle.NewMultiplatformProjectImportingTest.testJvmWithJava[1: Gradle-4.9, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, -"org.jetbrains.kotlin.gradle.NewMultiplatformProjectImportingTest.testJvmWithJava[3: Gradle-5.6.4, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, -"org.jetbrains.kotlin.gradle.NewMultiplatformProjectImportingTest.testNestedDependencies[1: Gradle-4.9, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, -"org.jetbrains.kotlin.gradle.NewMultiplatformProjectImportingTest.testNestedDependencies[3: Gradle-5.6.4, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, -"org.jetbrains.kotlin.gradle.NewMultiplatformProjectImportingTest.testProjectDependency[1: Gradle-4.9, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, -"org.jetbrains.kotlin.gradle.NewMultiplatformProjectImportingTest.testProjectDependency[3: Gradle-5.6.4, KotlinGradlePlugin-latest stable]", Gradle Tests in 201,, org.jetbrains.kotlin.idea.caches.resolve.MultiModuleLineMarkerTestGenerated.testKotlinTestAnnotations, No line markers for test run,, org.jetbrains.kotlin.idea.codeInsight.InspectionTestGenerated.Inspections.testAndroidIllegalIdentifiers_inspectionData_Inspections_test, Unprocessed,, -org.jetbrains.kotlin.idea.codeInsight.gradle.GradleFacetImportTest.testAndroidGradleJsDetection, NPE during import,, org.jetbrains.kotlin.idea.codeInsight.surroundWith.SurroundWithTestGenerated.If.MoveDeclarationsOut.Order.testTwoClasses,,, FLAKY org.jetbrains.kotlin.idea.codeInsight.surroundWith.SurroundWithTestGenerated.If.MoveDeclarationsOut.Order.testValAndClass,,, FLAKY org.jetbrains.kotlin.idea.codeInsight.surroundWith.SurroundWithTestGenerated.If.MoveDeclarationsOut.Order.testValOrder,,, FLAKY org.jetbrains.kotlin.idea.codeInsight.surroundWith.SurroundWithTestGenerated.If.MoveDeclarationsOut.Val.testValWithTypeWoInitializer,,, FLAKY +org.jetbrains.kotlin.idea.codeInsight.surroundWith.SurroundWithTestGenerated.If.MoveDeclarationsOut.Var.testVarWithTypeWoInitializer, Unprocessed,, FLAKY org.jetbrains.kotlin.idea.completion.test.JvmBasicCompletionTestGenerated.Common.StaticMembers.testJavaStaticMethodsFromImports, KT-32919,, org.jetbrains.kotlin.idea.completion.test.JvmBasicCompletionTestGenerated.Java.BoldOrGrayed.testNonPredictableSmartCast1, KT-32919,, org.jetbrains.kotlin.idea.completion.test.JvmBasicCompletionTestGenerated.Java.BoldOrGrayed.testNonPredictableSmartCast2, KT-32919,, @@ -98,6 +68,8 @@ org.jetbrains.kotlin.idea.inspections.LocalInspectionTestGenerated.RedundantRequ org.jetbrains.kotlin.idea.inspections.LocalInspectionTestGenerated.RedundantRequireNotNullCall.testUsedAsExpression3, KT-34672, FAIL, org.jetbrains.kotlin.idea.intentions.IntentionTestGenerated.ConvertFunctionTypeParameterToReceiver.testNonFirstParameterPrimaryConstructor, on ConvertFunctionTypeParameterToReceiver rerun,, FLAKY org.jetbrains.kotlin.idea.intentions.IntentionTestGenerated.ConvertFunctionTypeParameterToReceiver.testNonFirstParameterSecondaryConstructor, on ConvertFunctionTypeParameterToReceiver rerun,, FLAKY +org.jetbrains.kotlin.idea.intentions.IntentionTestGenerated.ConvertSealedClassToEnum.testInstancesAndMembers, Enum reorder,, FLAKY +org.jetbrains.kotlin.idea.intentions.IntentionTestGenerated.ConvertSealedClassToEnum.testInstancesOnly, Generated entries reordered,, FLAKY org.jetbrains.kotlin.idea.intentions.declarations.JoinLinesTestGenerated.DeclarationAndAssignment.testBlankLineBetween, KT-34408,, org.jetbrains.kotlin.idea.intentions.declarations.JoinLinesTestGenerated.DeclarationAndAssignment.testLongInit, KT-34408,, org.jetbrains.kotlin.idea.intentions.declarations.JoinLinesTestGenerated.DeclarationAndAssignment.testLongInit2, KT-34408,, @@ -119,76 +91,23 @@ org.jetbrains.kotlin.idea.intentions.declarations.JoinLinesTestGenerated.RemoveB org.jetbrains.kotlin.idea.intentions.declarations.JoinLinesTestGenerated.RemoveBraces.testIf, KT-34408,, org.jetbrains.kotlin.idea.intentions.declarations.JoinLinesTestGenerated.RemoveBraces.testNotSingleLineStatement, KT-34408,, org.jetbrains.kotlin.idea.intentions.declarations.JoinLinesTestGenerated.RemoveBraces.testWhenEntry, KT-34408,, -org.jetbrains.kotlin.idea.intentions.IntentionTestGenerated.ConvertSealedClassToEnum.testWithNonObjectInheritors, Enum reorder,, FLAKY org.jetbrains.kotlin.idea.navigation.KotlinGotoImplementationMultiModuleTestGenerated.testExpectClassSuperclassFun,,, FLAKY org.jetbrains.kotlin.idea.parameterInfo.ParameterInfoTestGenerated.WithLib1.testUseJavaFromLib, KT-34542, FAIL, org.jetbrains.kotlin.idea.parameterInfo.ParameterInfoTestGenerated.WithLib2.testUseJavaSAMFromLib, KT-34542, FAIL, org.jetbrains.kotlin.idea.parameterInfo.ParameterInfoTestGenerated.WithLib3.testUseJavaSAMFromLib, KT-34542, FAIL, org.jetbrains.kotlin.idea.quickfix.QuickFixMultiFileTestGenerated.ChangeSignature.Jk.testJkKeepValOnParameterTypeChange, Unprocessed,, -org.jetbrains.kotlin.idea.quickfix.QuickFixMultiModuleTestGenerated.AddMissingActualMembers.testClassFunctionWithIncompatibleConstructor, Range must be inside element being annotated,, org.jetbrains.kotlin.idea.quickfix.QuickFixMultiModuleTestGenerated.Other.testConvertActualSealedClassToEnum, Enum reorder,, org.jetbrains.kotlin.idea.quickfix.QuickFixMultiModuleTestGenerated.Other.testConvertExpectSealedClassToEnum, Enum reorder,, -org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.CreateFromUsage.CreateSecondaryConstructor.testNoneApplicable, Range must be inside element being annotated,, -org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testNonApplicableInsertSuper, Range must be inside element being annotated,, -org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testNonApplicableInsertSuper, Range must be inside element being annotated,, -org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testNonApplicableInsertThis, Range must be inside element being annotated,, -org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testNonApplicableInsertThis, Range must be inside element being annotated,, -org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testNonApplicableOnEmpty, Range must be inside element being annotated,, -org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testNonApplicableOnEmpty, Range must be inside element being annotated,, -org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testNonApplicableWithOneConstructor, Range must be inside element being annotated,, -org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testNonApplicableWithOneConstructor, Range must be inside element being annotated,, -org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testPrimaryRequiredNoSuper, Range must be inside element being annotated,, -org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testPrimaryRequiredNoSuper, Range must be inside element being annotated,, -org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testPrimaryRequiredParameterless, Range must be inside element being annotated,, -org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testPrimaryRequiredParameterless, Range must be inside element being annotated,, -org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testPrimaryRequiredWithBody, Range must be inside element being annotated,, -org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testPrimaryRequiredWithBody, Range must be inside element being annotated,, -org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testPrimaryRequiredWithParameter, Range must be inside element being annotated,, -org.jetbrains.kotlin.idea.quickfix.QuickFixTestGenerated.InsertDelegationCall.testPrimaryRequiredWithParameter, Range must be inside element being annotated,, org.jetbrains.kotlin.idea.refactoring.inline.InlineTestGenerated.Function.ExpressionBody.testMultipleInExpression, Unstable order of usages,,FLAKY -org.jetbrains.kotlin.idea.refactoring.introduce.ExtractionTestGenerated.IntroduceJavaParameter.testJavaMethodOverridingKotlinFunctionWithUsages, Unprocessed,, FLAKY org.jetbrains.kotlin.idea.refactoring.move.MoveTestGenerated.testJava_moveClass_moveInnerToTop_moveNestedClassToTopLevelInTheSamePackageAndAddOuterInstanceWithLambda_MoveNestedClassToTopLevelInTheSamePackageAndAddOuterInstanceWithLambda, final modifier added,, org.jetbrains.kotlin.idea.refactoring.move.MoveTestGenerated.testJava_moveClass_moveInnerToTop_moveNestedClassToTopLevelInTheSamePackageAndAddOuterInstance_MoveNestedClassToTopLevelInTheSamePackageAndAddOuterInstance, final modifier added,, -org.jetbrains.kotlin.idea.refactoring.rename.RenameTestGenerated.testOverloadsWithSameOrigin_OverloadsWithSameOrigin, Bad imports after rename,, FLAKY -org.jetbrains.kotlin.idea.refactoring.suggested.KotlinSuggestedRefactoringChangeListenerTest.test1, Additional signature,, -org.jetbrains.kotlin.idea.refactoring.suggested.KotlinSuggestedRefactoringChangeListenerTest.testAddImport, Additional signature,, -org.jetbrains.kotlin.idea.refactoring.suggested.KotlinSuggestedRefactoringChangeListenerTest.testAddImportWithBlankLineInsertion, Additional signature,, -org.jetbrains.kotlin.idea.refactoring.suggested.KotlinSuggestedRefactoringChangeListenerTest.testAddImportWithBlankLinesRemoval, Additional signature,, -org.jetbrains.kotlin.idea.refactoring.suggested.KotlinSuggestedRefactoringChangeListenerTest.testCommentTyping, Additional signature,, org.jetbrains.kotlin.idea.repl.IdeReplCompletionTestGenerated.testDefinedExtension, KT-34825,, org.jetbrains.kotlin.idea.resolve.ReferenceResolveInLibrarySourcesTestGenerated.testInLibrarySource, KT-34542, FAIL, org.jetbrains.kotlin.idea.resolve.ReferenceResolveInLibrarySourcesTestGenerated.testToFunParameter, KT-34542, FAIL, org.jetbrains.kotlin.idea.resolve.ReferenceResolveInLibrarySourcesTestGenerated.testToLocalFun, KT-34542, FAIL, -org.jetbrains.kotlin.idea.slicer.SlicerTreeTestGenerated.testInflow_SecondaryConstructorParameter, IDEA-234737 element.parent must not be null,, -org.jetbrains.kotlin.idea.slicer.SlicerTreeTestGenerated.testInflow_SecondaryConstructorParameterWithDefault, IDEA-234737 element.parent must not be null,, -org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testAnnotationArgBySpELRefInXMLConf_AnnotationArgBySpELRefInXMLConf, Rename failed in Spring,, -org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testAnnotationArgBySpELRefInXMLConf_AnnotationArgBySpELRefInXMLConf, Rename failed in Spring,, -org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testIsPropertyWithXmlRefsBySpelRef_IsPropertyWithXmlRefBySpelRef, Rename failed in Spring,, -org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testIsPropertyWithXmlRefsBySpelRef_IsPropertyWithXmlRefBySpelRef, Rename failed in Spring,, -org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testJavaSpelRefToJavaAnnotated_JavaSpelRefToJavaAnnotated, Rename failed in Spring,, -org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testJavaSpelRefToJavaAnnotated_JavaSpelRefToJavaAnnotated, Rename failed in Spring,, -org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testJavaSpelRefToJava_JavaSpelRefToJava, Rename failed in Spring,, -org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testJavaSpelRefToJava_JavaSpelRefToJava, Rename failed in Spring,, -org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testJavaSpelRefToKtAnnotated_JavaSpelRefToKtAnnotated, Rename failed in Spring,, -org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testJavaSpelRefToKtAnnotated_JavaSpelRefToKtAnnotated, Rename failed in Spring,, -org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testJavaSpelRefToKt_JavaSpelRefToKt, Rename failed in Spring,, -org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testJavaSpelRefToKt_JavaSpelRefToKt, Rename failed in Spring,, -org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testKtSpelRefToJavaAnnotated_KtSpelRefToJavaAnnotated, Rename failed in Spring,, -org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testKtSpelRefToJavaAnnotated_KtSpelRefToJavaAnnotated, Rename failed in Spring,, -org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testKtSpelRefToJava_KtSpelRefToJava, Rename failed in Spring,, -org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testKtSpelRefToJava_KtSpelRefToJava, Rename failed in Spring,, -org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testKtSpelRefToKtAnnotated_KtSpelRefToKtAnnotated, Rename failed in Spring,, -org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testKtSpelRefToKtAnnotated_KtSpelRefToKtAnnotated, Rename failed in Spring,, -org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testKtSpelRefToKt_KtSpelRefToKt, Rename failed in Spring,, -org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testKtSpelRefToKt_KtSpelRefToKt, Rename failed in Spring,, -org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testParameterWithXmlRefsBySpelRef_ParameterWithXmlRefBySpelRef, Rename failed in Spring,, -org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testParameterWithXmlRefsBySpelRef_ParameterWithXmlRefBySpelRef, Rename failed in Spring,, -org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testPropertyWithXmlRefsBySpelRef_PropertyWithXmlRefBySpelRef, Rename failed in Spring,, -org.jetbrains.kotlin.idea.spring.tests.rename.SpringRenameTestGenerated.testPropertyWithXmlRefsBySpelRef_PropertyWithXmlRefBySpelRef, Rename failed in Spring,, -org.jetbrains.kotlin.jps.build.IncrementalConstantSearchTest.testJavaConstantChangedUsedInKotlin, Incremental compilation in 201,, -org.jetbrains.kotlin.jps.build.IncrementalJvmJpsTestGenerated.WithJava.JavaUsedInKotlin.testConstantChanged, Incremental compilation in 201,, -org.jetbrains.kotlin.idea.codeInsight.surroundWith.SurroundWithTestGenerated.If.MoveDeclarationsOut.Var.testVarWithTypeWoInitializer, Unprocessed,, FLAKY -org.jetbrains.kotlin.idea.refactoring.pullUp.PullUpTestGenerated.K2K.testAccidentalOverrides, Unprocessed,, FLAKY +org.jetbrains.uast.test.kotlin.KotlinUastReferencesTest.`test original getter is visible when reference is under renaming`, Extensions API changed,, +org.jetbrains.kotlin.idea.refactoring.introduce.ExtractionTestGenerated.IntroduceJavaParameter.testJavaMethodOverridingKotlinFunctionWithUsages, Unprocessed,, FLAKY org.jetbrains.kotlin.idea.refactoring.move.MoveTestGenerated.testKotlin_moveTopLevelDeclarations_moveFunctionToPackage_MoveFunctionToPackage, fail on TeamCity but works well locally,, FLAKY -org.jetbrains.kotlin.idea.intentions.IntentionTestGenerated.ConvertSealedClassToEnum.testInstancesOnly, Generated entries reordered,, FLAKY -org.jetbrains.kotlin.idea.intentions.IntentionTestGenerated.ConvertSealedClassToEnum.testInstancesAndMembers, Enum reorder,, FLAKY \ No newline at end of file +org.jetbrains.kotlin.idea.refactoring.pullUp.PullUpTestGenerated.K2K.testAccidentalOverrides, Unprocessed,, FLAKY +org.jetbrains.kotlin.idea.refactoring.rename.RenameTestGenerated.testOverloadsWithSameOrigin_OverloadsWithSameOrigin, Bad imports after rename,, FLAKY +org.jetbrains.kotlin.idea.intentions.IntentionTestGenerated.ConvertSealedClassToEnum.testWithNonObjectInheritors, Enum reorder,, FLAKY \ No newline at end of file