From 170b35218552c5c42196d61549177c4ee0bd1a89 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Fri, 24 Nov 2017 23:15:41 +0300 Subject: [PATCH] Deprecate 'configureAs' method and stop using it in js decompiled tests This commit fixes tests in 173 branch, avoid exception: com.intellij.openapi.util.TraceableDisposable$DisposalException: Virtual pointer 'jar:///mnt/agent/work/bd0f559856a14a82/dist/kotlinc/lib/kotlin-stdlib-js.jar!/' hasn't been disposed: --------------Creation trace: java.lang.Throwable at com.intellij.openapi.util.TraceableDisposable.(TraceableDisposable.java:45) at com.intellij.openapi.vfs.impl.VirtualFilePointerImpl.(VirtualFilePointerImpl.java:41) at com.intellij.openapi.vfs.impl.VirtualFilePointerManagerImpl.getOrCreate(VirtualFilePointerManagerImpl.java:266) at com.intellij.openapi.vfs.impl.VirtualFilePointerManagerImpl.create(VirtualFilePointerManagerImpl.java:205) at com.intellij.openapi.vfs.impl.VirtualFilePointerManagerImpl.create(VirtualFilePointerManagerImpl.java:136) at com.intellij.openapi.vfs.impl.VirtualFilePointerContainerImpl.create(VirtualFilePointerContainerImpl.java:359) at com.intellij.openapi.vfs.impl.VirtualFilePointerContainerImpl.add(VirtualFilePointerContainerImpl.java:169) at com.intellij.openapi.roots.impl.libraries.LibraryImpl.addRoot(LibraryImpl.java:505) at com.intellij.openapi.roots.ui.configuration.libraryEditor.NewLibraryEditor.exportRoots(NewLibraryEditor.java:247) at com.intellij.openapi.roots.ui.configuration.libraryEditor.NewLibraryEditor.applyTo(NewLibraryEditor.java:218) at org.jetbrains.kotlin.idea.test.ConfigLibraryUtil.addLibrary(ConfigLibraryUtil.kt:113) at org.jetbrains.kotlin.idea.test.KotlinStdJSProjectDescriptor.configureModule(KotlinStdJSProjectDescriptor.kt:38) at org.jetbrains.kotlin.idea.test.KotlinLightProjectDescriptor.configureModule(KotlinLightProjectDescriptor.java:46) at org.jetbrains.kotlin.idea.test.TestUtilsKt$configureAs$1.consume(testUtils.kt:59) at org.jetbrains.kotlin.idea.test.TestUtilsKt$configureAs$1.consume(testUtils.kt) at com.intellij.openapi.roots.ModuleRootModificationUtil.updateModel(ModuleRootModificationUtil.java:143) at org.jetbrains.kotlin.idea.test.TestUtilsKt.configureAs(testUtils.kt:50) at org.jetbrains.kotlin.idea.test.TestUtilsKt.configureAs(testUtils.kt:69) at org.jetbrains.kotlin.idea.decompiler.textBuilder.AbstractDecompiledTextFromJsMetadataTest.setUp(AbstractDecompiledTextFromJsMetadataTest.kt:38) ... --- .../src/org/jetbrains/kotlin/idea/test/testUtils.kt | 5 +++-- .../textBuilder/AbstractDecompiledTextBaseTest.kt | 5 +++-- .../AbstractDecompiledTextFromJsMetadataTest.kt | 9 +-------- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/testUtils.kt b/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/testUtils.kt index 00f24596988..438a4cac118 100644 --- a/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/testUtils.kt +++ b/idea/idea-test-framework/src/org/jetbrains/kotlin/idea/test/testUtils.kt @@ -61,14 +61,15 @@ fun Module.configureAs(descriptor: KotlinLightProjectDescriptor) { }) } +@Suppress("DeprecatedCallableAddReplaceWith") +@Deprecated("Please use correct ProjectDescriptor in tests from the very beginning") fun Module.configureAs(kind: ModuleKind) { - when(kind) { + when (kind) { ModuleKind.KOTLIN_JVM_WITH_STDLIB_SOURCES -> this.configureAs(ProjectDescriptorWithStdlibSources.INSTANCE) ModuleKind.KOTLIN_JAVASCRIPT -> { this.configureAs(KotlinStdJSProjectDescriptor) } - } } diff --git a/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/AbstractDecompiledTextBaseTest.kt b/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/AbstractDecompiledTextBaseTest.kt index a9ad85c201d..e80c811c583 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/AbstractDecompiledTextBaseTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/AbstractDecompiledTextBaseTest.kt @@ -33,7 +33,8 @@ import java.io.File abstract class AbstractDecompiledTextBaseTest( baseDirectory: String, private val isJsLibrary: Boolean = false, - private val allowKotlinPackage: Boolean = false + private val allowKotlinPackage: Boolean = false, + private val withRuntime: Boolean = false ) : KotlinLightCodeInsightFixtureTestCase() { protected val TEST_DATA_PATH: String = PluginTestCaseBase.getTestDataPathBase() + baseDirectory @@ -55,7 +56,7 @@ abstract class AbstractDecompiledTextBaseTest( if (isAllFilesPresentInTest()) { return KotlinLightProjectDescriptor.INSTANCE } - return JdkAndMockLibraryProjectDescriptor(TEST_DATA_PATH + "/" + getTestName(false), false, false, isJsLibrary, allowKotlinPackage) + return JdkAndMockLibraryProjectDescriptor(TEST_DATA_PATH + "/" + getTestName(false), false, withRuntime, isJsLibrary, allowKotlinPackage) } private fun checkThatFileWasParsedCorrectly(clsFile: PsiFile) { diff --git a/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/AbstractDecompiledTextFromJsMetadataTest.kt b/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/AbstractDecompiledTextFromJsMetadataTest.kt index c4b6472e307..5d412a364f5 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/AbstractDecompiledTextFromJsMetadataTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/decompiler/textBuilder/AbstractDecompiledTextFromJsMetadataTest.kt @@ -21,22 +21,15 @@ import com.intellij.openapi.vfs.VirtualFile import com.intellij.psi.PsiFile import org.jetbrains.kotlin.idea.decompiler.KtDecompiledFile import org.jetbrains.kotlin.idea.test.JdkAndMockLibraryProjectDescriptor -import org.jetbrains.kotlin.idea.test.ModuleKind -import org.jetbrains.kotlin.idea.test.configureAs import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.serialization.js.JsSerializerProtocol import kotlin.test.assertTrue -abstract class AbstractDecompiledTextFromJsMetadataTest(baseDirectory: String) : AbstractDecompiledTextBaseTest(baseDirectory, true) { +abstract class AbstractDecompiledTextFromJsMetadataTest(baseDirectory: String) : AbstractDecompiledTextBaseTest(baseDirectory, true, withRuntime = true) { override fun getFileToDecompile(): VirtualFile = getKjsmFile(TEST_PACKAGE, myModule!!) override fun checkPsiFile(psiFile: PsiFile) = assertTrue(psiFile is KtDecompiledFile, "Expecting decompiled kotlin javascript file, was: " + psiFile::class.java) - - override fun setUp() { - super.setUp() - myModule!!.configureAs(ModuleKind.KOTLIN_JAVASCRIPT) - } } abstract class AbstractCommonDecompiledTextFromJsMetadataTest : AbstractDecompiledTextFromJsMetadataTest("/decompiler/decompiledText")