From 3b9000cc0c8d19abb7ea1ce66ca35bcb9f3e178d Mon Sep 17 00:00:00 2001 From: Yunir Salimzyanov Date: Mon, 1 Jun 2020 16:11:14 +0300 Subject: [PATCH] Cleanup 191 extension files (KTI-240) --- .bunch | 1 - .../util/io/JpsPersistentHashMap.java.191 | 0 .../incremental/storage/BasicMap.kt.191 | 81 -- .../storage/CachingLazyStorage.kt.191 | 0 .../storage/ClassOneToManyMap.kt.191 | 55 -- .../incremental/storage/LazyStorage.kt.191 | 122 --- .../incremental/storage/LookupMap.kt.191 | 42 - .../storage/NonCachingLazyStorage.kt.191 | 0 .../storage/SourceToOutputMaps.kt.191 | 62 -- .../builder/stubComputationTracker.kt.191 | 13 - gradle/versions.properties.191 | 17 - .../psiModificationTrackerCompat.kt.191 | 12 - .../modules/ModuleHighlightUtil2.java.191 | 114 --- .../confidence/KotlinConfidenceTest.java.191 | 184 ----- .../idea/core/KotlinFocusModeProvider.kt.191 | 4 - .../ProjectConfigurationCollector.kt.191 | 73 -- ...ins.gradle.tooling.ModelBuilderService.191 | 0 .../KotlinCocoaPodsModelResolver.kt.191 | 8 - .../configuration/KotlinMPPDataNodes.kt.191 | 73 -- .../KotlinTargetDataService.kt.191 | 46 -- .../configuration/kotlinResolverUtil.kt.191 | 8 - ...otlinMPPGradleProjectTaskRunnerUtil.kt.191 | 18 - .../testing/KotlinTestTasksResolver.kt.191 | 109 --- .../kotlin/idea/run/jvmTestClassUtils.kt.191 | 62 -- .../AsyncFileChangeListenerHelper.kt.191 | 37 - .../KotlinDslScriptModelResolver.kt.191 | 8 - .../KotlinGradleDslErrorReporter.kt.191 | 25 - .../gradle/AbstractModelBuilderTest.java.191 | 262 ------- .../gradle/GradleKtsImportTest.kt.191 | 0 .../KotlinLanguageInjectionSupport.kt.191 | 245 ------ .../compile/KtScratchExecutionSession.kt.191 | 181 ----- ...otlinNativeRunConfigurationProducer.kt.191 | 77 -- .../service/IdeaGradleWizardService.kt.191 | 88 --- .../firstStep/ActionToolbarImplWrapper.kt.191 | 26 - ...ghtCodeInsightFixtureTestCaseBase.java.191 | 110 --- ...linLightPlatformCodeInsightTestCase.kt.191 | 28 - .../idea/test/compatTestWrappers.kt.191 | 41 - .../VersionedImplementationProvider.kt.191 | 21 - .../ui/SimpleListCellRenderer.java.191 | 109 --- .../KotlinPsiChainBuilderTestCase.kt.191 | 74 -- ...ins.gradle.tooling.ModelBuilderService.191 | 2 - .../src/KotlinCocoaPodsModelBuilder.kt.191 | 0 .../src/KotlinDslScriptModelProvider.kt.191 | 0 .../KotlinDslScriptTaskModelBuilder.kt.191 | 0 .../idea/testFramework/gradleRoutines.kt.191 | 31 - .../idea/testFramework/projectRoutines.kt.191 | 136 ---- idea/resources/META-INF/gradle-java.xml.191 | 54 -- idea/resources/META-INF/plugin.xml.191 | 139 ---- .../idea/IDESettingsFUSCollector.kt.191 | 3 - .../KotlinIdeFileIconProviderService.kt.191 | 25 - .../KotlinGenerateEqualsWizard.kt.191 | 131 ---- .../KotlinCompilerConfigurableTab.java.191 | 739 ------------------ .../KotlinFormatterUsageCollector.kt.191 | 136 ---- .../highlighter/markers/dslStyleIcon.kt.191 | 31 - .../PlatformUnresolvedProvider.kt.191 | 60 -- .../idea/quickfix/ActualImportFix.kt.191 | 16 - .../quickfix/KotlinReferenceImporter.kt.191 | 131 ---- .../ChangeMethodParameters.kt.191 | 164 ---- .../KotlinElementActionsFactory.kt.191 | 499 ------------ .../move/MoveHandlerDelegateCompat.kt.191 | 29 - ...otlinAwareJavaGetterRenameProcessor.kt.191 | 41 - .../RenameKotlinClassifierProcessor.kt.191 | 20 - .../RenameKotlinFunctionProcessor.kt.191 | 19 - .../RenameKotlinParameterProcessor.kt.191 | 47 -- .../RenameKotlinPropertyProcessor.kt.191 | 132 ---- .../rename/RenameKotlinPsiProcessor.kt.191 | 30 - .../slicer/KotlinSliceDereferenceUsage.kt.191 | 37 - .../idea/util/ProgressIndicatorUtils.kt.191 | 60 -- .../importAllMembers/AmbiguousCalls.kt.191 | 17 - .../AmbiguousCalls.kt.after.191 | 18 - .../NoSynthesizedParameterNames.kt.191 | 9 - .../addImport.kt.after.191 | 5 - .../multipleConstructors.kt.after.191 | 5 - .../paramTypeLambdaMismatch.kt.191 | 12 - .../moveUpDown/AbstractCodeMoverTest.kt.191 | 125 --- ...tractNavigateFromLibrarySourcesTest.kt.191 | 31 - .../ClsStubForWrongAbiVersionTest.kt.191 | 34 - .../InlayHintTypeTestUtil.kt.191 | 41 - ...ommonIntentionActionsParametersTest.kt.191 | 57 -- .../UpdateConfigurationQuickFixTest.kt.191 | 236 ------ .../idea/refactoring/InplaceRenameTest.kt.191 | 258 ------ .../move/MoveHandlerDelegateCompat.kt.191 | 17 - ...JavaToKotlinConverterForWebDemoTest.kt.191 | 137 ---- .../kotlin/jps/build/ideaPlatform.kt.as35 | 13 - .../postProcessing/processings/compat.kt.191 | 16 - .../kotlin/declarations/KotlinUFile.kt.191 | 64 -- .../kotlin/declarations/KotlinUMethod.kt.191 | 198 ----- .../AbstractKotlinIdentifiersTest.kt.191 | 36 - ...AbstractKotlinResolveEverythingTest.kt.191 | 60 -- ...tlinUastLightCodeInsightFixtureTest.kt.191 | 40 - .../test/common/kotlin/ResolveTestBase.kt.191 | 37 - prepare/compiler/compiler.pro.191 | 256 ------ tests/mute-platform.csv.191 | 8 - 93 files changed, 6878 deletions(-) delete mode 100644 build-common/src/com/intellij/util/io/JpsPersistentHashMap.java.191 delete mode 100644 build-common/src/org/jetbrains/kotlin/incremental/storage/BasicMap.kt.191 delete mode 100644 build-common/src/org/jetbrains/kotlin/incremental/storage/CachingLazyStorage.kt.191 delete mode 100644 build-common/src/org/jetbrains/kotlin/incremental/storage/ClassOneToManyMap.kt.191 delete mode 100644 build-common/src/org/jetbrains/kotlin/incremental/storage/LazyStorage.kt.191 delete mode 100644 build-common/src/org/jetbrains/kotlin/incremental/storage/LookupMap.kt.191 delete mode 100644 build-common/src/org/jetbrains/kotlin/incremental/storage/NonCachingLazyStorage.kt.191 delete mode 100644 build-common/src/org/jetbrains/kotlin/incremental/storage/SourceToOutputMaps.kt.191 delete mode 100644 compiler/light-classes/src/org/jetbrains/kotlin/asJava/builder/stubComputationTracker.kt.191 delete mode 100644 gradle/versions.properties.191 delete mode 100644 idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/trackers/psiModificationTrackerCompat.kt.191 delete mode 100644 idea/idea-analysis/src/org/jetbrains/kotlin/idea/modules/ModuleHighlightUtil2.java.191 delete mode 100644 idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/confidence/KotlinConfidenceTest.java.191 delete mode 100644 idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinFocusModeProvider.kt.191 delete mode 100644 idea/idea-core/src/org/jetbrains/kotlin/idea/statistics/ProjectConfigurationCollector.kt.191 delete mode 100644 idea/idea-gradle/res/META-INF/services/org.jetbrains.plugins.gradle.tooling.ModelBuilderService.191 delete mode 100644 idea/idea-gradle/src/org/jetbrains/kotlin/idea/cocoapods/KotlinCocoaPodsModelResolver.kt.191 delete mode 100644 idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPDataNodes.kt.191 delete mode 100644 idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinTargetDataService.kt.191 delete mode 100644 idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/kotlinResolverUtil.kt.191 delete mode 100644 idea/idea-gradle/src/org/jetbrains/kotlin/idea/gradle/execution/KotlinMPPGradleProjectTaskRunnerUtil.kt.191 delete mode 100644 idea/idea-gradle/src/org/jetbrains/kotlin/idea/gradle/testing/KotlinTestTasksResolver.kt.191 delete mode 100644 idea/idea-gradle/src/org/jetbrains/kotlin/idea/run/jvmTestClassUtils.kt.191 delete mode 100644 idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/AsyncFileChangeListenerHelper.kt.191 delete mode 100644 idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslScriptModelResolver.kt.191 delete mode 100644 idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinGradleDslErrorReporter.kt.191 delete mode 100644 idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/AbstractModelBuilderTest.java.191 delete mode 100644 idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleKtsImportTest.kt.191 delete mode 100644 idea/idea-jvm/src/org/jetbrains/kotlin/idea/injection/KotlinLanguageInjectionSupport.kt.191 delete mode 100644 idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/compile/KtScratchExecutionSession.kt.191 delete mode 100644 idea/idea-native/src/org/jetbrains/kotlin/ide/konan/KotlinNativeRunConfigurationProducer.kt.191 delete mode 100644 idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaGradleWizardService.kt.191 delete mode 100644 idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/firstStep/ActionToolbarImplWrapper.kt.191 delete mode 100644 idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/KotlinLightCodeInsightFixtureTestCaseBase.java.191 delete mode 100644 idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/KotlinLightPlatformCodeInsightTestCase.kt.191 delete mode 100644 idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/compatTestWrappers.kt.191 delete mode 100644 idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/VersionedImplementationProvider.kt.191 delete mode 100644 idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/override/com/intellij/ui/SimpleListCellRenderer.java.191 delete mode 100644 idea/jvm-debugger/jvm-debugger-test/test/org/jetbrains/kotlin/idea/debugger/test/sequence/KotlinPsiChainBuilderTestCase.kt.191 delete mode 100644 idea/kotlin-gradle-tooling/resources/META-INF/services/org.jetbrains.plugins.gradle.tooling.ModelBuilderService.191 delete mode 100644 idea/kotlin-gradle-tooling/src/KotlinCocoaPodsModelBuilder.kt.191 delete mode 100644 idea/kotlin-gradle-tooling/src/KotlinDslScriptModelProvider.kt.191 delete mode 100644 idea/kotlin-gradle-tooling/src/KotlinDslScriptTaskModelBuilder.kt.191 delete mode 100644 idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/gradleRoutines.kt.191 delete mode 100644 idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/projectRoutines.kt.191 delete mode 100644 idea/resources/META-INF/gradle-java.xml.191 delete mode 100644 idea/resources/META-INF/plugin.xml.191 delete mode 100644 idea/src/org/jetbrains/kotlin/idea/IDESettingsFUSCollector.kt.191 delete mode 100644 idea/src/org/jetbrains/kotlin/idea/KotlinIdeFileIconProviderService.kt.191 delete mode 100644 idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsWizard.kt.191 delete mode 100644 idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java.191 delete mode 100644 idea/src/org/jetbrains/kotlin/idea/formatter/KotlinFormatterUsageCollector.kt.191 delete mode 100644 idea/src/org/jetbrains/kotlin/idea/highlighter/markers/dslStyleIcon.kt.191 delete mode 100644 idea/src/org/jetbrains/kotlin/idea/inspections/PlatformUnresolvedProvider.kt.191 delete mode 100644 idea/src/org/jetbrains/kotlin/idea/quickfix/ActualImportFix.kt.191 delete mode 100644 idea/src/org/jetbrains/kotlin/idea/quickfix/KotlinReferenceImporter.kt.191 delete mode 100644 idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/ChangeMethodParameters.kt.191 delete mode 100644 idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt.191 delete mode 100644 idea/src/org/jetbrains/kotlin/idea/refactoring/move/MoveHandlerDelegateCompat.kt.191 delete mode 100644 idea/src/org/jetbrains/kotlin/idea/refactoring/rename/KotlinAwareJavaGetterRenameProcessor.kt.191 delete mode 100644 idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinClassifierProcessor.kt.191 delete mode 100644 idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinFunctionProcessor.kt.191 delete mode 100644 idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinParameterProcessor.kt.191 delete mode 100644 idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinPropertyProcessor.kt.191 delete mode 100644 idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinPsiProcessor.kt.191 delete mode 100644 idea/src/org/jetbrains/kotlin/idea/slicer/KotlinSliceDereferenceUsage.kt.191 delete mode 100644 idea/src/org/jetbrains/kotlin/idea/util/ProgressIndicatorUtils.kt.191 delete mode 100644 idea/testData/intentions/importAllMembers/AmbiguousCalls.kt.191 delete mode 100644 idea/testData/intentions/importAllMembers/AmbiguousCalls.kt.after.191 delete mode 100644 idea/testData/parameterInfo/functionCall/NoSynthesizedParameterNames.kt.191 delete mode 100644 idea/testData/quickfix/supertypeInitialization/addImport.kt.after.191 delete mode 100644 idea/testData/quickfix/supertypeInitialization/multipleConstructors.kt.after.191 delete mode 100644 idea/testData/quickfix/typeMismatch/paramTypeLambdaMismatch.kt.191 delete mode 100644 idea/tests/org/jetbrains/kotlin/idea/codeInsight/moveUpDown/AbstractCodeMoverTest.kt.191 delete mode 100644 idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/AbstractNavigateFromLibrarySourcesTest.kt.191 delete mode 100644 idea/tests/org/jetbrains/kotlin/idea/decompiler/stubBuilder/ClsStubForWrongAbiVersionTest.kt.191 delete mode 100644 idea/tests/org/jetbrains/kotlin/idea/parameterInfo/InlayHintTypeTestUtil.kt.191 delete mode 100644 idea/tests/org/jetbrains/kotlin/idea/quickfix/CommonIntentionActionsParametersTest.kt.191 delete mode 100644 idea/tests/org/jetbrains/kotlin/idea/quickfix/UpdateConfigurationQuickFixTest.kt.191 delete mode 100644 idea/tests/org/jetbrains/kotlin/idea/refactoring/InplaceRenameTest.kt.191 delete mode 100644 idea/tests/org/jetbrains/kotlin/idea/refactoring/move/MoveHandlerDelegateCompat.kt.191 delete mode 100644 j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterForWebDemoTest.kt.191 delete mode 100644 jps-plugin/src/org/jetbrains/kotlin/jps/build/ideaPlatform.kt.as35 delete mode 100644 nj2k/nj2k-services/src/org/jetbrains/kotlin/nj2k/postProcessing/processings/compat.kt.191 delete mode 100644 plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUFile.kt.191 delete mode 100644 plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt.191 delete mode 100644 plugins/uast-kotlin/tests/AbstractKotlinIdentifiersTest.kt.191 delete mode 100644 plugins/uast-kotlin/tests/AbstractKotlinResolveEverythingTest.kt.191 delete mode 100644 plugins/uast-kotlin/tests/AbstractKotlinUastLightCodeInsightFixtureTest.kt.191 delete mode 100644 plugins/uast-kotlin/tests/org/jetbrains/uast/test/common/kotlin/ResolveTestBase.kt.191 delete mode 100644 prepare/compiler/compiler.pro.191 delete mode 100644 tests/mute-platform.csv.191 diff --git a/.bunch b/.bunch index ee5eb5523e4..420a5566b21 100644 --- a/.bunch +++ b/.bunch @@ -2,7 +2,6 @@ 201 202_201 192 -191_192 as36_192 as40 as41_201 \ No newline at end of file diff --git a/build-common/src/com/intellij/util/io/JpsPersistentHashMap.java.191 b/build-common/src/com/intellij/util/io/JpsPersistentHashMap.java.191 deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/build-common/src/org/jetbrains/kotlin/incremental/storage/BasicMap.kt.191 b/build-common/src/org/jetbrains/kotlin/incremental/storage/BasicMap.kt.191 deleted file mode 100644 index 83a99190a19..00000000000 --- a/build-common/src/org/jetbrains/kotlin/incremental/storage/BasicMap.kt.191 +++ /dev/null @@ -1,81 +0,0 @@ -/* - * 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.incremental.storage - -import com.intellij.util.io.DataExternalizer -import com.intellij.util.io.EnumeratorStringDescriptor -import com.intellij.util.io.KeyDescriptor -import org.jetbrains.annotations.TestOnly -import org.jetbrains.kotlin.utils.Printer -import java.io.File - -abstract class BasicMap, V>( - internal val storageFile: File, - keyDescriptor: KeyDescriptor, - valueExternalizer: DataExternalizer -) { - protected val storage = LazyStorage(storageFile, keyDescriptor, valueExternalizer) - - fun clean() { - storage.clean() - } - - fun flush(memoryCachesOnly: Boolean) { - storage.flush(memoryCachesOnly) - } - - fun close() { - storage.close() - } - - @TestOnly - fun dump(): String { - return with(StringBuilder()) { - with(Printer(this)) { - println(this@BasicMap::class.java.simpleName) - pushIndent() - - for (key in storage.keys.sorted()) { - println("${dumpKey(key)} -> ${dumpValue(storage[key]!!)}") - } - - popIndent() - } - - this - }.toString() - } - - @TestOnly - protected abstract fun dumpKey(key: K): String - - @TestOnly - protected abstract fun dumpValue(value: V): String -} - -abstract class BasicStringMap( - storageFile: File, - keyDescriptor: KeyDescriptor, - valueExternalizer: DataExternalizer -) : BasicMap(storageFile, keyDescriptor, valueExternalizer) { - constructor( - storageFile: File, - valueExternalizer: DataExternalizer - ) : this(storageFile, EnumeratorStringDescriptor.INSTANCE, valueExternalizer) - - override fun dumpKey(key: String): String = key -} diff --git a/build-common/src/org/jetbrains/kotlin/incremental/storage/CachingLazyStorage.kt.191 b/build-common/src/org/jetbrains/kotlin/incremental/storage/CachingLazyStorage.kt.191 deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/build-common/src/org/jetbrains/kotlin/incremental/storage/ClassOneToManyMap.kt.191 b/build-common/src/org/jetbrains/kotlin/incremental/storage/ClassOneToManyMap.kt.191 deleted file mode 100644 index e70f4b3a469..00000000000 --- a/build-common/src/org/jetbrains/kotlin/incremental/storage/ClassOneToManyMap.kt.191 +++ /dev/null @@ -1,55 +0,0 @@ -/* - * 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.incremental.storage - -import org.jetbrains.kotlin.incremental.dumpCollection -import org.jetbrains.kotlin.name.FqName -import java.io.File - -internal open class ClassOneToManyMap( - storageFile: File -) : BasicStringMap>(storageFile, StringCollectionExternalizer) { - override fun dumpValue(value: Collection): String = value.dumpCollection() - - fun add(key: FqName, value: FqName) { - storage.append(key.asString(), value.asString()) - } - - operator fun get(key: FqName): Collection = - storage[key.asString()]?.map(::FqName) ?: setOf() - - operator fun set(key: FqName, values: Collection) { - if (values.isEmpty()) { - remove(key) - return - } - - storage[key.asString()] = values.map(FqName::asString) - } - - fun remove(key: FqName) { - storage.remove(key.asString()) - } - - fun removeValues(key: FqName, removed: Set) { - val notRemoved = this[key].filter { it !in removed } - this[key] = notRemoved - } -} - -internal class SubtypesMap(storageFile: File) : ClassOneToManyMap(storageFile) -internal class SupertypesMap(storageFile: File) : ClassOneToManyMap(storageFile) diff --git a/build-common/src/org/jetbrains/kotlin/incremental/storage/LazyStorage.kt.191 b/build-common/src/org/jetbrains/kotlin/incremental/storage/LazyStorage.kt.191 deleted file mode 100644 index 6ea64af872e..00000000000 --- a/build-common/src/org/jetbrains/kotlin/incremental/storage/LazyStorage.kt.191 +++ /dev/null @@ -1,122 +0,0 @@ -/* - * 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.incremental.storage - -import com.intellij.util.io.DataExternalizer -import com.intellij.util.io.IOUtil -import com.intellij.util.io.KeyDescriptor -import com.intellij.util.io.PersistentHashMap -import java.io.DataOutput -import java.io.File -import java.io.IOException - - -/** - * It's lazy in a sense that PersistentHashMap is created only on write - */ -class LazyStorage( - private val storageFile: File, - private val keyDescriptor: KeyDescriptor, - private val valueExternalizer: DataExternalizer -) { - @Volatile - private var storage: PersistentHashMap? = null - - @Synchronized - private fun getStorageIfExists(): PersistentHashMap? { - if (storage != null) return storage - - if (storageFile.exists()) { - storage = createMap() - return storage - } - - return null - } - - @Synchronized - private fun getStorageOrCreateNew(): PersistentHashMap { - if (storage == null) { - storage = createMap() - } - - return storage!! - } - - val keys: Collection - get() = getStorageIfExists()?.allKeysWithExistingMapping ?: listOf() - - operator fun contains(key: K): Boolean = - getStorageIfExists()?.containsMapping(key) ?: false - - operator fun get(key: K): V? = - getStorageIfExists()?.get(key) - - operator fun set(key: K, value: V) { - getStorageOrCreateNew().put(key, value) - } - - fun remove(key: K) { - getStorageIfExists()?.remove(key) - } - - fun append(key: K, value: String) { - append(key) { out -> IOUtil.writeUTF(out, value) } - } - - fun append(key: K, value: Int) { - append(key) { out -> out.writeInt(value) } - } - - @Synchronized - fun clean() { - try { - storage?.close() - } - catch (ignored: Throwable) { - } - - PersistentHashMap.deleteFilesStartingWith(storageFile) - storage = null - } - - @Synchronized - fun flush(memoryCachesOnly: Boolean) { - val existingStorage = storage ?: return - - if (memoryCachesOnly) { - if (existingStorage.isDirty) { - existingStorage.dropMemoryCaches() - } - } - else { - existingStorage.force() - } - } - - @Synchronized - fun close() { - storage?.close() - } - - private fun createMap(): PersistentHashMap = - PersistentHashMap(storageFile, keyDescriptor, valueExternalizer) - - private fun append(key: K, append: (DataOutput)->Unit) { - getStorageOrCreateNew().appendData(key, append) - } -} diff --git a/build-common/src/org/jetbrains/kotlin/incremental/storage/LookupMap.kt.191 b/build-common/src/org/jetbrains/kotlin/incremental/storage/LookupMap.kt.191 deleted file mode 100644 index d9fab23228b..00000000000 --- a/build-common/src/org/jetbrains/kotlin/incremental/storage/LookupMap.kt.191 +++ /dev/null @@ -1,42 +0,0 @@ -/* - * 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.incremental.storage - -import java.io.File - -internal class LookupMap(storage: File) : BasicMap>(storage, LookupSymbolKeyDescriptor, IntCollectionExternalizer) { - override fun dumpKey(key: LookupSymbolKey): String = key.toString() - - override fun dumpValue(value: Collection): String = value.toString() - - fun add(name: String, scope: String, fileId: Int) { - storage.append(LookupSymbolKey(name, scope), fileId) - } - - operator fun get(key: LookupSymbolKey): Collection? = storage[key] - - operator fun set(key: LookupSymbolKey, fileIds: Set) { - storage[key] = fileIds - } - - fun remove(key: LookupSymbolKey) { - storage.remove(key) - } - - val keys: Collection - get() = storage.keys -} diff --git a/build-common/src/org/jetbrains/kotlin/incremental/storage/NonCachingLazyStorage.kt.191 b/build-common/src/org/jetbrains/kotlin/incremental/storage/NonCachingLazyStorage.kt.191 deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/build-common/src/org/jetbrains/kotlin/incremental/storage/SourceToOutputMaps.kt.191 b/build-common/src/org/jetbrains/kotlin/incremental/storage/SourceToOutputMaps.kt.191 deleted file mode 100644 index 3e8529ad680..00000000000 --- a/build-common/src/org/jetbrains/kotlin/incremental/storage/SourceToOutputMaps.kt.191 +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2010-2017 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.incremental.storage - -import org.jetbrains.kotlin.incremental.dumpCollection -import org.jetbrains.kotlin.name.FqName -import org.jetbrains.kotlin.resolve.jvm.JvmClassName -import java.io.File - -internal class SourceToJvmNameMap( - storageFile: File, - pathConverter: FileToPathConverter -) : AbstractSourceToOutputMap(JvmClassNameTransformer, storageFile, pathConverter) - -internal class SourceToFqNameMap( - storageFile: File, - pathConverter: FileToPathConverter -) : AbstractSourceToOutputMap(FqNameTransformer, storageFile, pathConverter) - -internal abstract class AbstractSourceToOutputMap( - private val nameTransformer: NameTransformer, - storageFile: File, - private val pathConverter: FileToPathConverter -) : BasicStringMap>(storageFile, PathStringDescriptor, StringCollectionExternalizer) { - fun clearOutputsForSource(sourceFile: File) { - remove(pathConverter.toPath(sourceFile)) - } - - fun add(sourceFile: File, className: Name) { - storage.append(pathConverter.toPath(sourceFile), nameTransformer.asString(className)) - } - - fun contains(sourceFile: File): Boolean = - pathConverter.toPath(sourceFile) in storage - - operator fun get(sourceFile: File): Collection = - storage[pathConverter.toPath(sourceFile)].orEmpty().map(nameTransformer::asName) - - fun getFqNames(sourceFile: File): Collection = - storage[pathConverter.toPath(sourceFile)].orEmpty().map(nameTransformer::asFqName) - - override fun dumpValue(value: Collection) = - value.dumpCollection() - - private fun remove(path: String) { - storage.remove(path) - } -} \ No newline at end of file diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/builder/stubComputationTracker.kt.191 b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/builder/stubComputationTracker.kt.191 deleted file mode 100644 index d27a90387ef..00000000000 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/builder/stubComputationTracker.kt.191 +++ /dev/null @@ -1,13 +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.asJava.builder - -import com.intellij.openapi.components.ServiceManager -import com.intellij.openapi.project.Project - -fun stubComputationTrackerInstance(project: Project): StubComputationTracker? { - return ServiceManager.getService(project, StubComputationTracker::class.java) -} diff --git a/gradle/versions.properties.191 b/gradle/versions.properties.191 deleted file mode 100644 index ba2adacdb18..00000000000 --- a/gradle/versions.properties.191 +++ /dev/null @@ -1,17 +0,0 @@ -versions.intellijSdk=191.6707.61 -versions.androidBuildTools=r23.0.1 -versions.androidDxSources=5.0.0_r2 -versions.idea.NodeJS=181.3494.12 -versions.jar.asm-all=7.0.1 -versions.jar.guava=25.1-jre -versions.jar.groovy-all=2.4.15 -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.7 -versions.jar.gson=2.8.5 -versions.jar.oro=2.0.8 -versions.jar.picocontainer=1.2 -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/idea-analysis/src/org/jetbrains/kotlin/idea/caches/trackers/psiModificationTrackerCompat.kt.191 b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/trackers/psiModificationTrackerCompat.kt.191 deleted file mode 100644 index 13efa013fc7..00000000000 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/trackers/psiModificationTrackerCompat.kt.191 +++ /dev/null @@ -1,12 +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.caches.trackers - -import com.intellij.psi.impl.PsiModificationTrackerImpl - -// FIX ME WHEN BUNCH 191 REMOVED -@Suppress("unused") -val PsiModificationTrackerImpl.isEnableLanguageTrackerCompat get() = isEnableLanguageTracker \ No newline at end of file diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/modules/ModuleHighlightUtil2.java.191 b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/modules/ModuleHighlightUtil2.java.191 deleted file mode 100644 index 053f070e51d..00000000000 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/modules/ModuleHighlightUtil2.java.191 +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright 2010-2017 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.modules; - -import com.intellij.openapi.module.Module; -import com.intellij.openapi.project.Project; -import com.intellij.openapi.roots.ModuleRootManager; -import com.intellij.openapi.roots.ProjectFileIndex; -import com.intellij.openapi.vfs.JarFileSystem; -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.PsiFile; -import com.intellij.psi.PsiJavaFile; -import com.intellij.psi.PsiJavaModule; -import com.intellij.psi.PsiManager; -import com.intellij.psi.impl.light.LightJavaModule; -import kotlin.collections.ArraysKt; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import org.jetbrains.kotlin.idea.core.FileIndexUtilsKt; - -import java.io.IOException; -import java.io.InputStream; -import java.util.jar.Attributes; -import java.util.jar.JarFile; -import java.util.jar.Manifest; - -import static com.intellij.psi.PsiJavaModule.MODULE_INFO_FILE; - -// Copied from com.intellij.codeInsight.daemon.impl.analysis.ModuleHighlightUtil -public class ModuleHighlightUtil2 { - private static final Attributes.Name MULTI_RELEASE = new Attributes.Name("Multi-Release"); - - @Nullable - static PsiJavaModule getModuleDescriptor(@NotNull VirtualFile file, @NotNull Project project) { - ProjectFileIndex index = ProjectFileIndex.SERVICE.getInstance(project); - if (index.isInLibrary(file)) { - VirtualFile root; - if ((root = index.getClassRootForFile(file)) != null) { - VirtualFile descriptorFile = root.findChild(PsiJavaModule.MODULE_INFO_CLS_FILE); - if (descriptorFile == null) { - VirtualFile alt = root.findFileByRelativePath("META-INF/versions/9/" + PsiJavaModule.MODULE_INFO_CLS_FILE); - if (alt != null && isMultiReleaseJar(root)) { - descriptorFile = alt; - } - } - if (descriptorFile != null) { - PsiFile psiFile = PsiManager.getInstance(project).findFile(descriptorFile); - if (psiFile instanceof PsiJavaFile) { - return ((PsiJavaFile) psiFile).getModuleDeclaration(); - } - } - else if (root.getFileSystem() instanceof JarFileSystem && "jar".equalsIgnoreCase(root.getExtension())) { - return LightJavaModule.getModule(PsiManager.getInstance(project), root); - } - } - else if ((root = index.getSourceRootForFile(file)) != null) { - VirtualFile descriptorFile = root.findChild(MODULE_INFO_FILE); - if (descriptorFile != null) { - PsiFile psiFile = PsiManager.getInstance(project).findFile(descriptorFile); - if (psiFile instanceof PsiJavaFile) { - return ((PsiJavaFile) psiFile).getModuleDeclaration(); - } - } - } - } - else { - Module module = index.getModuleForFile(file); - if (module != null) { - boolean isTest = FileIndexUtilsKt.isInTestSourceContentKotlinAware(index, file); - VirtualFile modularRoot = ArraysKt.singleOrNull(ModuleRootManager.getInstance(module).getSourceRoots(isTest), - root -> root.findChild(MODULE_INFO_FILE) != null); - if (modularRoot != null) { - VirtualFile moduleInfo = modularRoot.findChild(MODULE_INFO_FILE); - assert moduleInfo != null : modularRoot; - PsiFile psiFile = PsiManager.getInstance(project).findFile(moduleInfo); - if (psiFile instanceof PsiJavaFile) { - return ((PsiJavaFile) psiFile).getModuleDeclaration(); - } - } - } - } - - return null; - } - - private static boolean isMultiReleaseJar(VirtualFile root) { - if (root.getFileSystem() instanceof JarFileSystem) { - VirtualFile manifest = root.findFileByRelativePath(JarFile.MANIFEST_NAME); - if (manifest != null) { - try (InputStream stream = manifest.getInputStream()) { - return Boolean.valueOf(new Manifest(stream).getMainAttributes().getValue(MULTI_RELEASE)); - } - catch (IOException ignored) { - } - } - } - - return false; - } -} diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/confidence/KotlinConfidenceTest.java.191 b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/confidence/KotlinConfidenceTest.java.191 deleted file mode 100644 index 1cecb1c4fa8..00000000000 --- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/confidence/KotlinConfidenceTest.java.191 +++ /dev/null @@ -1,184 +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.completion.test.confidence; - -import com.intellij.codeInsight.CodeInsightSettings; -import com.intellij.codeInsight.completion.*; -import com.intellij.codeInsight.lookup.LookupElement; -import com.intellij.codeInsight.lookup.LookupManager; -import com.intellij.codeInsight.lookup.impl.LookupImpl; -import com.intellij.lang.Language; -import com.intellij.lang.injection.InjectedLanguageManager; -import com.intellij.openapi.editor.Editor; -import com.intellij.openapi.projectRoots.JavaSdk; -import com.intellij.openapi.projectRoots.Sdk; -import com.intellij.openapi.util.text.StringUtil; -import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiFile; -import com.intellij.psi.util.PsiUtilCore; -import com.intellij.util.ArrayUtil; -import com.intellij.util.ThreeState; -import org.apache.commons.lang.SystemUtils; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.kotlin.idea.completion.test.CompletionTestUtilKt; -import org.jetbrains.kotlin.idea.test.TestUtilsKt; -import org.jetbrains.kotlin.test.InTextDirectivesUtils; -import org.jetbrains.kotlin.test.JUnit3WithIdeaConfigurationRunner; -import org.junit.runner.RunWith; - -import java.io.File; -import java.util.List; - -@RunWith(JUnit3WithIdeaConfigurationRunner.class) -public class KotlinConfidenceTest extends LightCompletionTestCase { - private static final String TYPE_DIRECTIVE_PREFIX = "// TYPE:"; - private final ThreadLocal skipComplete = ThreadLocal.withInitial(() -> false); - - public void testCompleteOnDotOutOfRanges() { - doTest(); - } - - public void testImportAsConfidence() { - doTest(); - } - - public void testInBlockOfFunctionLiteral() { - doTest(); - } - - public void testInModifierList() { - doTest(); - } - - public void testNoAutoCompletionForRangeOperator() { - doTest(); - } - - public void testNoAutoPopupInString() { - doTest(); - } - - public void testAutoPopupInStringTemplate() { - doTest(); - } - - public void testAutoPopupInStringTemplateAfterDollar() { - doTest(); - } - - public void testNoAutoPopupInStringTemplateAfterSpace() { - doTest(); - } - - public void testNoAutoPopupInRawStringTemplateAfterNewLine() { - doTest(); - } - - @Override - protected void setUp() throws Exception { - super.setUp(); - TestUtilsKt.invalidateLibraryCache(getProject()); - } - - protected void doTest() { - boolean completeByChars = CodeInsightSettings.getInstance().SELECT_AUTOPOPUP_SUGGESTIONS_BY_CHARS; - - CodeInsightSettings.getInstance().SELECT_AUTOPOPUP_SUGGESTIONS_BY_CHARS = true; - - try { - skipComplete.set(true); - try { - configureByFile(getBeforeFileName()); - } finally { - skipComplete.set(false); - } - - String text = getEditor().getDocument().getText(); - boolean noLookup = InTextDirectivesUtils.isDirectiveDefined(text, "// NO_LOOKUP"); - if (!noLookup) complete(); //This will cause NPE in case of absence of autopopup completion - - List expectedElements = InTextDirectivesUtils.findLinesWithPrefixesRemoved(text, "// ELEMENT:"); - assertFalse("Can't both expect lookup elements and no lookup", !expectedElements.isEmpty() && noLookup); - - if (noLookup) { - assertTrue("Should skip autopopup completion", shouldSkipAutoPopup(getEditor(), getFile())); - return; - } - - String typeText = getTypeText(text); - if (!expectedElements.isEmpty()) { - assertContainsItems(ArrayUtil.toStringArray(expectedElements)); - return; - } - assertNotNull("You must type something, use // TYPE:", typeText); - type(typeText); - checkResultByFile(getAfterFileName()); - } - finally { - CodeInsightSettings.getInstance().SELECT_AUTOPOPUP_SUGGESTIONS_BY_CHARS = completeByChars; - } - } - - private static String getTypeText(String text) { - String[] directives = InTextDirectivesUtils.findArrayWithPrefixes(text, TYPE_DIRECTIVE_PREFIX); - if (directives.length == 0) return null; - assertEquals("One directive with \"" + TYPE_DIRECTIVE_PREFIX +"\" expected", 1, directives.length); - - return StringUtil.unquoteString(directives[0]); - } - - private String getBeforeFileName() { - return getTestName(false) + ".kt"; - } - - private String getAfterFileName() { - return getTestName(false) + ".kt.after"; - } - - @NotNull - @Override - protected String getTestDataPath() { - return new File(CompletionTestUtilKt.getCOMPLETION_TEST_DATA_BASE_PATH(), "/confidence/").getPath() + File.separator; - } - - @Override - protected Sdk getProjectJDK() { - return JavaSdk.getInstance().createJdk("JDK", SystemUtils.getJavaHome().getAbsolutePath()); - } - - @Override - protected void complete() { - if (skipComplete.get()) return; - new CodeCompletionHandlerBase(CompletionType.BASIC, false, true, true).invokeCompletion( - getProject(), getEditor(), 0, false, false); - - LookupImpl lookup = (LookupImpl) LookupManager.getActiveLookup(myEditor); - myItems = lookup == null ? null : lookup.getItems().toArray(LookupElement.EMPTY_ARRAY); - myPrefix = lookup == null ? null : lookup.itemPattern(lookup.getItems().get(0)); - } - - private static boolean shouldSkipAutoPopup(Editor editor, PsiFile psiFile) { - int offset = editor.getCaretModel().getOffset(); - int psiOffset = Math.max(0, offset - 1); - - PsiElement elementAt = InjectedLanguageManager.getInstance(psiFile.getProject()).findInjectedElementAt(psiFile, psiOffset); - if (elementAt == null) { - elementAt = psiFile.findElementAt(psiOffset); - } - if (elementAt == null) return true; - - Language language = PsiUtilCore.findLanguageFromElement(elementAt); - - for (CompletionConfidence confidence : CompletionConfidenceEP.forLanguage(language)) { - ThreeState result = confidence.shouldSkipAutopopup(elementAt, psiFile, offset); - if (result != ThreeState.UNSURE) { - return result == ThreeState.YES; - } - } - - return false; - } -} diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinFocusModeProvider.kt.191 b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinFocusModeProvider.kt.191 deleted file mode 100644 index 1398a3397b8..00000000000 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/KotlinFocusModeProvider.kt.191 +++ /dev/null @@ -1,4 +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. - */ \ No newline at end of file diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/statistics/ProjectConfigurationCollector.kt.191 b/idea/idea-core/src/org/jetbrains/kotlin/idea/statistics/ProjectConfigurationCollector.kt.191 deleted file mode 100644 index 41fb977b5b4..00000000000 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/statistics/ProjectConfigurationCollector.kt.191 +++ /dev/null @@ -1,73 +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.statistics - -import com.intellij.facet.ProjectFacetManager -import com.intellij.internal.statistic.beans.UsageDescriptor -import com.intellij.internal.statistic.eventLog.FeatureUsageData -import com.intellij.internal.statistic.service.fus.collectors.ProjectUsagesCollector -import com.intellij.openapi.module.Module -import com.intellij.openapi.project.Project -import org.jetbrains.kotlin.idea.KotlinPluginUtil -import org.jetbrains.kotlin.idea.configuration.BuildSystemType -import org.jetbrains.kotlin.idea.configuration.getBuildSystemType -import org.jetbrains.kotlin.idea.facet.KotlinFacetType -import org.jetbrains.kotlin.idea.project.languageVersionSettings -import org.jetbrains.kotlin.idea.project.platform -import org.jetbrains.kotlin.platform.isCommon -import org.jetbrains.kotlin.platform.js.isJs -import org.jetbrains.kotlin.platform.jvm.isJvm -import org.jetbrains.kotlin.platform.konan.isNative - -class ProjectConfigurationCollector : ProjectUsagesCollector() { - - override fun getUsages(project: Project): Set { - val usages = mutableSetOf() - val modulesWithFacet = ProjectFacetManager.getInstance(project).getModulesWithFacet(KotlinFacetType.TYPE_ID) - - if (modulesWithFacet.isNotEmpty()) { - val pluginVersion = KotlinPluginUtil.getPluginVersion() - modulesWithFacet.forEach { - - val buildSystem = getBuildSystemType(it) - val platform = getPlatform(it) - val languageVersion = it.languageVersionSettings.languageVersion.versionString - - val data = FeatureUsageData() - .addData("pluginVersion", pluginVersion) - .addData("system", buildSystem) - .addData("platform", platform) - .addData("languageVersion", languageVersion) - val usageDescriptor = UsageDescriptor("Build", data) - usages.add(usageDescriptor) - } - } - return usages - } - - private fun getPlatform(it: Module): String { - return when { - it.platform.isJvm() -> "jvm" - it.platform.isJs() -> "js" - it.platform.isCommon() -> "common" - it.platform.isNative() -> "native" - else -> "unknown" - } - } - - private fun getBuildSystemType(it: Module): String { - val buildSystem = it.getBuildSystemType() - return when { - buildSystem == BuildSystemType.JPS -> "JPS" - buildSystem.toString().toLowerCase().contains("maven") -> "Maven" - buildSystem.toString().toLowerCase().contains("gradle") -> "Gradle" - else -> "unknown" - } - } - - override fun getGroupId() = "kotlin.project.configuration" - override fun getVersion(): Int = 1 -} diff --git a/idea/idea-gradle/res/META-INF/services/org.jetbrains.plugins.gradle.tooling.ModelBuilderService.191 b/idea/idea-gradle/res/META-INF/services/org.jetbrains.plugins.gradle.tooling.ModelBuilderService.191 deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/cocoapods/KotlinCocoaPodsModelResolver.kt.191 b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/cocoapods/KotlinCocoaPodsModelResolver.kt.191 deleted file mode 100644 index d165935db5b..00000000000 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/cocoapods/KotlinCocoaPodsModelResolver.kt.191 +++ /dev/null @@ -1,8 +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.cocoapods - -class KotlinCocoaPodsModelResolver \ No newline at end of file diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPDataNodes.kt.191 b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPDataNodes.kt.191 deleted file mode 100644 index 5327f633aa9..00000000000 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPDataNodes.kt.191 +++ /dev/null @@ -1,73 +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.idea.configuration - -import com.intellij.openapi.externalSystem.model.DataNode -import com.intellij.openapi.externalSystem.model.ProjectKeys -import com.intellij.openapi.externalSystem.model.project.AbstractExternalEntityData -import com.intellij.openapi.externalSystem.model.project.AbstractNamedData -import com.intellij.openapi.externalSystem.model.project.ExternalSystemSourceType -import com.intellij.openapi.externalSystem.model.project.ModuleData -import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil -import com.intellij.openapi.util.Key -import com.intellij.util.containers.MultiMap -import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments -import org.jetbrains.kotlin.config.ExternalSystemRunTask -import org.jetbrains.kotlin.gradle.* -import org.jetbrains.kotlin.idea.util.CopyableDataNodeUserDataProperty -import org.jetbrains.plugins.gradle.util.GradleConstants -import java.io.File -import java.io.Serializable -import com.intellij.openapi.externalSystem.model.Key as ExternalKey - -var DataNode.kotlinSourceSet: KotlinSourceSetInfo? - by CopyableDataNodeUserDataProperty(Key.create("KOTLIN_SOURCE_SET")) - -val DataNode.kotlinAndroidSourceSets: List? - get() = ExternalSystemApiUtil.getChildren(this, KotlinAndroidSourceSetData.KEY).firstOrNull()?.data?.sourceSetInfos - -class KotlinSourceSetInfo(val kotlinModule: KotlinModule) : Serializable { - var moduleId: String? = null - var gradleModuleId: String = "" - - var actualPlatforms: KotlinPlatformContainer = KotlinPlatformContainerImpl() - - @Deprecated("Returns only single TargetPlatform", ReplaceWith("actualPlatforms.actualPlatforms"), DeprecationLevel.ERROR) - val platform: KotlinPlatform - get() = actualPlatforms.getSinglePlatform() - - var defaultCompilerArguments: CommonCompilerArguments? = null - var compilerArguments: CommonCompilerArguments? = null - var dependencyClasspath: List = emptyList() - var isTestModule: Boolean = false - var sourceSetIdsByName: MutableMap = LinkedHashMap() - var dependsOn: List = emptyList() - var externalSystemRunTasks: Collection = emptyList() -} - -class KotlinAndroidSourceSetData( - val sourceSetInfos: List -) : AbstractExternalEntityData(GradleConstants.SYSTEM_ID) { - companion object { - val KEY = ExternalKey.create(KotlinAndroidSourceSetData::class.java, KotlinTargetData.KEY.processingWeight + 1) - } -} - -class KotlinTargetData(name: String) : AbstractNamedData(GradleConstants.SYSTEM_ID, name) { - var moduleIds: Set = emptySet() - var archiveFile: File? = null - var konanArtifacts: Collection? = null - - companion object { - val KEY = ExternalKey.create(KotlinTargetData::class.java, ProjectKeys.MODULE.processingWeight + 1) - } -} - -class KotlinOutputPathsData(val paths: MultiMap) : AbstractExternalEntityData(GradleConstants.SYSTEM_ID) { - companion object { - val KEY = ExternalKey.create(KotlinOutputPathsData::class.java, ProjectKeys.CONTENT_ROOT.processingWeight + 1) - } -} \ No newline at end of file diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinTargetDataService.kt.191 b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinTargetDataService.kt.191 deleted file mode 100644 index 170307a4cb5..00000000000 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinTargetDataService.kt.191 +++ /dev/null @@ -1,46 +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.idea.configuration - -import com.intellij.openapi.externalSystem.model.DataNode -import com.intellij.openapi.externalSystem.model.project.ProjectData -import com.intellij.openapi.externalSystem.service.project.IdeModifiableModelsProvider -import com.intellij.openapi.externalSystem.service.project.manage.AbstractProjectDataService -import com.intellij.openapi.project.Project -import com.intellij.openapi.util.io.FileUtil -import com.intellij.packaging.impl.artifacts.JarArtifactType -import com.intellij.packaging.impl.elements.ProductionModuleOutputPackagingElement -import org.jetbrains.kotlin.idea.util.createPointer - -class KotlinTargetDataService : AbstractProjectDataService() { - override fun getTargetDataKey() = KotlinTargetData.KEY - - override fun importData( - toImport: MutableCollection>, - projectData: ProjectData?, - project: Project, - modelsProvider: IdeModifiableModelsProvider - ) { - for (nodeToImport in toImport) { - val targetData = nodeToImport.data - val archiveFile = targetData.archiveFile ?: continue - val artifactModel = modelsProvider.modifiableArtifactModel - val artifactName = FileUtil.getNameWithoutExtension(archiveFile) - artifactModel.findArtifact(artifactName)?.let { artifactModel.removeArtifact(it) } - artifactModel.addArtifact(artifactName, JarArtifactType.getInstance()).also { - it.outputPath = archiveFile.parent - for (moduleId in targetData.moduleIds) { - val compilationModuleDataNode = nodeToImport.parent?.findChildModuleById(moduleId) ?: continue - val compilationData = compilationModuleDataNode.data - val kotlinSourceSet = compilationModuleDataNode.kotlinSourceSet ?: continue - if (kotlinSourceSet.isTestModule) continue - val moduleToPackage = modelsProvider.findIdeModule(compilationData) ?: continue - it.rootElement.addOrFindChild(ProductionModuleOutputPackagingElement(project, moduleToPackage.createPointer())) - } - } - } - } -} \ No newline at end of file diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/kotlinResolverUtil.kt.191 b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/kotlinResolverUtil.kt.191 deleted file mode 100644 index acf58a54edb..00000000000 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/kotlinResolverUtil.kt.191 +++ /dev/null @@ -1,8 +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.configuration - -fun suggestNativeDebug(projectPath: String) {} \ No newline at end of file diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/gradle/execution/KotlinMPPGradleProjectTaskRunnerUtil.kt.191 b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/gradle/execution/KotlinMPPGradleProjectTaskRunnerUtil.kt.191 deleted file mode 100644 index 0aad7942189..00000000000 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/gradle/execution/KotlinMPPGradleProjectTaskRunnerUtil.kt.191 +++ /dev/null @@ -1,18 +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.gradle.execution - -import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil.toCanonicalPath -import org.jetbrains.plugins.gradle.service.settings.GradleSettingsService -import com.intellij.openapi.module.Module - -fun isDelegatedBuild(module: Module): Boolean { - val projectUrl = module.project.presentableUrl - if (projectUrl == null || !GradleSettingsService.getInstance(module.project).isDelegatedBuildEnabled(toCanonicalPath(projectUrl))) { - return false - } - return true -} \ No newline at end of file diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/gradle/testing/KotlinTestTasksResolver.kt.191 b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/gradle/testing/KotlinTestTasksResolver.kt.191 deleted file mode 100644 index 47098ca4e86..00000000000 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/gradle/testing/KotlinTestTasksResolver.kt.191 +++ /dev/null @@ -1,109 +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.gradle.testing - -import com.intellij.openapi.diagnostic.Logger -import com.intellij.openapi.externalSystem.model.DataNode -import com.intellij.openapi.externalSystem.model.ProjectKeys -import com.intellij.openapi.externalSystem.model.project.ModuleData -import com.intellij.openapi.externalSystem.model.project.ProjectData -import com.intellij.openapi.externalSystem.model.task.TaskData -import com.intellij.openapi.externalSystem.util.Order -import com.intellij.openapi.util.registry.Registry -import com.intellij.util.Consumer -import org.gradle.tooling.model.idea.IdeaModule -import org.jetbrains.kotlin.gradle.KotlinMPPGradleModel -import org.jetbrains.kotlin.gradle.KotlinMPPGradleModelBuilder -import org.jetbrains.kotlin.idea.configuration.getMppModel -import org.jetbrains.plugins.gradle.service.project.AbstractProjectResolverExtension - -@Order(Int.MIN_VALUE) -open class KotlinTestTasksResolver : AbstractProjectResolverExtension() { - companion object { - private const val ENABLED_REGISTRY_KEY = "kotlin.gradle.testing.enabled" - } - - private val LOG by lazy { Logger.getInstance(KotlinTestTasksResolver::class.java) } - - override fun getToolingExtensionsClasses(): Set> { - return setOf(KotlinMPPGradleModelBuilder::class.java, Unit::class.java) - } - - override fun populateModuleTasks( - gradleModule: IdeaModule, - ideModule: DataNode, - ideProject: DataNode - ): MutableCollection { - if (!Registry.`is`(ENABLED_REGISTRY_KEY)) - return super.populateModuleTasks(gradleModule, ideModule, ideProject) - - val mppModel = resolverCtx.getMppModel(gradleModule) - ?: return super.populateModuleTasks(gradleModule, ideModule, ideProject) - - return postprocessTaskData(mppModel, ideModule, nextResolver.populateModuleTasks(gradleModule, ideModule, ideProject)) - } - - private fun postprocessTaskData( - mppModel: KotlinMPPGradleModel, - ideModule: DataNode, - originalTaskData: MutableCollection - ): MutableCollection { - val testTaskNames = mutableSetOf().apply { - mppModel.targets.forEach { target -> - target.testRunTasks.forEach { testTaskModel -> - add(testTaskModel.taskName) - } - } - } - - fun buildNewTaskDataMarkedAsTest(original: TaskData): TaskData = - TaskData(original.owner, original.name, original.linkedExternalProjectPath, original.description).apply { - group = original.group - type = original.type - isInherited = original.isInherited - - isTest = true - } - - val replacementMap: Map = mutableMapOf().apply { - originalTaskData.forEach { - if (it.name in testTaskNames && !it.isTest) { - put(it, buildNewTaskDataMarkedAsTest(it)) - } - } - } - - ideModule.children.filter { it.data in replacementMap }.forEach { it.clear(true) } - replacementMap.values.forEach { ideModule.createChild(ProjectKeys.TASK, it) } - - return originalTaskData.mapTo(arrayListOf()) { replacementMap[it] ?: it } - } - - override fun enhanceTaskProcessing(taskNames: MutableList, jvmAgentSetup: String?, initScriptConsumer: Consumer) { - if (!Registry.`is`(ENABLED_REGISTRY_KEY)) - return - - try { - //for 191 idea we can't check running task so add listener always - val addTestListenerScript = javaClass - .getResourceAsStream("/org/jetbrains/kotlin/idea/gradle/testing/addKotlinMppTestListener.groovy") - .bufferedReader() - .readText() - val testLoggerScript = javaClass - .getResourceAsStream("/org/jetbrains/kotlin/idea/gradle/testing/KotlinMppTestLogger.groovy") - .bufferedReader() - .readText() - - initScriptConsumer.consume(buildString { - append(addTestListenerScript) - append('\n') - append(testLoggerScript) - }) - } catch (e: Exception) { - LOG.error(e) - } - } -} \ No newline at end of file diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/run/jvmTestClassUtils.kt.191 b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/run/jvmTestClassUtils.kt.191 deleted file mode 100644 index 24523a6148d..00000000000 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/run/jvmTestClassUtils.kt.191 +++ /dev/null @@ -1,62 +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.run - -import com.intellij.execution.Location -import com.intellij.execution.actions.ConfigurationFromContext -import com.intellij.execution.junit.JUnitConfigurationProducer -import com.intellij.execution.testframework.AbstractPatternBasedConfigurationProducer -import com.intellij.ide.plugins.PluginManager -import com.intellij.openapi.extensions.PluginId.getId -import com.intellij.openapi.util.component1 -import com.intellij.openapi.util.component2 -import com.intellij.psi.PsiClass -import com.intellij.psi.PsiMethod -import org.jetbrains.kotlin.idea.KotlinLanguage - -private val isJUnitEnabled by lazy { isPluginEnabled("JUnit") } -private val isTestNgEnabled by lazy { isPluginEnabled("TestNG-J") } - -private fun isPluginEnabled(id: String): Boolean { - return PluginManager.isPluginInstalled(getId(id)) && id !in PluginManager.getDisabledPlugins() -} - -internal fun ConfigurationFromContext.isJpsJunitConfiguration(): Boolean { - return isProducedBy(JUnitConfigurationProducer::class.java) - || isProducedBy(AbstractPatternBasedConfigurationProducer::class.java) -} - -internal fun canRunJvmTests() = isJUnitEnabled || isTestNgEnabled - -internal fun getTestClassForJvm(location: Location<*>): PsiClass? { - val leaf = location.psiElement ?: return null - - if (leaf.language != KotlinLanguage.INSTANCE) return null - - if (isJUnitEnabled) { - KotlinJUnitRunConfigurationProducer.getTestClass(leaf)?.let { return it } - } - if (isTestNgEnabled) { - KotlinTestNgConfigurationProducer.getTestClassAndMethod(leaf)?.let { (testClass, testMethod) -> - return if (testMethod == null) testClass else null - } - } - return null -} - -internal fun getTestMethodForJvm(location: Location<*>): PsiMethod? { - val leaf = location.psiElement ?: return null - - if (leaf.language != KotlinLanguage.INSTANCE) return null - - if (isJUnitEnabled) { - KotlinJUnitRunConfigurationProducer.getTestMethod(leaf)?.let { return it } - } - if (isTestNgEnabled) { - KotlinTestNgConfigurationProducer.getTestClassAndMethod(leaf)?.second?.let { return it } - } - return null -} \ No newline at end of file diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/AsyncFileChangeListenerHelper.kt.191 b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/AsyncFileChangeListenerHelper.kt.191 deleted file mode 100644 index 97e653c6b62..00000000000 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/AsyncFileChangeListenerHelper.kt.191 +++ /dev/null @@ -1,37 +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.scripting.gradle - -import com.intellij.openapi.vfs.VirtualFileManager -import com.intellij.openapi.vfs.newvfs.BulkFileListener -import com.intellij.openapi.vfs.newvfs.events.VFileEvent -import com.intellij.util.concurrency.SequentialTaskExecutor -import org.jetbrains.kotlin.idea.scripting.gradle.roots.GradleBuildRootsManager - -fun addVfsListener( - watcher: GradleScriptListener, - buildRootsManager: GradleBuildRootsManager -) { - watcher.project.messageBus.connect().subscribe( - VirtualFileManager.VFS_CHANGES, - object : BulkFileListener { - private val executor = - SequentialTaskExecutor.createSequentialApplicationPoolExecutor("GradleScriptInputsWatcherVfsChangesExecutor") - - override fun after(events: List) { - executor.submit(Runnable { - if (watcher.project.isDisposed) return@Runnable - for (event in events) { - val file = event.file ?: continue - if (buildRootsManager.maybeAffectedGradleProjectFile(event.path)) { - watcher.fileChanged(event.path, file.timeStamp) - } - } - }) - } - } - ) -} \ No newline at end of file diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslScriptModelResolver.kt.191 b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslScriptModelResolver.kt.191 deleted file mode 100644 index f5df22edccc..00000000000 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinDslScriptModelResolver.kt.191 +++ /dev/null @@ -1,8 +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.configuration.importing - -class KotlinGradleBuildScriptsResolver \ No newline at end of file diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinGradleDslErrorReporter.kt.191 b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinGradleDslErrorReporter.kt.191 deleted file mode 100644 index 01989e484e1..00000000000 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/scripting/gradle/importing/KotlinGradleDslErrorReporter.kt.191 +++ /dev/null @@ -1,25 +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("UNUSED_PARAMETER", "unused") - -package org.jetbrains.kotlin.idea.scripting.gradle.importing - -import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskId -import com.intellij.openapi.project.Project -import java.io.File - -class KotlinGradleDslErrorReporter( - private val project: Project, - private val task: ExternalSystemTaskId -) { - - fun reportError( - scriptFile: File, - model: KotlinDslScriptModel - ) { - // KotlinDslModels aren't imported in 191 - } -} diff --git a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/AbstractModelBuilderTest.java.191 b/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/AbstractModelBuilderTest.java.191 deleted file mode 100644 index 42fdde3a79e..00000000000 --- a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/AbstractModelBuilderTest.java.191 +++ /dev/null @@ -1,262 +0,0 @@ -/* - * Copyright 2010-2016 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.codeInsight.gradle; - -import com.google.common.collect.Multimap; -import com.intellij.openapi.util.Pair; -import com.intellij.openapi.util.io.FileUtil; -import com.intellij.openapi.util.io.StreamUtil; -import com.intellij.testFramework.IdeaTestUtil; -import com.intellij.util.Function; -import com.intellij.util.containers.ContainerUtil; -import org.codehaus.groovy.runtime.typehandling.ShortTypeHandling; -import org.gradle.tooling.BuildActionExecuter; -import org.gradle.tooling.GradleConnector; -import org.gradle.tooling.ProjectConnection; -import org.gradle.tooling.internal.consumer.DefaultGradleConnector; -import org.gradle.tooling.model.DomainObjectSet; -import org.gradle.tooling.model.idea.IdeaModule; -import org.gradle.util.GradleVersion; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.plugins.gradle.model.ClassSetProjectImportExtraModelProvider; -import org.jetbrains.plugins.gradle.model.ExternalProject; -import org.jetbrains.plugins.gradle.model.ProjectImportAction; -import org.jetbrains.plugins.gradle.service.execution.GradleExecutionHelper; -import org.jetbrains.plugins.gradle.tooling.builder.ModelBuildScriptClasspathBuilderImpl; -import org.jetbrains.plugins.gradle.util.GradleConstants; -import org.junit.After; -import org.junit.Before; -import org.junit.Rule; -import org.junit.rules.TestName; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.net.URI; -import java.net.URISyntaxException; -import java.util.*; -import java.util.concurrent.TimeUnit; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import static org.junit.Assert.assertNotNull; -import static org.junit.Assume.assumeThat; - -// part of org.jetbrains.plugins.gradle.tooling.builder.AbstractModelBuilderTest -@RunWith(value = Parameterized.class) -public abstract class AbstractModelBuilderTest { - - public static final Object[][] SUPPORTED_GRADLE_VERSIONS = {{"4.9"}, {"5.6.4"}}; - - private static final Pattern TEST_METHOD_NAME_PATTERN = Pattern.compile("(.*)\\[(\\d*: with Gradle-.*)\\]"); - - private static File ourTempDir; - - @NotNull - private final String gradleVersion; - private File testDir; - private ProjectImportAction.AllModels allModels; - - @Rule public TestName name = new TestName(); - @Rule public VersionMatcherRule versionMatcherRule = new VersionMatcherRule(); - - public AbstractModelBuilderTest(@NotNull String gradleVersion) { - this.gradleVersion = gradleVersion; - } - - @Parameterized.Parameters(name = "{index}: with Gradle-{0}") - public static Collection data() { - return Arrays.asList(SUPPORTED_GRADLE_VERSIONS); - } - - - @Before - public void setUp() throws Exception { - assumeThat(gradleVersion, versionMatcherRule.getMatcher()); - - ensureTempDirCreated(); - - String methodName = name.getMethodName(); - Matcher m = TEST_METHOD_NAME_PATTERN.matcher(methodName); - if (m.matches()) { - methodName = m.group(1); - } - - testDir = new File(ourTempDir, methodName); - FileUtil.ensureExists(testDir); - - InputStream buildScriptStream = getClass().getResourceAsStream("/" + methodName + "/" + GradleConstants.DEFAULT_SCRIPT_NAME); - try { - FileUtil.writeToFile( - new File(testDir, GradleConstants.DEFAULT_SCRIPT_NAME), - FileUtil.loadTextAndClose(buildScriptStream) - ); - } - finally { - StreamUtil.closeStream(buildScriptStream); - } - - InputStream settingsStream = getClass().getResourceAsStream("/" + methodName + "/" + GradleConstants.SETTINGS_FILE_NAME); - try { - if (settingsStream != null) { - FileUtil.writeToFile( - new File(testDir, GradleConstants.SETTINGS_FILE_NAME), - FileUtil.loadTextAndClose(settingsStream) - ); - } - } - finally { - StreamUtil.closeStream(settingsStream); - } - - GradleConnector connector = GradleConnector.newConnector(); - - URI distributionUri = new DistributionLocator().getDistributionFor(GradleVersion.version(gradleVersion)); - connector.useDistribution(distributionUri); - connector.forProjectDirectory(testDir); - int daemonMaxIdleTime = 10; - try { - daemonMaxIdleTime = Integer.parseInt(System.getProperty("gradleDaemonMaxIdleTime", "10")); - } - catch (NumberFormatException ignore) { - } - - ((DefaultGradleConnector) connector).daemonMaxIdleTime(daemonMaxIdleTime, TimeUnit.SECONDS); - ProjectConnection connection = connector.connect(); - - try { - ProjectImportAction projectImportAction = new ProjectImportAction(false); - projectImportAction.addProjectImportExtraModelProvider(new ClassSetProjectImportExtraModelProvider(getModels())); - BuildActionExecuter buildActionExecutor = connection.action(projectImportAction); - File initScript = GradleExecutionHelper.generateInitScript(false, getToolingExtensionClasses()); - assertNotNull(initScript); - String jdkHome = IdeaTestUtil.requireRealJdkHome(); - buildActionExecutor.setJavaHome(new File(jdkHome)); - buildActionExecutor.setJvmArguments("-Xmx128m", "-XX:MaxPermSize=64m"); - buildActionExecutor - .withArguments("--info", "--recompile-scripts", GradleConstants.INIT_SCRIPT_CMD_OPTION, initScript.getAbsolutePath()); - allModels = buildActionExecutor.run(); - assertNotNull(allModels); - } - finally { - connection.close(); - } - } - - @NotNull - private static Set getToolingExtensionClasses() { - Set classes = ContainerUtil.set( - ExternalProject.class, - // gradle-tooling-extension-api jar - ProjectImportAction.class, - // gradle-tooling-extension-impl jar - ModelBuildScriptClasspathBuilderImpl.class, - Multimap.class, - ShortTypeHandling.class - ); - - ContainerUtil.addAllNotNull(classes, doGetToolingExtensionClasses()); - return classes; - } - - @NotNull - private static Set doGetToolingExtensionClasses() { - return Collections.emptySet(); - } - - @After - public void tearDown() throws Exception { - if (testDir != null) { - FileUtil.delete(testDir); - } - } - - protected abstract Set getModels(); - - - private Map getModulesMap(final Class aClass) { - DomainObjectSet ideaModules = allModels.getIdeaProject().getModules(); - - final String filterKey = "to_filter"; - Map map = ContainerUtil.map2Map(ideaModules, new Function>() { - @Override - public Pair fun(IdeaModule module) { - T value = allModels.getExtraProject(module, aClass); - String key = value != null ? module.getGradleProject().getPath() : filterKey; - return Pair.create(key, value); - } - }); - - map.remove(filterKey); - return map; - } - - private static void ensureTempDirCreated() throws IOException { - if (ourTempDir != null) return; - - ourTempDir = new File(FileUtil.getTempDirectory(), "gradleTests"); - FileUtil.delete(ourTempDir); - FileUtil.ensureExists(ourTempDir); - } - - public static class DistributionLocator { - private static final String RELEASE_REPOSITORY_ENV = "GRADLE_RELEASE_REPOSITORY"; - private static final String SNAPSHOT_REPOSITORY_ENV = "GRADLE_SNAPSHOT_REPOSITORY"; - private static final String GRADLE_RELEASE_REPO = "https://services.gradle.org/distributions"; - private static final String GRADLE_SNAPSHOT_REPO = "https://services.gradle.org/distributions-snapshots"; - - @NotNull private final String myReleaseRepoUrl; - @NotNull private final String mySnapshotRepoUrl; - - public DistributionLocator() { - this(DistributionLocator.getRepoUrl(false), DistributionLocator.getRepoUrl(true)); - } - - public DistributionLocator(@NotNull String releaseRepoUrl, @NotNull String snapshotRepoUrl) { - myReleaseRepoUrl = releaseRepoUrl; - mySnapshotRepoUrl = snapshotRepoUrl; - } - - @NotNull - public URI getDistributionFor(@NotNull GradleVersion version) throws URISyntaxException { - return getDistribution(getDistributionRepository(version), version, "gradle", "bin"); - } - - @NotNull - private String getDistributionRepository(@NotNull GradleVersion version) { - return version.isSnapshot() ? mySnapshotRepoUrl : myReleaseRepoUrl; - } - - private static URI getDistribution( - @NotNull String repositoryUrl, - @NotNull GradleVersion version, - @NotNull String archiveName, - @NotNull String archiveClassifier - ) throws URISyntaxException { - return new URI(String.format("%s/%s-%s-%s.zip", repositoryUrl, archiveName, version.getVersion(), archiveClassifier)); - } - - @NotNull - public static String getRepoUrl(boolean isSnapshotUrl) { - String envRepoUrl = System.getenv(isSnapshotUrl ? SNAPSHOT_REPOSITORY_ENV : RELEASE_REPOSITORY_ENV); - if (envRepoUrl != null) return envRepoUrl; - - return isSnapshotUrl ? GRADLE_SNAPSHOT_REPO : GRADLE_RELEASE_REPO; - } - } -} diff --git a/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleKtsImportTest.kt.191 b/idea/idea-gradle/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleKtsImportTest.kt.191 deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/injection/KotlinLanguageInjectionSupport.kt.191 b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/injection/KotlinLanguageInjectionSupport.kt.191 deleted file mode 100644 index 5a029a6bd56..00000000000 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/injection/KotlinLanguageInjectionSupport.kt.191 +++ /dev/null @@ -1,245 +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.injection - -import com.intellij.codeInsight.AnnotationUtil -import com.intellij.lang.Language -import com.intellij.openapi.module.ModuleUtilCore -import com.intellij.openapi.util.Ref -import com.intellij.openapi.util.text.StringUtil -import com.intellij.psi.* -import com.intellij.psi.search.GlobalSearchScope -import com.intellij.psi.util.PsiTreeUtil -import com.intellij.psi.util.PsiTreeUtil.getDeepestLast -import com.intellij.util.Processor -import org.intellij.plugins.intelliLang.Configuration -import org.intellij.plugins.intelliLang.inject.* -import org.intellij.plugins.intelliLang.inject.config.BaseInjection -import org.jetbrains.annotations.NonNls -import org.jetbrains.kotlin.idea.KotlinJvmBundle -import org.jetbrains.kotlin.idea.patterns.KotlinPatterns -import org.jetbrains.kotlin.idea.util.addAnnotation -import org.jetbrains.kotlin.idea.util.application.executeWriteCommand -import org.jetbrains.kotlin.idea.util.findAnnotation -import org.jetbrains.kotlin.name.FqName -import org.jetbrains.kotlin.psi.* -import org.jetbrains.kotlin.psi.psiUtil.endOffset -import org.jetbrains.kotlin.psi.psiUtil.siblings -import org.jetbrains.kotlin.psi.psiUtil.startOffset - -@NonNls -val KOTLIN_SUPPORT_ID = "kotlin" - -class KotlinLanguageInjectionSupport : AbstractLanguageInjectionSupport() { - override fun getId(): String = KOTLIN_SUPPORT_ID - - override fun getPatternClasses() = arrayOf(KotlinPatterns::class.java) - - override fun isApplicableTo(host: PsiLanguageInjectionHost?) = host is KtElement - - override fun useDefaultInjector(host: PsiLanguageInjectionHost?): Boolean = false - - override fun addInjectionInPlace(language: Language?, host: PsiLanguageInjectionHost?): Boolean { - if (language == null || host == null) return false - - val configuration = Configuration.getProjectInstance(host.project).advancedConfiguration - if (!configuration.isSourceModificationAllowed) { - // It's not allowed to modify code without explicit permission. Postpone adding @Inject or comment till it granted. - host.putUserData(InjectLanguageAction.FIX_KEY, Processor { fixHost: PsiLanguageInjectionHost? -> - fixHost != null && addInjectionInstructionInCode(language, fixHost) - }) - return false - } - - if (!addInjectionInstructionInCode(language, host)) { - return false - } - - TemporaryPlacesRegistry.getInstance(host.project).addHostWithUndo(host, InjectedLanguage.create(language.id)) - return true - } - - override fun removeInjectionInPlace(psiElement: PsiLanguageInjectionHost?): Boolean { - if (psiElement == null || psiElement !is KtElement) return false - - val project = psiElement.getProject() - - val injectInstructions = listOfNotNull( - findAnnotationInjection(psiElement), - findInjectionComment(psiElement) - ) - - TemporaryPlacesRegistry.getInstance(project).removeHostWithUndo(project, psiElement) - - project.executeWriteCommand(KotlinJvmBundle.message("command.action.remove.injection.in.code.instructions")) { - injectInstructions.forEach(PsiElement::delete) - } - - return true - } - - override fun findCommentInjection(host: PsiElement, commentRef: Ref?): BaseInjection? { - // Do not inject through CommentLanguageInjector, because it injects as simple injection. - // We need to behave special for interpolated strings. - return null - } - - fun findCommentInjection(host: KtElement): BaseInjection? { - return InjectorUtils.findCommentInjection(host, "", null) - } - - private fun findInjectionComment(host: KtElement): PsiComment? { - val commentRef = Ref.create(null) - InjectorUtils.findCommentInjection(host, "", commentRef) ?: return null - - return commentRef.get() as? PsiComment - } - - internal fun findAnnotationInjectionLanguageId(host: KtElement): InjectionInfo? { - val annotationEntry = findAnnotationInjection(host) ?: return null - val extractLanguageFromInjectAnnotation = extractLanguageFromInjectAnnotation(annotationEntry) ?: return null - val prefix = extractStringArgumentByName(annotationEntry, "prefix") - val suffix = extractStringArgumentByName(annotationEntry, "suffix") - return InjectionInfo(extractLanguageFromInjectAnnotation, prefix, suffix) - } -} - -private fun extractStringArgumentByName(annotationEntry: KtAnnotationEntry, name: String): String? { - val namedArgument: ValueArgument = annotationEntry.valueArguments.firstOrNull { it.getArgumentName()?.asName?.asString() == name } ?: return null - return extractStringValue(namedArgument) -} - - -private fun extractLanguageFromInjectAnnotation(annotationEntry: KtAnnotationEntry): String? { - val firstArgument: ValueArgument = annotationEntry.valueArguments.firstOrNull() ?: return null - return extractStringValue(firstArgument) -} - -private fun extractStringValue(valueArgument: ValueArgument): String? { - val firstStringArgument = valueArgument.getArgumentExpression() as? KtStringTemplateExpression ?: return null - val firstStringEntry = firstStringArgument.entries.singleOrNull() ?: return null - - return firstStringEntry.text -} - -private fun findAnnotationInjection(host: KtElement): KtAnnotationEntry? { - val modifierListOwner = findElementToInjectWithAnnotation(host) ?: return null - - val modifierList = modifierListOwner.modifierList ?: return null - - // Host can't be before annotation - if (host.startOffset < modifierList.endOffset) return null - - return modifierListOwner.findAnnotation(FqName(AnnotationUtil.LANGUAGE)) -} - -private fun canInjectWithAnnotation(host: PsiElement): Boolean { - val module = ModuleUtilCore.findModuleForPsiElement(host) ?: return false - val javaPsiFacade = JavaPsiFacade.getInstance(module.project) - - return javaPsiFacade.findClass(AnnotationUtil.LANGUAGE, GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(module)) != null -} - -private fun findElementToInjectWithAnnotation(host: KtElement): KtModifierListOwner? { - return PsiTreeUtil.getParentOfType( - host, - KtModifierListOwner::class.java, - false, /* strict */ - KtBlockExpression::class.java, KtParameterList::class.java, KtTypeParameterList::class.java /* Stop at */ - ) -} - -private fun findElementToInjectWithComment(host: KtElement): KtExpression? { - val parentBlockExpression = PsiTreeUtil.getParentOfType( - host, - KtBlockExpression::class.java, - true, /* strict */ - KtDeclaration::class.java /* Stop at */ - ) ?: return null - - return parentBlockExpression.statements.firstOrNull { statement -> - PsiTreeUtil.isAncestor(statement, host, false) && checkIsValidPlaceForInjectionWithLineComment(statement, host) - } -} - -private fun addInjectionInstructionInCode(language: Language, host: PsiLanguageInjectionHost): Boolean { - val ktHost = host as? KtElement ?: return false - val project = ktHost.project - - // Find the place where injection can be stated with annotation or comment - val modifierListOwner = findElementToInjectWithAnnotation(ktHost) - - if (modifierListOwner != null && canInjectWithAnnotation(ktHost)) { - project.executeWriteCommand(KotlinJvmBundle.message("command.action.add.injection.annotation")) { - modifierListOwner.addAnnotation(FqName(AnnotationUtil.LANGUAGE), "\"${language.id}\"") - } - - return true - } - - // Find the place where injection can be done with one-line comment - val commentBeforeAnchor: PsiElement = - modifierListOwner?.firstNonCommentChild() ?: - findElementToInjectWithComment(ktHost) ?: - return false - - val psiFactory = KtPsiFactory(project) - val injectComment = psiFactory.createComment("//language=" + language.id) - - project.executeWriteCommand(KotlinJvmBundle.message("command.action.add.injection.comment")) { - commentBeforeAnchor.parent.addBefore(injectComment, commentBeforeAnchor) - } - - return true -} - -// Inspired with InjectorUtils.findCommentInjection() -private fun checkIsValidPlaceForInjectionWithLineComment(statement: KtExpression, host: KtElement): Boolean { - // make sure comment is close enough and ... - val statementStartOffset = statement.startOffset - val hostStart = host.startOffset - if (hostStart < statementStartOffset || hostStart - statementStartOffset > 120) { - return false - } - - if (hostStart - statementStartOffset > 2) { - // ... there's no non-empty valid host in between comment and e2 - if (prevWalker(host, statement).asSequence().takeWhile { it != null }.any { - it is PsiLanguageInjectionHost && it.isValidHost && !StringUtil.isEmptyOrSpaces(it.text) - }) { - return false - } - } - - return true -} - -private fun PsiElement.firstNonCommentChild(): PsiElement? { - return firstChild.siblings().dropWhile { it is PsiComment || it is PsiWhiteSpace }.firstOrNull() -} - -// Based on InjectorUtils.prevWalker -private fun prevWalker(element: PsiElement, scope: PsiElement): Iterator { - return object : Iterator { - private var e: PsiElement? = element - - override fun hasNext(): Boolean = true - override fun next(): PsiElement? { - val current = e - - if (current == null || current === scope) return null - val prev = current.prevSibling - e = if (prev != null) { - getDeepestLast(prev) - } - else { - val parent = current.parent - if (parent === scope || parent is PsiFile) null else parent - } - return e - } - } -} diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/compile/KtScratchExecutionSession.kt.191 b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/compile/KtScratchExecutionSession.kt.191 deleted file mode 100644 index 478ca4e0e5c..00000000000 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/compile/KtScratchExecutionSession.kt.191 +++ /dev/null @@ -1,181 +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.scratch.compile - -import com.intellij.execution.configurations.GeneralCommandLine -import com.intellij.execution.process.CapturingProcessHandler -import com.intellij.openapi.diagnostic.ControlFlowException -import com.intellij.openapi.module.Module -import com.intellij.openapi.progress.ProgressIndicator -import com.intellij.openapi.progress.Task -import com.intellij.openapi.project.DumbService -import com.intellij.openapi.util.Computable -import com.intellij.openapi.util.io.FileUtil -import org.jetbrains.kotlin.codegen.ClassBuilderFactories -import org.jetbrains.kotlin.codegen.KotlinCodegenFacade -import org.jetbrains.kotlin.codegen.filterClassFiles -import org.jetbrains.kotlin.codegen.state.GenerationState -import org.jetbrains.kotlin.config.CompilerConfiguration -import org.jetbrains.kotlin.idea.KotlinJvmBundle -import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade -import org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManager -import org.jetbrains.kotlin.idea.debugger.DebuggerUtils -import org.jetbrains.kotlin.idea.scratch.LOG -import org.jetbrains.kotlin.idea.scratch.ScratchExpression -import org.jetbrains.kotlin.idea.scratch.ScratchFile -import org.jetbrains.kotlin.idea.scratch.printDebugMessage -import org.jetbrains.kotlin.idea.util.JavaParametersBuilder -import org.jetbrains.kotlin.idea.util.application.runReadAction -import org.jetbrains.kotlin.psi.* -import java.io.File - -class KtScratchExecutionSession( - private val file: ScratchFile, - private val executor: KtCompilingExecutor -) { - companion object { - private const val TIMEOUT_MS = 30000 - } - - private var backgroundProcessIndicator: ProgressIndicator? = null - - fun execute(callback: () -> Unit) { - val psiFile = file.getPsiFile() as? KtFile ?: return executor.errorOccurs(KotlinJvmBundle.message("couldn.t.find.ktfile.for.current.editor"), isFatal = true) - - val expressions = file.getExpressions() - if (!executor.checkForErrors(psiFile, expressions)) return - - when (val result = runReadAction { KtScratchSourceFileProcessor().process(expressions) }) { - is KtScratchSourceFileProcessor.Result.Error -> return executor.errorOccurs(result.message, isFatal = true) - is KtScratchSourceFileProcessor.Result.OK -> { - LOG.printDebugMessage("After processing by KtScratchSourceFileProcessor:\n ${result.code}") - - object : Task.Backgroundable(psiFile.project, KotlinJvmBundle.message("running.kotlin.scratch"), true) { - override fun run(indicator: ProgressIndicator) { - backgroundProcessIndicator = indicator - - val modifiedScratchSourceFile = runReadAction { - KtPsiFactory(psiFile.project).createFileWithLightClassSupport("tmp.kt", result.code, psiFile) - } - - try { - val tempDir = DumbService.getInstance(project).runReadActionInSmartMode( - Computable { - compileFileToTempDir(modifiedScratchSourceFile, expressions) - } - ) ?: return - - try { - val commandLine = createCommandLine(psiFile, file.module, result.mainClassName, tempDir.path) - - LOG.printDebugMessage(commandLine.commandLineString) - - val processHandler = CapturingProcessHandler(commandLine) - val executionResult = processHandler.runProcessWithProgressIndicator(indicator, TIMEOUT_MS) - when { - executionResult.isTimeout -> { - executor.errorOccurs( - KotlinJvmBundle.message( - "couldn.t.get.scratch.execution.result.stopped.by.timeout.0.ms", - TIMEOUT_MS - ) - ) - } - executionResult.isCancelled -> { - // ignore - } - else -> { - executor.parseOutput(executionResult, expressions) - } - } - } finally { - tempDir.delete() - callback() - } - } catch (e: Throwable) { - if (e is ControlFlowException) throw e - - LOG.printDebugMessage(result.code) - executor.errorOccurs(e.message ?: KotlinJvmBundle.message("couldn.t.compile.0", psiFile.name), e, isFatal = true) - } - } - }.queue() - } - } - } - - fun stop() { - backgroundProcessIndicator?.cancel() - } - - private fun compileFileToTempDir(psiFile: KtFile, expressions: List): File? { - if (!executor.checkForErrors(psiFile, expressions)) return null - - val resolutionFacade = psiFile.getResolutionFacade() - val (bindingContext, files) = DebuggerUtils.analyzeInlinedFunctions(resolutionFacade, psiFile, false) - - LOG.printDebugMessage("Analyzed files: \n${files.joinToString("\n") { it.virtualFilePath }}") - - val generateClassFilter = object : GenerationState.GenerateClassFilter() { - override fun shouldGeneratePackagePart(ktFile: KtFile) = ktFile == psiFile - override fun shouldAnnotateClass(processingClassOrObject: KtClassOrObject) = true - override fun shouldGenerateClass(processingClassOrObject: KtClassOrObject) = processingClassOrObject.containingKtFile == psiFile - override fun shouldGenerateScript(script: KtScript) = false - override fun shouldGenerateCodeFragment(script: KtCodeFragment) = false - } - - val state = GenerationState.Builder( - file.project, - ClassBuilderFactories.BINARIES, - resolutionFacade.moduleDescriptor, - bindingContext, - files, - CompilerConfiguration.EMPTY - ).generateDeclaredClassFilter(generateClassFilter).build() - - KotlinCodegenFacade.compileCorrectFiles(state) - - return writeClassFilesToTempDir(state) - } - - private fun writeClassFilesToTempDir(state: GenerationState): File { - val classFiles = state.factory.asList().filterClassFiles() - - val dir = FileUtil.createTempDirectory("compile", "scratch") - - LOG.printDebugMessage("Temp output dir: ${dir.path}") - - for (classFile in classFiles) { - val tmpOutFile = File(dir, classFile.relativePath) - tmpOutFile.parentFile.mkdirs() - tmpOutFile.createNewFile() - tmpOutFile.writeBytes(classFile.asByteArray()) - - LOG.printDebugMessage("Generated class file: ${classFile.relativePath}") - } - return dir - } - - private fun createCommandLine(originalFile: KtFile, module: Module?, mainClassName: String, tempOutDir: String): GeneralCommandLine { - val javaParameters = JavaParametersBuilder(originalFile.project) - .withSdkFrom(module, true) - .withMainClassName(mainClassName) - .build() - - javaParameters.classPath.add(tempOutDir) - - if (module != null) { - javaParameters.classPath.addAll(JavaParametersBuilder.getModuleDependencies(module)) - } - - ScriptConfigurationManager.getInstance(originalFile.project) - .getConfiguration(originalFile)?.let { - javaParameters.classPath.addAll(it.dependenciesClassPath.map { f -> f.absolutePath }) - } - - return javaParameters.toCommandLine() - } -} \ No newline at end of file diff --git a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/KotlinNativeRunConfigurationProducer.kt.191 b/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/KotlinNativeRunConfigurationProducer.kt.191 deleted file mode 100644 index a5d7cfe0600..00000000000 --- a/idea/idea-native/src/org/jetbrains/kotlin/ide/konan/KotlinNativeRunConfigurationProducer.kt.191 +++ /dev/null @@ -1,77 +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.ide.konan - -import com.intellij.execution.actions.ConfigurationContext -import com.intellij.execution.actions.LazyRunConfigurationProducer -import com.intellij.execution.configurations.ConfigurationFactory -import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil -import com.intellij.openapi.module.Module -import com.intellij.openapi.util.Ref -import com.intellij.psi.PsiElement -import com.intellij.psi.util.PsiTreeUtil -import org.jetbrains.kotlin.idea.facet.externalSystemNativeMainRunTasks -import org.jetbrains.kotlin.idea.project.platform -import org.jetbrains.kotlin.idea.util.module -import org.jetbrains.kotlin.platform.konan.isNative -import org.jetbrains.kotlin.psi.KtFunction -import org.jetbrains.plugins.gradle.service.execution.GradleExternalTaskConfigurationType -import org.jetbrains.plugins.gradle.service.execution.GradleRunConfiguration - - -class KotlinNativeRunConfigurationProducer : - LazyRunConfigurationProducer(), - KotlinNativeRunConfigurationProvider { - - override val isForTests = false - - override fun getConfigurationFactory(): ConfigurationFactory = - GradleExternalTaskConfigurationType.getInstance().factory - - override fun isConfigurationFromContext(configuration: GradleRunConfiguration, context: ConfigurationContext): Boolean { - val module = context.module.asNativeModule() ?: return false - val location = context.location ?: return false - val function = PsiTreeUtil.getParentOfType(location.psiElement, KtFunction::class.java) ?: return false - - val mainRunTasks = getDebugMainRunTasks(function) - if (mainRunTasks.isEmpty()) return false - - return configuration.settings.externalProjectPath == ExternalSystemApiUtil.getExternalProjectPath(module) - && configuration.settings.taskNames == mainRunTasks - } - - override fun setupConfigurationFromContext( - configuration: GradleRunConfiguration, - context: ConfigurationContext, - sourceElement: Ref - ): Boolean { - val module = context.module.asNativeModule() ?: return false - val function = PsiTreeUtil.getParentOfType(sourceElement.get(), KtFunction::class.java) ?: return false - - val mainRunTasks = getDebugMainRunTasks(function) - if (mainRunTasks.isEmpty()) return false - - configuration.settings.apply { - externalProjectPath = ExternalSystemApiUtil.getExternalProjectPath(module) - taskNames = mainRunTasks - } - configuration.name = mainRunTasks.first() - configuration.isScriptDebugEnabled = false - - return true - } - - private fun Module?.asNativeModule(): Module? = takeIf { it?.platform.isNative() } - - private fun getDebugMainRunTasks(function: KtFunction): List { - val functionName = function.fqName?.asString() ?: return emptyList() - val module = function.module ?: return emptyList() - - return module.externalSystemNativeMainRunTasks() - .filter { it.debuggable && it.entryPoint == functionName } - .map { it.taskName } - } -} \ No newline at end of file diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaGradleWizardService.kt.191 b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaGradleWizardService.kt.191 deleted file mode 100644 index 5b339378000..00000000000 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaGradleWizardService.kt.191 +++ /dev/null @@ -1,88 +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.tools.projectWizard.wizard.service - -import com.intellij.execution.executors.DefaultRunExecutor -import com.intellij.openapi.actionSystem.ActionPlaces -import com.intellij.openapi.actionSystem.AnActionEvent -import com.intellij.openapi.actionSystem.CommonDataKeys -import com.intellij.openapi.actionSystem.impl.SimpleDataContext -import com.intellij.openapi.externalSystem.model.execution.ExternalSystemTaskExecutionSettings -import com.intellij.openapi.externalSystem.service.execution.ProgressExecutionMode -import com.intellij.openapi.externalSystem.util.ExternalSystemUtil -import com.intellij.openapi.project.Project -import com.intellij.openapi.vfs.LocalFileSystem -import org.jetbrains.annotations.NonNls -import org.jetbrains.kotlin.tools.projectWizard.core.Reader -import org.jetbrains.kotlin.tools.projectWizard.core.TaskResult -import org.jetbrains.kotlin.tools.projectWizard.core.andThen -import org.jetbrains.kotlin.tools.projectWizard.core.safe -import org.jetbrains.kotlin.tools.projectWizard.core.service.ProjectImportingWizardService -import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.ModuleIR -import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemType -import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.isGradle -import org.jetbrains.plugins.gradle.action.ImportProjectFromScriptAction -import org.jetbrains.plugins.gradle.util.GradleConstants -import java.nio.file.Path - -// FIX ME WHEN BUNCH 191 REMOVED -class IdeaGradleWizardService(private val project: Project) : ProjectImportingWizardService, - IdeaWizardService { - override fun isSuitableFor(buildSystemType: BuildSystemType): Boolean = - buildSystemType.isGradle - - // We have to call action directly as there is no common way - // to import Gradle project in all IDEAs from 183 to 193 - override fun importProject( - reader: Reader, - path: Path, - modulesIrs: List, - buildSystem: BuildSystemType - ): TaskResult = performImport(path) andThen createGradleWrapper(path) - - private fun performImport(path: Path) = safe { - val virtualFile = LocalFileSystem.getInstance().findFileByPath(path.toString()) - ?: error("No virtual file found for path $path") - val dataContext = SimpleDataContext.getSimpleContext( - mapOf( - CommonDataKeys.PROJECT.name to project, - CommonDataKeys.VIRTUAL_FILE.name to virtualFile - ), - null - ) - val action = ImportProjectFromScriptAction() - val event = AnActionEvent.createFromAnAction( - action, - /*event=*/ null, - ActionPlaces.UNKNOWN, - dataContext - ) - action.actionPerformed(event) - } - - - private fun createGradleWrapper(path: Path) = safe { - val settings = ExternalSystemTaskExecutionSettings().apply { - externalProjectPath = path.toString() - taskNames = listOf(WRAPPER_TASK_NAME) - externalSystemIdString = GradleConstants.SYSTEM_ID.id - } - - ExternalSystemUtil.runTask( - settings, - DefaultRunExecutor.EXECUTOR_ID, - project, - GradleConstants.SYSTEM_ID, - /*callback=*/ null, - ProgressExecutionMode.NO_PROGRESS_ASYNC - ) - } - - companion object { - @NonNls - private const val WRAPPER_TASK_NAME = "wrapper" - } -} \ No newline at end of file diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/firstStep/ActionToolbarImplWrapper.kt.191 b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/firstStep/ActionToolbarImplWrapper.kt.191 deleted file mode 100644 index 53e2eadcf03..00000000000 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/firstStep/ActionToolbarImplWrapper.kt.191 +++ /dev/null @@ -1,26 +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.tools.projectWizard.wizard.ui.firstStep - -import com.intellij.ide.DataManager -import com.intellij.openapi.actionSystem.ActionGroup -import com.intellij.openapi.actionSystem.ex.ActionManagerEx -import com.intellij.openapi.actionSystem.impl.ActionToolbarImpl -import com.intellij.openapi.keymap.ex.KeymapManagerEx - -// needed for <=192 to work correctly -abstract class ActionToolbarImplWrapper( - place: String, - actionGroup: ActionGroup, - horizontal: Boolean -) : ActionToolbarImpl( - place, - actionGroup, - horizontal, - DataManager.getInstance(), - ActionManagerEx.getInstanceEx(), - KeymapManagerEx.getInstanceEx() -) \ No newline at end of file diff --git a/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/KotlinLightCodeInsightFixtureTestCaseBase.java.191 b/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/KotlinLightCodeInsightFixtureTestCaseBase.java.191 deleted file mode 100644 index 7270feb95c9..00000000000 --- a/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/KotlinLightCodeInsightFixtureTestCaseBase.java.191 +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright 2010-2016 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.test; - -import com.intellij.openapi.editor.Editor; -import com.intellij.openapi.module.Module; -import com.intellij.openapi.project.Project; -import com.intellij.openapi.util.io.FileUtil; -import com.intellij.openapi.vfs.LocalFileSystem; -import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.PsiFile; -import com.intellij.testFramework.TempFiles; -import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase; -import gnu.trove.THashSet; -import org.jetbrains.annotations.NonNls; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import org.jetbrains.kotlin.test.KotlinTestUtils; -import org.jetbrains.kotlin.test.WithMutedInDatabaseRunTest; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStreamWriter; -import java.nio.charset.Charset; -import java.util.Collection; - -@WithMutedInDatabaseRunTest -public abstract class KotlinLightCodeInsightFixtureTestCaseBase extends LightCodeInsightFixtureTestCase { - @NotNull - @Override - public Project getProject() { - return super.getProject(); - } - - public Module getModule() { - return myModule; - } - - @NotNull - @Override - public Editor getEditor() { - return super.getEditor(); - } - - @Override - public PsiFile getFile() { - return super.getFile(); - } - - protected final Collection myFilesToDelete = new THashSet<>(); - private final TempFiles myTempFiles = new TempFiles(myFilesToDelete); - - @Override - protected void tearDown() throws Exception { - myTempFiles.deleteAll(); - super.tearDown(); - } - - @NotNull - public VirtualFile createTempFile( - @NonNls @NotNull String ext, - @Nullable byte[] bom, - @NonNls @NotNull String content, - @NotNull Charset charset - ) throws IOException { - File temp = FileUtil.createTempFile("copy", "." + ext); - setContentOnDisk(temp, bom, content, charset); - - myFilesToDelete.add(temp); - final VirtualFile file = getVirtualFile(temp); - assert file != null : temp; - return file; - } - - public static void setContentOnDisk(@NotNull File file, @Nullable byte[] bom, @NotNull String content, @NotNull Charset charset) - throws IOException { - FileOutputStream stream = new FileOutputStream(file); - if (bom != null) { - stream.write(bom); - } - try (OutputStreamWriter writer = new OutputStreamWriter(stream, charset)) { - writer.write(content); - } - } - - protected static VirtualFile getVirtualFile(@NotNull File file) { - return LocalFileSystem.getInstance().refreshAndFindFileByIoFile(file); - } - - @Override - protected void runTest() throws Throwable { - //noinspection Convert2MethodRef - KotlinTestUtils.runTestWithThrowable(this, () -> super.runTest()); - } -} diff --git a/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/KotlinLightPlatformCodeInsightTestCase.kt.191 b/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/KotlinLightPlatformCodeInsightTestCase.kt.191 deleted file mode 100644 index a5c87290e2c..00000000000 --- a/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/KotlinLightPlatformCodeInsightTestCase.kt.191 +++ /dev/null @@ -1,28 +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.test - -import com.intellij.openapi.editor.Editor -import com.intellij.openapi.project.Project -import com.intellij.testFramework.LightPlatformCodeInsightTestCase -import com.intellij.testFramework.LightPlatformTestCase -import com.intellij.util.ThrowableRunnable - -// FIX ME WHEN BUNCH 191 REMOVED -abstract class KotlinLightPlatformCodeInsightTestCase : LightPlatformCodeInsightTestCase() { - protected inline val project_: Project get() = LightPlatformTestCase.getProject() - protected inline val editor_: Editor get() = LightPlatformCodeInsightTestCase.getEditor() - - override fun setUp() { - super.setUp() - enableKotlinOfficialCodeStyle(project_) - } - - override fun tearDown() = runAll( - ThrowableRunnable { disableKotlinOfficialCodeStyle(project_) }, - ThrowableRunnable { super.tearDown() }, - ) -} \ No newline at end of file diff --git a/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/compatTestWrappers.kt.191 b/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/compatTestWrappers.kt.191 deleted file mode 100644 index 7fd8122ad49..00000000000 --- a/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/compatTestWrappers.kt.191 +++ /dev/null @@ -1,41 +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. - */ - -@file:Suppress("unused", "IncompatibleAPI", "PropertyName") - -package org.jetbrains.kotlin.idea.test - -import com.intellij.openapi.actionSystem.DataContext -import com.intellij.openapi.editor.Document -import com.intellij.openapi.editor.Editor -import com.intellij.openapi.module.Module -import com.intellij.openapi.project.Project -import com.intellij.psi.PsiFile -import com.intellij.testFramework.LightIdeaTestCase -import com.intellij.testFramework.LightPlatformCodeInsightTestCase -import com.intellij.testFramework.LightPlatformTestCase - -// FIX ME WHEN BUNCH as36 REMOVED -// FIX ME WHEN BUNCH 191 REMOVED -@Suppress("DEPRECATION") -@Deprecated("Use KotlinLightCodeInsightFixtureTestCase instead") -abstract class KotlinLightCodeInsightTestCase : com.intellij.testFramework.LightCodeInsightTestCase() { - protected inline val project_: Project get() = LightPlatformTestCase.getProject() - protected inline val module_: Module get() = LightPlatformTestCase.getModule() - protected inline val editor_: Editor get() = LightPlatformCodeInsightTestCase.getEditor() - protected inline val file_: PsiFile get() = LightPlatformCodeInsightTestCase.getFile() - protected inline val currentEditorDataContext_: DataContext get() = LightPlatformCodeInsightTestCase.getCurrentEditorDataContext() - - protected fun configureFromFileText_(fileName: String, fileText: String): Document { - return LightPlatformCodeInsightTestCase.configureFromFileText(fileName, fileText, false) - } -} - -// FIX ME WHEN BUNCH as36 REMOVED -// FIX ME WHEN BUNCH 191 REMOVED -abstract class KotlinLightIdeaTestCase : LightIdeaTestCase() { - protected inline val project_: Project get() = LightPlatformTestCase.getProject() - protected inline val module_: Module get() = LightPlatformTestCase.getModule() -} \ No newline at end of file diff --git a/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/VersionedImplementationProvider.kt.191 b/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/VersionedImplementationProvider.kt.191 deleted file mode 100644 index 753e860b568..00000000000 --- a/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/VersionedImplementationProvider.kt.191 +++ /dev/null @@ -1,21 +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.debugger.coroutine - -import com.intellij.ui.components.JBLabel -import org.jetbrains.kotlin.idea.debugger.coroutine.override.com.intellij.ui.SimpleListCellRenderer -import javax.swing.ListCellRenderer - -class VersionedImplementationProvider { - fun comboboxListCellRenderer(): ListCellRenderer? = - SimpleListCellRenderer.create { label: JBLabel, value: String?, index: Int -> - if (value != null) { - label.text = value - } else if (index >= 0) { - label.text = KotlinDebuggerCoroutinesBundle.message("coroutine.dump.threads.loading") - } - } -} \ No newline at end of file diff --git a/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/override/com/intellij/ui/SimpleListCellRenderer.java.191 b/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/override/com/intellij/ui/SimpleListCellRenderer.java.191 deleted file mode 100644 index e803c0e8ab8..00000000000 --- a/idea/jvm-debugger/jvm-debugger-coroutine/src/org/jetbrains/kotlin/idea/debugger/coroutine/override/com/intellij/ui/SimpleListCellRenderer.java.191 +++ /dev/null @@ -1,109 +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.debugger.coroutine.override.com.intellij.ui; - -import com.intellij.openapi.util.text.StringUtil; -import com.intellij.ui.components.JBLabel; -import com.intellij.util.Function; -import com.intellij.util.ui.JBUI; -import org.jetbrains.annotations.NotNull; -import sun.swing.DefaultLookup; - -import javax.swing.*; -import javax.swing.plaf.basic.BasicHTML; -import java.awt.*; - -public abstract class SimpleListCellRenderer extends JBLabel implements ListCellRenderer { - - @NotNull - public static SimpleListCellRenderer create(@NotNull String nullValue, @NotNull Function getText) { - return new SimpleListCellRenderer() { - @Override - public void customize(JList list, T value, int index, boolean selected, boolean hasFocus) { - setText(value == null ? nullValue : getText.fun(value)); - } - }; - } - - @NotNull - public static SimpleListCellRenderer create(@NotNull Customizer customizer) { - return new SimpleListCellRenderer() { - @Override - public void customize(JList list, T value, int index, boolean selected, boolean hasFocus) { - customizer.customize(this, value, index); - } - }; - } - - @Override - public Component getListCellRendererComponent(JList list, T value, int index, boolean isSelected, boolean cellHasFocus) { - setComponentOrientation(list.getComponentOrientation()); - setBorder(JBUI.Borders.empty(1)); - Color bg, fg; - JList.DropLocation dropLocation = list.getDropLocation(); - if (dropLocation != null && !dropLocation.isInsert() && dropLocation.getIndex() == index) { - bg = DefaultLookup.getColor(this, ui, "List.dropCellBackground"); - fg = DefaultLookup.getColor(this, ui, "List.dropCellForeground"); - isSelected = true; - } - else { - bg = isSelected ? list.getSelectionBackground() : list.getBackground(); - fg = isSelected ? list.getSelectionForeground() : list.getForeground(); - } - setBackground(bg); - setForeground(fg); - setFont(list.getFont()); - setText(""); - setIcon(null); - customize(list, value, index, isSelected, cellHasFocus); - setOpaque(isSelected); - return this; - } - - public abstract void customize(JList list, T value, int index, boolean selected, boolean hasFocus); - - @Override - public Dimension getPreferredSize() { - if (StringUtil.isNotEmpty(getText())) { - return super.getPreferredSize(); - } - setText(" "); - Dimension size = super.getPreferredSize(); - setText(""); - return size; - } - - @FunctionalInterface - public interface Customizer { - void customize(@NotNull JBLabel label, T value, int index); - } - - // @formatter:off - @Override public void validate() {} - @Override public void invalidate() {} - @Override public void repaint() {} - @Override public void revalidate() {} - @Override public void repaint(long tm, int x, int y, int width, int height) {} - @Override public void repaint(Rectangle r) {} - @Override public void firePropertyChange(String propertyName, byte oldValue, byte newValue) {} - @Override public void firePropertyChange(String propertyName, char oldValue, char newValue) {} - @Override public void firePropertyChange(String propertyName, short oldValue, short newValue) {} - @Override public void firePropertyChange(String propertyName, int oldValue, int newValue) {} - @Override public void firePropertyChange(String propertyName, long oldValue, long newValue) {} - @Override public void firePropertyChange(String propertyName, float oldValue, float newValue) {} - @Override public void firePropertyChange(String propertyName, double oldValue, double newValue) {} - @Override public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue) {} - - @Override - protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) { - if (propertyName == "text" - || ((propertyName == "font" || propertyName == "foreground") - && oldValue != newValue - && getClientProperty(BasicHTML.propertyKey) != null)) { - super.firePropertyChange(propertyName, oldValue, newValue); - } - } - // @formatter:on -} diff --git a/idea/jvm-debugger/jvm-debugger-test/test/org/jetbrains/kotlin/idea/debugger/test/sequence/KotlinPsiChainBuilderTestCase.kt.191 b/idea/jvm-debugger/jvm-debugger-test/test/org/jetbrains/kotlin/idea/debugger/test/sequence/KotlinPsiChainBuilderTestCase.kt.191 deleted file mode 100644 index 251877e099f..00000000000 --- a/idea/jvm-debugger/jvm-debugger-test/test/org/jetbrains/kotlin/idea/debugger/test/sequence/KotlinPsiChainBuilderTestCase.kt.191 +++ /dev/null @@ -1,74 +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.debugger.test.sequence - -import com.intellij.debugger.streams.test.StreamChainBuilderTestCase -import com.intellij.debugger.streams.wrapper.StreamChain -import com.intellij.debugger.streams.wrapper.StreamChainBuilder -import com.intellij.openapi.application.ApplicationManager -import com.intellij.openapi.projectRoots.Sdk -import com.intellij.openapi.roots.impl.libraries.ProjectLibraryTable -import com.intellij.testFramework.LightPlatformTestCase -import com.intellij.testFramework.PsiTestUtil -import junit.framework.TestCase -import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime -import org.jetbrains.kotlin.idea.caches.project.LibraryModificationTracker -import org.jetbrains.kotlin.idea.debugger.test.DEBUGGER_TESTDATA_PATH_BASE -import org.jetbrains.kotlin.idea.test.PluginTestCaseBase - -abstract class KotlinPsiChainBuilderTestCase(private val relativePath: String) : StreamChainBuilderTestCase() { - override fun getTestDataPath(): String = "$DEBUGGER_TESTDATA_PATH_BASE/sequence/psi/$relativeTestPath" - - override fun getFileExtension(): String = ".kt" - abstract val kotlinChainBuilder: StreamChainBuilder - override fun getChainBuilder(): StreamChainBuilder = kotlinChainBuilder - private val stdLibName = "kotlin-stdlib" - - protected abstract fun doTest() - - final override fun getRelativeTestPath(): String = relativePath - - override fun setUp() { - super.setUp() - ApplicationManager.getApplication().runWriteAction { - @Suppress("UnstableApiUsage") - if (ProjectLibraryTable.getInstance(LightPlatformTestCase.getProject()).getLibraryByName(stdLibName) == null) { - val stdLibPath = ForTestCompileRuntime.runtimeJarForTests() - PsiTestUtil.addLibrary( - testRootDisposable, - LightPlatformTestCase.getModule(), - stdLibName, - stdLibPath.parent, - stdLibPath.name - ) - } - } - LibraryModificationTracker.getInstance(LightPlatformTestCase.getProject()).incModificationCount() - } - - - override fun getProjectJDK(): Sdk { - return PluginTestCaseBase.mockJdk9() - } - - abstract class Positive(relativePath: String) : KotlinPsiChainBuilderTestCase(relativePath) { - override fun doTest() { - val chains = buildChains() - checkChains(chains) - } - - private fun checkChains(chains: MutableList) { - TestCase.assertFalse(chains.isEmpty()) - } - } - - abstract class Negative(relativePath: String) : KotlinPsiChainBuilderTestCase(relativePath) { - override fun doTest() { - val elementAtCaret = configureAndGetElementAtCaret() - TestCase.assertFalse(chainBuilder.isChainExists(elementAtCaret)) - TestCase.assertTrue(chainBuilder.build(elementAtCaret).isEmpty()) - } - } -} diff --git a/idea/kotlin-gradle-tooling/resources/META-INF/services/org.jetbrains.plugins.gradle.tooling.ModelBuilderService.191 b/idea/kotlin-gradle-tooling/resources/META-INF/services/org.jetbrains.plugins.gradle.tooling.ModelBuilderService.191 deleted file mode 100644 index b918a8c27ab..00000000000 --- a/idea/kotlin-gradle-tooling/resources/META-INF/services/org.jetbrains.plugins.gradle.tooling.ModelBuilderService.191 +++ /dev/null @@ -1,2 +0,0 @@ -org.jetbrains.kotlin.gradle.KotlinGradleModelBuilder -org.jetbrains.kotlin.gradle.KotlinMPPGradleModelBuilder diff --git a/idea/kotlin-gradle-tooling/src/KotlinCocoaPodsModelBuilder.kt.191 b/idea/kotlin-gradle-tooling/src/KotlinCocoaPodsModelBuilder.kt.191 deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/idea/kotlin-gradle-tooling/src/KotlinDslScriptModelProvider.kt.191 b/idea/kotlin-gradle-tooling/src/KotlinDslScriptModelProvider.kt.191 deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/idea/kotlin-gradle-tooling/src/KotlinDslScriptTaskModelBuilder.kt.191 b/idea/kotlin-gradle-tooling/src/KotlinDslScriptTaskModelBuilder.kt.191 deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/gradleRoutines.kt.191 b/idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/gradleRoutines.kt.191 deleted file mode 100644 index d03a6bedf0a..00000000000 --- a/idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/gradleRoutines.kt.191 +++ /dev/null @@ -1,31 +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.testFramework - -import com.intellij.openapi.externalSystem.importing.ImportSpecBuilder -import com.intellij.openapi.externalSystem.service.execution.ProgressExecutionMode -import com.intellij.openapi.externalSystem.util.ExternalSystemUtil -import com.intellij.openapi.project.Project -import org.jetbrains.plugins.gradle.service.project.GradleProjectOpenProcessor -import org.jetbrains.plugins.gradle.util.GradleConstants -import java.nio.file.Paths - -fun refreshGradleProject(projectPath: String, project: Project) { - GradleProjectOpenProcessor.openGradleProject(project, null, Paths.get(projectPath)) - - StatefulTestGradleProjectRefreshCallback(projectPath, project).use { callback -> - ExternalSystemUtil.refreshProjects( - ImportSpecBuilder(project, GradleConstants.SYSTEM_ID) - .use(ProgressExecutionMode.MODAL_SYNC) - .forceWhenUptodate() - .withArguments(System.getProperty("kotlin.test.gradle.import.arguments")) - .callback(callback) - .build() - ) - } - - dispatchAllInvocationEvents() -} diff --git a/idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/projectRoutines.kt.191 b/idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/projectRoutines.kt.191 deleted file mode 100644 index 0ac03c24e99..00000000000 --- a/idea/performanceTests/test/org/jetbrains/kotlin/idea/testFramework/projectRoutines.kt.191 +++ /dev/null @@ -1,136 +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.testFramework - -import com.intellij.ide.startup.impl.StartupManagerImpl -import com.intellij.lang.LanguageAnnotators -import com.intellij.lang.LanguageExtensionPoint -import com.intellij.lang.annotation.Annotator -import com.intellij.openapi.Disposable -import com.intellij.openapi.application.ApplicationManager -import com.intellij.openapi.editor.Document -import com.intellij.openapi.extensions.ExtensionPointName -import com.intellij.openapi.fileEditor.FileDocumentManager -import com.intellij.openapi.fileEditor.FileEditorManager -import com.intellij.openapi.fileEditor.impl.text.TextEditorImpl -import com.intellij.openapi.project.Project -import com.intellij.openapi.project.ex.ProjectManagerEx -import com.intellij.openapi.startup.StartupManager -import com.intellij.psi.PsiDocumentManager -import com.intellij.psi.impl.PsiDocumentManagerBase -import com.intellij.testFramework.PlatformTestUtil -import com.intellij.testFramework.runInEdtAndWait -import com.intellij.util.ui.UIUtil -import org.jetbrains.kotlin.idea.parameterInfo.HintType -import org.jetbrains.kotlin.idea.perf.TestApplicationManager -import org.jetbrains.kotlin.idea.test.runPostStartupActivitiesOnce -import java.util.concurrent.TimeUnit -import java.util.concurrent.TimeoutException -import java.io.PrintWriter -import java.io.StringWriter - -fun commitAllDocuments() { - val fileDocumentManager = FileDocumentManager.getInstance() - runInEdtAndWait { - fileDocumentManager.saveAllDocuments() - } - - ProjectManagerEx.getInstanceEx().openProjects.forEach { project -> - val psiDocumentManagerBase = PsiDocumentManager.getInstance(project) as PsiDocumentManagerBase - - runInEdtAndWait { - psiDocumentManagerBase.clearUncommittedDocuments() - psiDocumentManagerBase.commitAllDocuments() - } - } -} - -fun commitDocument(project: Project, document: Document) { - val psiDocumentManagerBase = PsiDocumentManager.getInstance(project) as PsiDocumentManagerBase - runInEdtAndWait { - psiDocumentManagerBase.commitDocument(document) - } -} - -fun saveDocument(document: Document) { - val fileDocumentManager = FileDocumentManager.getInstance() - - runInEdtAndWait { - fileDocumentManager.saveDocument(document) - } -} - -fun enableHints(enable: Boolean) = - HintType.values().forEach { it.option.set(enable) } - -fun dispatchAllInvocationEvents() { - runInEdtAndWait { - UIUtil.dispatchAllInvocationEvents() - } -} - -fun loadProjectWithName(path: String, name: String): Project? = - ProjectManagerEx.getInstanceEx().loadProject(name, path) - -fun TestApplicationManager.closeProject(project: Project) { - dispatchAllInvocationEvents() - val projectManagerEx = ProjectManagerEx.getInstanceEx() - projectManagerEx.forceCloseProjectEx(project, true) -} - -fun runStartupActivities(project: Project) { - with(StartupManager.getInstance(project) as StartupManagerImpl) { - scheduleInitialVfsRefresh() - runStartupActivities() - } - runPostStartupActivitiesOnce(project) -} - -fun waitForAllEditorsFinallyLoaded(project: Project) { - waitForAllEditorsFinallyLoaded(project, 5, TimeUnit.MINUTES) -} - -fun waitForAllEditorsFinallyLoaded(project: Project, timeout: Long, unit: TimeUnit) { - ApplicationManager.getApplication().assertIsDispatchThread() - val deadline = unit.toMillis(timeout) + System.currentTimeMillis() - while (true) { - if (System.currentTimeMillis() > deadline) throw TimeoutException() - if (waitABitForEditorLoading(project)) break - UIUtil.dispatchAllInvocationEvents() - } -} - -private fun waitABitForEditorLoading(project: Project): Boolean { - for (editor in FileEditorManager.getInstance(project).allEditors) { - if (editor is TextEditorImpl) { - try { - editor.waitForLoaded(100, TimeUnit.MILLISECONDS) - } catch (ignored: TimeoutException) { - return false - } - - } - } - return true -} - -fun replaceWithCustomHighlighter(parentDisposable: Disposable, fromImplementationClass: String, toImplementationClass: String) { - val pointName = ExtensionPointName.create>(LanguageAnnotators.EP_NAME) - val extensionPoint = pointName.getPoint(null) - - val point = LanguageExtensionPoint() - point.language = "kotlin" - point.implementationClass = toImplementationClass - - val extensions = extensionPoint.extensions - val filteredExtensions = - extensions.filter { it.language != "kotlin" || it.implementationClass != fromImplementationClass } - .toList() - // custom highlighter is already registered if filteredExtensions has the same size as extensions - if (filteredExtensions.size < extensions.size) { - PlatformTestUtil.maskExtensions(pointName, filteredExtensions + listOf(point), parentDisposable) - } -} diff --git a/idea/resources/META-INF/gradle-java.xml.191 b/idea/resources/META-INF/gradle-java.xml.191 deleted file mode 100644 index a2168c345fb..00000000000 --- a/idea/resources/META-INF/gradle-java.xml.191 +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/idea/resources/META-INF/plugin.xml.191 b/idea/resources/META-INF/plugin.xml.191 deleted file mode 100644 index fd537084fb1..00000000000 --- a/idea/resources/META-INF/plugin.xml.191 +++ /dev/null @@ -1,139 +0,0 @@ - - org.jetbrains.kotlin - - Kotlin - -Getting Started in IntelliJ IDEA
-Getting Started in Android Studio
-Public Slack
-Issue tracker
-]]>
- @snapshot@ - JetBrains - - - - com.intellij.modules.platform - - JUnit - org.jetbrains.plugins.gradle - org.jetbrains.plugins.gradle.java - org.jetbrains.plugins.gradle.java - org.intellij.groovy - org.jetbrains.idea.maven - org.jetbrains.idea.maven - TestNG-J - Coverage - com.intellij.java-i18n - org.jetbrains.java.decompiler - Git4Idea - org.jetbrains.debugger.streams - - - - - com.intellij.modules.idea - com.intellij.modules.java - JavaScriptDebugger - com.intellij.copyright - org.intellij.intelliLang - - - - - - - - - - - - - - - - - - - - - - - org.jetbrains.kotlin.idea.versions.KotlinUpdatePluginComponent - - - - - - org.jetbrains.kotlin.idea.completion.LookupCancelWatcher - - - org.jetbrains.kotlin.idea.caches.KotlinPackageContentModificationListener - - - org.jetbrains.kotlin.idea.configuration.KotlinMigrationProjectComponent - - - org.jetbrains.kotlin.idea.highlighter.KotlinBeforeResolveHighlightingPass$Factory - - - org.jetbrains.kotlin.idea.parameterInfo.custom.KotlinCodeHintsPass$Companion$Factory - - - org.jetbrains.kotlin.idea.refactoring.cutPaste.MoveDeclarationsPassFactory - - - - org.jetbrains.kotlin.idea.highlighter.ScriptExternalHighlightingPass$Factory - - - org.jetbrains.kotlin.idea.caches.trackers.KotlinCodeBlockModificationListener - - - - - - org.jetbrains.kotlin.idea.PluginStartupComponent - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/idea/src/org/jetbrains/kotlin/idea/IDESettingsFUSCollector.kt.191 b/idea/src/org/jetbrains/kotlin/idea/IDESettingsFUSCollector.kt.191 deleted file mode 100644 index 9c7fb2b7857..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/IDESettingsFUSCollector.kt.191 +++ /dev/null @@ -1,3 +0,0 @@ -class IDESettingsFUSCollector { - // Not supported in 2019.1 -} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/KotlinIdeFileIconProviderService.kt.191 b/idea/src/org/jetbrains/kotlin/idea/KotlinIdeFileIconProviderService.kt.191 deleted file mode 100644 index 4997d39f358..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/KotlinIdeFileIconProviderService.kt.191 +++ /dev/null @@ -1,25 +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.openapi.util.IconLoader -import com.intellij.psi.PsiModifierListOwner -import com.intellij.psi.impl.ElementPresentationUtil -import com.intellij.util.PlatformIcons -import javax.swing.Icon - -class KotlinIdeFileIconProviderService : KotlinIconProviderService() { - override fun getFileIcon(): Icon = KOTLIN_FILE - - override fun getLightVariableIcon(element: PsiModifierListOwner, flags: Int): Icon { - val baseIcon = ElementPresentationUtil.createLayeredIcon(PlatformIcons.VARIABLE_ICON, element, false) - return ElementPresentationUtil.addVisibilityIcon(element, flags, baseIcon) - } - - companion object { - private val KOTLIN_FILE = IconLoader.getIcon("/org/jetbrains/kotlin/idea/icons/kotlin_file.svg") - } -} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsWizard.kt.191 b/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsWizard.kt.191 deleted file mode 100644 index 172aa0d5c53..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsWizard.kt.191 +++ /dev/null @@ -1,131 +0,0 @@ -/* - * 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.actions.generate - -import com.intellij.codeInsight.CodeInsightBundle -import com.intellij.codeInsight.CodeInsightSettings -import com.intellij.codeInsight.generation.ui.AbstractGenerateEqualsWizard -import com.intellij.ide.wizard.StepAdapter -import com.intellij.openapi.project.Project -import com.intellij.openapi.ui.VerticalFlowLayout -import com.intellij.refactoring.classMembers.AbstractMemberInfoModel -import com.intellij.ui.NonFocusableCheckBox -import com.intellij.util.containers.HashMap -import org.jetbrains.kotlin.idea.KotlinBundle -import org.jetbrains.kotlin.idea.core.isInheritable -import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinMemberInfo -import org.jetbrains.kotlin.idea.refactoring.memberInfo.KotlinMemberSelectionPanel -import org.jetbrains.kotlin.psi.KtClass -import org.jetbrains.kotlin.psi.KtNamedDeclaration -import org.jetbrains.kotlin.utils.keysToMap -import javax.swing.JLabel -import javax.swing.JPanel - -class KotlinGenerateEqualsWizard( - project: Project, - klass: KtClass, - properties: List, - needEquals: Boolean, - needHashCode: Boolean -) : AbstractGenerateEqualsWizard( - project, BuilderImpl(klass, properties, needEquals, needHashCode) -) { - private object MemberInfoModelImpl : AbstractMemberInfoModel() - - private class BuilderImpl( - private val klass: KtClass, - properties: List, - needEquals: Boolean, - needHashCode: Boolean - ) : AbstractGenerateEqualsWizard.Builder() { - private val equalsPanel: KotlinMemberSelectionPanel? - private val hashCodePanel: KotlinMemberSelectionPanel? - - private val memberInfos = properties.map { createMemberInfo(it) } - - private val membersToHashCode = HashMap(properties.keysToMap { createMemberInfo(it) }) - - init { - equalsPanel = if (needEquals) { - KotlinMemberSelectionPanel(KotlinBundle.message("action.generate.equals.choose.equals"), memberInfos, null).apply { - table.memberInfoModel = MemberInfoModelImpl - } - } else null - - hashCodePanel = if (needHashCode) { - KotlinMemberSelectionPanel(KotlinBundle.message("action.generate.equals.choose.hashcode"), memberInfos, null).apply { - table.memberInfoModel = MemberInfoModelImpl - } - } else null - } - - private fun createMemberInfo(it: KtNamedDeclaration) = KotlinMemberInfo(it).apply { isChecked = true } - - override fun getPsiClass() = klass - - override fun getClassFields() = memberInfos - - override fun getFieldsToHashCode() = membersToHashCode - - override fun getFieldsToNonNull() = HashMap() - - override fun getEqualsPanel() = equalsPanel - - override fun getHashCodePanel() = hashCodePanel - - override fun getNonNullPanel() = null - - override fun updateHashCodeMemberInfos(equalsMemberInfos: MutableCollection) { - hashCodePanel?.table?.setMemberInfos(equalsMemberInfos.map { membersToHashCode[it.member] }) - } - - override fun updateNonNullMemberInfos(equalsMemberInfos: MutableCollection?) { - - } - } - - private object OptionsStep : StepAdapter() { - private val panel = JPanel(VerticalFlowLayout()) - - init { - with(NonFocusableCheckBox(CodeInsightBundle.message("generate.equals.hashcode.accept.sublcasses"))) { - isSelected = CodeInsightSettings.getInstance().USE_INSTANCEOF_ON_EQUALS_PARAMETER - addActionListener { CodeInsightSettings.getInstance().USE_INSTANCEOF_ON_EQUALS_PARAMETER = isSelected } - panel.add(this) - } - panel.add(JLabel(CodeInsightBundle.message("generate.equals.hashcode.accept.sublcasses.explanation"))) - } - - override fun getComponent() = panel - } - - override fun addSteps() { - if (myEqualsPanel != null && myClass.isInheritable()) { - addStep(OptionsStep) - } - super.addSteps() - } - - override fun doOKAction() { - myEqualsPanel?.let { updateHashCodeMemberInfos(it.table.selectedMemberInfos) } - super.doOKAction() - } - - fun getPropertiesForEquals() = myEqualsPanel?.table?.selectedMemberInfos?.map { it.member } ?: emptyList() - - fun getPropertiesForHashCode() = myHashCodePanel?.table?.selectedMemberInfos?.map { it.member } ?: emptyList() -} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java.191 b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java.191 deleted file mode 100644 index 02e0563a089..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java.191 +++ /dev/null @@ -1,739 +0,0 @@ -/* - * Copyright 2000-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.idea.compiler.configuration; - -import com.intellij.icons.AllIcons; -import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.fileChooser.FileChooserDescriptor; -import com.intellij.openapi.module.ModuleManager; -import com.intellij.openapi.options.Configurable; -import com.intellij.openapi.options.ConfigurationException; -import com.intellij.openapi.options.SearchableConfigurable; -import com.intellij.openapi.project.Project; -import com.intellij.openapi.ui.TextComponentAccessor; -import com.intellij.openapi.ui.TextFieldWithBrowseButton; -import com.intellij.openapi.util.text.StringUtil; -import com.intellij.ui.ListCellRendererWrapper; -import com.intellij.ui.RawCommandLineEditor; -import com.intellij.util.text.VersionComparatorUtil; -import com.intellij.util.ui.ThreeStateCheckBox; -import com.intellij.util.ui.UIUtil; -import kotlin.collections.ArraysKt; -import kotlin.collections.CollectionsKt; -import kotlin.jvm.functions.Function0; -import kotlin.jvm.functions.Function1; -import org.jetbrains.annotations.Nls; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments; -import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments; -import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments; -import org.jetbrains.kotlin.cli.common.arguments.K2JsArgumentConstants; -import org.jetbrains.kotlin.config.*; -import org.jetbrains.kotlin.idea.PluginStartupComponent; -import org.jetbrains.kotlin.idea.KotlinBundle; -import org.jetbrains.kotlin.idea.facet.DescriptionListCellRenderer; -import org.jetbrains.kotlin.idea.facet.KotlinFacet; -import org.jetbrains.kotlin.idea.roots.RootUtilsKt; -import org.jetbrains.kotlin.idea.util.CidrUtil; -import org.jetbrains.kotlin.idea.util.application.ApplicationUtilsKt; -import org.jetbrains.kotlin.platform.IdePlatformKind; -import org.jetbrains.kotlin.platform.PlatformUtilKt; -import org.jetbrains.kotlin.platform.impl.JsIdePlatformUtil; -import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind; -import org.jetbrains.kotlin.platform.impl.JvmIdePlatformUtil; -import org.jetbrains.kotlin.config.JvmTarget; -import org.jetbrains.kotlin.platform.jvm.JdkPlatform; -import org.jetbrains.kotlin.platform.TargetPlatform; - -import javax.swing.*; -import java.util.*; - -public class KotlinCompilerConfigurableTab implements SearchableConfigurable { - private static final Map moduleKindDescriptions = new LinkedHashMap<>(); - private static final Map soruceMapSourceEmbeddingDescriptions = new LinkedHashMap<>(); - private static final List languageFeatureStates = Arrays.asList( - LanguageFeature.State.ENABLED, LanguageFeature.State.ENABLED_WITH_WARNING, LanguageFeature.State.ENABLED_WITH_ERROR - ); - private static final int MAX_WARNING_SIZE = 75; - - static { - moduleKindDescriptions.put(K2JsArgumentConstants.MODULE_PLAIN, KotlinBundle.message("configuration.description.plain.put.to.global.scope")); - moduleKindDescriptions.put(K2JsArgumentConstants.MODULE_AMD, KotlinBundle.message("configuration.description.amd")); - moduleKindDescriptions.put(K2JsArgumentConstants.MODULE_COMMONJS, KotlinBundle.message("configuration.description.commonjs")); - moduleKindDescriptions.put(K2JsArgumentConstants.MODULE_UMD, KotlinBundle.message("configuration.description.umd.detect.amd.or.commonjs.if.available.fallback.to.plain")); - - soruceMapSourceEmbeddingDescriptions.put(K2JsArgumentConstants.SOURCE_MAP_SOURCE_CONTENT_NEVER, KotlinBundle.message("configuration.description.never")); - soruceMapSourceEmbeddingDescriptions.put(K2JsArgumentConstants.SOURCE_MAP_SOURCE_CONTENT_ALWAYS, KotlinBundle.message("configuration.description.always")); - soruceMapSourceEmbeddingDescriptions.put(K2JsArgumentConstants.SOURCE_MAP_SOURCE_CONTENT_INLINING, KotlinBundle.message("configuration.description.when.inlining.a.function.from.other.module.with.embedded.sources")); - } - - @Nullable - private final KotlinCompilerWorkspaceSettings compilerWorkspaceSettings; - private final Project project; - private final boolean isProjectSettings; - private CommonCompilerArguments commonCompilerArguments; - private K2JSCompilerArguments k2jsCompilerArguments; - private K2JVMCompilerArguments k2jvmCompilerArguments; - private CompilerSettings compilerSettings; - private JPanel contentPane; - private ThreeStateCheckBox reportWarningsCheckBox; - private RawCommandLineEditor additionalArgsOptionsField; - private JLabel additionalArgsLabel; - private ThreeStateCheckBox generateSourceMapsCheckBox; - private TextFieldWithBrowseButton outputPrefixFile; - private TextFieldWithBrowseButton outputPostfixFile; - private JLabel labelForOutputDirectory; - private TextFieldWithBrowseButton outputDirectory; - private ThreeStateCheckBox copyRuntimeFilesCheckBox; - private ThreeStateCheckBox keepAliveCheckBox; - private JCheckBox enableIncrementalCompilationForJvmCheckBox; - private JCheckBox enableIncrementalCompilationForJsCheckBox; - private JComboBox moduleKindComboBox; - private JTextField scriptTemplatesField; - private JTextField scriptTemplatesClasspathField; - private JLabel scriptTemplatesLabel; - private JLabel scriptTemplatesClasspathLabel; - private JPanel k2jvmPanel; - private JPanel k2jsPanel; - private JComboBox jvmVersionComboBox; - private JComboBox languageVersionComboBox; - private JComboBox coroutineSupportComboBox; - private JComboBox apiVersionComboBox; - private JPanel scriptPanel; - private JLabel labelForOutputPrefixFile; - private JLabel labelForOutputPostfixFile; - private JLabel warningLabel; - private JTextField sourceMapPrefix; - private JLabel labelForSourceMapPrefix; - private JComboBox sourceMapEmbedSources; - private JPanel coroutinesPanel; - private boolean isEnabled = true; - - public KotlinCompilerConfigurableTab( - Project project, - @NotNull CommonCompilerArguments commonCompilerArguments, - @NotNull K2JSCompilerArguments k2jsCompilerArguments, - @NotNull K2JVMCompilerArguments k2jvmCompilerArguments, CompilerSettings compilerSettings, - @Nullable KotlinCompilerWorkspaceSettings compilerWorkspaceSettings, - boolean isProjectSettings, - boolean isMultiEditor - ) { - this.project = project; - this.commonCompilerArguments = commonCompilerArguments; - this.k2jsCompilerArguments = k2jsCompilerArguments; - this.compilerSettings = compilerSettings; - this.compilerWorkspaceSettings = compilerWorkspaceSettings; - this.k2jvmCompilerArguments = k2jvmCompilerArguments; - this.isProjectSettings = isProjectSettings; - - warningLabel.setIcon(AllIcons.General.WarningDialog); - - if (isProjectSettings) { - languageVersionComboBox.addActionListener(e -> onLanguageLevelChanged(getSelectedLanguageVersionView())); - } - - additionalArgsOptionsField.attachLabel(additionalArgsLabel); - - fillLanguageAndAPIVersionList(); - fillCoroutineSupportList(); - - if (CidrUtil.isRunningInCidrIde()) { - keepAliveCheckBox.setVisible(false); - k2jvmPanel.setVisible(false); - k2jsPanel.setVisible(false); - } - else { - initializeNonCidrSettings(isMultiEditor); - } - - reportWarningsCheckBox.setThirdStateEnabled(isMultiEditor); - - if (isProjectSettings) { - List modulesOverridingProjectSettings = ArraysKt.mapNotNull( - ModuleManager.getInstance(project).getModules(), - module -> { - KotlinFacet facet = KotlinFacet.Companion.get(module); - if (facet == null) return null; - KotlinFacetSettings facetSettings = facet.getConfiguration().getSettings(); - if (facetSettings.getUseProjectSettings()) return null; - return module.getName(); - } - ); - CollectionsKt.sort(modulesOverridingProjectSettings); - if (!modulesOverridingProjectSettings.isEmpty()) { - warningLabel.setVisible(true); - warningLabel.setText(buildOverridingModulesWarning(modulesOverridingProjectSettings)); - } - } - } - - @SuppressWarnings("unused") - public KotlinCompilerConfigurableTab(Project project) { - this(project, - (CommonCompilerArguments) KotlinCommonCompilerArgumentsHolder.Companion.getInstance(project).getSettings().unfrozen(), - (K2JSCompilerArguments) Kotlin2JsCompilerArgumentsHolder.Companion.getInstance(project).getSettings().unfrozen(), - (K2JVMCompilerArguments) Kotlin2JvmCompilerArgumentsHolder.Companion.getInstance(project).getSettings().unfrozen(), - (CompilerSettings) KotlinCompilerSettings.Companion.getInstance(project).getSettings().unfrozen(), - KotlinCompilerWorkspaceSettings.getInstance(project), - true, - false); - } - - private void initializeNonCidrSettings(boolean isMultiEditor) { - setupFileChooser(labelForOutputPrefixFile, outputPrefixFile, - KotlinBundle.message("configuration.title.kotlin.compiler.js.option.output.prefix.browse.title"), - true); - setupFileChooser(labelForOutputPostfixFile, outputPostfixFile, - KotlinBundle.message("configuration.title.kotlin.compiler.js.option.output.postfix.browse.title"), - true); - setupFileChooser(labelForOutputDirectory, outputDirectory, - KotlinBundle.message("configuration.title.choose.output.directory"), - false); - - fillModuleKindList(); - fillSourceMapSourceEmbeddingList(); - fillJvmVersionList(); - - generateSourceMapsCheckBox.setThirdStateEnabled(isMultiEditor); - generateSourceMapsCheckBox.addActionListener(event -> sourceMapPrefix.setEnabled(generateSourceMapsCheckBox.isSelected())); - - copyRuntimeFilesCheckBox.setThirdStateEnabled(isMultiEditor); - keepAliveCheckBox.setThirdStateEnabled(isMultiEditor); - - if (compilerWorkspaceSettings == null) { - keepAliveCheckBox.setVisible(false); - k2jvmPanel.setVisible(false); - enableIncrementalCompilationForJsCheckBox.setVisible(false); - } - - updateOutputDirEnabled(); - } - - private static int calculateNameCountToShowInWarning(List allNames) { - int lengthSoFar = 0; - int size = allNames.size(); - for (int i = 0; i < size; i++) { - lengthSoFar = (i > 0 ? lengthSoFar + 2 : 0) + allNames.get(i).length(); - if (lengthSoFar > MAX_WARNING_SIZE) return i; - } - return size; - } - - @NotNull - private static String buildOverridingModulesWarning(List modulesOverridingProjectSettings) { - int nameCountToShow = calculateNameCountToShowInWarning(modulesOverridingProjectSettings); - int allNamesCount = modulesOverridingProjectSettings.size(); - if (nameCountToShow == 0) { - return KotlinBundle.message("configuration.warning.text.modules.override.project.settings", String.valueOf(allNamesCount)); - } - - StringBuilder builder = new StringBuilder(); - builder.append(""); - builder.append(KotlinBundle.message("configuration.warning.text.following.modules.override.project.settings")).append(" "); - CollectionsKt.joinTo( - modulesOverridingProjectSettings.subList(0, nameCountToShow), - builder, - ", ", - "", - "", - -1, - "", - new Function1() { - @Override - public CharSequence invoke(String s) { - return "" + s + ""; - } - } - ); - if (nameCountToShow < allNamesCount) { - builder.append(" ").append(KotlinBundle.message("configuration.text.and")).append(" ").append(allNamesCount - nameCountToShow).append(" ").append(KotlinBundle.message("configuration.text.other.s")); - } - return builder.toString(); - } - - @NotNull - private static String getModuleKindDescription(@Nullable String moduleKind) { - if (moduleKind == null) return ""; - String result = moduleKindDescriptions.get(moduleKind); - assert result != null : "Module kind " + moduleKind + " was not added to combobox, therefore it should not be here"; - return result; - } - - @NotNull - private static String getSourceMapSourceEmbeddingDescription(@Nullable String sourceMapSourceEmbeddingId) { - if (sourceMapSourceEmbeddingId == null) return ""; - String result = soruceMapSourceEmbeddingDescriptions.get(sourceMapSourceEmbeddingId); - assert result != null : "Source map source embedding mode " + sourceMapSourceEmbeddingId + - " was not added to combobox, therefore it should not be here"; - return result; - } - - @NotNull - private static String getModuleKindOrDefault(@Nullable String moduleKindId) { - if (moduleKindId == null) { - moduleKindId = K2JsArgumentConstants.MODULE_PLAIN; - } - return moduleKindId; - } - - @NotNull - private static String getSourceMapSourceEmbeddingOrDefault(@Nullable String sourceMapSourceEmbeddingId) { - if (sourceMapSourceEmbeddingId == null) { - sourceMapSourceEmbeddingId = K2JsArgumentConstants.SOURCE_MAP_SOURCE_CONTENT_INLINING; - } - return sourceMapSourceEmbeddingId; - } - - private static String getJvmVersionOrDefault(@Nullable String jvmVersion) { - return jvmVersion != null ? jvmVersion : JvmTarget.DEFAULT.getDescription(); - } - - private static void setupFileChooser( - @NotNull JLabel label, - @NotNull TextFieldWithBrowseButton fileChooser, - @NotNull String title, - boolean forFiles - ) { - label.setLabelFor(fileChooser); - - fileChooser.addBrowseFolderListener(title, null, null, - new FileChooserDescriptor(forFiles, !forFiles, false, false, false, false), - TextComponentAccessor.TEXT_FIELD_WHOLE_TEXT); - } - - private static boolean isModifiedWithNullize(@NotNull TextFieldWithBrowseButton chooser, @Nullable String currentValue) { - return !StringUtil.equals( - StringUtil.nullize(chooser.getText(), true), - StringUtil.nullize(currentValue, true)); - } - - private static boolean isModified(@NotNull TextFieldWithBrowseButton chooser, @NotNull String currentValue) { - return !StringUtil.equals(chooser.getText(), currentValue); - } - - private void updateOutputDirEnabled() { - if (isEnabled && copyRuntimeFilesCheckBox != null) { - outputDirectory.setEnabled(copyRuntimeFilesCheckBox.isSelected()); - labelForOutputDirectory.setEnabled(copyRuntimeFilesCheckBox.isSelected()); - } - } - - private boolean isLessOrEqual(LanguageVersion version, LanguageVersion upperBound) { - return VersionComparatorUtil.compare(version.getVersionString(), upperBound.getVersionString()) <= 0; - } - - public void onLanguageLevelChanged(VersionView languageLevel) { - restrictAPIVersions(languageLevel); - coroutinesPanel.setVisible(languageLevel.getVersion().compareTo(LanguageVersion.KOTLIN_1_3) < 0); - } - - @SuppressWarnings("unchecked") - private void restrictAPIVersions(VersionView upperBoundView) { - VersionView selectedAPIView = getSelectedAPIVersionView(); - LanguageVersion selectedAPIVersion = selectedAPIView.getVersion(); - LanguageVersion upperBound = upperBoundView.getVersion(); - List permittedAPIVersions = new ArrayList<>(LanguageVersion.values().length + 1); - if (isLessOrEqual(VersionView.LatestStable.INSTANCE.getVersion(), upperBound)) { - permittedAPIVersions.add(VersionView.LatestStable.INSTANCE); - } - ArraysKt.mapNotNullTo( - LanguageVersion.values(), - permittedAPIVersions, - version -> isLessOrEqual(version, upperBound) && !version.isUnsupported() ? new VersionView.Specific(version) : null - ); - apiVersionComboBox.setModel( - new DefaultComboBoxModel(permittedAPIVersions.toArray()) - ); - apiVersionComboBox.setSelectedItem( - VersionComparatorUtil.compare(selectedAPIVersion.getVersionString(), upperBound.getVersionString()) <= 0 - ? selectedAPIView - : upperBoundView - ); - } - - @SuppressWarnings("unchecked") - private void fillJvmVersionList() { - for (TargetPlatform jvm : JvmIdePlatformKind.INSTANCE.getPlatforms()) { - jvmVersionComboBox.addItem(PlatformUtilKt.subplatformsOfType(jvm, JdkPlatform.class).get(0).getTargetVersion().getDescription()); - } - } - - private void fillLanguageAndAPIVersionList() { - languageVersionComboBox.addItem(VersionView.LatestStable.INSTANCE); - apiVersionComboBox.addItem(VersionView.LatestStable.INSTANCE); - - for (LanguageVersion version : LanguageVersion.values()) { - if (version.isUnsupported() || !version.isStable() && !ApplicationManager.getApplication().isInternal()) { - continue; - } - - VersionView.Specific specificVersion = new VersionView.Specific(version); - languageVersionComboBox.addItem(specificVersion); - apiVersionComboBox.addItem(specificVersion); - } - languageVersionComboBox.setRenderer(new DescriptionListCellRenderer()); - apiVersionComboBox.setRenderer(new DescriptionListCellRenderer()); - } - - @SuppressWarnings("unchecked") - private void fillCoroutineSupportList() { - for (LanguageFeature.State coroutineSupport : languageFeatureStates) { - coroutineSupportComboBox.addItem(coroutineSupport); - } - coroutineSupportComboBox.setRenderer(new DescriptionListCellRenderer()); - } - - public void setTargetPlatform(@Nullable IdePlatformKind targetPlatform) { - k2jsPanel.setVisible(JsIdePlatformUtil.isJavaScript(targetPlatform)); - scriptPanel.setVisible(JvmIdePlatformUtil.isJvm(targetPlatform)); - } - - @SuppressWarnings("unchecked") - private void fillModuleKindList() { - for (String moduleKind : moduleKindDescriptions.keySet()) { - moduleKindComboBox.addItem(moduleKind); - } - moduleKindComboBox.setRenderer(new ListCellRendererWrapper() { - @Override - public void customize(JList list, String value, int index, boolean selected, boolean hasFocus) { - setText(getModuleKindDescription(value)); - } - }); - } - - @SuppressWarnings("unchecked") - private void fillSourceMapSourceEmbeddingList() { - for (String moduleKind : soruceMapSourceEmbeddingDescriptions.keySet()) { - sourceMapEmbedSources.addItem(moduleKind); - } - sourceMapEmbedSources.setRenderer(new ListCellRendererWrapper() { - @Override - public void customize(JList list, String value, int index, boolean selected, boolean hasFocus) { - setText(value != null ? getSourceMapSourceEmbeddingDescription(value) : ""); - } - }); - } - - @NotNull - @Override - public String getId() { - return "project.kotlinCompiler"; - } - - @Nullable - @Override - public Runnable enableSearch(String option) { - return null; - } - - @Nullable - @Override - public JComponent createComponent() { - return contentPane; - } - - @Override - public boolean isModified() { - return isModified(reportWarningsCheckBox, !commonCompilerArguments.getSuppressWarnings()) || - !getSelectedLanguageVersionView().equals(KotlinFacetSettingsKt.getLanguageVersionView(commonCompilerArguments)) || - !getSelectedAPIVersionView().equals(KotlinFacetSettingsKt.getApiVersionView(commonCompilerArguments)) || - !getSelectedCoroutineState().equals(commonCompilerArguments.getCoroutinesState()) || - !additionalArgsOptionsField.getText().equals(compilerSettings.getAdditionalArguments()) || - isModified(scriptTemplatesField, compilerSettings.getScriptTemplates()) || - isModified(scriptTemplatesClasspathField, compilerSettings.getScriptTemplatesClasspath()) || - isModified(copyRuntimeFilesCheckBox, compilerSettings.getCopyJsLibraryFiles()) || - isModified(outputDirectory, compilerSettings.getOutputDirectoryForJsLibraryFiles()) || - - (compilerWorkspaceSettings != null && - (isModified(enableIncrementalCompilationForJvmCheckBox, compilerWorkspaceSettings.getPreciseIncrementalEnabled()) || - isModified(enableIncrementalCompilationForJsCheckBox, compilerWorkspaceSettings.getIncrementalCompilationForJsEnabled()) || - isModified(keepAliveCheckBox, compilerWorkspaceSettings.getEnableDaemon()))) || - - isModified(generateSourceMapsCheckBox, k2jsCompilerArguments.getSourceMap()) || - isModifiedWithNullize(outputPrefixFile, k2jsCompilerArguments.getOutputPrefix()) || - isModifiedWithNullize(outputPostfixFile, k2jsCompilerArguments.getOutputPostfix()) || - !getSelectedModuleKind().equals(getModuleKindOrDefault(k2jsCompilerArguments.getModuleKind())) || - isModified(sourceMapPrefix, StringUtil.notNullize(k2jsCompilerArguments.getSourceMapPrefix())) || - !getSelectedSourceMapSourceEmbedding().equals( - getSourceMapSourceEmbeddingOrDefault(k2jsCompilerArguments.getSourceMapEmbedSources())) || - !getSelectedJvmVersion().equals(getJvmVersionOrDefault(k2jvmCompilerArguments.getJvmTarget())); - } - - @NotNull - private String getSelectedModuleKind() { - return getModuleKindOrDefault((String) moduleKindComboBox.getSelectedItem()); - } - - private String getSelectedSourceMapSourceEmbedding() { - return getSourceMapSourceEmbeddingOrDefault((String) sourceMapEmbedSources.getSelectedItem()); - } - - @NotNull - private String getSelectedJvmVersion() { - return getJvmVersionOrDefault((String) jvmVersionComboBox.getSelectedItem()); - } - - @NotNull - public VersionView getSelectedLanguageVersionView() { - Object item = languageVersionComboBox.getSelectedItem(); - return item != null ? (VersionView) item : VersionView.LatestStable.INSTANCE; - } - - @NotNull - private VersionView getSelectedAPIVersionView() { - Object item = apiVersionComboBox.getSelectedItem(); - return item != null ? (VersionView) item : VersionView.LatestStable.INSTANCE; - } - - @NotNull - private String getSelectedCoroutineState() { - if (getSelectedLanguageVersionView().getVersion().compareTo(LanguageVersion.KOTLIN_1_3) >= 0) { - return CommonCompilerArguments.DEFAULT; - } - - LanguageFeature.State state = (LanguageFeature.State) coroutineSupportComboBox.getSelectedItem(); - if (state == null) return CommonCompilerArguments.DEFAULT; - switch (state) { - case ENABLED: return CommonCompilerArguments.ENABLE; - case ENABLED_WITH_WARNING: return CommonCompilerArguments.WARN; - case ENABLED_WITH_ERROR: return CommonCompilerArguments.ERROR; - default: return CommonCompilerArguments.DEFAULT; - } - } - - public void applyTo( - CommonCompilerArguments commonCompilerArguments, - K2JVMCompilerArguments k2jvmCompilerArguments, - K2JSCompilerArguments k2jsCompilerArguments, - CompilerSettings compilerSettings - ) throws ConfigurationException { - if (isProjectSettings) { - boolean shouldInvalidateCaches = - !getSelectedLanguageVersionView().equals(KotlinFacetSettingsKt.getLanguageVersionView(commonCompilerArguments)) || - !getSelectedAPIVersionView().equals(KotlinFacetSettingsKt.getApiVersionView(commonCompilerArguments)) || - !getSelectedCoroutineState().equals(commonCompilerArguments.getCoroutinesState()) || - !additionalArgsOptionsField.getText().equals(compilerSettings.getAdditionalArguments()); - - if (shouldInvalidateCaches) { - ApplicationUtilsKt.runWriteAction( - new Function0() { - @Override - public Object invoke() { - RootUtilsKt.invalidateProjectRoots(project); - return null; - } - } - ); - } - } - - commonCompilerArguments.setSuppressWarnings(!reportWarningsCheckBox.isSelected()); - KotlinFacetSettingsKt.setLanguageVersionView(commonCompilerArguments, getSelectedLanguageVersionView()); - KotlinFacetSettingsKt.setApiVersionView(commonCompilerArguments, getSelectedAPIVersionView()); - - commonCompilerArguments.setCoroutinesState(getSelectedCoroutineState()); - - compilerSettings.setAdditionalArguments(additionalArgsOptionsField.getText()); - compilerSettings.setScriptTemplates(scriptTemplatesField.getText()); - compilerSettings.setScriptTemplatesClasspath(scriptTemplatesClasspathField.getText()); - compilerSettings.setCopyJsLibraryFiles(copyRuntimeFilesCheckBox.isSelected()); - compilerSettings.setOutputDirectoryForJsLibraryFiles(outputDirectory.getText()); - - if (compilerWorkspaceSettings != null) { - compilerWorkspaceSettings.setPreciseIncrementalEnabled(enableIncrementalCompilationForJvmCheckBox.isSelected()); - compilerWorkspaceSettings.setIncrementalCompilationForJsEnabled(enableIncrementalCompilationForJsCheckBox.isSelected()); - - boolean oldEnableDaemon = compilerWorkspaceSettings.getEnableDaemon(); - compilerWorkspaceSettings.setEnableDaemon(keepAliveCheckBox.isSelected()); - if (keepAliveCheckBox.isSelected() != oldEnableDaemon) { - PluginStartupComponent.getInstance().resetAliveFlag(); - } - } - - k2jsCompilerArguments.setSourceMap(generateSourceMapsCheckBox.isSelected()); - k2jsCompilerArguments.setOutputPrefix(StringUtil.nullize(outputPrefixFile.getText(), true)); - k2jsCompilerArguments.setOutputPostfix(StringUtil.nullize(outputPostfixFile.getText(), true)); - k2jsCompilerArguments.setModuleKind(getSelectedModuleKind()); - - k2jsCompilerArguments.setSourceMapPrefix(sourceMapPrefix.getText()); - k2jsCompilerArguments.setSourceMapEmbedSources(generateSourceMapsCheckBox.isSelected() ? getSelectedSourceMapSourceEmbedding() : null); - - k2jvmCompilerArguments.setJvmTarget(getSelectedJvmVersion()); - - if (isProjectSettings) { - KotlinCommonCompilerArgumentsHolder.Companion.getInstance(project).setSettings(commonCompilerArguments); - Kotlin2JvmCompilerArgumentsHolder.Companion.getInstance(project).setSettings(k2jvmCompilerArguments); - Kotlin2JsCompilerArgumentsHolder.Companion.getInstance(project).setSettings(k2jsCompilerArguments); - KotlinCompilerSettings.Companion.getInstance(project).setSettings(compilerSettings); - } - - for (ClearBuildStateExtension extension : ClearBuildStateExtension.getExtensions()) { - extension.clearState(project); - } - } - - @Override - public void apply() throws ConfigurationException { - applyTo(commonCompilerArguments, k2jvmCompilerArguments, k2jsCompilerArguments, compilerSettings); - } - - @Override - public void reset() { - reportWarningsCheckBox.setSelected(!commonCompilerArguments.getSuppressWarnings()); - languageVersionComboBox.setSelectedItem(KotlinFacetSettingsKt.getLanguageVersionView(commonCompilerArguments)); - onLanguageLevelChanged(getSelectedLanguageVersionView()); - apiVersionComboBox.setSelectedItem(KotlinFacetSettingsKt.getApiVersionView(commonCompilerArguments)); - coroutineSupportComboBox.setSelectedItem(CoroutineSupport.byCompilerArguments(commonCompilerArguments)); - additionalArgsOptionsField.setText(compilerSettings.getAdditionalArguments()); - scriptTemplatesField.setText(compilerSettings.getScriptTemplates()); - scriptTemplatesClasspathField.setText(compilerSettings.getScriptTemplatesClasspath()); - copyRuntimeFilesCheckBox.setSelected(compilerSettings.getCopyJsLibraryFiles()); - outputDirectory.setText(compilerSettings.getOutputDirectoryForJsLibraryFiles()); - - if (compilerWorkspaceSettings != null) { - enableIncrementalCompilationForJvmCheckBox.setSelected(compilerWorkspaceSettings.getPreciseIncrementalEnabled()); - enableIncrementalCompilationForJsCheckBox.setSelected(compilerWorkspaceSettings.getIncrementalCompilationForJsEnabled()); - keepAliveCheckBox.setSelected(compilerWorkspaceSettings.getEnableDaemon()); - } - - generateSourceMapsCheckBox.setSelected(k2jsCompilerArguments.getSourceMap()); - outputPrefixFile.setText(k2jsCompilerArguments.getOutputPrefix()); - outputPostfixFile.setText(k2jsCompilerArguments.getOutputPostfix()); - - moduleKindComboBox.setSelectedItem(getModuleKindOrDefault(k2jsCompilerArguments.getModuleKind())); - sourceMapPrefix.setText(k2jsCompilerArguments.getSourceMapPrefix()); - sourceMapPrefix.setEnabled(k2jsCompilerArguments.getSourceMap()); - sourceMapEmbedSources.setSelectedItem(getSourceMapSourceEmbeddingOrDefault(k2jsCompilerArguments.getSourceMapEmbedSources())); - - jvmVersionComboBox.setSelectedItem(getJvmVersionOrDefault(k2jvmCompilerArguments.getJvmTarget())); - } - - @Override - public void disposeUIResources() { - } - - @Nls - @Override - public String getDisplayName() { - return KotlinBundle.message("configuration.name.kotlin.compiler"); - } - - @Nullable - @Override - public String getHelpTopic() { - return "reference.compiler.kotlin"; - } - - public JPanel getContentPane() { - return contentPane; - } - - public ThreeStateCheckBox getReportWarningsCheckBox() { - return reportWarningsCheckBox; - } - - public RawCommandLineEditor getAdditionalArgsOptionsField() { - return additionalArgsOptionsField; - } - - public ThreeStateCheckBox getGenerateSourceMapsCheckBox() { - return generateSourceMapsCheckBox; - } - - public TextFieldWithBrowseButton getOutputPrefixFile() { - return outputPrefixFile; - } - - public TextFieldWithBrowseButton getOutputPostfixFile() { - return outputPostfixFile; - } - - public TextFieldWithBrowseButton getOutputDirectory() { - return outputDirectory; - } - - public ThreeStateCheckBox getCopyRuntimeFilesCheckBox() { - return copyRuntimeFilesCheckBox; - } - - public ThreeStateCheckBox getKeepAliveCheckBox() { - return keepAliveCheckBox; - } - - public JComboBox getModuleKindComboBox() { - return moduleKindComboBox; - } - - public JTextField getScriptTemplatesField() { - return scriptTemplatesField; - } - - public JTextField getScriptTemplatesClasspathField() { - return scriptTemplatesClasspathField; - } - - public JComboBox getLanguageVersionComboBox() { - return languageVersionComboBox; - } - - public JComboBox getApiVersionComboBox() { - return apiVersionComboBox; - } - - public JComboBox getCoroutineSupportComboBox() { - return coroutineSupportComboBox; - } - - public void setEnabled(boolean value) { - isEnabled = value; - UIUtil.setEnabled(getContentPane(), value, true); - } - - public CommonCompilerArguments getCommonCompilerArguments() { - return commonCompilerArguments; - } - - public void setCommonCompilerArguments(CommonCompilerArguments commonCompilerArguments) { - this.commonCompilerArguments = commonCompilerArguments; - } - - public K2JSCompilerArguments getK2jsCompilerArguments() { - return k2jsCompilerArguments; - } - - public void setK2jsCompilerArguments(K2JSCompilerArguments k2jsCompilerArguments) { - this.k2jsCompilerArguments = k2jsCompilerArguments; - } - - public K2JVMCompilerArguments getK2jvmCompilerArguments() { - return k2jvmCompilerArguments; - } - - public void setK2jvmCompilerArguments(K2JVMCompilerArguments k2jvmCompilerArguments) { - this.k2jvmCompilerArguments = k2jvmCompilerArguments; - } - - public CompilerSettings getCompilerSettings() { - return compilerSettings; - } - - public void setCompilerSettings(CompilerSettings compilerSettings) { - this.compilerSettings = compilerSettings; - } - - private void createUIComponents() { - // Workaround: ThreeStateCheckBox doesn't send suitable notification on state change - // TODO: replace with PropertyChangerListener after fix is available in IDEA - copyRuntimeFilesCheckBox = new ThreeStateCheckBox() { - @Override - public void setState(State state) { - super.setState(state); - updateOutputDirEnabled(); - } - }; - } -} diff --git a/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinFormatterUsageCollector.kt.191 b/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinFormatterUsageCollector.kt.191 deleted file mode 100644 index 435ed2bbdbc..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/formatter/KotlinFormatterUsageCollector.kt.191 +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright 2000-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.idea.formatter - -import com.intellij.application.options.CodeStyle -import com.intellij.internal.statistic.beans.UsageDescriptor -import com.intellij.internal.statistic.utils.getEnumUsage -import com.intellij.openapi.project.Project -import com.intellij.psi.codeStyle.CodeStyleSettingsManager -import org.jetbrains.kotlin.idea.core.formatter.KotlinCodeStyleSettings -import org.jetbrains.kotlin.idea.formatter.KotlinFormatterUsageCollector.KotlinFormatterKind.* -import org.jetbrains.kotlin.idea.util.isDefaultOfficialCodeStyle - -//todo: convert to FUS? -class KotlinFormatterUsageCollector { - fun getProjectUsages(project: Project): Set { - val usedFormatter = getKotlinFormatterKind(project) - - val settings = CodeStyle.getSettings(project) - val kotlinCommonSettings = settings.kotlinCommonSettings - val kotlinCustomSettings = settings.kotlinCustomSettings - - return setOf( - getEnumUsage("kotlin.formatter.kind", usedFormatter), - getEnumStringPropertyUsage( - "kotlin.formatter.defaults", - kotlinCustomSettings.CODE_STYLE_DEFAULTS ?: kotlinCommonSettings.CODE_STYLE_DEFAULTS - ) - ) - } - - private fun getEnumStringPropertyUsage(key: String, value: String?): UsageDescriptor { - return UsageDescriptor(key + "." + value.toString().toLowerCase(java.util.Locale.ENGLISH), 1) - } - - companion object { - private const val GROUP_ID = "kotlin.formatter" - - private val KOTLIN_DEFAULT_COMMON = KotlinLanguageCodeStyleSettingsProvider().defaultCommonSettings - .also { KotlinStyleGuideCodeStyle.applyToCommonSettings(it) } - - private val KOTLIN_DEFAULT_CUSTOM by lazy { - KotlinCodeStyleSettings.defaultSettings().cloneSettings() - .also { KotlinStyleGuideCodeStyle.applyToKotlinCustomSettings(it) } - } - - private val KOTLIN_OBSOLETE_DEFAULT_COMMON = KotlinLanguageCodeStyleSettingsProvider().defaultCommonSettings - .also { KotlinObsoleteCodeStyle.applyToCommonSettings(it) } - - private val KOTLIN_OBSOLETE_DEFAULT_CUSTOM by lazy { - KotlinCodeStyleSettings.defaultSettings().cloneSettings() - .also { KotlinObsoleteCodeStyle.applyToKotlinCustomSettings(it) } - } - - fun getKotlinFormatterKind(project: Project): KotlinFormatterKind { - val isProject = CodeStyleSettingsManager.getInstance(project).USE_PER_PROJECT_SETTINGS - val isDefaultOfficialCodeStyle = isDefaultOfficialCodeStyle - - val settings = CodeStyle.getSettings(project) - val kotlinCommonSettings = settings.kotlinCommonSettings - val kotlinCustomSettings = settings.kotlinCustomSettings - - val isDefaultKotlinCommonSettings = kotlinCommonSettings == KotlinLanguageCodeStyleSettingsProvider().defaultCommonSettings - val isDefaultKotlinCustomSettings = kotlinCustomSettings == KotlinCodeStyleSettings.defaultSettings() - - if (isDefaultKotlinCommonSettings && isDefaultKotlinCustomSettings) { - return if (isDefaultOfficialCodeStyle) { - paired(IDEA_OFFICIAL_DEFAULT, isProject) - } else { - paired(IDEA_DEFAULT, isProject) - } - } - - if (kotlinCommonSettings == KOTLIN_OBSOLETE_DEFAULT_COMMON && kotlinCustomSettings == KOTLIN_OBSOLETE_DEFAULT_CUSTOM) { - return paired(IDEA_OBSOLETE_KOTLIN, isProject) - } - - if (kotlinCommonSettings == KOTLIN_DEFAULT_COMMON && kotlinCustomSettings == KOTLIN_DEFAULT_CUSTOM) { - return paired(IDEA_KOTLIN, isProject) - } - - val isKotlinOfficialLikeSettings = settings == settings.clone().also { - KotlinStyleGuideCodeStyle.apply(it) - } - if (isKotlinOfficialLikeSettings) { - return paired(IDEA_OFFICIAL_KOTLIN_WITH_CUSTOM, isProject) - } - - val isKotlinObsoleteLikeSettings = settings == settings.clone().also { - KotlinObsoleteCodeStyle.apply(it) - } - if (isKotlinObsoleteLikeSettings) { - return paired(IDEA_KOTLIN_WITH_CUSTOM, isProject) - } - - return paired(IDEA_CUSTOM, isProject) - } - - private fun paired(kind: KotlinFormatterKind, isProject: Boolean): KotlinFormatterKind { - if (!isProject) return kind - - return when (kind) { - IDEA_DEFAULT -> PROJECT_DEFAULT - IDEA_OFFICIAL_DEFAULT -> PROJECT_OFFICIAL_DEFAULT - IDEA_CUSTOM -> PROJECT_CUSTOM - IDEA_KOTLIN_WITH_CUSTOM -> PROJECT_KOTLIN_WITH_CUSTOM - IDEA_KOTLIN -> PROJECT_KOTLIN - IDEA_OBSOLETE_KOTLIN -> PROJECT_OBSOLETE_KOTLIN - IDEA_OFFICIAL_KOTLIN_WITH_CUSTOM -> PROJECT_OBSOLETE_KOTLIN_WITH_CUSTOM - else -> kind - } - } - } - - enum class KotlinFormatterKind { - IDEA_DEFAULT, - IDEA_CUSTOM, - IDEA_KOTLIN_WITH_CUSTOM, - IDEA_KOTLIN, - - PROJECT_DEFAULT, - PROJECT_CUSTOM, - PROJECT_KOTLIN_WITH_CUSTOM, - PROJECT_KOTLIN, - - IDEA_OFFICIAL_DEFAULT, - IDEA_OBSOLETE_KOTLIN, - IDEA_OFFICIAL_KOTLIN_WITH_CUSTOM, - PROJECT_OFFICIAL_DEFAULT, - PROJECT_OBSOLETE_KOTLIN, - PROJECT_OBSOLETE_KOTLIN_WITH_CUSTOM - } -} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/dslStyleIcon.kt.191 b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/dslStyleIcon.kt.191 deleted file mode 100644 index 41740d2e1f6..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/dslStyleIcon.kt.191 +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. 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.markers - -import com.intellij.openapi.editor.colors.EditorColorsManager -import com.intellij.ui.LayeredIcon -import com.intellij.util.ui.ColorsIcon -import com.intellij.util.ui.JBUI -import org.jetbrains.kotlin.idea.KotlinIcons -import org.jetbrains.kotlin.idea.highlighter.dsl.DslHighlighterExtension -import javax.swing.Icon - -// FIX ME WHEN BUNCH as35 REMOVED -// FIX ME WHEN BUNCH 191 REMOVED -internal fun createDslStyleIcon(styleId: Int): Icon { - val globalScheme = EditorColorsManager.getInstance().globalScheme - val markersColor = globalScheme.getAttributes(DslHighlighterExtension.styleById(styleId)).foregroundColor - val icon = LayeredIcon(2) - val defaultIcon = KotlinIcons.DSL_MARKER_ANNOTATION - icon.setIcon(defaultIcon, 0) - icon.setIcon( - ColorsIcon(defaultIcon.iconHeight / 2, markersColor).scale(JBUI.pixScale()), - 1, - defaultIcon.iconHeight / 2, - defaultIcon.iconWidth / 2 - ) - return icon -} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/PlatformUnresolvedProvider.kt.191 b/idea/src/org/jetbrains/kotlin/idea/inspections/PlatformUnresolvedProvider.kt.191 deleted file mode 100644 index 466c7309ec1..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/PlatformUnresolvedProvider.kt.191 +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2010-2016 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.inspections - -import com.intellij.codeInsight.daemon.HighlightDisplayKey -import com.intellij.codeInsight.daemon.QuickFixActionRegistrar -import com.intellij.codeInsight.intention.IntentionAction -import com.intellij.codeInsight.quickfix.UnresolvedReferenceQuickFixProvider -import com.intellij.openapi.util.Condition -import com.intellij.openapi.util.TextRange -import com.intellij.psi.SmartPsiElementPointer -import org.jetbrains.kotlin.diagnostics.Diagnostic -import org.jetbrains.kotlin.idea.core.quickfix.QuickFixUtil -import org.jetbrains.kotlin.idea.quickfix.KotlinIntentionActionFactoryWithDelegate -import org.jetbrains.kotlin.idea.quickfix.QuickFixWithDelegateFactory -import org.jetbrains.kotlin.idea.quickfix.detectPriority -import org.jetbrains.kotlin.idea.references.KtSimpleNameReference -import org.jetbrains.kotlin.psi.KtNameReferenceExpression -import java.util.* - -object PlatformUnresolvedProvider : KotlinIntentionActionFactoryWithDelegate() { - override fun getElementOfInterest(diagnostic: Diagnostic) = QuickFixUtil.getParentElementOfType(diagnostic, KtNameReferenceExpression::class.java) - override fun extractFixData(element: KtNameReferenceExpression, diagnostic: Diagnostic) = element.getReferencedName() - - override fun createFixes(originalElementPointer: SmartPsiElementPointer, diagnostic: Diagnostic, quickFixDataFactory: () -> String?): List { - val result = ArrayList() - - originalElementPointer.element?.references?.filterIsInstance()?.firstOrNull()?.let { reference -> - UnresolvedReferenceQuickFixProvider.registerReferenceFixes(reference, object: QuickFixActionRegistrar { - override fun register(action: IntentionAction) { - result.add(QuickFixWithDelegateFactory(action.detectPriority()) { action }) - } - - override fun register(fixRange: TextRange, action: IntentionAction, key: HighlightDisplayKey?) { - register(action) - } - - override fun unregister(condition: Condition) { - } - }) - } - - return result - } - -} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/ActualImportFix.kt.191 b/idea/src/org/jetbrains/kotlin/idea/quickfix/ActualImportFix.kt.191 deleted file mode 100644 index e72b2d27a9d..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/ActualImportFix.kt.191 +++ /dev/null @@ -1,16 +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.quickfix - -import org.jetbrains.kotlin.diagnostics.Diagnostic -import org.jetbrains.kotlin.psi.KtSimpleNameExpression - -internal class ImportFix(expression: KtSimpleNameExpression): AbstractImportFix(expression, MyFactory) { - companion object MyFactory : Factory() { - override fun createImportAction(diagnostic: Diagnostic) = - (diagnostic.psiElement as? KtSimpleNameExpression)?.let(::ImportFix) - } -} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/KotlinReferenceImporter.kt.191 b/idea/src/org/jetbrains/kotlin/idea/quickfix/KotlinReferenceImporter.kt.191 deleted file mode 100644 index eae46e4144f..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/KotlinReferenceImporter.kt.191 +++ /dev/null @@ -1,131 +0,0 @@ -/* - * 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.quickfix - -import com.intellij.codeInsight.daemon.ReferenceImporter -import com.intellij.codeInsight.daemon.impl.DaemonCodeAnalyzerEx -import com.intellij.codeInsight.daemon.impl.DaemonListeners -import com.intellij.openapi.command.CommandProcessor -import com.intellij.openapi.editor.Editor -import com.intellij.openapi.util.TextRange -import com.intellij.psi.PsiFile -import org.jetbrains.kotlin.descriptors.ClassDescriptor -import org.jetbrains.kotlin.idea.actions.createSingleImportAction -import org.jetbrains.kotlin.idea.caches.resolve.analyze -import org.jetbrains.kotlin.idea.caches.resolve.resolveImportReference -import org.jetbrains.kotlin.idea.codeInsight.KotlinCodeInsightSettings -import org.jetbrains.kotlin.idea.core.targetDescriptors -import org.jetbrains.kotlin.idea.references.mainReference -import org.jetbrains.kotlin.psi.KtExpression -import org.jetbrains.kotlin.psi.KtFile -import org.jetbrains.kotlin.psi.KtSimpleNameExpression -import org.jetbrains.kotlin.psi.psiUtil.collectDescendantsOfType -import org.jetbrains.kotlin.psi.psiUtil.elementsInRange -import org.jetbrains.kotlin.psi.psiUtil.endOffset -import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode - -class KotlinReferenceImporter : ReferenceImporter { - override fun autoImportReferenceAtCursor(editor: Editor, file: PsiFile) - = autoImportReferenceAtCursor(editor, file, allowCaretNearRef = false) - - override fun autoImportReferenceAt(editor: Editor, file: PsiFile, offset: Int): Boolean { - if (file !is KtFile) return false - - val nameExpression = file.findElementAt(offset)?.parent as? KtSimpleNameExpression ?: return false - - if (!KotlinCodeInsightSettings.getInstance().addUnambiguousImportsOnTheFly) return false - - val importFix: ImportFixBase? = findImportFixAt(editor, file, offset) - if (importFix != null && !importFix.isOutdated()) { - val addImportAction = importFix.createAction(file.project, editor, nameExpression) - if (addImportAction.isUnambiguous()) { - addImportAction.execute() - } - return true - } - - return false - } - - private fun findImportFixAt( - editor: Editor, - file: KtFile, - offset: Int - ): ImportFixBase? { - var importFix: ImportFixBase? = null - DaemonCodeAnalyzerEx.processHighlights(editor.document, file.project, null, offset, offset) { info -> - importFix = info.quickFixActionRanges?.asSequence() - ?.map { it.first.action }?.filterIsInstance>()?.firstOrNull() - importFix == null - } - return importFix - } - - companion object { - - // TODO: use in table cell - fun autoImportReferenceAtCursor(editor: Editor, file: PsiFile, allowCaretNearRef: Boolean): Boolean { - if (file !is KtFile) return false - - val caretOffset = editor.caretModel.offset - val document = editor.document - val lineNumber = document.getLineNumber(caretOffset) - val startOffset = document.getLineStartOffset(lineNumber) - val endOffset = document.getLineEndOffset(lineNumber) - - val elements = file.elementsInRange(TextRange(startOffset, endOffset)) - .flatMap { it.collectDescendantsOfType() } - for (element in elements) { - if (!allowCaretNearRef && element.endOffset == caretOffset) continue - - if (element.autoImport(editor, file)) { - return true - } - } - - return false - } - - private fun hasUnresolvedImportWhichCanImport(file: KtFile, name: String): Boolean { - return file.importDirectives.any { - it.targetDescriptors().isEmpty() && (it.isAllUnder || it.importPath?.importedName?.asString() == name) - } - } - - private fun KtSimpleNameExpression.autoImport(editor: Editor, file: KtFile): Boolean { - if (!KotlinCodeInsightSettings.getInstance().addUnambiguousImportsOnTheFly) return false - if (!DaemonListeners.canChangeFileSilently(file)) return false - if (hasUnresolvedImportWhichCanImport(file, getReferencedName())) return false - - val bindingContext = analyze(BodyResolveMode.PARTIAL) - if (mainReference.resolveToDescriptors(bindingContext).isNotEmpty()) return false - - val suggestions = ImportFix(this).collectSuggestions() - if (suggestions.size != 1) return false - val descriptors = file.resolveImportReference(suggestions.single()) - - // we do not auto-import nested classes because this will probably add qualification into the text and this will confuse the user - if (descriptors.any { it is ClassDescriptor && it.containingDeclaration is ClassDescriptor }) return false - - var result = false - CommandProcessor.getInstance().runUndoTransparentAction { - result = createSingleImportAction(project, editor, this, suggestions).execute() - } - return result - } - } -} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/ChangeMethodParameters.kt.191 b/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/ChangeMethodParameters.kt.191 deleted file mode 100644 index f817dddc5f4..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/ChangeMethodParameters.kt.191 +++ /dev/null @@ -1,164 +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.idea.quickfix.crossLanguage - -import com.intellij.codeInsight.daemon.QuickFixBundle -import com.intellij.lang.jvm.actions.ChangeParametersRequest -import com.intellij.lang.jvm.actions.ExpectedParameter -import com.intellij.openapi.editor.Editor -import com.intellij.openapi.project.Project -import com.intellij.openapi.util.text.StringUtil -import com.intellij.psi.JvmPsiConversionHelper -import org.jetbrains.kotlin.descriptors.FunctionDescriptor -import org.jetbrains.kotlin.descriptors.SourceElement -import org.jetbrains.kotlin.descriptors.annotations.Annotations -import org.jetbrains.kotlin.descriptors.impl.SimpleFunctionDescriptorImpl -import org.jetbrains.kotlin.descriptors.impl.ValueParameterDescriptorImpl -import org.jetbrains.kotlin.idea.KotlinBundle -import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade -import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny -import org.jetbrains.kotlin.idea.core.ShortenReferences -import org.jetbrains.kotlin.idea.quickfix.KotlinQuickFixAction -import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers -import org.jetbrains.kotlin.idea.util.resolveToKotlinType -import org.jetbrains.kotlin.load.java.NOT_NULL_ANNOTATIONS -import org.jetbrains.kotlin.load.java.NULLABLE_ANNOTATIONS -import org.jetbrains.kotlin.name.FqName -import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.psi.KtFile -import org.jetbrains.kotlin.psi.KtNamedFunction -import org.jetbrains.kotlin.psi.KtParameterList -import org.jetbrains.kotlin.psi.KtPsiFactory -import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode -import org.jetbrains.kotlin.types.ErrorUtils -import org.jetbrains.kotlin.types.KotlinType - -internal class ChangeMethodParameters( - target: KtNamedFunction, - val request: ChangeParametersRequest -) : KotlinQuickFixAction(target) { - - - override fun getText(): String { - val target = element ?: return KotlinBundle.message("fix.change.signature.unavailable") - - val helper = JvmPsiConversionHelper.getInstance(target.project) - - val parametersString = request.expectedParameters.joinToString(", ", "(", ")") { ep -> - val kotlinType = - ep.expectedTypes.firstOrNull()?.theType?.let { helper.convertType(it).resolveToKotlinType(target.getResolutionFacade()) } - val parameterName = ep.semanticNames.firstOrNull() ?: KotlinBundle.message("fix.change.signature.unnamed.parameter") - "$parameterName: ${kotlinType?.let { - IdeDescriptorRenderers.SOURCE_CODE_SHORT_NAMES_NO_ANNOTATIONS.renderType(it) - } ?: KotlinBundle.message("fix.change.signature.error")}" - } - - val shortenParameterString = StringUtil.shortenTextWithEllipsis(parametersString, 30, 5) - return QuickFixBundle.message("change.method.parameters.text", shortenParameterString) - } - - override fun getFamilyName(): String = QuickFixBundle.message("change.method.parameters.family") - - override fun isAvailable(project: Project, editor: Editor?, file: KtFile): Boolean = element != null && request.isValid - - private data class ParameterModification( - val name: String, - val ktType: KotlinType - ) - - private fun getParametersModifications( - target: KtNamedFunction, - expectedParameters: List - ): List { - val helper = JvmPsiConversionHelper.getInstance(target.project) - - return expectedParameters.mapIndexed { index, expectedParameter -> - val theType = expectedParameter.expectedTypes.firstOrNull()?.theType - val kotlinType = theType - ?.let { helper.convertType(it).resolveToKotlinType(target.getResolutionFacade()) } - ?: ErrorUtils.createErrorType("unknown type") - - ParameterModification( - expectedParameter.semanticNames.firstOrNull() ?: "param$index", kotlinType - ) - } - } - - override fun invoke(project: Project, editor: Editor?, file: KtFile) { - if (!request.isValid) return - - val target = element ?: return - val functionDescriptor = target.resolveToDescriptorIfAny(BodyResolveMode.FULL) ?: return - - target.valueParameterList!!.parameters.forEach { target.valueParameterList!!.removeParameter(it) } - val parameterActions = getParametersModifications(target, request.expectedParameters) - - val parametersGenerated = parameterActions.let { - it zip generateParameterList(project, functionDescriptor, it).parameters - }.toMap() - - for (action in parameterActions) { - val parameter = parametersGenerated.getValue(action) - target.valueParameterList!!.addParameter(parameter) - } - - ShortenReferences.DEFAULT.process(target.valueParameterList!!) - } - - private fun generateParameterList( - project: Project, - functionDescriptor: FunctionDescriptor, - paramsToAdd: List - ): KtParameterList { - val newFunctionDescriptor = SimpleFunctionDescriptorImpl.create( - functionDescriptor.containingDeclaration, - functionDescriptor.annotations, - functionDescriptor.name, - functionDescriptor.kind, - SourceElement.NO_SOURCE - ).apply { - initialize( - functionDescriptor.extensionReceiverParameter?.copy(this), - functionDescriptor.dispatchReceiverParameter, - functionDescriptor.typeParameters, - paramsToAdd.mapIndexed { index, parameter -> - ValueParameterDescriptorImpl( - this, null, index, Annotations.EMPTY, - Name.identifier(parameter.name), - parameter.ktType, declaresDefaultValue = false, - isCrossinline = false, isNoinline = false, varargElementType = null, source = SourceElement.NO_SOURCE - ) - }, - functionDescriptor.returnType, - functionDescriptor.modality, - functionDescriptor.visibility - ) - } - - - val renderer = IdeDescriptorRenderers.SOURCE_CODE.withOptions { - defaultParameterValueRenderer = null - } - - val newFunction = KtPsiFactory(project).createFunction(renderer.render(newFunctionDescriptor)).apply { - valueParameters.forEach { param -> - param.annotationEntries.forEach { a -> - a.typeReference?.run { - val fqName = FqName(this.text) - if (fqName in (NULLABLE_ANNOTATIONS + NOT_NULL_ANNOTATIONS)) a.delete() - } - } - } - } - - return newFunction.valueParameterList!! - } - - companion object { - fun create(ktNamedFunction: KtNamedFunction, request: ChangeParametersRequest): ChangeMethodParameters? = - ChangeMethodParameters(ktNamedFunction, request) - } - -} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt.191 b/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt.191 deleted file mode 100644 index 9e64013fb82..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt.191 +++ /dev/null @@ -1,499 +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.quickfix.crossLanguage - -import com.intellij.codeInsight.daemon.QuickFixBundle -import com.intellij.codeInsight.intention.IntentionAction -import com.intellij.codeInsight.intention.QuickFixFactory -import com.intellij.lang.java.beans.PropertyKind -import com.intellij.lang.jvm.* -import com.intellij.lang.jvm.actions.* -import com.intellij.lang.jvm.types.JvmType -import com.intellij.openapi.editor.Editor -import com.intellij.openapi.project.Project -import com.intellij.openapi.util.text.StringUtilRt -import com.intellij.psi.* -import com.intellij.psi.codeStyle.SuggestedNameInfo -import com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl -import com.intellij.psi.util.PropertyUtil -import com.intellij.psi.util.PropertyUtilBase -import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade -import org.jetbrains.kotlin.asJava.classes.KtLightClassForSourceDeclaration -import org.jetbrains.kotlin.asJava.elements.KtLightElement -import org.jetbrains.kotlin.asJava.toLightMethods -import org.jetbrains.kotlin.asJava.unwrapped -import org.jetbrains.kotlin.caches.resolve.KotlinCacheService -import org.jetbrains.kotlin.descriptors.* -import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget -import org.jetbrains.kotlin.descriptors.annotations.KotlinTarget -import org.jetbrains.kotlin.descriptors.impl.ClassDescriptorImpl -import org.jetbrains.kotlin.descriptors.impl.MutablePackageFragmentDescriptor -import org.jetbrains.kotlin.idea.KotlinBundle -import org.jetbrains.kotlin.idea.KotlinLanguage -import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade -import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny -import org.jetbrains.kotlin.idea.core.ShortenReferences -import org.jetbrains.kotlin.idea.core.appendModifier -import org.jetbrains.kotlin.idea.quickfix.AddModifierFix -import org.jetbrains.kotlin.idea.quickfix.RemoveModifierFix -import org.jetbrains.kotlin.idea.quickfix.createFromUsage.callableBuilder.* -import org.jetbrains.kotlin.idea.quickfix.createFromUsage.createCallable.CreateCallableFromUsageFix -import org.jetbrains.kotlin.idea.resolve.ResolutionFacade -import org.jetbrains.kotlin.idea.util.resolveToKotlinType -import org.jetbrains.kotlin.incremental.components.NoLookupLocation -import org.jetbrains.kotlin.lexer.KtTokens -import org.jetbrains.kotlin.load.java.JvmAbi.JVM_FIELD_ANNOTATION_FQ_NAME -import org.jetbrains.kotlin.load.java.components.TypeUsage -import org.jetbrains.kotlin.load.java.lazy.JavaResolverComponents -import org.jetbrains.kotlin.load.java.lazy.LazyJavaResolverContext -import org.jetbrains.kotlin.load.java.lazy.TypeParameterResolver -import org.jetbrains.kotlin.load.java.lazy.child -import org.jetbrains.kotlin.load.java.lazy.descriptors.LazyJavaTypeParameterDescriptor -import org.jetbrains.kotlin.load.java.lazy.types.JavaTypeAttributes -import org.jetbrains.kotlin.load.java.lazy.types.JavaTypeResolver -import org.jetbrains.kotlin.load.java.structure.JavaTypeParameter -import org.jetbrains.kotlin.load.java.structure.impl.JavaTypeImpl -import org.jetbrains.kotlin.load.java.structure.impl.JavaTypeParameterImpl -import org.jetbrains.kotlin.name.FqName -import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.psi.* -import org.jetbrains.kotlin.psi.psiUtil.createSmartPointer -import org.jetbrains.kotlin.psi.psiUtil.visibilityModifierType -import org.jetbrains.kotlin.resolve.AnnotationChecker -import org.jetbrains.kotlin.platform.jvm.JvmPlatforms -import org.jetbrains.kotlin.resolve.annotations.JVM_STATIC_ANNOTATION_FQ_NAME -import org.jetbrains.kotlin.resolve.descriptorUtil.module -import org.jetbrains.kotlin.storage.LockBasedStorageManager -import org.jetbrains.kotlin.types.KotlinType -import org.jetbrains.kotlin.types.Variance -import org.jetbrains.kotlin.types.typeUtil.supertypes - -class KotlinElementActionsFactory : JvmElementActionsFactory() { - companion object { - val javaPsiModifiersMapping = mapOf( - JvmModifier.PRIVATE to KtTokens.PRIVATE_KEYWORD, - JvmModifier.PUBLIC to KtTokens.PUBLIC_KEYWORD, - JvmModifier.PROTECTED to KtTokens.PUBLIC_KEYWORD, - JvmModifier.ABSTRACT to KtTokens.ABSTRACT_KEYWORD - ) - } - - private class FakeExpressionFromParameter(private val psiParam: PsiParameter) : PsiReferenceExpressionImpl() { - override fun getText(): String = psiParam.name!! - override fun getProject(): Project = psiParam.project - override fun getParent(): PsiElement = psiParam.parent - override fun getType(): PsiType? = psiParam.type - override fun isValid(): Boolean = true - override fun getContainingFile(): PsiFile = psiParam.containingFile - override fun getReferenceName(): String? = psiParam.name - override fun resolve(): PsiElement? = psiParam - } - - private class ModifierBuilder( - private val targetContainer: KtElement, - private val allowJvmStatic: Boolean = true - ) { - private val psiFactory = KtPsiFactory(targetContainer.project) - - val modifierList = psiFactory.createEmptyModifierList() - - private fun JvmModifier.transformAndAppend(): Boolean { - javaPsiModifiersMapping[this]?.let { - modifierList.appendModifier(it) - return true - } - - when (this) { - JvmModifier.STATIC -> { - if (allowJvmStatic && targetContainer is KtClassOrObject) { - addAnnotation(JVM_STATIC_ANNOTATION_FQ_NAME) - } - } - JvmModifier.ABSTRACT -> modifierList.appendModifier(KtTokens.ABSTRACT_KEYWORD) - JvmModifier.FINAL -> modifierList.appendModifier(KtTokens.FINAL_KEYWORD) - else -> return false - } - - return true - } - - var isValid = true - private set - - fun addJvmModifier(modifier: JvmModifier) { - isValid = isValid && modifier.transformAndAppend() - } - - fun addJvmModifiers(modifiers: Iterable) { - modifiers.forEach { addJvmModifier(it) } - } - - fun addAnnotation(fqName: FqName) { - if (!isValid) return - modifierList.add(psiFactory.createAnnotationEntry("@${fqName.asString()}")) - } - } - - class CreatePropertyFix( - contextElement: KtElement, - propertyInfo: PropertyInfo, - private val classOrFileName: String? - ) : CreateCallableFromUsageFix(contextElement, listOf(propertyInfo)) { - override fun getFamilyName() = KotlinBundle.message("add.property") - override fun getText(): String { - val info = callableInfos.first() as PropertyInfo - return buildString { - append(KotlinBundle.message("text.add")) - if (info.isLateinitPreferred || info.modifierList?.hasModifier(KtTokens.LATEINIT_KEYWORD) == true) { - append("lateinit ") - } - append(if (info.writable) "var" else "val") - append(KotlinBundle.message("property.0.to.1", info.name, classOrFileName.toString())) - } - } - } - - private fun JvmClass.toKtClassOrFile(): KtElement? { - val psi = sourceElement - return when (psi) { - is KtClassOrObject -> psi - is KtLightClassForSourceDeclaration -> psi.kotlinOrigin - is KtLightClassForFacade -> psi.files.firstOrNull() - else -> null - } - } - - private inline fun JvmElement.toKtElement() = sourceElement?.unwrapped as? T - - private fun fakeParametersExpressions(parameters: List>>, project: Project): Array? = - when { - parameters.isEmpty() -> emptyArray() - else -> JavaPsiFacade - .getElementFactory(project) - .createParameterList( - parameters.map { it.first.names.firstOrNull() }.toTypedArray(), - parameters.map { JvmPsiConversionHelper.getInstance(project).asPsiType(it) ?: return null }.toTypedArray() - ) - .parameters - .map(::FakeExpressionFromParameter) - .toTypedArray() - } - - - private fun ExpectedTypes.toKotlinTypeInfo(resolutionFacade: ResolutionFacade): TypeInfo { - val candidateTypes = flatMapTo(LinkedHashSet()) { - val ktType = (it.theType as? PsiType)?.resolveToKotlinType(resolutionFacade) ?: return@flatMapTo emptyList() - when (it.theKind) { - ExpectedType.Kind.EXACT, ExpectedType.Kind.SUBTYPE -> listOf(ktType) - ExpectedType.Kind.SUPERTYPE -> listOf(ktType) + ktType.supertypes() - } - } - if (candidateTypes.isEmpty()) { - val nullableAnyType = resolutionFacade.moduleDescriptor.builtIns.nullableAnyType - return TypeInfo(nullableAnyType, Variance.INVARIANT) - } - return TypeInfo.ByExplicitCandidateTypes(candidateTypes.toList()) - } - - override fun createChangeModifierActions(target: JvmModifiersOwner, request: ChangeModifierRequest): List { - val kModifierOwner = target.toKtElement() ?: return emptyList() - - val modifier = request.modifier - val shouldPresent = request.shouldBePresent() - //TODO: make similar to `createAddMethodActions` - val (kToken, shouldPresentMapped) = when { - modifier == JvmModifier.FINAL -> KtTokens.OPEN_KEYWORD to !shouldPresent - modifier == JvmModifier.PUBLIC && shouldPresent -> - kModifierOwner.visibilityModifierType() - ?.takeIf { it != KtTokens.DEFAULT_VISIBILITY_KEYWORD } - ?.let { it to false } ?: return emptyList() - else -> javaPsiModifiersMapping[modifier] to shouldPresent - } - if (kToken == null) return emptyList() - - val action = if (shouldPresentMapped) - AddModifierFix.createIfApplicable(kModifierOwner, kToken) - else - RemoveModifierFix(kModifierOwner, kToken, false) - return listOfNotNull(action) - } - - override fun createChangeModifierActions(target: JvmModifiersOwner, request: MemberRequest.Modifier): List = - createChangeModifierActions(target, modifierRequest(request.modifier, request.shouldPresent)) - - override fun createAddConstructorActions(targetClass: JvmClass, request: CreateConstructorRequest): List { - val targetKtClass = targetClass.toKtClassOrFile() as? KtClass ?: return emptyList() - - val modifierBuilder = ModifierBuilder(targetKtClass).apply { addJvmModifiers(request.modifiers) } - if (!modifierBuilder.isValid) return emptyList() - val resolutionFacade = targetKtClass.getResolutionFacade() - val nullableAnyType = resolutionFacade.moduleDescriptor.builtIns.nullableAnyType - val helper = JvmPsiConversionHelper.getInstance(targetKtClass.project) - val parameters = request.parameters as List>> - val parameterInfos = parameters.mapIndexed { index, param: Pair> -> - val ktType = helper.asPsiType(param)?.resolveToKotlinType(resolutionFacade) ?: nullableAnyType - val name = param.first.names.firstOrNull() ?: "arg${index + 1}" - ParameterInfo(TypeInfo(ktType, Variance.IN_VARIANCE), listOf(name)) - } - val needPrimary = !targetKtClass.hasExplicitPrimaryConstructor() - val constructorInfo = ConstructorInfo( - parameterInfos, - targetKtClass, - isPrimary = needPrimary, - modifierList = modifierBuilder.modifierList, - withBody = true - ) - val targetClassName = targetClass.name - val addConstructorAction = object : CreateCallableFromUsageFix(targetKtClass, listOf(constructorInfo)) { - override fun getFamilyName() = KotlinBundle.message("add.method") - override fun getText() = KotlinBundle.message( - "add.0.constructor.to.1", - if (needPrimary) KotlinBundle.message("text.primary") else KotlinBundle.message("text.secondary"), - targetClassName.toString() - ) - } - - val changePrimaryConstructorAction = run { - val primaryConstructor = targetKtClass.primaryConstructor ?: return@run null - val lightMethod = primaryConstructor.toLightMethods().firstOrNull() ?: return@run null - val project = targetKtClass.project - val fakeParametersExpressions = fakeParametersExpressions(parameters, project) ?: return@run null - QuickFixFactory.getInstance() - .createChangeMethodSignatureFromUsageFix( - lightMethod, - fakeParametersExpressions, - PsiSubstitutor.EMPTY, - targetKtClass, - false, - 2 - ).takeIf { it.isAvailable(project, null, targetKtClass.containingFile) } - } - - return listOfNotNull(changePrimaryConstructorAction, addConstructorAction) - } - - override fun createAddPropertyActions(targetClass: JvmClass, request: MemberRequest.Property): List { - val targetContainer = targetClass.toKtClassOrFile() ?: return emptyList() - return createAddPropertyActions( - targetContainer, listOf(request.visibilityModifier), - request.propertyType, request.propertyName, request.setterRequired, targetClass.name - ) - } - - private fun createAddPropertyActions( - targetContainer: KtElement, - modifiers: Iterable, - propertyType: JvmType, - propertyName: String, - setterRequired: Boolean, - classOrFileName: String? - ): List { - val modifierBuilder = ModifierBuilder(targetContainer).apply { addJvmModifiers(modifiers) } - if (!modifierBuilder.isValid) return emptyList() - - val resolutionFacade = targetContainer.getResolutionFacade() - val nullableAnyType = resolutionFacade.moduleDescriptor.builtIns.nullableAnyType - - val ktType = (propertyType as? PsiType)?.resolveToKotlinType(resolutionFacade) ?: nullableAnyType - val propertyInfo = PropertyInfo( - propertyName, - TypeInfo.Empty, - TypeInfo(ktType, Variance.INVARIANT), - setterRequired, - listOf(targetContainer), - modifierList = modifierBuilder.modifierList, - withInitializer = true - ) - val propertyInfos = if (setterRequired) { - listOf(propertyInfo, propertyInfo.copyProperty(isLateinitPreferred = true)) - } - else { - listOf(propertyInfo) - } - return propertyInfos.map { CreatePropertyFix(targetContainer, it, classOrFileName) } - } - - override fun createAddFieldActions(targetClass: JvmClass, request: CreateFieldRequest): List { - val targetContainer = targetClass.toKtClassOrFile() ?: return emptyList() - - val resolutionFacade = targetContainer.getResolutionFacade() - val typeInfo = request.fieldType.toKotlinTypeInfo(resolutionFacade) - val writable = JvmModifier.FINAL !in request.modifiers - - fun propertyInfo(lateinit: Boolean) = PropertyInfo( - request.fieldName, - TypeInfo.Empty, - typeInfo, - writable, - listOf(targetContainer), - isLateinitPreferred = false, // Dont set it to `lateinit` because it works via templates that brings issues in batch field adding - isForCompanion = JvmModifier.STATIC in request.modifiers, - modifierList = ModifierBuilder(targetContainer, allowJvmStatic = false).apply { - addJvmModifiers(request.modifiers) - if (modifierList.children.none { it.node.elementType in KtTokens.VISIBILITY_MODIFIERS }) - addJvmModifier(JvmModifier.PUBLIC) - if (lateinit) - modifierList.appendModifier(KtTokens.LATEINIT_KEYWORD) - if (!request.modifiers.contains(JvmModifier.PRIVATE) && !lateinit) - addAnnotation(JVM_FIELD_ANNOTATION_FQ_NAME) - }.modifierList, - withInitializer = !lateinit - ) - - val propertyInfos = if (writable) { - listOf(propertyInfo(false), propertyInfo(true)) - } - else { - listOf(propertyInfo(false)) - } - return propertyInfos.map { CreatePropertyFix(targetContainer, it, targetClass.name) } - } - - override fun createAddMethodActions(targetClass: JvmClass, request: CreateMethodRequest): List { - val targetContainer = targetClass.toKtClassOrFile() ?: return emptyList() - - val modifierBuilder = ModifierBuilder(targetContainer).apply { addJvmModifiers(request.modifiers) } - if (!modifierBuilder.isValid) return emptyList() - - val resolutionFacade = KotlinCacheService.getInstance(targetContainer.project) - .getResolutionFacadeByFile(targetContainer.containingFile, JvmPlatforms.unspecifiedJvmPlatform) ?: return emptyList() - val returnTypeInfo = request.returnType.toKotlinTypeInfo(resolutionFacade) - val parameters = request.parameters as List>> - val parameterInfos = parameters.map { (suggestedNames, expectedTypes) -> - ParameterInfo(expectedTypes.toKotlinTypeInfo(resolutionFacade), suggestedNames.names.toList()) - } - val methodName = request.methodName - val functionInfo = FunctionInfo( - methodName, - TypeInfo.Empty, - returnTypeInfo, - listOf(targetContainer), - parameterInfos, - isForCompanion = JvmModifier.STATIC in request.modifiers, - modifierList = modifierBuilder.modifierList, - preferEmptyBody = true - ) - val targetClassName = targetClass.name - val action = object : CreateCallableFromUsageFix(targetContainer, listOf(functionInfo)) { - override fun getFamilyName() = KotlinBundle.message("add.method") - override fun getText() = KotlinBundle.message("add.method.0.to.1", methodName, targetClassName.toString()) - } - - val nameAndKind = PropertyUtilBase.getPropertyNameAndKind(methodName) ?: return listOf(action) - - val propertyType = (request.expectedParameters.singleOrNull()?.expectedTypes ?: request.returnType) - .firstOrNull { JvmPsiConversionHelper.getInstance(targetContainer.project).convertType(it.theType) != PsiType.VOID } - ?: return listOf(action) - - return createAddPropertyActions( - targetContainer, - request.modifiers, - propertyType.theType, - nameAndKind.first, - nameAndKind.second == PropertyKind.SETTER, - targetClass.name - ) - - } - - override fun createAddAnnotationActions(target: JvmModifiersOwner, request: AnnotationRequest): List { - val declaration = (target as? KtLightElement<*, *>)?.kotlinOrigin as? KtModifierListOwner ?: return emptyList() - if (declaration.language != KotlinLanguage.INSTANCE) return emptyList() - val annotationUseSiteTarget = when (target) { - is JvmField -> AnnotationUseSiteTarget.FIELD - is JvmMethod -> when { - PropertyUtil.isSimplePropertySetter(target as? PsiMethod) -> AnnotationUseSiteTarget.PROPERTY_SETTER - PropertyUtil.isSimplePropertyGetter(target as? PsiMethod) -> AnnotationUseSiteTarget.PROPERTY_GETTER - else -> null - } - else -> null - } - return listOf(CreateAnnotationAction(declaration, annotationUseSiteTarget, request)) - } - - private class CreateAnnotationAction( - target: KtModifierListOwner, - val annotationTarget: AnnotationUseSiteTarget?, - val request: AnnotationRequest - ) : IntentionAction { - - private val pointer = target.createSmartPointer() - - override fun startInWriteAction(): Boolean = true - - override fun getText(): String = - QuickFixBundle.message("create.annotation.text", StringUtilRt.getShortName(request.qualifiedName)) - - override fun getFamilyName(): String = QuickFixBundle.message("create.annotation.family") - - override fun isAvailable(project: Project, editor: Editor?, file: PsiFile?): Boolean = pointer.element != null - - - override fun invoke(project: Project, editor: Editor?, file: PsiFile?) { - val target = pointer.element ?: return - val entry = addAnnotationEntry(target, request, annotationTarget) - ShortenReferences.DEFAULT.process(entry) - } - - } - - override fun createChangeParametersActions(target: JvmMethod, request: ChangeParametersRequest): List { - val ktNamedFunction = (target as? KtLightElement<*, *>)?.kotlinOrigin as? KtNamedFunction ?: return emptyList() - return listOfNotNull(ChangeMethodParameters.create(ktNamedFunction, request)) - } -} - -internal fun addAnnotationEntry( - target: KtModifierListOwner, - request: AnnotationRequest, - annotationTarget: AnnotationUseSiteTarget? -): KtAnnotationEntry { - val annotationClass = JavaPsiFacade.getInstance(target.project).findClass(request.qualifiedName, target.resolveScope) - - val kotlinAnnotation = annotationClass?.language == KotlinLanguage.INSTANCE - - val annotationUseSiteTargetPrefix = run prefixEvaluation@{ - if (annotationTarget == null) return@prefixEvaluation "" - - val moduleDescriptor = (target as? KtDeclaration)?.resolveToDescriptorIfAny()?.module ?: return@prefixEvaluation "" - val annotationClassDescriptor = moduleDescriptor.resolveClassByFqName( - FqName(request.qualifiedName), NoLookupLocation.FROM_IDE - ) ?: return@prefixEvaluation "" - - val applicableTargetSet = - AnnotationChecker.applicableTargetSet(annotationClassDescriptor) ?: KotlinTarget.DEFAULT_TARGET_SET - - if (KotlinTarget.PROPERTY !in applicableTargetSet) return@prefixEvaluation "" - - "${annotationTarget.renderName}:" - } - - // could be generated via descriptor when KT-30478 is fixed - val entry = target.addAnnotationEntry( - KtPsiFactory(target) - .createAnnotationEntry( - "@$annotationUseSiteTargetPrefix${request.qualifiedName}${ - request.attributes.takeIf { it.isNotEmpty() }?.mapIndexed { i, p -> - if (!kotlinAnnotation && i == 0 && p.name == "value") - renderAttributeValue(p.value).toString() - else - "${p.name} = ${renderAttributeValue(p.value)}" - }?.joinToString(", ", "(", ")") ?: "" - }" - ) - ) - return entry -} - -private fun renderAttributeValue(annotationAttributeRequest: AnnotationAttributeValueRequest) = - when (annotationAttributeRequest) { - is AnnotationAttributeValueRequest.PrimitiveValue -> annotationAttributeRequest.value - is AnnotationAttributeValueRequest.StringValue -> "\"" + annotationAttributeRequest.value + "\"" - } - - -private fun JvmPsiConversionHelper.asPsiType(param: Pair>): PsiType? = - param.second.firstOrNull()?.theType?.let { convertType(it) } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/MoveHandlerDelegateCompat.kt.191 b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/MoveHandlerDelegateCompat.kt.191 deleted file mode 100644 index 2c780418520..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/MoveHandlerDelegateCompat.kt.191 +++ /dev/null @@ -1,29 +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.refactoring.move - -import com.intellij.psi.PsiElement -import com.intellij.psi.PsiReference -import com.intellij.refactoring.move.MoveHandlerDelegate -import com.intellij.refactoring.move.moveFilesOrDirectories.MoveFilesOrDirectoriesHandler - -// FIX ME WHEN BUNCH 191 REMOVED -abstract class MoveHandlerDelegateCompat : MoveHandlerDelegate() { - override fun canMove(elements: Array, targetContainer: PsiElement?): Boolean = - canMove(elements, targetContainer, null) - - open fun canMove(elements: Array, targetContainer: PsiElement?, reference: PsiReference?): Boolean = - super.canMove(elements, targetContainer) -} - -// FIX ME WHEN BUNCH 191 REMOVED -abstract class MoveFilesOrDirectoriesHandlerCompat : MoveFilesOrDirectoriesHandler() { - override fun canMove(elements: Array, targetContainer: PsiElement?): Boolean = - canMove(elements, targetContainer, null) - - open fun canMove(elements: Array, targetContainer: PsiElement?, reference: PsiReference?): Boolean = - super.canMove(elements, targetContainer) -} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/KotlinAwareJavaGetterRenameProcessor.kt.191 b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/KotlinAwareJavaGetterRenameProcessor.kt.191 deleted file mode 100644 index 1e72ab0c2a1..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/KotlinAwareJavaGetterRenameProcessor.kt.191 +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Copyright 2000-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.idea.refactoring.rename - -import com.intellij.psi.PsiElement -import com.intellij.psi.PsiMethod -import com.intellij.psi.PsiReference -import com.intellij.psi.PsiType -import com.intellij.refactoring.rename.RenameJavaMethodProcessor -import org.jetbrains.kotlin.asJava.elements.KtLightMethod -import org.jetbrains.kotlin.idea.references.SyntheticPropertyAccessorReference -import org.jetbrains.kotlin.idea.statistics.FUSEventGroups -import org.jetbrains.kotlin.idea.statistics.KotlinFUSLogger -import org.jetbrains.kotlin.load.java.JvmAbi -import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.synthetic.SyntheticJavaPropertyDescriptor -import org.jetbrains.kotlin.utils.ifEmpty - -class KotlinAwareJavaGetterRenameProcessor : RenameJavaMethodProcessor() { - override fun canProcessElement(element: PsiElement) = element is PsiMethod && element !is KtLightMethod && JvmAbi.isGetterName(element.name) - - override fun findReferences(element: PsiElement): MutableCollection { - val getterReferences = super.findReferences(element) - val getter = element as? PsiMethod ?: return getterReferences - val propertyName = SyntheticJavaPropertyDescriptor.propertyNameByGetMethodName(Name.identifier(getter.name)) ?: return getterReferences - val setterName = JvmAbi.setterName(propertyName.asString()) - val containingClass = getter.containingClass ?: return getterReferences - val setterReferences = containingClass - .findMethodsByName(setterName, true) - .filter { it.parameters.size == 1 && it.returnType == PsiType.VOID } - .flatMap { super.findReferences(it).filterIsInstance() } - .ifEmpty { return getterReferences } - return ArrayList(getterReferences.size + setterReferences.size).apply { - addAll(getterReferences) - setterReferences.mapTo(this) { SyntheticPropertyAccessorReference.Getter(it.expression) } - } - } -} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinClassifierProcessor.kt.191 b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinClassifierProcessor.kt.191 deleted file mode 100644 index 67ce5553cf0..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinClassifierProcessor.kt.191 +++ /dev/null @@ -1,20 +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.refactoring.rename - -import com.intellij.psi.PsiElement -import com.intellij.psi.PsiReference -import com.intellij.psi.search.SearchScope - -// FIX ME WHEN BUNCH 191 REMOVED -class RenameKotlinClassifierProcessor : RenameKotlinClassifierProcessorCompat() { - - override fun findReferences(element: PsiElement): Collection { - val references = super.findReferences(element) - return processFoundReferences(element, references) - } - -} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinFunctionProcessor.kt.191 b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinFunctionProcessor.kt.191 deleted file mode 100644 index 33a8c591ca7..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinFunctionProcessor.kt.191 +++ /dev/null @@ -1,19 +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.refactoring.rename - -import com.intellij.psi.PsiElement -import com.intellij.psi.PsiReference - -// FIX ME WHEN BUNCH 191 REMOVED -class RenameKotlinFunctionProcessor : RenameKotlinFunctionProcessorCompat() { - - override fun findReferences(element: PsiElement): Collection { - val references = super.findReferences(element) - return processFoundReferences(element, references) - } - -} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinParameterProcessor.kt.191 b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinParameterProcessor.kt.191 deleted file mode 100644 index c5f3f5cad14..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinParameterProcessor.kt.191 +++ /dev/null @@ -1,47 +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.refactoring.rename - -import com.intellij.psi.PsiElement -import com.intellij.refactoring.listeners.RefactoringElementListener -import com.intellij.usageView.UsageInfo -import org.jetbrains.kotlin.asJava.namedUnwrappedElement -import org.jetbrains.kotlin.idea.refactoring.KotlinRefactoringSettings -import org.jetbrains.kotlin.psi.KtFunction -import org.jetbrains.kotlin.psi.KtNamedDeclaration -import org.jetbrains.kotlin.psi.KtParameter -import org.jetbrains.kotlin.utils.SmartList - -class RenameKotlinParameterProcessor : RenameKotlinPsiProcessor() { - override fun canProcessElement(element: PsiElement) = element is KtParameter && element.ownerFunction is KtFunction - - override fun isToSearchInComments(psiElement: PsiElement) = KotlinRefactoringSettings.instance.RENAME_SEARCH_IN_COMMENTS_FOR_VARIABLE - - override fun setToSearchInComments(element: PsiElement, enabled: Boolean) { - KotlinRefactoringSettings.instance.RENAME_SEARCH_IN_COMMENTS_FOR_VARIABLE = enabled - } - - override fun findCollisions( - element: PsiElement, - newName: String, - allRenames: MutableMap, - result: MutableList - ) { - val declaration = element.namedUnwrappedElement as? KtNamedDeclaration ?: return - - val collisions = SmartList() - checkRedeclarations(declaration, newName, collisions) - checkOriginalUsagesRetargeting(declaration, newName, result, collisions) - checkNewNameUsagesRetargeting(declaration, newName, collisions) - result += collisions - } - - override fun renameElement(element: PsiElement, newName: String, usages: Array, listener: RefactoringElementListener?) { - super.renameElement(element, newName, usages, listener) - - usages.forEach { (it as? KtResolvableCollisionUsageInfo)?.apply() } - } -} diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinPropertyProcessor.kt.191 b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinPropertyProcessor.kt.191 deleted file mode 100644 index 48bad4b6239..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinPropertyProcessor.kt.191 +++ /dev/null @@ -1,132 +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.refactoring.rename - -import com.intellij.psi.PsiElement -import com.intellij.psi.PsiMethod -import com.intellij.psi.PsiReference -import com.intellij.refactoring.listeners.RefactoringElementListener -import com.intellij.refactoring.util.MoveRenameUsageInfo -import com.intellij.usageView.UsageInfo -import org.jetbrains.kotlin.asJava.elements.KtLightMethod -import org.jetbrains.kotlin.asJava.propertyNameByAccessor -import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper -import org.jetbrains.kotlin.idea.core.isEnumCompanionPropertyWithEntryConflict -import org.jetbrains.kotlin.idea.core.unquote -import org.jetbrains.kotlin.idea.refactoring.dropOverrideKeywordIfNecessary -import org.jetbrains.kotlin.idea.references.KtReference -import org.jetbrains.kotlin.idea.references.KtSimpleNameReference -import org.jetbrains.kotlin.idea.references.mainReference -import org.jetbrains.kotlin.load.java.JvmAbi -import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.psi.KtNamedDeclaration -import org.jetbrains.kotlin.psi.KtParameter -import org.jetbrains.kotlin.psi.KtProperty -import org.jetbrains.kotlin.psi.KtSimpleNameExpression -import org.jetbrains.kotlin.psi.psiUtil.quoteIfNeeded -import org.jetbrains.kotlin.resolve.DataClassDescriptorResolver -import org.jetbrains.kotlin.resolve.DescriptorUtils - -// FIX ME WHEN BUNCH 191 REMOVED -class RenameKotlinPropertyProcessor : RenameKotlinPropertyProcessorCompat() { - - override fun findReferences(element: PsiElement): Collection { - val references = super.findReferences(element) - return processFoundReferences(element, references) - } - - //TODO: a very long and complicated method, even recursive. mb refactor it somehow? at least split by PsiElement types? - override tailrec fun renameElement( - element: PsiElement, - newName: String, - usages: Array, - listener: RefactoringElementListener? - ) { - val newNameUnquoted = newName.unquote() - if (element is KtLightMethod) { - if (element.modifierList.findAnnotation(DescriptorUtils.JVM_NAME.asString()) != null) { - return super.renameElement(element, newName, usages, listener) - } - - val origin = element.kotlinOrigin - val newPropertyName = propertyNameByAccessor(newNameUnquoted, element) - // Kotlin references to Kotlin property should not use accessor name - if (newPropertyName != null && (origin is KtProperty || origin is KtParameter)) { - val (ktUsages, otherUsages) = usages.partition { it.reference is KtSimpleNameReference } - super.renameElement(element, newName, otherUsages.toTypedArray(), listener) - renameElement(origin, newPropertyName.quoteIfNeeded(), ktUsages.toTypedArray(), listener) - return - } - } - - if (element !is KtProperty && element !is KtParameter) { - super.renameElement(element, newName, usages, listener) - return - } - - val name = (element as KtNamedDeclaration).name!! - val oldGetterName = JvmAbi.getterName(name) - val oldSetterName = JvmAbi.setterName(name) - - if (isEnumCompanionPropertyWithEntryConflict(element, newNameUnquoted)) { - for ((i, usage) in usages.withIndex()) { - if (usage !is MoveRenameUsageInfo) continue - val ref = usage.reference ?: continue - // TODO: Enum value can't be accessed from Java in case of conflict with companion member - if (ref is KtReference) { - val newRef = (ref.bindToElement(element) as? KtSimpleNameExpression)?.mainReference ?: continue - usages[i] = MoveRenameUsageInfo(newRef, usage.referencedElement) - } - } - } - - val adjustedUsages = if (element is KtParameter) usages.filterNot { - val refTarget = it.reference?.resolve() - refTarget is KtLightMethod && DataClassDescriptorResolver.isComponentLike(Name.guessByFirstCharacter(refTarget.name)) - } else usages.toList() - - val refKindUsages = adjustedUsages.groupBy { usage: UsageInfo -> - val refElement = usage.reference?.resolve() - if (refElement is PsiMethod) { - val refElementName = refElement.name - val refElementNameToCheck = - (if (usage is MangledJavaRefUsageInfo) KotlinTypeMapper.InternalNameMapper.demangleInternalName(refElementName) else null) ?: refElementName - when (refElementNameToCheck) { - oldGetterName -> UsageKind.GETTER_USAGE - oldSetterName -> UsageKind.SETTER_USAGE - else -> UsageKind.SIMPLE_PROPERTY_USAGE - } - } else { - UsageKind.SIMPLE_PROPERTY_USAGE - } - } - - super.renameElement( - element.copy(), JvmAbi.setterName(newNameUnquoted).quoteIfNeeded(), - refKindUsages[UsageKind.SETTER_USAGE]?.toTypedArray() ?: arrayOf(), - null - ) - - super.renameElement( - element.copy(), JvmAbi.getterName(newNameUnquoted).quoteIfNeeded(), - refKindUsages[UsageKind.GETTER_USAGE]?.toTypedArray() ?: arrayOf(), - null - ) - - super.renameElement( - element, newName, - refKindUsages[UsageKind.SIMPLE_PROPERTY_USAGE]?.toTypedArray() ?: arrayOf(), - null - ) - - usages.forEach { (it as? KtResolvableCollisionUsageInfo)?.apply() } - - dropOverrideKeywordIfNecessary(element) - - listener?.elementRenamed(element) - } - -} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinPsiProcessor.kt.191 b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinPsiProcessor.kt.191 deleted file mode 100644 index ee86c364261..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinPsiProcessor.kt.191 +++ /dev/null @@ -1,30 +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.refactoring.rename - -import com.intellij.psi.PsiElement -import com.intellij.psi.PsiReference -import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions -import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchParameters -import org.jetbrains.kotlin.idea.search.or -import org.jetbrains.kotlin.idea.search.projectScope - -// FIX ME WHEN BUNCH 191 REMOVED -abstract class RenameKotlinPsiProcessor : RenameKotlinPsiProcessorCompat() { - - override fun findReferences(element: PsiElement): Collection { - val searchParameters = KotlinReferencesSearchParameters( - element, - element.project.projectScope() or element.useScope, - kotlinOptions = KotlinReferencesSearchOptions( - searchForComponentConventions = false, - acceptImportAlias = false - ) - ) - return findReferences(element, searchParameters) - } - -} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/slicer/KotlinSliceDereferenceUsage.kt.191 b/idea/src/org/jetbrains/kotlin/idea/slicer/KotlinSliceDereferenceUsage.kt.191 deleted file mode 100644 index 4659900f14d..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/slicer/KotlinSliceDereferenceUsage.kt.191 +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2010-2017 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.slicer - -import com.intellij.psi.PsiElement -import com.intellij.slicer.SliceUsage -import com.intellij.usages.UsagePresentation -import com.intellij.util.Processor -import org.jetbrains.kotlin.idea.KotlinBundle - -class KotlinSliceDereferenceUsage( - element: PsiElement, - parent: KotlinSliceUsage, - mode: KotlinSliceAnalysisMode -) : KotlinSliceUsage(element, parent, mode, false) { - override fun processChildren(processor: Processor) { - // no children - } - - override fun getPresentation() = object : UsagePresentation by super.getPresentation() { - override fun getTooltipText() = KotlinBundle.message("slicer.tool.tip.text.variable.dereferenced") - } -} diff --git a/idea/src/org/jetbrains/kotlin/idea/util/ProgressIndicatorUtils.kt.191 b/idea/src/org/jetbrains/kotlin/idea/util/ProgressIndicatorUtils.kt.191 deleted file mode 100644 index 5fcc66d5313..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/util/ProgressIndicatorUtils.kt.191 +++ /dev/null @@ -1,60 +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.util - -import com.intellij.openapi.Disposable -import com.intellij.openapi.diagnostic.Logger -import com.intellij.openapi.progress.ProcessCanceledException -import com.intellij.openapi.progress.ProgressManager -import com.intellij.openapi.progress.util.BackgroundTaskUtil -import com.intellij.openapi.project.DumbService -import com.intellij.openapi.project.Project -import com.intellij.openapi.util.Computable -import com.intellij.openapi.util.ThrowableComputable -import org.jetbrains.annotations.Nls -import org.jetbrains.kotlin.idea.util.application.runReadAction -import java.util.concurrent.Future -import java.util.concurrent.TimeUnit -import java.util.concurrent.TimeoutException - -object ProgressIndicatorUtils { - private val LOG = Logger.getInstance(ProgressIndicatorUtils::class.java) - - @JvmStatic - fun underModalProgress( - project: Project, - @Nls progressTitle: String, - computable: () -> T - ): T { - val dumbService = DumbService.getInstance(project) - val useAlternativeResolve = dumbService.isAlternativeResolveEnabled - val inReadAction = - ThrowableComputable { runReadAction { return@runReadAction computable() } } - val process = - if (useAlternativeResolve) ThrowableComputable { dumbService.computeWithAlternativeResolveEnabled(inReadAction) } else inReadAction - return ProgressManager.getInstance().runProcessWithProgressSynchronously(process, progressTitle, true, project) - } - - fun runUnderDisposeAwareIndicator( - parent: Disposable, - computable: () -> T - ): T = BackgroundTaskUtil.runUnderDisposeAwareIndicator(parent, Computable { computable() }) - - @JvmStatic - fun awaitWithCheckCanceled(future: Future): T { - while (true) { - ProgressManager.checkCanceled() - try { - return future.get(50, TimeUnit.MILLISECONDS) - } catch (e: TimeoutException) { - // ignore - } catch (e: Exception) { - LOG.warn(e) - throw ProcessCanceledException(e) - } - } - } -} \ No newline at end of file diff --git a/idea/testData/intentions/importAllMembers/AmbiguousCalls.kt.191 b/idea/testData/intentions/importAllMembers/AmbiguousCalls.kt.191 deleted file mode 100644 index a5c3d49a805..00000000000 --- a/idea/testData/intentions/importAllMembers/AmbiguousCalls.kt.191 +++ /dev/null @@ -1,17 +0,0 @@ -// INTENTION_TEXT: "Import members from 'javax.swing.SwingUtilities'" -// WITH_RUNTIME -// ERROR: None of the following functions can be called with the arguments supplied:
public open fun convertPoint(source: Component!, aPoint: Point!, destination: Component!): Point! defined in javax.swing.SwingUtilities
public open fun convertPoint(source: Component!, x: Int, y: Int, destination: Component!): Point! defined in javax.swing.SwingUtilities -// ERROR: None of the following functions can be called with the arguments supplied:
public open fun convertPoint(source: Component!, aPoint: Point!, destination: Component!): Point! defined in javax.swing.SwingUtilities
public open fun convertPoint(source: Component!, x: Int, y: Int, destination: Component!): Point! defined in javax.swing.SwingUtilities -// ERROR: Unresolved reference: unresolved - -import javax.swing.SwingUtilities - -fun foo() { - SwingUtilities.convertPoint() - - val bottom = SwingUtilities.BOTTOM - - SwingUtilities.convertPoint() - - SwingUtilities.unresolved -} diff --git a/idea/testData/intentions/importAllMembers/AmbiguousCalls.kt.after.191 b/idea/testData/intentions/importAllMembers/AmbiguousCalls.kt.after.191 deleted file mode 100644 index c147e62c172..00000000000 --- a/idea/testData/intentions/importAllMembers/AmbiguousCalls.kt.after.191 +++ /dev/null @@ -1,18 +0,0 @@ -// INTENTION_TEXT: "Import members from 'javax.swing.SwingUtilities'" -// WITH_RUNTIME -// ERROR: None of the following functions can be called with the arguments supplied:
public open fun convertPoint(source: Component!, aPoint: Point!, destination: Component!): Point! defined in javax.swing.SwingUtilities
public open fun convertPoint(source: Component!, x: Int, y: Int, destination: Component!): Point! defined in javax.swing.SwingUtilities -// ERROR: None of the following functions can be called with the arguments supplied:
public open fun convertPoint(source: Component!, aPoint: Point!, destination: Component!): Point! defined in javax.swing.SwingUtilities
public open fun convertPoint(source: Component!, x: Int, y: Int, destination: Component!): Point! defined in javax.swing.SwingUtilities -// ERROR: Unresolved reference: unresolved - -import javax.swing.SwingUtilities -import javax.swing.SwingUtilities.* - -fun foo() { - convertPoint() - - val bottom = BOTTOM - - convertPoint() - - SwingUtilities.unresolved -} diff --git a/idea/testData/parameterInfo/functionCall/NoSynthesizedParameterNames.kt.191 b/idea/testData/parameterInfo/functionCall/NoSynthesizedParameterNames.kt.191 deleted file mode 100644 index 714001a9116..00000000000 --- a/idea/testData/parameterInfo/functionCall/NoSynthesizedParameterNames.kt.191 +++ /dev/null @@ -1,9 +0,0 @@ -// WITH_RUNTIME - -lateinit var x: java.lang.Readable - -val file = x.read() - -/* -Text: (CharBuffer!), Disabled: false, Strikeout: false, Green: true -*/ diff --git a/idea/testData/quickfix/supertypeInitialization/addImport.kt.after.191 b/idea/testData/quickfix/supertypeInitialization/addImport.kt.after.191 deleted file mode 100644 index 8b194d9d2a5..00000000000 --- a/idea/testData/quickfix/supertypeInitialization/addImport.kt.after.191 +++ /dev/null @@ -1,5 +0,0 @@ -// "Add constructor parameters from DataInputStream(InputStream!)" "true" -import java.io.DataInputStream -import java.io.InputStream - -class C(`in`: InputStream?) : DataInputStream(`in`) diff --git a/idea/testData/quickfix/supertypeInitialization/multipleConstructors.kt.after.191 b/idea/testData/quickfix/supertypeInitialization/multipleConstructors.kt.after.191 deleted file mode 100644 index 1378ec61d17..00000000000 --- a/idea/testData/quickfix/supertypeInitialization/multipleConstructors.kt.after.191 +++ /dev/null @@ -1,5 +0,0 @@ -// "Add constructor parameters from ArrayList((MutableCollection..Collection?))" "true" -// ACTION: Add constructor parameters from ArrayList(Int) -import java.util.ArrayList - -class C(c: MutableCollection?) : ArrayList(c) diff --git a/idea/testData/quickfix/typeMismatch/paramTypeLambdaMismatch.kt.191 b/idea/testData/quickfix/typeMismatch/paramTypeLambdaMismatch.kt.191 deleted file mode 100644 index 8b284fed0ad..00000000000 --- a/idea/testData/quickfix/typeMismatch/paramTypeLambdaMismatch.kt.191 +++ /dev/null @@ -1,12 +0,0 @@ -// "Surround with lambda" "false" -// ERROR: Type mismatch: inferred type is Object but () -> String was expected -// ACTION: Annotate constructor 'Object'... -// ACTION: Change parameter 'block' type of function 'str' to 'Object' -// ACTION: Create function 'str' -// ACTION: Edit method contract of 'Object' -// ACTION: Introduce import alias -fun fn() { - str(Object()) -} - -fun str(block: () -> String) {} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/moveUpDown/AbstractCodeMoverTest.kt.191 b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/moveUpDown/AbstractCodeMoverTest.kt.191 deleted file mode 100644 index 1b5b1b5a083..00000000000 --- a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/moveUpDown/AbstractCodeMoverTest.kt.191 +++ /dev/null @@ -1,125 +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.codeInsight.moveUpDown - -import com.intellij.application.options.CodeStyle -import com.intellij.codeInsight.editorActions.moveLeftRight.MoveElementLeftAction -import com.intellij.codeInsight.editorActions.moveLeftRight.MoveElementRightAction -import com.intellij.codeInsight.editorActions.moveUpDown.MoveStatementDownAction -import com.intellij.codeInsight.editorActions.moveUpDown.MoveStatementUpAction -import com.intellij.codeInsight.editorActions.moveUpDown.StatementUpDownMover -import com.intellij.openapi.application.ApplicationManager -import com.intellij.openapi.application.runWriteAction -import com.intellij.openapi.editor.actionSystem.EditorAction -import com.intellij.openapi.extensions.Extensions -import com.intellij.openapi.util.io.FileUtil -import com.intellij.testFramework.LightPlatformCodeInsightTestCase -import junit.framework.ComparisonFailure -import junit.framework.TestCase -import org.jetbrains.kotlin.formatter.FormatSettingsUtil -import org.jetbrains.kotlin.idea.codeInsight.upDownMover.KotlinDeclarationMover -import org.jetbrains.kotlin.idea.codeInsight.upDownMover.KotlinExpressionMover -import org.jetbrains.kotlin.idea.core.script.isScriptChangesNotifierDisabled -import org.jetbrains.kotlin.idea.formatter.kotlinCustomSettings -import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightTestCase -import org.jetbrains.kotlin.test.InTextDirectivesUtils -import org.jetbrains.kotlin.test.KotlinTestUtils -import java.io.File - -abstract class AbstractMoveStatementTest : AbstractCodeMoverTest() { - protected fun doTestClassBodyDeclaration(path: String) { - doTest(path, KotlinDeclarationMover::class.java) - } - - protected fun doTestExpression(path: String) { - doTest(path, KotlinExpressionMover::class.java) - } - - protected fun doTestExpressionWithTrailingComma(path: String) { - doTest(path, KotlinExpressionMover::class.java, true) - } - - private fun doTest(path: String, defaultMoverClass: Class, trailingComma: Boolean = false) { - doTest(path, trailingComma) { isApplicableExpected, direction -> - val movers = Extensions.getExtensions(StatementUpDownMover.STATEMENT_UP_DOWN_MOVER_EP) - val info = StatementUpDownMover.MoveInfo() - val actualMover = movers.firstOrNull { - it.checkAvailable(LightPlatformCodeInsightTestCase.getEditor(), LightPlatformCodeInsightTestCase.getFile(), info, direction == "down") - } ?: error("No mover found") - - assertEquals("Unmatched movers", defaultMoverClass.name, actualMover::class.java.name) - assertEquals("Invalid applicability", isApplicableExpected, info.toMove2 != null) - } - } -} - -abstract class AbstractMoveLeftRightTest : AbstractCodeMoverTest() { - protected fun doTest(path: String) { - doTest(path) { _, _ -> } - } -} - -@Suppress("DEPRECATION") -abstract class AbstractCodeMoverTest : KotlinLightCodeInsightTestCase() { - protected fun doTest( - path: String, - trailingComma: Boolean = false, - isApplicableChecker: (isApplicableExpected: Boolean, direction: String) -> Unit - ) { - configureByFile(path) - - val fileText = FileUtil.loadFile(File(path), true) - val direction = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// MOVE: ") ?: error("No MOVE directive found") - - val action = when (direction) { - "up" -> MoveStatementUpAction() - "down" -> MoveStatementDownAction() - "left" -> MoveElementLeftAction() - "right" -> MoveElementRightAction() - else -> error("Unknown direction: $direction") - } - - val isApplicableString = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// IS_APPLICABLE: ") - val isApplicableExpected = isApplicableString == null || isApplicableString == "true" - - isApplicableChecker(isApplicableExpected, direction) - - val codeStyleSettings = CodeStyle.getSettings(editor_.project!!) - try { - val configurator = FormatSettingsUtil.createConfigurator(fileText, codeStyleSettings) - configurator.configureSettings() - - if (trailingComma) codeStyleSettings.kotlinCustomSettings.ALLOW_TRAILING_COMMA = true - invokeAndCheck(path, action, isApplicableExpected) - } finally { - codeStyleSettings.clearCodeStyleSettings() - } - } - - private fun invokeAndCheck(path: String, action: EditorAction, isApplicableExpected: Boolean) { - val editor = editor_ - val dataContext = currentEditorDataContext_ - - val before = editor.document.text - runWriteAction { action.actionPerformed(editor, dataContext) } - - val after = editor.document.text - val actionDoesNothing = after == before - - TestCase.assertEquals(isApplicableExpected, !actionDoesNothing) - - if (isApplicableExpected) { - val afterFilePath = "$path.after" - try { - checkResultByFile(afterFilePath) - } catch (e: ComparisonFailure) { - KotlinTestUtils.assertEqualsToFile(File(afterFilePath), editor) - } - } - } - - override fun getTestDataPath() = "" -} diff --git a/idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/AbstractNavigateFromLibrarySourcesTest.kt.191 b/idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/AbstractNavigateFromLibrarySourcesTest.kt.191 deleted file mode 100644 index 364e7beb244..00000000000 --- a/idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/AbstractNavigateFromLibrarySourcesTest.kt.191 +++ /dev/null @@ -1,31 +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.decompiler.navigation - -import com.intellij.openapi.module.Module -import com.intellij.openapi.roots.LibraryOrderEntry -import com.intellij.openapi.roots.ModuleRootManager -import com.intellij.openapi.roots.OrderRootType -import com.intellij.openapi.vfs.VirtualFileManager -import com.intellij.psi.PsiElement -import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase -import org.jetbrains.kotlin.utils.sure - -abstract class AbstractNavigateFromLibrarySourcesTest : LightCodeInsightFixtureTestCase() { - val module: Module get() = myModule - - protected fun navigationElementForReferenceInLibrarySource(filePath: String, referenceText: String): PsiElement { - val libraryOrderEntry = ModuleRootManager.getInstance(module!!).orderEntries.first { it is LibraryOrderEntry } - val libSourcesRoot = libraryOrderEntry.getUrls(OrderRootType.SOURCES)[0] - val libUrl = "$libSourcesRoot/$filePath" - val vf = VirtualFileManager.getInstance().refreshAndFindFileByUrl(libUrl) - ?: error("Can't find library: $libUrl") - val psiFile = psiManager.findFile(vf)!! - val indexOf = psiFile.text!!.indexOf(referenceText) - val reference = psiFile.findReferenceAt(indexOf) - return reference.sure { "Couldn't find reference" }.resolve().sure { "Couldn't resolve reference" }.navigationElement!! - } -} diff --git a/idea/tests/org/jetbrains/kotlin/idea/decompiler/stubBuilder/ClsStubForWrongAbiVersionTest.kt.191 b/idea/tests/org/jetbrains/kotlin/idea/decompiler/stubBuilder/ClsStubForWrongAbiVersionTest.kt.191 deleted file mode 100644 index d83a1baac12..00000000000 --- a/idea/tests/org/jetbrains/kotlin/idea/decompiler/stubBuilder/ClsStubForWrongAbiVersionTest.kt.191 +++ /dev/null @@ -1,34 +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.decompiler.stubBuilder - -import com.intellij.openapi.module.Module -import com.intellij.testFramework.LightProjectDescriptor -import org.jetbrains.kotlin.idea.decompiler.textBuilder.findTestLibraryRoot -import org.jetbrains.kotlin.idea.test.KotlinJdkAndLibraryProjectDescriptor -import org.jetbrains.kotlin.test.JUnit3WithIdeaConfigurationRunner -import org.jetbrains.kotlin.test.KotlinTestUtils -import org.junit.runner.RunWith -import java.io.File - -@RunWith(JUnit3WithIdeaConfigurationRunner::class) -class ClsStubBuilderForWrongAbiVersionTest : AbstractClsStubBuilderTest() { - val module: Module get() = myModule - - fun testPackage() = testStubsForFileWithWrongAbiVersion("Wrong_packageKt") - - fun testClass() = testStubsForFileWithWrongAbiVersion("ClassWithWrongAbiVersion") - - private fun testStubsForFileWithWrongAbiVersion(className: String) { - val root = findTestLibraryRoot(module!!)!! - val result = root.findClassFileByName(className) - testClsStubsForFile(result, null) - } - - override fun getProjectDescriptor(): LightProjectDescriptor { - return KotlinJdkAndLibraryProjectDescriptor(File(KotlinTestUtils.getTestDataPathBase() + "/cli/jvm/wrongAbiVersionLib/bin")) - } -} diff --git a/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/InlayHintTypeTestUtil.kt.191 b/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/InlayHintTypeTestUtil.kt.191 deleted file mode 100644 index ba9b9730be0..00000000000 --- a/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/InlayHintTypeTestUtil.kt.191 +++ /dev/null @@ -1,41 +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.parameterInfo - -import com.intellij.codeInsight.hints.HintInfo -import com.intellij.codeInsight.hints.InlayParameterHintsExtension -import com.intellij.codeInsight.hints.isOwnsInlayInEditor -import com.intellij.openapi.editor.Editor -import com.intellij.psi.PsiElement -import com.intellij.psi.PsiFile -import com.intellij.psi.util.PsiTreeUtil -import com.intellij.testFramework.fixtures.JavaCodeInsightTestFixture -import org.junit.Assert - -internal fun JavaCodeInsightTestFixture.checkHintType(text: String, hintType: HintType) { - configureByText("A.kt", text.trimIndent()) - doHighlighting() - - checkHintType(hintType) -} - -internal fun JavaCodeInsightTestFixture.checkHintType(hintType: HintType) { - val hintInfo = getHintInfoFromProvider(caretOffset, file, editor) - Assert.assertNotNull("No hint available at caret", hintInfo) - Assert.assertEquals(hintType.option.name, (hintInfo as HintInfo.OptionInfo).optionName) -} - -// It's crucial for this method to be conformable with IDEA internals. -// Originally copied from com.intellij.codeInsight.hints.getHintInfoFromProvider() -private fun getHintInfoFromProvider(offset: Int, file: PsiFile, editor: Editor): HintInfo? { - val element = file.findElementAt(offset) ?: return null - val provider = InlayParameterHintsExtension.forLanguage(file.language) ?: return null - - val isHintOwnedByElement: (PsiElement) -> Boolean = { e -> provider.getHintInfo(e) != null && e.isOwnsInlayInEditor(editor) } - val method = PsiTreeUtil.findFirstParent(element, isHintOwnedByElement) ?: return null - - return provider.getHintInfo(method) -} diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/CommonIntentionActionsParametersTest.kt.191 b/idea/tests/org/jetbrains/kotlin/idea/quickfix/CommonIntentionActionsParametersTest.kt.191 deleted file mode 100644 index fb9b72d357c..00000000000 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/CommonIntentionActionsParametersTest.kt.191 +++ /dev/null @@ -1,57 +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.quickfix - -import com.intellij.lang.jvm.actions.createChangeParametersActions -import com.intellij.lang.jvm.actions.setMethodParametersRequest -import com.intellij.lang.jvm.types.JvmType -import com.intellij.psi.PsiType -import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixtureTestCase -import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor -import org.jetbrains.kotlin.test.JUnit3WithIdeaConfigurationRunner -import org.jetbrains.uast.UMethod -import org.junit.runner.RunWith - -@RunWith(JUnit3WithIdeaConfigurationRunner::class) -class CommonIntentionActionsParametersTest : LightPlatformCodeInsightFixtureTestCase() { - - override fun getProjectDescriptor() = KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE_FULL_JDK - - fun testSetParameters() { - myFixture.configureByText( - "foo.kt", - """ - class Foo { - fun bar() {} - } - """.trimIndent() - ) - - myFixture.launchAction( - createChangeParametersActions( - myFixture.atCaret().javaPsi, - setMethodParametersRequest( - linkedMapOf( - "i" to PsiType.INT, - "file" to PsiType.getTypeByName("java.io.File", project, myFixture.file.resolveScope) - ).entries - ) - ).findWithText("Change method parameters to '(i: Int, file: File)'") - ) - myFixture.checkResult( - """ - import java.io.File - - class Foo { - fun bar(i: Int, file: File) {} - } - """.trimIndent(), - true - ) - } - -} - diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/UpdateConfigurationQuickFixTest.kt.191 b/idea/tests/org/jetbrains/kotlin/idea/quickfix/UpdateConfigurationQuickFixTest.kt.191 deleted file mode 100644 index 31dd5fe8167..00000000000 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/UpdateConfigurationQuickFixTest.kt.191 +++ /dev/null @@ -1,236 +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.quickfix - -import com.intellij.facet.FacetManager -import com.intellij.facet.impl.FacetUtil -import com.intellij.openapi.module.Module -import com.intellij.openapi.roots.ModuleRootModificationUtil.updateModel -import com.intellij.openapi.roots.OrderRootType -import com.intellij.openapi.roots.ui.configuration.libraryEditor.NewLibraryEditor -import com.intellij.openapi.util.io.FileUtil -import com.intellij.openapi.vfs.JarFileSystem -import com.intellij.openapi.vfs.LocalFileSystem -import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixtureTestCase -import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments.Companion.DEFAULT -import org.jetbrains.kotlin.config.CompilerSettings.Companion.DEFAULT_ADDITIONAL_ARGUMENTS -import org.jetbrains.kotlin.config.LanguageFeature -import org.jetbrains.kotlin.config.LanguageVersion -import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCommonCompilerArgumentsHolder -import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCompilerSettings -import org.jetbrains.kotlin.idea.configuration.KotlinJavaModuleConfigurator -import org.jetbrains.kotlin.idea.facet.KotlinFacetType -import org.jetbrains.kotlin.idea.facet.getRuntimeLibraryVersion -import org.jetbrains.kotlin.idea.project.getLanguageVersionSettings -import org.jetbrains.kotlin.idea.project.languageVersionSettings -import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil -import org.jetbrains.kotlin.idea.test.configureKotlinFacet -import org.jetbrains.kotlin.idea.versions.bundledRuntimeVersion -import org.jetbrains.kotlin.test.JUnit3WithIdeaConfigurationRunner -import org.jetbrains.kotlin.utils.KotlinPaths -import org.jetbrains.kotlin.utils.PathUtil -import org.junit.runner.RunWith -import java.io.File - -@RunWith(JUnit3WithIdeaConfigurationRunner::class) -class UpdateConfigurationQuickFixTest : LightPlatformCodeInsightFixtureTestCase() { - - val module: Module get() = myModule - - fun testDisableInlineClasses() { - configureRuntime("mockRuntime11") - resetProjectSettings(LanguageVersion.KOTLIN_1_3) - myFixture.configureByText("foo.kt", "inline class My(val n: Int)") - - assertEquals(LanguageFeature.State.ENABLED_WITH_WARNING, inlineClassesSupport) - assertTrue(myFixture.availableIntentions.none { it.text == "Disable inline classes support in the project" }) - } - - fun testEnableInlineClasses() { - configureRuntime("mockRuntime11") - resetProjectSettings(LanguageVersion.KOTLIN_1_3) - myFixture.configureByText("foo.kt", "inline class My(val n: Int)") - - assertEquals(LanguageFeature.State.ENABLED_WITH_WARNING, inlineClassesSupport) - myFixture.launchAction(myFixture.findSingleIntention("Enable inline classes support in the project")) - assertEquals(LanguageFeature.State.ENABLED, inlineClassesSupport) - } - - fun testEnableCoroutines() { - configureRuntime("mockRuntime11") - resetProjectSettings(LanguageVersion.KOTLIN_1_1) - myFixture.configureByText("foo.kt", "suspend fun foo()") - - assertEquals(DEFAULT, KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.coroutinesState) - assertEquals(LanguageFeature.State.ENABLED_WITH_WARNING, coroutineSupport) - myFixture.launchAction(myFixture.findSingleIntention("Enable coroutine support in the project")) - assertEquals(LanguageFeature.State.ENABLED, coroutineSupport) - } - - fun testDisableCoroutines() { - configureRuntime("mockRuntime11") - resetProjectSettings(LanguageVersion.KOTLIN_1_1) - myFixture.configureByText("foo.kt", "suspend fun foo()") - - assertEquals(DEFAULT, KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.coroutinesState) - assertEquals(LanguageFeature.State.ENABLED_WITH_WARNING, coroutineSupport) - myFixture.launchAction(myFixture.findSingleIntention("Disable coroutine support in the project")) - assertEquals(LanguageFeature.State.ENABLED_WITH_ERROR, coroutineSupport) - } - - fun testEnableCoroutinesFacet() { - configureRuntime("mockRuntime11") - val facet = configureKotlinFacet(module) { - settings.languageLevel = LanguageVersion.KOTLIN_1_1 - } - resetProjectSettings(LanguageVersion.KOTLIN_1_1) - myFixture.configureByText("foo.kt", "suspend fun foo()") - - assertEquals(LanguageFeature.State.ENABLED_WITH_WARNING, facet.configuration.settings.coroutineSupport) - myFixture.launchAction(myFixture.findSingleIntention("Enable coroutine support in the current module")) - assertEquals(LanguageFeature.State.ENABLED, facet.configuration.settings.coroutineSupport) - } - - fun testEnableCoroutines_UpdateRuntime() { - configureRuntime("mockRuntime106") - resetProjectSettings(LanguageVersion.KOTLIN_1_1) - myFixture.configureByText("foo.kt", "suspend fun foo()") - - assertEquals(LanguageFeature.State.ENABLED_WITH_WARNING, coroutineSupport) - myFixture.launchAction(myFixture.findSingleIntention("Enable coroutine support in the project")) - assertEquals(LanguageFeature.State.ENABLED, coroutineSupport) - assertEquals(bundledRuntimeVersion(), getRuntimeLibraryVersion(myFixture.module)) - } - - fun testIncreaseLangLevel() { - configureRuntime("mockRuntime11") - resetProjectSettings(LanguageVersion.KOTLIN_1_0) - myFixture.configureByText("foo.kt", "val x get() = 1") - - myFixture.launchAction(myFixture.findSingleIntention("Set project language version to 1.1")) - - assertEquals("1.1", KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.languageVersion) - assertEquals("1.0", KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.apiVersion) - } - - fun testIncreaseLangLevelFacet() { - configureRuntime("mockRuntime11") - resetProjectSettings(LanguageVersion.KOTLIN_1_0) - configureKotlinFacet(module) { - settings.languageLevel = LanguageVersion.KOTLIN_1_0 - settings.apiLevel = LanguageVersion.KOTLIN_1_0 - } - myFixture.configureByText("foo.kt", "val x get() = 1") - - assertEquals(LanguageVersion.KOTLIN_1_0, module.languageVersionSettings.languageVersion) - myFixture.launchAction(myFixture.findSingleIntention("Set module language version to 1.1")) - assertEquals(LanguageVersion.KOTLIN_1_1, module.languageVersionSettings.languageVersion) - } - - fun testIncreaseLangAndApiLevel() { - configureRuntime("mockRuntime11") - resetProjectSettings(LanguageVersion.KOTLIN_1_0) - myFixture.configureByText("foo.kt", "val x = \"s\"::length") - - myFixture.launchAction(myFixture.findSingleIntention("Set project language version to 1.1")) - - assertEquals("1.1", KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.languageVersion) - assertEquals("1.1", KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.apiVersion) - } - - fun testIncreaseLangAndApiLevel_10() { - configureRuntime("mockRuntime106") - resetProjectSettings(LanguageVersion.KOTLIN_1_0) - myFixture.configureByText("foo.kt", "val x = \"s\"::length") - - myFixture.launchAction(myFixture.findSingleIntention("Set project language version to 1.1")) - - assertEquals("1.1", KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.languageVersion) - assertEquals("1.1", KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.apiVersion) - - assertEquals(bundledRuntimeVersion(), getRuntimeLibraryVersion(myFixture.module)) - } - - fun testIncreaseLangLevelFacet_10() { - configureRuntime("mockRuntime106") - resetProjectSettings(LanguageVersion.KOTLIN_1_0) - configureKotlinFacet(module) { - settings.languageLevel = LanguageVersion.KOTLIN_1_0 - settings.apiLevel = LanguageVersion.KOTLIN_1_0 - } - myFixture.configureByText("foo.kt", "val x = \"s\"::length") - - assertEquals(LanguageVersion.KOTLIN_1_0, module.languageVersionSettings.languageVersion) - myFixture.launchAction(myFixture.findSingleIntention("Set module language version to 1.1")) - assertEquals(LanguageVersion.KOTLIN_1_1, module.languageVersionSettings.languageVersion) - - assertEquals(bundledRuntimeVersion(), getRuntimeLibraryVersion(myFixture.module)) - } - - fun testAddKotlinReflect() { - configureRuntime("actualRuntime") - myFixture.configureByText( - "foo.kt", """class Foo(val prop: Any) { - fun func() {} - } - - fun y01() = Foo::prop.getter - """ - ) - myFixture.launchAction(myFixture.findSingleIntention("Add 'kotlin-reflect.jar' to the classpath")) - val kotlinRuntime = KotlinJavaModuleConfigurator.instance.getKotlinLibrary(module)!! - val classes = kotlinRuntime.getFiles(OrderRootType.CLASSES).map { it.name } - assertContainsElements(classes, "kotlin-reflect.jar") - val sources = kotlinRuntime.getFiles(OrderRootType.SOURCES) - assertContainsElements(sources.map { it.name }, "kotlin-reflect-sources.jar") - } - - private fun configureRuntime(path: String) { - val name = if (path == "mockRuntime106") "kotlin-runtime.jar" else "kotlin-stdlib.jar" - val sourcePath = when (path) { - "actualRuntime" -> PathUtil.kotlinPathsForIdeaPlugin.jar(KotlinPaths.Jar.StdLib) - else -> File("idea/testData/configuration/$path/$name") - } - val tempFile = File(FileUtil.createTempDirectory("kotlin-update-configuration", null), name) - FileUtil.copy(sourcePath, tempFile) - val tempVFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(tempFile) ?: error("Can't find file: $tempFile") - - updateModel(myFixture.module) { model -> - val editor = NewLibraryEditor() - editor.name = "KotlinJavaRuntime" - - editor.addRoot(JarFileSystem.getInstance().getJarRootForLocalFile(tempVFile)!!, OrderRootType.CLASSES) - - ConfigLibraryUtil.addLibrary(editor, model) - } - } - - private fun resetProjectSettings(version: LanguageVersion) { - KotlinCompilerSettings.getInstance(project).update { - additionalArguments = DEFAULT_ADDITIONAL_ARGUMENTS - } - KotlinCommonCompilerArgumentsHolder.getInstance(project).update { - languageVersion = version.versionString - apiVersion = version.versionString - coroutinesState = DEFAULT - } - } - - private val coroutineSupport: LanguageFeature.State - get() = project.getLanguageVersionSettings().getFeatureSupport(LanguageFeature.Coroutines) - - private val inlineClassesSupport: LanguageFeature.State - get() = project.getLanguageVersionSettings().getFeatureSupport(LanguageFeature.InlineClasses) - - override fun tearDown() { - resetProjectSettings(LanguageVersion.LATEST_STABLE) - FacetManager.getInstance(module).getFacetByType(KotlinFacetType.TYPE_ID)?.let { - FacetUtil.deleteFacet(it) - } - ConfigLibraryUtil.removeLibrary(module, "KotlinJavaRuntime") - super.tearDown() - } -} diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/InplaceRenameTest.kt.191 b/idea/tests/org/jetbrains/kotlin/idea/refactoring/InplaceRenameTest.kt.191 deleted file mode 100644 index 0e1140da639..00000000000 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/InplaceRenameTest.kt.191 +++ /dev/null @@ -1,258 +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.refactoring - -import com.intellij.codeInsight.TargetElementUtil -import com.intellij.codeInsight.template.impl.TemplateManagerImpl -import com.intellij.openapi.actionSystem.CommonDataKeys -import com.intellij.openapi.actionSystem.impl.SimpleDataContext -import com.intellij.openapi.command.WriteCommandAction -import com.intellij.refactoring.BaseRefactoringProcessor -import com.intellij.refactoring.rename.inplace.VariableInplaceRenameHandler -import com.intellij.testFramework.LightPlatformCodeInsightTestCase -import com.intellij.testFramework.fixtures.CodeInsightTestUtil -import junit.framework.TestCase -import org.jetbrains.kotlin.idea.liveTemplates.setTemplateTestingCompat -import org.jetbrains.kotlin.idea.refactoring.rename.KotlinMemberInplaceRenameHandler -import org.jetbrains.kotlin.idea.refactoring.rename.KotlinVariableInplaceRenameHandler -import org.jetbrains.kotlin.idea.refactoring.rename.RenameKotlinImplicitLambdaParameter -import org.jetbrains.kotlin.idea.refactoring.rename.findElementForRename -import org.jetbrains.kotlin.idea.test.PluginTestCaseBase -import org.jetbrains.kotlin.psi.KtNameReferenceExpression -import org.jetbrains.kotlin.test.InTextDirectivesUtils -import org.jetbrains.kotlin.test.JUnit3WithIdeaConfigurationRunner -import org.junit.runner.RunWith -import kotlin.test.assertFalse -import kotlin.test.assertTrue - -@RunWith(JUnit3WithIdeaConfigurationRunner::class) -class InplaceRenameTest : LightPlatformCodeInsightTestCase() { - override fun isRunInWriteAction(): Boolean = false - override fun getTestDataPath(): String = PluginTestCaseBase.getTestDataPathBase() + "/refactoring/rename/inplace/" - - fun testLocalVal() { - doTestMemberInplaceRename("y") - } - - fun testForLoop() { - doTestInplaceRename("j") - } - - fun testTryCatch() { - doTestInplaceRename("e1") - } - - fun testFunctionLiteral() { - doTestInplaceRename("y") - } - - fun testFunctionLiteralIt() { - doTestImplicitLambdaParameter("y") - } - - fun testFunctionLiteralItEndCaret() { - doTestImplicitLambdaParameter("y") - } - - fun testFunctionLiteralParenthesis() { - doTestInplaceRename("y") - } - - fun testLocalFunction() { - doTestMemberInplaceRename("bar") - } - - fun testFunctionParameterNotInplace() { - doTestInplaceRename(null) - } - - fun testGlobalFunctionNotInplace() { - doTestInplaceRename(null) - } - - fun testTopLevelValNotInplace() { - doTestInplaceRename(null) - } - - fun testLabelFromFunction() { - doTestMemberInplaceRename("foo") - } - - fun testMultiDeclaration() { - doTestInplaceRename("foo") - } - - fun testLocalVarShadowingMemberProperty() { - doTestMemberInplaceRename("name1") - } - - fun testNoReformat() { - doTestMemberInplaceRename("subject2") - } - - fun testInvokeToFoo() { - doTestMemberInplaceRename("foo") - } - - fun testInvokeToGet() { - doTestMemberInplaceRename("get") - } - - fun testInvokeToGetWithQualifiedExpr() { - doTestMemberInplaceRename("get") - } - - fun testInvokeToGetWithSafeQualifiedExpr() { - doTestMemberInplaceRename("get") - } - - fun testInvokeToPlus() { - doTestMemberInplaceRename("plus") - } - - fun testGetToFoo() { - doTestMemberInplaceRename("foo") - } - - fun testGetToInvoke() { - doTestMemberInplaceRename("invoke") - } - - fun testGetToInvokeWithQualifiedExpr() { - doTestMemberInplaceRename("invoke") - } - - fun testGetToInvokeWithSafeQualifiedExpr() { - doTestMemberInplaceRename("invoke") - } - - fun testGetToPlus() { - doTestMemberInplaceRename("plus") - } - - fun testAddQuotes() { - doTestMemberInplaceRename("is") - } - - fun testAddThis() { - doTestMemberInplaceRename("foo") - } - - fun testExtensionAndNoReceiver() { - doTestMemberInplaceRename("b") - } - - fun testTwoExtensions() { - doTestMemberInplaceRename("example") - } - - fun testQuotedLocalVar() { - doTestMemberInplaceRename("x") - } - - fun testQuotedParameter() { - doTestMemberInplaceRename("x") - } - - fun testEraseCompanionName() { - doTestMemberInplaceRename("") - } - - fun testLocalVarRedeclaration() { - doTestMemberInplaceRename("localValB") - } - - fun testLocalFunRedeclaration() { - doTestMemberInplaceRename("localFunB") - } - - fun testLocalClassRedeclaration() { - doTestMemberInplaceRename("LocalClassB") - } - - fun testBacktickedWithAccessors() { - doTestMemberInplaceRename("`object`") - } - - fun testNoTextUsagesForLocalVar() { - doTestMemberInplaceRename("w") - } - - private fun doTestImplicitLambdaParameter(newName: String) { - configureByFile(getTestName(false) + ".kt") - - // This code is copy-pasted from CodeInsightTestUtil.doInlineRename() and slightly modified. - // Original method was not suitable because it expects renamed element to be reference to other or referrable - - val file = getFile()!! - val editor = getEditor()!! - val element = file.findElementForRename(editor.caretModel.offset)!! - assertNotNull(element) - - val dataContext = SimpleDataContext.getSimpleContext(CommonDataKeys.PSI_ELEMENT.name, element, - getCurrentEditorDataContext()) - val handler = RenameKotlinImplicitLambdaParameter() - - assertTrue(handler.isRenaming(dataContext), "In-place rename not allowed for " + element) - - val project = editor.project!! - - setTemplateTestingCompat(project, testRootDisposable) - - object : WriteCommandAction.Simple(project) { - override fun run() { - handler.invoke(project, editor, file, dataContext) - } - }.execute() - - var state = TemplateManagerImpl.getTemplateState(editor) - assert(state != null) - val range = state!!.currentVariableRange - assert(range != null) - object : WriteCommandAction.Simple(project) { - override fun run() { - editor.document.replaceString(range!!.startOffset, range.endOffset, newName) - } - }.execute().throwException() - - state = TemplateManagerImpl.getTemplateState(editor) - assert(state != null) - state!!.gotoEnd(false) - - checkResultByFile(getTestName(false) + ".kt.after") - } - - private fun doTestMemberInplaceRename(newName: String?) { - doTestInplaceRename(newName, KotlinMemberInplaceRenameHandler()) - } - - private fun doTestInplaceRename(newName: String?, handler: VariableInplaceRenameHandler = KotlinVariableInplaceRenameHandler()) { - configureByFile(getTestName(false) + ".kt") - val element = TargetElementUtil.findTargetElement( - myEditor, - TargetElementUtil.ELEMENT_NAME_ACCEPTED or TargetElementUtil.REFERENCED_ELEMENT_ACCEPTED - ) - - assertNotNull(element) - - val dataContext = SimpleDataContext.getSimpleContext(CommonDataKeys.PSI_ELEMENT.name, element!!, - getCurrentEditorDataContext()) - - if (newName == null) { - assertFalse(handler.isRenaming(dataContext), "In-place rename is allowed for " + element) - } - else { - try { - assertTrue(handler.isRenaming(dataContext), "In-place rename not allowed for " + element) - CodeInsightTestUtil.doInlineRename(handler, newName, getEditor(), element) - checkResultByFile(getTestName(false) + ".kt.after") - } catch (e: BaseRefactoringProcessor.ConflictsInTestsException) { - val expectedMessage = InTextDirectivesUtils.findStringWithPrefixes(myFile.text, "// SHOULD_FAIL_WITH: ") - TestCase.assertEquals(expectedMessage, e.messages.joinToString()) - } - } - } -} diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/MoveHandlerDelegateCompat.kt.191 b/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/MoveHandlerDelegateCompat.kt.191 deleted file mode 100644 index 62b49b228f0..00000000000 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/MoveHandlerDelegateCompat.kt.191 +++ /dev/null @@ -1,17 +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.refactoring.move - -import com.intellij.psi.PsiElement -import com.intellij.psi.PsiReference -import com.intellij.refactoring.move.MoveHandlerDelegate - -// FIX ME WHEN BUNCH 191 REMOVED -internal fun MoveHandlerDelegate.canMoveCompat( - elements: Array, - targetContainer: PsiElement?, - reference: PsiReference? -): Boolean = canMove(elements, targetContainer) \ No newline at end of file diff --git a/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterForWebDemoTest.kt.191 b/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterForWebDemoTest.kt.191 deleted file mode 100644 index 9ccbcc694af..00000000000 --- a/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterForWebDemoTest.kt.191 +++ /dev/null @@ -1,137 +0,0 @@ -/* - * 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.j2k - -import com.intellij.codeInsight.ContainerProvider -import com.intellij.codeInsight.NullableNotNullManager -import com.intellij.codeInsight.NullableNotNullManagerImpl -import com.intellij.codeInsight.runner.JavaMainMethodProvider -import com.intellij.core.CoreApplicationEnvironment -import com.intellij.core.JavaCoreApplicationEnvironment -import com.intellij.core.JavaCoreProjectEnvironment -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.* -import com.intellij.psi.augment.PsiAugmentProvider -import com.intellij.psi.augment.TypeAnnotationModifier -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 -import java.io.File -import java.net.URLClassLoader - -abstract class AbstractJavaToKotlinConverterForWebDemoTest : TestCase() { - val DISPOSABLE = Disposer.newDisposable() - - fun doTest(javaPath: String) { - try { - val fileContents = FileUtil.loadFile(File(javaPath), true) - val javaCoreEnvironment: JavaCoreProjectEnvironment = setUpJavaCoreEnvironment() - translateToKotlin(fileContents, javaCoreEnvironment.project) - } - finally { - Disposer.dispose(DISPOSABLE) - } - } - - fun setUpJavaCoreEnvironment(): JavaCoreProjectEnvironment { - Extensions.cleanRootArea(DISPOSABLE) - val area = Extensions.getRootArea() - - registerExtensionPoints(area) - - val applicationEnvironment = JavaCoreApplicationEnvironment(DISPOSABLE) - val javaCoreEnvironment = object : JavaCoreProjectEnvironment(DISPOSABLE, applicationEnvironment) { - override fun preregisterServices() { - val projectArea = Extensions.getArea(project) - CoreApplicationEnvironment.registerExtensionPoint(projectArea, PsiTreeChangePreprocessor.EP_NAME, PsiTreeChangePreprocessor::class.java) - CoreApplicationEnvironment.registerExtensionPoint(projectArea, PsiElementFinder.EP_NAME, PsiElementFinder::class.java) - CoreApplicationEnvironment.registerExtensionPoint(projectArea, JvmElementProvider.EP_NAME, JvmElementProvider::class.java) - } - } - - javaCoreEnvironment.project.registerService(NullableNotNullManager::class.java, object : NullableNotNullManagerImpl(javaCoreEnvironment.project) { - override fun isNullable(owner: PsiModifierListOwner, checkBases: Boolean) = !isNotNull(owner, checkBases) - override fun isNotNull(owner: PsiModifierListOwner, checkBases: Boolean) = true - override fun hasHardcodedContracts(element: PsiElement): Boolean = false - override fun getNullables() = emptyList() - override fun setNullables(vararg p0: String) = Unit - override fun getNotNulls() = emptyList() - override fun setNotNulls(vararg p0: String) = Unit - override fun getDefaultNullable() = "" - override fun setDefaultNullable(defaultNullable: String) = Unit - override fun getDefaultNotNull() = "" - override fun setDefaultNotNull(p0: String) = Unit - override fun setInstrumentedNotNulls(p0: List) = Unit - override fun getInstrumentedNotNulls() = emptyList() - override fun isJsr305Default(psiAnnotation: PsiAnnotation, p1: Array) = null - }) - - applicationEnvironment.application.registerService(JavaClassSupers::class.java, JavaClassSupersImpl::class.java) - - for (root in PathUtil.getJdkClassesRootsFromCurrentJre()) { - javaCoreEnvironment.addJarToClassPath(root) - } - val annotations: File? = findAnnotations() - if (annotations != null && annotations.exists()) { - javaCoreEnvironment.addJarToClassPath(annotations) - } - return javaCoreEnvironment - } - - 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) - CoreApplicationEnvironment.registerExtensionPoint(area, PsiAugmentProvider.EP_NAME, PsiAugmentProvider::class.java) - CoreApplicationEnvironment.registerExtensionPoint(area, JavaMainMethodProvider.EP_NAME, JavaMainMethodProvider::class.java) - - CoreApplicationEnvironment.registerExtensionPoint(area, ContainerProvider.EP_NAME, ContainerProvider::class.java) - CoreApplicationEnvironment.registerExtensionPoint(area, ClassFileDecompilers.EP_NAME, ClassFileDecompilers.Decompiler::class.java) - - CoreApplicationEnvironment.registerExtensionPoint(area, TypeAnnotationModifier.EP_NAME, TypeAnnotationModifier::class.java) - CoreApplicationEnvironment.registerExtensionPoint(area, MetaLanguage.EP_NAME, MetaLanguage::class.java) - CoreApplicationEnvironment.registerExtensionPoint(area, JavaModuleSystem.EP_NAME, JavaModuleSystem::class.java) - } - - fun findAnnotations(): File? { - var classLoader = JavaToKotlinTranslator::class.java.classLoader - while (classLoader != null) { - val loader = classLoader - if (loader is URLClassLoader) { - for (url in loader.urLs) { - if ("file" == url.protocol && url.file!!.endsWith("/annotations.jar")) { - return File(url.file!!) - } - } - } - classLoader = classLoader.parent - } - return null - } -} diff --git a/jps-plugin/src/org/jetbrains/kotlin/jps/build/ideaPlatform.kt.as35 b/jps-plugin/src/org/jetbrains/kotlin/jps/build/ideaPlatform.kt.as35 deleted file mode 100644 index 6546b2059d2..00000000000 --- a/jps-plugin/src/org/jetbrains/kotlin/jps/build/ideaPlatform.kt.as35 +++ /dev/null @@ -1,13 +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.jps.build - -import org.jetbrains.jps.incremental.CompileContext -import org.jetbrains.jps.incremental.messages.CompilerMessage - -fun jpsReportInternalBuilderError(context: CompileContext, error: Throwable) { - KotlinBuilder.LOG.info(error) -} \ No newline at end of file diff --git a/nj2k/nj2k-services/src/org/jetbrains/kotlin/nj2k/postProcessing/processings/compat.kt.191 b/nj2k/nj2k-services/src/org/jetbrains/kotlin/nj2k/postProcessing/processings/compat.kt.191 deleted file mode 100644 index a5785c9dbef..00000000000 --- a/nj2k/nj2k-services/src/org/jetbrains/kotlin/nj2k/postProcessing/processings/compat.kt.191 +++ /dev/null @@ -1,16 +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.nj2k.postProcessing.processings - -import com.intellij.psi.PsiReference -import com.intellij.refactoring.rename.RenamePsiElementProcessor -import org.jetbrains.kotlin.psi.KtParameter - -// FIX ME WHEN BUNCH 191 REMOVED - -internal fun KtParameter.findReferences(renamer: RenamePsiElementProcessor): MutableCollection { - return renamer.findReferences(this, false) -} \ No newline at end of file diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUFile.kt.191 b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUFile.kt.191 deleted file mode 100644 index df9c68123ee..00000000000 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUFile.kt.191 +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2010-2016 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.uast.kotlin - -import com.intellij.psi.PsiClass -import com.intellij.psi.PsiComment -import com.intellij.psi.PsiElement -import com.intellij.psi.PsiRecursiveElementWalkingVisitor -import org.jetbrains.kotlin.asJava.findFacadeClass -import org.jetbrains.kotlin.asJava.toLightClass -import org.jetbrains.kotlin.psi.KtClassOrObject -import org.jetbrains.kotlin.psi.KtFile -import org.jetbrains.uast.* -import java.util.* - -class KotlinUFile( - override val psi: KtFile, - override val languagePlugin: UastLanguagePlugin = kotlinUastPlugin -) : UFile { - override val packageName: String - get() = psi.packageFqName.asString() - - override val annotations: List - get() = psi.annotationEntries.map { KotlinUAnnotation(it, this) } - - override val javaPsi: PsiElement? = null - - override val sourcePsi: PsiElement? = psi - - override val allCommentsInFile by lz { - val comments = ArrayList(0) - psi.accept(object : PsiRecursiveElementWalkingVisitor() { - override fun visitComment(comment: PsiComment) { - comments += UComment(comment, this@KotlinUFile) - } - }) - comments - } - - override val imports by lz { psi.importDirectives.map { KotlinUImportStatement(it, this) } } - - override val classes by lz { - val facadeOrScriptClass = if (psi.isScript()) psi.script?.toLightClass() else psi.findFacadeClass() - val classes = psi.declarations.mapNotNull { (it as? KtClassOrObject)?.toLightClass()?.toUClass() } - - (facadeOrScriptClass?.toUClass()?.let { listOf(it) } ?: emptyList()) + classes - } - - private fun PsiClass.toUClass() = languagePlugin.convertOpt(this, this@KotlinUFile) -} \ No newline at end of file diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt.191 b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt.191 deleted file mode 100644 index 7d3b6fc058f..00000000000 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt.191 +++ /dev/null @@ -1,198 +0,0 @@ -/* - * Copyright 2010-2016 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.uast.kotlin.declarations - -import com.intellij.psi.* -import org.jetbrains.kotlin.asJava.elements.* -import org.jetbrains.kotlin.lexer.KtTokens -import org.jetbrains.kotlin.psi.* -import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject -import org.jetbrains.kotlin.psi.psiUtil.getParentOfType -import org.jetbrains.kotlin.utils.SmartList -import org.jetbrains.uast.* -import org.jetbrains.uast.java.internal.JavaUElementWithComments -import org.jetbrains.uast.kotlin.* -import org.jetbrains.uast.kotlin.psi.UastFakeLightMethod -import org.jetbrains.uast.kotlin.psi.UastKotlinPsiParameter - -open class KotlinUMethod( - psi: PsiMethod, - final override val sourcePsi: KtDeclaration?, - givenParent: UElement? -) : KotlinAbstractUElement(givenParent), UMethodTypeSpecific, UAnchorOwner, JavaUElementWithComments, PsiMethod by psi { - - constructor(psi: KtLightMethod, givenParent: UElement?) : this(psi, getKotlinMemberOrigin(psi), givenParent) - - override val comments: List - get() = super.comments - - override val psi: PsiMethod = unwrap(psi) - - override val javaPsi = psi - - override fun getSourceElement() = sourcePsi ?: this - - private val kotlinOrigin = getKotlinMemberOrigin(psi.originalElement) ?: sourcePsi - - override fun getContainingFile(): PsiFile? { - kotlinOrigin?.containingFile?.let { return it } - return unwrapFakeFileForLightClass(psi.containingFile) - } - - override fun getNameIdentifier() = UastLightIdentifier(psi, kotlinOrigin as? KtDeclaration) - - override val annotations: List by lz { - psi.annotations - .mapNotNull { (it as? KtLightElement<*, *>)?.kotlinOrigin as? KtAnnotationEntry } - .map { KotlinUAnnotation(it, this) } - } - - private val receiver by lz { (sourcePsi as? KtCallableDeclaration)?.receiverTypeReference } - - override val uastParameters by lz { - - fun parameterOrigin(psiParameter: PsiParameter?): KtElement? = when (psiParameter) { - is KtLightElement<*, *> -> psiParameter.kotlinOrigin - is UastKotlinPsiParameter -> psiParameter.ktParameter - else -> null - } - - val lightParams = psi.parameterList.parameters - val receiver = receiver ?: return@lz lightParams.map { KotlinUParameter(it, parameterOrigin(it), this) } - val receiverLight = lightParams.firstOrNull() ?: return@lz emptyList() - val uParameters = SmartList(KotlinReceiverUParameter(receiverLight, receiver, this)) - lightParams.drop(1).mapTo(uParameters) { KotlinUParameter(it, parameterOrigin(it), this) } - uParameters - } - - override val uastAnchor by lazy { - KotlinUIdentifier( - nameIdentifier, - sourcePsi.let { sourcePsi -> - when (sourcePsi) { - is PsiNameIdentifierOwner -> sourcePsi.nameIdentifier - is KtObjectDeclaration -> sourcePsi.getObjectKeyword() - is KtPropertyAccessor -> sourcePsi.namePlaceholder - else -> sourcePsi?.navigationElement - } - }, - this - ) - } - - - override val uastBody by lz { - if (kotlinOrigin?.canAnalyze() != true) return@lz null // EA-137193 - val bodyExpression = when (kotlinOrigin) { - is KtFunction -> kotlinOrigin.bodyExpression - is KtPropertyAccessor -> kotlinOrigin.bodyExpression - is KtProperty -> when { - psi is KtLightMethod && psi.isGetter -> kotlinOrigin.getter?.bodyExpression - psi is KtLightMethod && psi.isSetter -> kotlinOrigin.setter?.bodyExpression - else -> null - } - else -> null - } ?: return@lz null - - wrapExpressionBody(this, bodyExpression) - } - - override val isOverride: Boolean - get() = (kotlinOrigin as? KtCallableDeclaration)?.hasModifier(KtTokens.OVERRIDE_KEYWORD) ?: false - - override val returnTypeReference: UTypeReferenceExpression? by lz { - (sourcePsi as? KtCallableDeclaration)?.typeReference?.let { - LazyKotlinUTypeReferenceExpression(it, this) { javaPsi.returnType ?: UastErrorType } - } - } - - override fun equals(other: Any?) = other is KotlinUMethod && psi == other.psi - - companion object { - private fun getKotlinMemberOrigin(element: PsiElement?): KtDeclaration? { - (element as? KtLightMember<*>)?.lightMemberOrigin?.auxiliaryOriginalElement?.let { return it } - (element as? KtLightElement<*, *>)?.kotlinOrigin?.let { return it as? KtDeclaration } - return null - } - - fun create(psi: KtLightMethod, containingElement: UElement?): KotlinUMethod { - val kotlinOrigin = psi.kotlinOrigin - return if (kotlinOrigin is KtConstructor<*>) { - KotlinConstructorUMethod( - kotlinOrigin.containingClassOrObject, - psi, - containingElement - ) - } else if (kotlinOrigin is KtParameter && kotlinOrigin.getParentOfType(true)?.isAnnotation() == true) - KotlinUAnnotationMethod(psi, containingElement) - else - KotlinUMethod(psi, containingElement) - } - } -} - -open class KotlinUAnnotationMethod( - psi: KtLightMethod, - givenParent: UElement? -) : KotlinUMethod(psi, psi.kotlinOrigin, givenParent), UAnnotationMethod { - - override val psi: KtLightMethod = unwrap(psi) - - override val uastDefaultValue by lz { - val annotationParameter = sourcePsi as? KtParameter ?: return@lz null - val defaultValue = annotationParameter.defaultValue ?: return@lz null - getLanguagePlugin().convertElement(defaultValue, this) as? UExpression - } - - -} - -class KotlinUMethodWithFakeLightDelegate internal constructor( - val original: KtFunction, - fakePsi: UastFakeLightMethod, - givenParent: UElement? -) : KotlinUMethod(fakePsi, original, givenParent) { - - constructor(original: KtFunction, containingLightClass: PsiClass, givenParent: UElement?) - : this(original, UastFakeLightMethod(original, containingLightClass), givenParent) - - override val annotations: List - get() = original.annotationEntries.mapNotNull { it.toUElementOfType() } - - override fun equals(other: Any?): Boolean { - if (this === other) return true - if (javaClass != other?.javaClass) return false - other as KotlinUMethodWithFakeLightDelegate - if (original != other.original) return false - return true - } - - override fun hashCode(): Int = original.hashCode() -} - -internal fun wrapExpressionBody(function: UElement, bodyExpression: KtExpression): UExpression? = when (bodyExpression) { - !is KtBlockExpression -> { - KotlinUBlockExpression.KotlinLazyUBlockExpression(function) { block -> - val implicitReturn = KotlinUImplicitReturnExpression(block) - val uBody = function.getLanguagePlugin().convertElement(bodyExpression, implicitReturn) as? UExpression - ?: return@KotlinLazyUBlockExpression emptyList() - listOf(implicitReturn.apply { returnExpression = uBody }) - } - - } - else -> function.getLanguagePlugin().convertElement(bodyExpression, function) as? UExpression -} diff --git a/plugins/uast-kotlin/tests/AbstractKotlinIdentifiersTest.kt.191 b/plugins/uast-kotlin/tests/AbstractKotlinIdentifiersTest.kt.191 deleted file mode 100644 index 5f2a69146c5..00000000000 --- a/plugins/uast-kotlin/tests/AbstractKotlinIdentifiersTest.kt.191 +++ /dev/null @@ -1,36 +0,0 @@ -package org.jetbrains.uast.test.kotlin - -import com.intellij.psi.PsiElement -import org.jetbrains.uast.* -import org.jetbrains.uast.test.common.UElementToParentMap -import org.jetbrains.uast.test.common.kotlin.IdentifiersTestBase -import org.jetbrains.uast.test.env.assertEqualsToFile -import java.io.File -import kotlin.test.assertNotNull - - -abstract class AbstractKotlinIdentifiersTest : AbstractKotlinUastTest(), IdentifiersTestBase { - - private fun getTestFile(testName: String, ext: String) = - File(File(TEST_KOTLIN_MODEL_DIR, testName).canonicalPath + '.' + ext) - - override fun getIdentifiersFile(testName: String): File = getTestFile(testName, "identifiers.txt") - - override fun check(testName: String, file: UFile) { - super.check(testName, file) - assertEqualsToFile("refNames", getTestFile(testName, "refNames.txt"), file.asRefNames()) - } -} - -private fun refNameRetriever(psiElement: PsiElement): UElement? = - when (val uElement = psiElement.toUElementOfExpectedTypes(UCallExpression::class.java, UReferenceExpression::class.java)) { - is UReferenceExpression -> uElement.referenceNameElement - is UCallExpression -> uElement.classReference?.referenceNameElement - else -> null - }?.also { - assertNotNull(it.sourcePsi, "referenceNameElement should have physical source, origin = $psiElement") - } - -fun UFile.asRefNames() = object : UElementToParentMap(::refNameRetriever) { - override fun renderSource(element: PsiElement): String = element.javaClass.simpleName -}.visitUFileAndGetResult(this) \ No newline at end of file diff --git a/plugins/uast-kotlin/tests/AbstractKotlinResolveEverythingTest.kt.191 b/plugins/uast-kotlin/tests/AbstractKotlinResolveEverythingTest.kt.191 deleted file mode 100644 index 4c0c166551f..00000000000 --- a/plugins/uast-kotlin/tests/AbstractKotlinResolveEverythingTest.kt.191 +++ /dev/null @@ -1,60 +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.uast.test.kotlin - -import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.psi.* -import org.jetbrains.kotlin.utils.addToStdlib.cast -import org.jetbrains.kotlin.utils.addToStdlib.safeAs -import org.jetbrains.uast.* -import org.jetbrains.uast.test.common.kotlin.IndentedPrintingVisitor -import org.jetbrains.uast.test.common.kotlin.visitUFileAndGetResult -import org.jetbrains.uast.test.env.kotlin.assertEqualsToFile -import java.io.File - - -abstract class AbstractKotlinResolveEverythingTest : AbstractKotlinUastTest() { - - private fun getTestFile(testName: String, ext: String) = - File(File(TEST_KOTLIN_MODEL_DIR, testName).canonicalPath + '.' + ext) - - - private fun UFile.resolvableWithTargets() = object : IndentedPrintingVisitor(KtBlockExpression::class) { - override fun render(element: PsiElement) = - sequenceOf(element.toUElementOfType(), element.toUElementOfType()).filterNotNull() - .filter { - when (it) { - is UCallExpression -> it.sourcePsi.safeAs()?.calleeExpression !is KtSimpleNameExpression - else -> true - } - }.takeIf { it.any() } - ?.joinTo(StringBuilder(), "\n") { ref -> - StringBuilder().apply { - val parent = ref.uastParent - append(parent?.asLogString()) - if (parent is UCallExpression) { - append("(resolves to ${parent.resolve()})") - } - append(" -> ") - append(ref.asLogString()) - append(" -> ") - append(ref.cast().resolve()) - append(": ") - append( - when (ref) { - is UReferenceExpression -> ref.resolvedName - is UCallExpression -> "" - else -> "" - } - ) - } - } - }.visitUFileAndGetResult(this) - - override fun check(testName: String, file: UFile) { - assertEqualsToFile("resolved", getTestFile(testName, "resolved.txt"), file.resolvableWithTargets()) - } -} \ No newline at end of file diff --git a/plugins/uast-kotlin/tests/AbstractKotlinUastLightCodeInsightFixtureTest.kt.191 b/plugins/uast-kotlin/tests/AbstractKotlinUastLightCodeInsightFixtureTest.kt.191 deleted file mode 100644 index 724b7a40c45..00000000000 --- a/plugins/uast-kotlin/tests/AbstractKotlinUastLightCodeInsightFixtureTest.kt.191 +++ /dev/null @@ -1,40 +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.uast.test.kotlin - -import com.intellij.openapi.util.registry.Registry -import com.intellij.openapi.vfs.VirtualFile -import com.intellij.openapi.vfs.VirtualFileManager -import com.intellij.testFramework.LightProjectDescriptor -import com.intellij.util.io.URLUtil -import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase -import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor -import org.jetbrains.uast.UFile -import org.jetbrains.uast.kotlin.KotlinUastLanguagePlugin -import java.io.File - -abstract class AbstractKotlinUastLightCodeInsightFixtureTest : KotlinLightCodeInsightFixtureTestCase() { - - override fun getProjectDescriptor(): LightProjectDescriptor = - KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE_FULL_JDK - - fun getVirtualFile(testName: String): VirtualFile { - val testFile = TEST_KOTLIN_MODEL_DIR.listFiles { pathname -> pathname.nameWithoutExtension == testName }.first() - val vfs = VirtualFileManager.getInstance().getFileSystem(URLUtil.FILE_PROTOCOL) - return vfs.findFileByPath(testFile.canonicalPath)!! - } - - abstract fun check(testName: String, file: UFile) - - fun doTest(testName: String, checkCallback: (String, UFile) -> Unit = { testName, file -> check(testName, file) }) { - val virtualFile = getVirtualFile(testName) - - val psiFile = myFixture.configureByText(virtualFile.name, File(virtualFile.canonicalPath!!).readText()) - val uFile = KotlinUastLanguagePlugin().convertElementWithParent(psiFile, null) ?: error("Can't get UFile for $testName") - checkCallback(testName, uFile as UFile) - } - -} \ No newline at end of file diff --git a/plugins/uast-kotlin/tests/org/jetbrains/uast/test/common/kotlin/ResolveTestBase.kt.191 b/plugins/uast-kotlin/tests/org/jetbrains/uast/test/common/kotlin/ResolveTestBase.kt.191 deleted file mode 100644 index 731ff0d07b7..00000000000 --- a/plugins/uast-kotlin/tests/org/jetbrains/uast/test/common/kotlin/ResolveTestBase.kt.191 +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2010-2017 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.uast.test.common.kotlin - -import com.intellij.psi.PsiNamedElement -import org.jetbrains.uast.UFile -import org.jetbrains.uast.UResolvable -import org.jetbrains.uast.test.env.kotlin.findElementByText -import org.junit.Assert.assertEquals - -interface ResolveTestBase { - fun check(testName: String, file: UFile) { - val refComment = file.allCommentsInFile.find { it.text.startsWith("// REF:") } ?: throw IllegalArgumentException("No // REF tag in file") - val resultComment = file.allCommentsInFile.find { it.text.startsWith("// RESULT:") } ?: throw IllegalArgumentException("No // RESULT tag in file") - - val refText = refComment.text.substringAfter("REF:") - val parent = refComment.uastParent - val matchingElement = parent.findElementByText(refText) - val resolveResult = matchingElement.resolve() ?: throw IllegalArgumentException("Unresolved reference") - val resultText = resolveResult.javaClass.simpleName + (if (resolveResult is PsiNamedElement) ":${resolveResult.name}" else "") - assertEquals(resultComment.text.substringAfter("RESULT:"), resultText) - } -} diff --git a/prepare/compiler/compiler.pro.191 b/prepare/compiler/compiler.pro.191 deleted file mode 100644 index bd793925a7a..00000000000 --- a/prepare/compiler/compiler.pro.191 +++ /dev/null @@ -1,256 +0,0 @@ --dontnote ** --dontwarn com.intellij.util.ui.IsRetina* --dontwarn com.intellij.util.ui.UIUtilities --dontwarn com.intellij.util.RetinaImage* --dontwarn apple.awt.* --dontwarn dk.brics.automaton.* --dontwarn org.fusesource.** --dontwarn org.imgscalr.Scalr** --dontwarn org.xerial.snappy.SnappyBundleActivator --dontwarn com.intellij.util.CompressionUtil --dontwarn com.intellij.util.SnappyInitializer --dontwarn com.intellij.util.SVGLoader --dontwarn com.intellij.util.SVGLoader$MyTranscoder --dontwarn net.sf.cglib.** --dontwarn org.objectweb.asm.** # this is ASM3, the old version that we do not use --dontwarn com.sun.jna.NativeString --dontwarn com.sun.jna.WString --dontwarn com.intellij.psi.util.PsiClassUtil --dontwarn org.apache.hadoop.io.compress.* --dontwarn com.google.j2objc.annotations.Weak --dontwarn org.iq80.snappy.HadoopSnappyCodec$SnappyCompressionInputStream --dontwarn org.iq80.snappy.HadoopSnappyCodec$SnappyCompressionOutputStream --dontwarn com.google.common.util.concurrent.* --dontwarn org.apache.xerces.dom.** --dontwarn org.apache.xerces.util.** --dontwarn org.w3c.dom.ElementTraversal --dontwarn javaslang.match.annotation.Unapply --dontwarn javaslang.match.annotation.Patterns --dontwarn javaslang.* --dontwarn kotlinx.collections.immutable.* --dontwarn kotlinx.collections.immutable.** --dontwarn com.google.errorprone.** --dontwarn com.google.j2objc.** --dontwarn javax.crypto.** --dontwarn java.lang.invoke.MethodHandle --dontwarn org.jline.builtins.Nano$Buffer --dontwarn org.jetbrains.annotations.ReadOnly --dontwarn org.jetbrains.annotations.Mutable --dontwarn com.intellij.util.io.TarUtil --dontwarn com.intellij.util.io.Compressor$Tar - -# Annotations from intellijCore/annotations.jar that not presented in org.jetbrains.annotations --dontwarn org.jetbrains.annotations.Async* --dontwarn org.jetbrains.annotations.Nls$Capitalization - -# Nullability annotations used in Guava --dontwarn org.checkerframework.checker.nullness.compatqual.NullableDecl --dontwarn org.checkerframework.checker.nullness.compatqual.MonotonicNonNullDecl --dontwarn org.checkerframework.checker.nullness.qual.Nullable --dontwarn org.checkerframework.checker.nullness.qual.MonotonicNonNull - -# Depends on apache batick which has lots of dependencies --dontwarn com.intellij.util.SVGLoader* --dontwarn org.apache.batik.script.rhino.RhinoInterpreter --dontwarn org.apache.batik.script.rhino.RhinoInterpreterFactory - -# The appropriate jar is either loaded separately or added explicitly to the classpath then needed --dontwarn org.jetbrains.kotlin.scripting.compiler.plugin.ScriptingCompilerConfigurationComponentRegistrar - --dontwarn org.jdom.xpath.jaxen.* --dontwarn com.intellij.util.io.Decompressor* --dontwarn org.w3c.dom.Location --dontwarn org.w3c.dom.Window --dontwarn org.slf4j.** - - -#-libraryjars '' -#-libraryjars '' -#-libraryjars '' -#-libraryjars '' -#-libraryjars '' -#-libraryjars '' - --dontoptimize --dontobfuscate - --keep class org.fusesource.** { *; } --keep class com.sun.jna.** { *; } - --keep class org.jetbrains.annotations.** { - public protected *; -} - --keep class javax.inject.** { - public protected *; -} - --keep class org.jetbrains.kotlin.** { - public protected *; -} - --keep class org.jetbrains.kotlin.compiler.plugin.** { - public protected *; -} - --keep class org.jetbrains.kotlin.extensions.** { - public protected *; -} - --keep class org.jetbrains.kotlin.protobuf.** { - public protected *; -} - --keep class org.jetbrains.kotlin.container.** { *; } - --keep class org.jetbrains.org.objectweb.asm.Opcodes { *; } - --keep class org.jetbrains.kotlin.codegen.extensions.** { - public protected *; -} - --keepclassmembers class com.intellij.openapi.vfs.VirtualFile { - public protected *; -} - --keep class com.intellij.openapi.vfs.StandardFileSystems { - public static *; -} - -# needed for jar cache cleanup in the gradle plugin and compile daemon --keepclassmembers class com.intellij.openapi.vfs.impl.ZipHandler { - public static void clearFileAccessorCache(); -} - --keep class jet.** { - public protected *; -} - --keep class com.intellij.psi.** { - public protected *; -} - -# This is needed so that the platform code which parses XML wouldn't fail, see KT-16968 -# This API is used from org.jdom.input.SAXBuilder via reflection. --keep class org.jdom.input.JAXPParserFactory { public ** createParser(...); } -# Without this class PluginManagerCore.loadDescriptorFromJar fails --keep class org.jdom.output.XMLOutputter { *; } - -# for kdoc & dokka --keep class com.intellij.openapi.util.TextRange { *; } --keep class com.intellij.lang.impl.PsiBuilderImpl* { - public protected *; -} --keep class com.intellij.openapi.util.text.StringHash { *; } - -# for j2k --keep class com.intellij.codeInsight.NullableNotNullManager { public protected *; } - -# for gradle (see KT-12549) --keep class com.intellij.lang.properties.charset.Native2AsciiCharsetProvider { *; } - -# for kotlin-build-common (consider repacking compiler together with kotlin-build-common and remove this part afterwards) --keep class com.intellij.util.io.IOUtil { public *; } --keep class com.intellij.openapi.util.io.FileUtil { public *; } --keep class com.intellij.util.SystemProperties { public *; } --keep class com.intellij.util.containers.hash.LinkedHashMap { *; } --keep class com.intellij.util.containers.ConcurrentIntObjectMap { *; } --keep class com.intellij.util.containers.ComparatorUtil { *; } --keep class com.intellij.util.io.PersistentHashMapValueStorage { *; } --keep class com.intellij.util.io.PersistentHashMap { *; } --keep class com.intellij.util.io.BooleanDataDescriptor { *; } --keep class com.intellij.util.io.EnumeratorStringDescriptor { *; } --keep class com.intellij.util.io.ExternalIntegerKeyDescriptor { *; } --keep class com.intellij.util.containers.hash.EqualityPolicy { *; } --keep class com.intellij.util.containers.hash.EqualityPolicy.* { *; } --keep class com.intellij.util.containers.Interner { *; } --keep class gnu.trove.TIntHashSet { *; } --keep class gnu.trove.TIntIterator { *; } --keep class org.iq80.snappy.SlowMemory { *; } --keep class javaslang.match.PatternsProcessor { *; } - --keepclassmembers enum * { - public static **[] values(); - public static ** valueOf(java.lang.String); -} - --keepclassmembers class * { - ** toString(); - ** hashCode(); - void start(); - void stop(); - void dispose(); -} - --keep class org.jetbrains.org.objectweb.asm.tree.AnnotationNode { *; } --keep class org.jetbrains.org.objectweb.asm.tree.ClassNode { *; } --keep class org.jetbrains.org.objectweb.asm.tree.LocalVariableNode { *; } --keep class org.jetbrains.org.objectweb.asm.tree.MethodNode { *; } --keep class org.jetbrains.org.objectweb.asm.tree.FieldNode { *; } --keep class org.jetbrains.org.objectweb.asm.tree.ParameterNode { *; } --keep class org.jetbrains.org.objectweb.asm.tree.TypeAnnotationNode { *; } --keep class org.jetbrains.org.objectweb.asm.tree.InsnList { *; } - --keep class org.jetbrains.org.objectweb.asm.signature.SignatureReader { *; } --keep class org.jetbrains.org.objectweb.asm.signature.SignatureVisitor { *; } - --keep class org.jetbrains.org.objectweb.asm.Type { - public protected *; -} - --keepclassmembers class org.jetbrains.org.objectweb.asm.ClassReader { - *** SKIP_CODE; - *** SKIP_DEBUG; - *** SKIP_FRAMES; -} - --keepclassmembers class com.intellij.openapi.project.Project { - ** getBasePath(); -} - -# for kotlin-android-extensions in maven --keep class com.intellij.openapi.module.ModuleServiceManager { public *; } - -# for building kotlin-build-common-test --keep class org.jetbrains.kotlin.build.SerializationUtilsKt { *; } - -# for tools.jar --keep class com.sun.tools.javac.** { *; } --keep class com.sun.source.** { *; } - -# for webdemo --keep class com.intellij.openapi.progress.ProgressManager { *; } - -# for kapt --keep class com.intellij.openapi.project.Project { *; } --keepclassmembers class com.intellij.util.PathUtil { - public static java.lang.String getJarPathForClass(java.lang.Class); -} - --keepclassmembers class com.intellij.util.PathUtil { - public static java.lang.String getJarPathForClass(java.lang.Class); -} - -# remove when KT-18563 would be fixed --keep class org.jetbrains.kotlin.psi.psiUtil.PsiUtilsKt { *; } - --keep class net.jpountz.lz4.* { *; } - -# used in LazyScriptDescriptor --keep class org.jetbrains.kotlin.utils.addToStdlib.AddToStdlibKt { *; } - --keep class com.intellij.openapi.vfs.impl.jar.CoreJarFileSystem { *; } - -# used in REPL -# TODO: pack jline directly to scripting-compiler jars instead --keep class org.jline.reader.LineReaderBuilder { *; } --keep class org.jline.reader.LineReader { *; } --keep class org.jline.reader.History { *; } --keep class org.jline.reader.EndOfFileException { *; } --keep class org.jline.reader.UserInterruptException { *; } --keep class org.jline.terminal.impl.jna.JnaSupportImpl { *; } --keep class org.jline.terminal.impl.jansi.JansiSupportImpl { *; } - --keepclassmembers class * implements java.io.Serializable { - static final long serialVersionUID; -} diff --git a/tests/mute-platform.csv.191 b/tests/mute-platform.csv.191 deleted file mode 100644 index 3533ae170c0..00000000000 --- a/tests/mute-platform.csv.191 +++ /dev/null @@ -1,8 +0,0 @@ -Test key, Issue, State (optional: MUTE or FAIL), Status (optional: FLAKY) -org.jetbrains.kotlin.idea.caches.resolve.MultiModuleHighlightingTest.testLazyResolvers,,, -org.jetbrains.kotlin.idea.caches.resolve.MultiModuleHighlightingTest.testRecomputeResolversOnChange,,, -org.jetbrains.kotlin.idea.completion.test.weighers.BasicCompletionWeigherTestGenerated.testPreferFromJdk, KT-35709 Class from JDK is not prioritized,, -org.jetbrains.kotlin.idea.quickfix.QuickFixMultiFileTestGenerated.AutoImports.testAmbiguousNamePreferFromJdk, KT-35709 Class from JDK is not prioritized,, -org.jetbrains.kotlin.j2k.JavaToKotlinConverterSingleFileTestGenerated.ToKotlinClasses.testIterableAndIterator,,, -org.jetbrains.kotlin.j2k.JavaToKotlinConverterSingleFileTestGenerated.ToKotlinClasses.testIterableAndIterator2,,, -org.jetbrains.kotlin.j2k.JavaToKotlinConverterSingleFileTestGenerated.ToKotlinClasses.testIterableAndIterator3,,, \ No newline at end of file