From edb700b898d98d9844564e1fdc72b2996c2d4a8e Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Fri, 6 Sep 2019 11:28:25 +0300 Subject: [PATCH] Switch to 192 platform --- .bunch | 10 +- ...Map.java.192 => JpsPersistentHashMap.java} | 0 .../util/io/JpsPersistentHashMap.java.191 | 0 .../kotlin/incremental/storage/BasicMap.kt | 11 +- .../{BasicMap.kt.192 => BasicMap.kt.191} | 11 +- ...zyStorage.kt.192 => CachingLazyStorage.kt} | 0 .../storage/CachingLazyStorage.kt.191 | 0 .../incremental/storage/ClassOneToManyMap.kt | 2 +- ...anyMap.kt.192 => ClassOneToManyMap.kt.191} | 2 +- .../kotlin/incremental/storage/LazyStorage.kt | 113 +----------- .../incremental/storage/LazyStorage.kt.191 | 122 +++++++++++++ .../incremental/storage/LazyStorage.kt.192 | 29 --- .../kotlin/incremental/storage/LookupMap.kt | 2 +- .../{LookupMap.kt.192 => LookupMap.kt.191} | 2 +- ...torage.kt.192 => NonCachingLazyStorage.kt} | 0 .../storage/NonCachingLazyStorage.kt.191 | 0 .../incremental/storage/SourceToOutputMaps.kt | 2 +- ...tMaps.kt.192 => SourceToOutputMaps.kt.191} | 2 +- compiler/compiler.pro | 9 +- .../{compiler.pro.192 => compiler.pro.191} | 9 +- gradle/versions.properties | 7 +- ...properties.192 => versions.properties.191} | 7 +- .../trackers/psiModificationTrackerCompat.kt | 2 +- ...92 => psiModificationTrackerCompat.kt.191} | 2 +- .../test/confidence/KotlinConfidenceTest.java | 2 +- ...java.192 => KotlinConfidenceTest.java.191} | 2 +- .../idea/configuration/KotlinMPPDataNodes.kt | 11 +- ...Nodes.kt.192 => KotlinMPPDataNodes.kt.191} | 11 +- .../configuration/KotlinTargetDataService.kt | 18 +- ....kt.192 => KotlinTargetDataService.kt.191} | 18 +- .../KotlinMPPGradleProjectTaskRunnerUtil.kt | 5 +- ...tlinMPPGradleProjectTaskRunnerUtil.kt.191} | 5 +- .../KotlinLanguageInjectionSupport.kt | 2 +- ... => KotlinLanguageInjectionSupport.kt.191} | 2 +- ...inLightCodeInsightFixtureTestCaseBase.java | 5 - ...htCodeInsightFixtureTestCaseBase.java.191} | 5 + .../idea/testFramework/projectRoutines.kt | 30 +-- ...Routines.kt.192 => projectRoutines.kt.191} | 30 ++- idea/resources/META-INF/plugin.xml | 2 +- .../{plugin.xml.192 => plugin.xml.191} | 2 +- .../generate/KotlinGenerateEqualsWizard.kt | 4 +- ....192 => KotlinGenerateEqualsWizard.kt.191} | 4 +- .../idea/highlighter/markers/dslStyleIcon.kt | 4 +- ...slStyleIcon.kt.192 => dslStyleIcon.kt.191} | 4 +- .../inspections/PlatformUnresolvedProvider.kt | 2 +- ....192 => PlatformUnresolvedProvider.kt.191} | 2 +- .../crossLanguage/ChangeMethodParameters.kt | 125 ++++++++++--- ...s.kt.192 => ChangeMethodParameters.kt.191} | 127 +++---------- .../KotlinElementActionsFactory.kt | 2 +- ...192 => KotlinElementActionsFactory.kt.191} | 2 +- .../slicer/KotlinSliceDereferenceUsage.kt | 2 +- ...192 => KotlinSliceDereferenceUsage.kt.191} | 2 +- .../formatter/AbstractFormatterTest.java | 2 +- ...ava.192 => AbstractFormatterTest.java.191} | 2 +- .../AbstractTypingIndentationTestBase.java | 2 +- ...bstractTypingIndentationTestBase.java.191} | 2 +- .../kotlin/formatter/FormatSettingsUtil.java | 10 +- ...l.java.192 => FormatSettingsUtil.java.191} | 10 +- .../moveUpDown/AbstractCodeMoverTest.kt | 6 +- ...st.kt.192 => AbstractCodeMoverTest.kt.191} | 6 +- .../AbstractNavigateFromLibrarySourcesTest.kt | 3 - ...ractNavigateFromLibrarySourcesTest.kt.191} | 3 + .../ClsStubForWrongAbiVersionTest.kt | 2 - ...2 => ClsStubForWrongAbiVersionTest.kt.191} | 2 + .../idea/editor/KotlinCommenterTest.java | 2 +- ....java.192 => KotlinCommenterTest.java.191} | 2 +- .../parameterInfo/InlayHintTypeTestUtil.kt | 3 +- ...il.kt.192 => InlayHintTypeTestUtil.kt.191} | 3 +- .../CommonIntentionActionsParametersTest.kt | 125 ++++++++++++- ...ommonIntentionActionsParametersTest.kt.191 | 57 ++++++ ...ommonIntentionActionsParametersTest.kt.192 | 172 ------------------ .../UpdateConfigurationQuickFixTest.kt | 3 - ...=> UpdateConfigurationQuickFixTest.kt.191} | 3 + ...ractJavaToKotlinConverterForWebDemoTest.kt | 1 - ...avaToKotlinConverterForWebDemoTest.kt.191} | 1 + .../uast/kotlin/declarations/KotlinUFile.kt | 2 +- ...{KotlinUFile.kt.192 => KotlinUFile.kt.191} | 2 +- .../uast/kotlin/declarations/KotlinUMethod.kt | 3 - ...linUMethod.kt.192 => KotlinUMethod.kt.191} | 3 + .../tests/AbstractKotlinIdentifiersTest.kt | 1 + ...2 => AbstractKotlinIdentifiersTest.kt.191} | 1 - .../test/common/kotlin/ResolveTestBase.kt | 2 +- ...TestBase.kt.192 => ResolveTestBase.kt.191} | 2 +- 83 files changed, 606 insertions(+), 606 deletions(-) rename build-common/src/com/intellij/util/io/{JpsPersistentHashMap.java.192 => JpsPersistentHashMap.java} (100%) create mode 100644 build-common/src/com/intellij/util/io/JpsPersistentHashMap.java.191 rename build-common/src/org/jetbrains/kotlin/incremental/storage/{BasicMap.kt.192 => BasicMap.kt.191} (85%) rename build-common/src/org/jetbrains/kotlin/incremental/storage/{CachingLazyStorage.kt.192 => CachingLazyStorage.kt} (100%) create mode 100644 build-common/src/org/jetbrains/kotlin/incremental/storage/CachingLazyStorage.kt.191 rename build-common/src/org/jetbrains/kotlin/incremental/storage/{ClassOneToManyMap.kt.192 => ClassOneToManyMap.kt.191} (96%) create mode 100644 build-common/src/org/jetbrains/kotlin/incremental/storage/LazyStorage.kt.191 delete mode 100644 build-common/src/org/jetbrains/kotlin/incremental/storage/LazyStorage.kt.192 rename build-common/src/org/jetbrains/kotlin/incremental/storage/{LookupMap.kt.192 => LookupMap.kt.191} (95%) rename build-common/src/org/jetbrains/kotlin/incremental/storage/{NonCachingLazyStorage.kt.192 => NonCachingLazyStorage.kt} (100%) create mode 100644 build-common/src/org/jetbrains/kotlin/incremental/storage/NonCachingLazyStorage.kt.191 rename build-common/src/org/jetbrains/kotlin/incremental/storage/{SourceToOutputMaps.kt.192 => SourceToOutputMaps.kt.191} (95%) rename compiler/{compiler.pro.192 => compiler.pro.191} (97%) rename gradle/{versions.properties.192 => versions.properties.191} (73%) rename idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/trackers/{psiModificationTrackerCompat.kt.192 => psiModificationTrackerCompat.kt.191} (93%) rename idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/confidence/{KotlinConfidenceTest.java.192 => KotlinConfidenceTest.java.191} (99%) rename idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/{KotlinMPPDataNodes.kt.192 => KotlinMPPDataNodes.kt.191} (86%) rename idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/{KotlinTargetDataService.kt.192 => KotlinTargetDataService.kt.191} (70%) rename idea/idea-gradle/src/org/jetbrains/kotlin/idea/gradle/execution/{KotlinMPPGradleProjectTaskRunnerUtil.kt.192 => KotlinMPPGradleProjectTaskRunnerUtil.kt.191} (60%) rename idea/idea-jvm/src/org/jetbrains/kotlin/idea/injection/{KotlinLanguageInjectionSupport.kt.192 => KotlinLanguageInjectionSupport.kt.191} (99%) rename idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/{KotlinLightCodeInsightFixtureTestCaseBase.java.192 => KotlinLightCodeInsightFixtureTestCaseBase.java.191} (96%) rename idea/performanceTests/org/jetbrains/kotlin/idea/testFramework/{projectRoutines.kt.192 => projectRoutines.kt.191} (80%) rename idea/resources/META-INF/{plugin.xml.192 => plugin.xml.191} (98%) rename idea/src/org/jetbrains/kotlin/idea/actions/generate/{KotlinGenerateEqualsWizard.kt.192 => KotlinGenerateEqualsWizard.kt.191} (98%) rename idea/src/org/jetbrains/kotlin/idea/highlighter/markers/{dslStyleIcon.kt.192 => dslStyleIcon.kt.191} (87%) rename idea/src/org/jetbrains/kotlin/idea/inspections/{PlatformUnresolvedProvider.kt.192 => PlatformUnresolvedProvider.kt.191} (97%) rename idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/{ChangeMethodParameters.kt.192 => ChangeMethodParameters.kt.191} (54%) rename idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/{KotlinElementActionsFactory.kt.192 => KotlinElementActionsFactory.kt.191} (99%) rename idea/src/org/jetbrains/kotlin/idea/slicer/{KotlinSliceDereferenceUsage.kt.192 => KotlinSliceDereferenceUsage.kt.191} (94%) rename idea/tests/org/jetbrains/kotlin/formatter/{AbstractFormatterTest.java.192 => AbstractFormatterTest.java.191} (99%) rename idea/tests/org/jetbrains/kotlin/formatter/{AbstractTypingIndentationTestBase.java.192 => AbstractTypingIndentationTestBase.java.191} (97%) rename idea/tests/org/jetbrains/kotlin/formatter/{FormatSettingsUtil.java.192 => FormatSettingsUtil.java.191} (80%) rename idea/tests/org/jetbrains/kotlin/idea/codeInsight/moveUpDown/{AbstractCodeMoverTest.kt.192 => AbstractCodeMoverTest.kt.191} (96%) rename idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/{AbstractNavigateFromLibrarySourcesTest.kt.192 => AbstractNavigateFromLibrarySourcesTest.kt.191} (94%) rename idea/tests/org/jetbrains/kotlin/idea/decompiler/stubBuilder/{ClsStubForWrongAbiVersionTest.kt.192 => ClsStubForWrongAbiVersionTest.kt.191} (94%) rename idea/tests/org/jetbrains/kotlin/idea/editor/{KotlinCommenterTest.java.192 => KotlinCommenterTest.java.191} (99%) rename idea/tests/org/jetbrains/kotlin/idea/parameterInfo/{InlayHintTypeTestUtil.kt.192 => InlayHintTypeTestUtil.kt.191} (93%) create mode 100644 idea/tests/org/jetbrains/kotlin/idea/quickfix/CommonIntentionActionsParametersTest.kt.191 delete mode 100644 idea/tests/org/jetbrains/kotlin/idea/quickfix/CommonIntentionActionsParametersTest.kt.192 rename idea/tests/org/jetbrains/kotlin/idea/quickfix/{UpdateConfigurationQuickFixTest.kt.192 => UpdateConfigurationQuickFixTest.kt.191} (99%) rename j2k/tests/org/jetbrains/kotlin/j2k/{AbstractJavaToKotlinConverterForWebDemoTest.kt.192 => AbstractJavaToKotlinConverterForWebDemoTest.kt.191} (98%) rename plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/{KotlinUFile.kt.192 => KotlinUFile.kt.191} (98%) rename plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/{KotlinUMethod.kt.192 => KotlinUMethod.kt.191} (97%) rename plugins/uast-kotlin/tests/{AbstractKotlinIdentifiersTest.kt.192 => AbstractKotlinIdentifiersTest.kt.191} (96%) rename plugins/uast-kotlin/tests/org/jetbrains/uast/test/common/kotlin/{ResolveTestBase.kt.192 => ResolveTestBase.kt.191} (97%) diff --git a/.bunch b/.bunch index 44273215a31..e5600a0e5e6 100644 --- a/.bunch +++ b/.bunch @@ -1,6 +1,6 @@ -191 192 -183 -as34_183 -as35 -as36_192 +191 +183_191 +as34_183_191 +as35_191 +as36 diff --git a/build-common/src/com/intellij/util/io/JpsPersistentHashMap.java.192 b/build-common/src/com/intellij/util/io/JpsPersistentHashMap.java similarity index 100% rename from build-common/src/com/intellij/util/io/JpsPersistentHashMap.java.192 rename to build-common/src/com/intellij/util/io/JpsPersistentHashMap.java diff --git a/build-common/src/com/intellij/util/io/JpsPersistentHashMap.java.191 b/build-common/src/com/intellij/util/io/JpsPersistentHashMap.java.191 new file mode 100644 index 00000000000..e69de29bb2d diff --git a/build-common/src/org/jetbrains/kotlin/incremental/storage/BasicMap.kt b/build-common/src/org/jetbrains/kotlin/incremental/storage/BasicMap.kt index f8c0bd0e49e..080171ee4f2 100644 --- a/build-common/src/org/jetbrains/kotlin/incremental/storage/BasicMap.kt +++ b/build-common/src/org/jetbrains/kotlin/incremental/storage/BasicMap.kt @@ -28,7 +28,16 @@ abstract class BasicMap, V>( keyDescriptor: KeyDescriptor, valueExternalizer: DataExternalizer ) { - protected val storage = LazyStorage(storageFile, keyDescriptor, valueExternalizer) + protected val storage: LazyStorage + private val nonCachingStorage = System.getProperty("kotlin.jps.non.caching.storage")?.toBoolean() ?: false + + init { + storage = if (nonCachingStorage) { + NonCachingLazyStorage(storageFile, keyDescriptor, valueExternalizer) + } else { + CachingLazyStorage(storageFile, keyDescriptor, valueExternalizer) + } + } fun clean() { storage.clean() diff --git a/build-common/src/org/jetbrains/kotlin/incremental/storage/BasicMap.kt.192 b/build-common/src/org/jetbrains/kotlin/incremental/storage/BasicMap.kt.191 similarity index 85% rename from build-common/src/org/jetbrains/kotlin/incremental/storage/BasicMap.kt.192 rename to build-common/src/org/jetbrains/kotlin/incremental/storage/BasicMap.kt.191 index 080171ee4f2..f8c0bd0e49e 100644 --- a/build-common/src/org/jetbrains/kotlin/incremental/storage/BasicMap.kt.192 +++ b/build-common/src/org/jetbrains/kotlin/incremental/storage/BasicMap.kt.191 @@ -28,16 +28,7 @@ abstract class BasicMap, V>( keyDescriptor: KeyDescriptor, valueExternalizer: DataExternalizer ) { - protected val storage: LazyStorage - private val nonCachingStorage = System.getProperty("kotlin.jps.non.caching.storage")?.toBoolean() ?: false - - init { - storage = if (nonCachingStorage) { - NonCachingLazyStorage(storageFile, keyDescriptor, valueExternalizer) - } else { - CachingLazyStorage(storageFile, keyDescriptor, valueExternalizer) - } - } + protected val storage = LazyStorage(storageFile, keyDescriptor, valueExternalizer) fun clean() { storage.clean() diff --git a/build-common/src/org/jetbrains/kotlin/incremental/storage/CachingLazyStorage.kt.192 b/build-common/src/org/jetbrains/kotlin/incremental/storage/CachingLazyStorage.kt similarity index 100% rename from build-common/src/org/jetbrains/kotlin/incremental/storage/CachingLazyStorage.kt.192 rename to build-common/src/org/jetbrains/kotlin/incremental/storage/CachingLazyStorage.kt 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 new file mode 100644 index 00000000000..e69de29bb2d diff --git a/build-common/src/org/jetbrains/kotlin/incremental/storage/ClassOneToManyMap.kt b/build-common/src/org/jetbrains/kotlin/incremental/storage/ClassOneToManyMap.kt index e70f4b3a469..6549c96224a 100644 --- a/build-common/src/org/jetbrains/kotlin/incremental/storage/ClassOneToManyMap.kt +++ b/build-common/src/org/jetbrains/kotlin/incremental/storage/ClassOneToManyMap.kt @@ -26,7 +26,7 @@ internal open class ClassOneToManyMap( override fun dumpValue(value: Collection): String = value.dumpCollection() fun add(key: FqName, value: FqName) { - storage.append(key.asString(), value.asString()) + storage.append(key.asString(), listOf(value.asString())) } operator fun get(key: FqName): Collection = diff --git a/build-common/src/org/jetbrains/kotlin/incremental/storage/ClassOneToManyMap.kt.192 b/build-common/src/org/jetbrains/kotlin/incremental/storage/ClassOneToManyMap.kt.191 similarity index 96% rename from build-common/src/org/jetbrains/kotlin/incremental/storage/ClassOneToManyMap.kt.192 rename to build-common/src/org/jetbrains/kotlin/incremental/storage/ClassOneToManyMap.kt.191 index 6549c96224a..e70f4b3a469 100644 --- a/build-common/src/org/jetbrains/kotlin/incremental/storage/ClassOneToManyMap.kt.192 +++ b/build-common/src/org/jetbrains/kotlin/incremental/storage/ClassOneToManyMap.kt.191 @@ -26,7 +26,7 @@ internal open class ClassOneToManyMap( override fun dumpValue(value: Collection): String = value.dumpCollection() fun add(key: FqName, value: FqName) { - storage.append(key.asString(), listOf(value.asString())) + storage.append(key.asString(), value.asString()) } operator fun get(key: FqName): Collection = diff --git a/build-common/src/org/jetbrains/kotlin/incremental/storage/LazyStorage.kt b/build-common/src/org/jetbrains/kotlin/incremental/storage/LazyStorage.kt index 6ea64af872e..831ed500882 100644 --- a/build-common/src/org/jetbrains/kotlin/incremental/storage/LazyStorage.kt +++ b/build-common/src/org/jetbrains/kotlin/incremental/storage/LazyStorage.kt @@ -16,107 +16,14 @@ 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!! - } - +interface LazyStorage { 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) - } -} + operator fun contains(key: K): Boolean + operator fun get(key: K): V? + operator fun set(key: K, value: V) + fun remove(key: K) + fun append(key: K, value: V) + fun clean() + fun flush(memoryCachesOnly: Boolean) + fun close() +} \ No newline at end of file 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 new file mode 100644 index 00000000000..6ea64af872e --- /dev/null +++ b/build-common/src/org/jetbrains/kotlin/incremental/storage/LazyStorage.kt.191 @@ -0,0 +1,122 @@ +/* + * 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/LazyStorage.kt.192 b/build-common/src/org/jetbrains/kotlin/incremental/storage/LazyStorage.kt.192 deleted file mode 100644 index 831ed500882..00000000000 --- a/build-common/src/org/jetbrains/kotlin/incremental/storage/LazyStorage.kt.192 +++ /dev/null @@ -1,29 +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 - -interface LazyStorage { - val keys: Collection - operator fun contains(key: K): Boolean - operator fun get(key: K): V? - operator fun set(key: K, value: V) - fun remove(key: K) - fun append(key: K, value: V) - fun clean() - fun flush(memoryCachesOnly: Boolean) - fun close() -} \ No newline at end of file diff --git a/build-common/src/org/jetbrains/kotlin/incremental/storage/LookupMap.kt b/build-common/src/org/jetbrains/kotlin/incremental/storage/LookupMap.kt index d9fab23228b..1747b123fca 100644 --- a/build-common/src/org/jetbrains/kotlin/incremental/storage/LookupMap.kt +++ b/build-common/src/org/jetbrains/kotlin/incremental/storage/LookupMap.kt @@ -24,7 +24,7 @@ internal class LookupMap(storage: File) : BasicMap): String = value.toString() fun add(name: String, scope: String, fileId: Int) { - storage.append(LookupSymbolKey(name, scope), fileId) + storage.append(LookupSymbolKey(name, scope), listOf(fileId)) } operator fun get(key: LookupSymbolKey): Collection? = storage[key] diff --git a/build-common/src/org/jetbrains/kotlin/incremental/storage/LookupMap.kt.192 b/build-common/src/org/jetbrains/kotlin/incremental/storage/LookupMap.kt.191 similarity index 95% rename from build-common/src/org/jetbrains/kotlin/incremental/storage/LookupMap.kt.192 rename to build-common/src/org/jetbrains/kotlin/incremental/storage/LookupMap.kt.191 index 1747b123fca..d9fab23228b 100644 --- a/build-common/src/org/jetbrains/kotlin/incremental/storage/LookupMap.kt.192 +++ b/build-common/src/org/jetbrains/kotlin/incremental/storage/LookupMap.kt.191 @@ -24,7 +24,7 @@ internal class LookupMap(storage: File) : BasicMap): String = value.toString() fun add(name: String, scope: String, fileId: Int) { - storage.append(LookupSymbolKey(name, scope), listOf(fileId)) + storage.append(LookupSymbolKey(name, scope), fileId) } operator fun get(key: LookupSymbolKey): Collection? = storage[key] diff --git a/build-common/src/org/jetbrains/kotlin/incremental/storage/NonCachingLazyStorage.kt.192 b/build-common/src/org/jetbrains/kotlin/incremental/storage/NonCachingLazyStorage.kt similarity index 100% rename from build-common/src/org/jetbrains/kotlin/incremental/storage/NonCachingLazyStorage.kt.192 rename to build-common/src/org/jetbrains/kotlin/incremental/storage/NonCachingLazyStorage.kt 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 new file mode 100644 index 00000000000..e69de29bb2d diff --git a/build-common/src/org/jetbrains/kotlin/incremental/storage/SourceToOutputMaps.kt b/build-common/src/org/jetbrains/kotlin/incremental/storage/SourceToOutputMaps.kt index 3e8529ad680..0bfe06e18fa 100644 --- a/build-common/src/org/jetbrains/kotlin/incremental/storage/SourceToOutputMaps.kt +++ b/build-common/src/org/jetbrains/kotlin/incremental/storage/SourceToOutputMaps.kt @@ -41,7 +41,7 @@ internal abstract class AbstractSourceToOutputMap( } fun add(sourceFile: File, className: Name) { - storage.append(pathConverter.toPath(sourceFile), nameTransformer.asString(className)) + storage.append(pathConverter.toPath(sourceFile), listOf(nameTransformer.asString(className))) } fun contains(sourceFile: File): Boolean = diff --git a/build-common/src/org/jetbrains/kotlin/incremental/storage/SourceToOutputMaps.kt.192 b/build-common/src/org/jetbrains/kotlin/incremental/storage/SourceToOutputMaps.kt.191 similarity index 95% rename from build-common/src/org/jetbrains/kotlin/incremental/storage/SourceToOutputMaps.kt.192 rename to build-common/src/org/jetbrains/kotlin/incremental/storage/SourceToOutputMaps.kt.191 index 0bfe06e18fa..3e8529ad680 100644 --- a/build-common/src/org/jetbrains/kotlin/incremental/storage/SourceToOutputMaps.kt.192 +++ b/build-common/src/org/jetbrains/kotlin/incremental/storage/SourceToOutputMaps.kt.191 @@ -41,7 +41,7 @@ internal abstract class AbstractSourceToOutputMap( } fun add(sourceFile: File, className: Name) { - storage.append(pathConverter.toPath(sourceFile), listOf(nameTransformer.asString(className))) + storage.append(pathConverter.toPath(sourceFile), nameTransformer.asString(className)) } fun contains(sourceFile: File): Boolean = diff --git a/compiler/compiler.pro b/compiler/compiler.pro index 6aad71f82fc..a31576ff126 100644 --- a/compiler/compiler.pro +++ b/compiler/compiler.pro @@ -15,9 +15,6 @@ messages/**) -outjars '' -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.** @@ -27,6 +24,12 @@ messages/**) -dontwarn com.intellij.util.SnappyInitializer -dontwarn com.intellij.util.SVGLoader -dontwarn com.intellij.util.SVGLoader$MyTranscoder +-dontwarn com.intellij.util.ImageLoader$ImageDesc +-dontwarn com.intellij.util.ui.** +-dontwarn com.intellij.ui.** +-dontwarn com.intellij.util.IconUtil +-dontwarn com.intellij.util.ImageLoader +-dontwarn kotlinx.coroutines.flow.FlowKt__MergeKt -dontwarn net.sf.cglib.** -dontwarn org.objectweb.asm.** # this is ASM3, the old version that we do not use -dontwarn com.sun.jna.NativeString diff --git a/compiler/compiler.pro.192 b/compiler/compiler.pro.191 similarity index 97% rename from compiler/compiler.pro.192 rename to compiler/compiler.pro.191 index a31576ff126..6aad71f82fc 100644 --- a/compiler/compiler.pro.192 +++ b/compiler/compiler.pro.191 @@ -15,6 +15,9 @@ messages/**) -outjars '' -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.** @@ -24,12 +27,6 @@ messages/**) -dontwarn com.intellij.util.SnappyInitializer -dontwarn com.intellij.util.SVGLoader -dontwarn com.intellij.util.SVGLoader$MyTranscoder --dontwarn com.intellij.util.ImageLoader$ImageDesc --dontwarn com.intellij.util.ui.** --dontwarn com.intellij.ui.** --dontwarn com.intellij.util.IconUtil --dontwarn com.intellij.util.ImageLoader --dontwarn kotlinx.coroutines.flow.FlowKt__MergeKt -dontwarn net.sf.cglib.** -dontwarn org.objectweb.asm.** # this is ASM3, the old version that we do not use -dontwarn com.sun.jna.NativeString diff --git a/gradle/versions.properties b/gradle/versions.properties index 28d373d2ac8..62f86bb1210 100644 --- a/gradle/versions.properties +++ b/gradle/versions.properties @@ -1,14 +1,13 @@ -versions.intellijSdk=191.6707.61 +versions.intellijSdk=192.5728.98 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.groovy-all=2.4.17 versions.jar.lombok-ast=0.2.3 versions.jar.swingx-core=1.6.2-2 versions.jar.kxml2=2.3.0 -versions.jar.streamex=0.6.7 +versions.jar.streamex=0.6.8 versions.jar.gson=2.8.5 versions.jar.oro=2.0.8 versions.jar.picocontainer=1.2 diff --git a/gradle/versions.properties.192 b/gradle/versions.properties.191 similarity index 73% rename from gradle/versions.properties.192 rename to gradle/versions.properties.191 index 62f86bb1210..28d373d2ac8 100644 --- a/gradle/versions.properties.192 +++ b/gradle/versions.properties.191 @@ -1,13 +1,14 @@ -versions.intellijSdk=192.5728.98 +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.17 +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.8 +versions.jar.streamex=0.6.7 versions.jar.gson=2.8.5 versions.jar.oro=2.0.8 versions.jar.picocontainer=1.2 diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/trackers/psiModificationTrackerCompat.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/trackers/psiModificationTrackerCompat.kt index 3272915ebda..e7426b9b021 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/trackers/psiModificationTrackerCompat.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/trackers/psiModificationTrackerCompat.kt @@ -9,4 +9,4 @@ import com.intellij.psi.impl.PsiModificationTrackerImpl // BUNCH: 191 @Suppress("unused") -val PsiModificationTrackerImpl.isEnableLanguageTrackerCompat get() = isEnableLanguageTracker \ No newline at end of file +val PsiModificationTrackerImpl.isEnableLanguageTrackerCompat get() = true \ No newline at end of file diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/trackers/psiModificationTrackerCompat.kt.192 b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/trackers/psiModificationTrackerCompat.kt.191 similarity index 93% rename from idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/trackers/psiModificationTrackerCompat.kt.192 rename to idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/trackers/psiModificationTrackerCompat.kt.191 index e7426b9b021..3272915ebda 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/trackers/psiModificationTrackerCompat.kt.192 +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/trackers/psiModificationTrackerCompat.kt.191 @@ -9,4 +9,4 @@ import com.intellij.psi.impl.PsiModificationTrackerImpl // BUNCH: 191 @Suppress("unused") -val PsiModificationTrackerImpl.isEnableLanguageTrackerCompat get() = true \ No newline at end of file +val PsiModificationTrackerImpl.isEnableLanguageTrackerCompat get() = isEnableLanguageTracker \ No newline at end of file diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/confidence/KotlinConfidenceTest.java b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/confidence/KotlinConfidenceTest.java index 613f3756989..277efabf0f9 100644 --- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/confidence/KotlinConfidenceTest.java +++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/confidence/KotlinConfidenceTest.java @@ -170,7 +170,7 @@ public class KotlinConfidenceTest extends LightCompletionTestCase { protected void complete() { if (skipComplete.get()) return; new CodeCompletionHandlerBase(CompletionType.BASIC, false, true, true).invokeCompletion( - getProject(), getEditor(), 0, false, false); + getProject(), getEditor(), 0, false); LookupImpl lookup = (LookupImpl) LookupManager.getActiveLookup(myEditor); myItems = lookup == null ? null : lookup.getItems().toArray(LookupElement.EMPTY_ARRAY); diff --git a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/confidence/KotlinConfidenceTest.java.192 b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/confidence/KotlinConfidenceTest.java.191 similarity index 99% rename from idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/confidence/KotlinConfidenceTest.java.192 rename to idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/confidence/KotlinConfidenceTest.java.191 index 277efabf0f9..613f3756989 100644 --- a/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/confidence/KotlinConfidenceTest.java.192 +++ b/idea/idea-completion/tests/org/jetbrains/kotlin/idea/completion/test/confidence/KotlinConfidenceTest.java.191 @@ -170,7 +170,7 @@ public class KotlinConfidenceTest extends LightCompletionTestCase { protected void complete() { if (skipComplete.get()) return; new CodeCompletionHandlerBase(CompletionType.BASIC, false, true, true).invokeCompletion( - getProject(), getEditor(), 0, false); + getProject(), getEditor(), 0, false, false); LookupImpl lookup = (LookupImpl) LookupManager.getActiveLookup(myEditor); myItems = lookup == null ? null : lookup.getItems().toArray(LookupElement.EMPTY_ARRAY); diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPDataNodes.kt b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPDataNodes.kt index 461d1ddaf1c..4e5104918dd 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPDataNodes.kt +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinMPPDataNodes.kt @@ -21,6 +21,7 @@ import org.jetbrains.plugins.gradle.util.GradleConstants import java.io.File import java.io.Serializable import com.intellij.openapi.externalSystem.model.Key as ExternalKey +import com.intellij.serialization.PropertyMapping var DataNode.kotlinSourceSet: KotlinSourceSetInfo? by CopyableDataNodeUserDataProperty(Key.create("KOTLIN_SOURCE_SET")) @@ -28,7 +29,7 @@ var DataNode.kotlinSourceSet: KotlinSourceSetInfo? val DataNode.kotlinAndroidSourceSets: List? get() = ExternalSystemApiUtil.getChildren(this, KotlinAndroidSourceSetData.KEY).firstOrNull()?.data?.sourceSetInfos -class KotlinSourceSetInfo(val kotlinModule: KotlinModule) : Serializable { +class KotlinSourceSetInfo @PropertyMapping("kotlinModule") constructor(val kotlinModule: KotlinModule) : Serializable { var moduleId: String? = null var gradleModuleId: String = "" @@ -46,15 +47,15 @@ class KotlinSourceSetInfo(val kotlinModule: KotlinModule) : Serializable { var dependsOn: List = emptyList() } -class KotlinAndroidSourceSetData( - val sourceSetInfos: List +class KotlinAndroidSourceSetData @PropertyMapping("sourceSetInfos") constructor(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) { +class KotlinTargetData @PropertyMapping("externalName") constructor(externalName: String) : + AbstractNamedData(GradleConstants.SYSTEM_ID, externalName) { var moduleIds: Set = emptySet() var archiveFile: File? = null var konanArtifacts: Collection? = null @@ -68,4 +69,4 @@ class KotlinOutputPathsData(val paths: MultiMap.kotlinSourceSet: KotlinSourceSetInfo? by CopyableDataNodeUserDataProperty(Key.create("KOTLIN_SOURCE_SET")) @@ -29,7 +28,7 @@ var DataNode.kotlinSourceSet: KotlinSourceSetInfo? val DataNode.kotlinAndroidSourceSets: List? get() = ExternalSystemApiUtil.getChildren(this, KotlinAndroidSourceSetData.KEY).firstOrNull()?.data?.sourceSetInfos -class KotlinSourceSetInfo @PropertyMapping("kotlinModule") constructor(val kotlinModule: KotlinModule) : Serializable { +class KotlinSourceSetInfo(val kotlinModule: KotlinModule) : Serializable { var moduleId: String? = null var gradleModuleId: String = "" @@ -47,15 +46,15 @@ class KotlinSourceSetInfo @PropertyMapping("kotlinModule") constructor(val kotli var dependsOn: List = emptyList() } -class KotlinAndroidSourceSetData @PropertyMapping("sourceSetInfos") constructor(val sourceSetInfos: List +class KotlinAndroidSourceSetData( + val sourceSetInfos: List ) : AbstractExternalEntityData(GradleConstants.SYSTEM_ID) { companion object { val KEY = ExternalKey.create(KotlinAndroidSourceSetData::class.java, KotlinTargetData.KEY.processingWeight + 1) } } -class KotlinTargetData @PropertyMapping("externalName") constructor(externalName: String) : - AbstractNamedData(GradleConstants.SYSTEM_ID, externalName) { +class KotlinTargetData(name: String) : AbstractNamedData(GradleConstants.SYSTEM_ID, name) { var moduleIds: Set = emptySet() var archiveFile: File? = null var konanArtifacts: Collection? = null @@ -69,4 +68,4 @@ class KotlinOutputPathsData(val paths: MultiMap?): BaseInjection? { + 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 diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/injection/KotlinLanguageInjectionSupport.kt.192 b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/injection/KotlinLanguageInjectionSupport.kt.191 similarity index 99% rename from idea/idea-jvm/src/org/jetbrains/kotlin/idea/injection/KotlinLanguageInjectionSupport.kt.192 rename to idea/idea-jvm/src/org/jetbrains/kotlin/idea/injection/KotlinLanguageInjectionSupport.kt.191 index 9cdc6b40c9a..503a843c8e5 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/injection/KotlinLanguageInjectionSupport.kt.192 +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/injection/KotlinLanguageInjectionSupport.kt.191 @@ -90,7 +90,7 @@ class KotlinLanguageInjectionSupport : AbstractLanguageInjectionSupport() { return true } - override fun findCommentInjection(host: PsiElement, commentRef: Ref?): BaseInjection? { + 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 diff --git a/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/KotlinLightCodeInsightFixtureTestCaseBase.java b/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/KotlinLightCodeInsightFixtureTestCaseBase.java index 1751423e63b..7f983233c29 100644 --- a/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/KotlinLightCodeInsightFixtureTestCaseBase.java +++ b/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/KotlinLightCodeInsightFixtureTestCaseBase.java @@ -17,7 +17,6 @@ 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; @@ -44,10 +43,6 @@ public abstract class KotlinLightCodeInsightFixtureTestCaseBase extends LightCod return super.getProject(); } - public Module getModule() { - return myModule; - } - @NotNull @Override public Editor getEditor() { diff --git a/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/KotlinLightCodeInsightFixtureTestCaseBase.java.192 b/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/KotlinLightCodeInsightFixtureTestCaseBase.java.191 similarity index 96% rename from idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/KotlinLightCodeInsightFixtureTestCaseBase.java.192 rename to idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/KotlinLightCodeInsightFixtureTestCaseBase.java.191 index 7f983233c29..1751423e63b 100644 --- a/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/KotlinLightCodeInsightFixtureTestCaseBase.java.192 +++ b/idea/idea-test-framework/test/org/jetbrains/kotlin/idea/test/KotlinLightCodeInsightFixtureTestCaseBase.java.191 @@ -17,6 +17,7 @@ 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; @@ -43,6 +44,10 @@ public abstract class KotlinLightCodeInsightFixtureTestCaseBase extends LightCod return super.getProject(); } + public Module getModule() { + return myModule; + } + @NotNull @Override public Editor getEditor() { diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/testFramework/projectRoutines.kt b/idea/performanceTests/org/jetbrains/kotlin/idea/testFramework/projectRoutines.kt index d9fd3ae408e..d52cf0a827f 100644 --- a/idea/performanceTests/org/jetbrains/kotlin/idea/testFramework/projectRoutines.kt +++ b/idea/performanceTests/org/jetbrains/kotlin/idea/testFramework/projectRoutines.kt @@ -10,6 +10,7 @@ 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.application.runWriteAction import com.intellij.openapi.editor.Document import com.intellij.openapi.extensions.ExtensionPointName import com.intellij.openapi.fileEditor.FileDocumentManager @@ -19,9 +20,12 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.project.ex.ProjectManagerEx import com.intellij.psi.PsiDocumentManager import com.intellij.psi.impl.PsiDocumentManagerBase +import com.intellij.testFramework.EdtTestUtil import com.intellij.testFramework.PlatformTestUtil +import com.intellij.util.ThrowableRunnable import com.intellij.testFramework.runInEdtAndWait import com.intellij.util.ui.UIUtil +import org.jetbrains.kotlin.idea.highlighter.KotlinPsiCheckerAndHighlightingUpdater import org.jetbrains.kotlin.idea.parameterInfo.HintType import java.util.concurrent.TimeUnit import java.util.concurrent.TimeoutException @@ -73,31 +77,7 @@ fun closeProject(project: 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 + // routing is obsolete in 192 } fun replaceWithCustomHighlighter(parentDisposable: Disposable, fromImplementationClass: String, toImplementationClass: String) { diff --git a/idea/performanceTests/org/jetbrains/kotlin/idea/testFramework/projectRoutines.kt.192 b/idea/performanceTests/org/jetbrains/kotlin/idea/testFramework/projectRoutines.kt.191 similarity index 80% rename from idea/performanceTests/org/jetbrains/kotlin/idea/testFramework/projectRoutines.kt.192 rename to idea/performanceTests/org/jetbrains/kotlin/idea/testFramework/projectRoutines.kt.191 index d52cf0a827f..d9fd3ae408e 100644 --- a/idea/performanceTests/org/jetbrains/kotlin/idea/testFramework/projectRoutines.kt.192 +++ b/idea/performanceTests/org/jetbrains/kotlin/idea/testFramework/projectRoutines.kt.191 @@ -10,7 +10,6 @@ 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.application.runWriteAction import com.intellij.openapi.editor.Document import com.intellij.openapi.extensions.ExtensionPointName import com.intellij.openapi.fileEditor.FileDocumentManager @@ -20,12 +19,9 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.project.ex.ProjectManagerEx import com.intellij.psi.PsiDocumentManager import com.intellij.psi.impl.PsiDocumentManagerBase -import com.intellij.testFramework.EdtTestUtil import com.intellij.testFramework.PlatformTestUtil -import com.intellij.util.ThrowableRunnable import com.intellij.testFramework.runInEdtAndWait import com.intellij.util.ui.UIUtil -import org.jetbrains.kotlin.idea.highlighter.KotlinPsiCheckerAndHighlightingUpdater import org.jetbrains.kotlin.idea.parameterInfo.HintType import java.util.concurrent.TimeUnit import java.util.concurrent.TimeoutException @@ -77,7 +73,31 @@ fun closeProject(project: Project) { } fun waitForAllEditorsFinallyLoaded(project: Project) { - // routing is obsolete in 192 + 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) { diff --git a/idea/resources/META-INF/plugin.xml b/idea/resources/META-INF/plugin.xml index adea3a99b53..dc7ffda8f30 100644 --- a/idea/resources/META-INF/plugin.xml +++ b/idea/resources/META-INF/plugin.xml @@ -13,7 +13,7 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio. @snapshot@ JetBrains - + com.intellij.modules.platform diff --git a/idea/resources/META-INF/plugin.xml.192 b/idea/resources/META-INF/plugin.xml.191 similarity index 98% rename from idea/resources/META-INF/plugin.xml.192 rename to idea/resources/META-INF/plugin.xml.191 index dc7ffda8f30..adea3a99b53 100644 --- a/idea/resources/META-INF/plugin.xml.192 +++ b/idea/resources/META-INF/plugin.xml.191 @@ -13,7 +13,7 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio. @snapshot@ JetBrains - + com.intellij.modules.platform diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsWizard.kt b/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsWizard.kt index 333f8e46103..eba0b209154 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsWizard.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsWizard.kt @@ -88,11 +88,11 @@ class KotlinGenerateEqualsWizard( override fun getNonNullPanel() = null - override fun updateHashCodeMemberInfos(equalsMemberInfos: MutableCollection) { + override fun updateHashCodeMemberInfos(equalsMemberInfos: MutableCollection) { hashCodePanel?.table?.setMemberInfos(equalsMemberInfos.map { membersToHashCode[it.member] }) } - override fun updateNonNullMemberInfos(equalsMemberInfos: MutableCollection?) { + override fun updateNonNullMemberInfos(equalsMemberInfos: MutableCollection?) { } } diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsWizard.kt.192 b/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsWizard.kt.191 similarity index 98% rename from idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsWizard.kt.192 rename to idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsWizard.kt.191 index eba0b209154..333f8e46103 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsWizard.kt.192 +++ b/idea/src/org/jetbrains/kotlin/idea/actions/generate/KotlinGenerateEqualsWizard.kt.191 @@ -88,11 +88,11 @@ class KotlinGenerateEqualsWizard( override fun getNonNullPanel() = null - override fun updateHashCodeMemberInfos(equalsMemberInfos: MutableCollection) { + override fun updateHashCodeMemberInfos(equalsMemberInfos: MutableCollection) { hashCodePanel?.table?.setMemberInfos(equalsMemberInfos.map { membersToHashCode[it.member] }) } - override fun updateNonNullMemberInfos(equalsMemberInfos: MutableCollection?) { + override fun updateNonNullMemberInfos(equalsMemberInfos: MutableCollection?) { } } diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/dslStyleIcon.kt b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/dslStyleIcon.kt index 189cd7a4fd7..02dd025c745 100644 --- a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/dslStyleIcon.kt +++ b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/dslStyleIcon.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.idea.highlighter.markers import com.intellij.openapi.editor.colors.EditorColorsManager +import com.intellij.openapi.util.ScalableIcon import com.intellij.ui.LayeredIcon import com.intellij.util.ui.ColorsIcon import com.intellij.util.ui.JBUI @@ -15,7 +16,6 @@ import javax.swing.Icon // BUNCH: as35 // BUNCH: as34 -// BUNCH: 191 internal fun createDslStyleIcon(styleId: Int): Icon { val globalScheme = EditorColorsManager.getInstance().globalScheme val markersColor = globalScheme.getAttributes(DslHighlighterExtension.styleById(styleId)).foregroundColor @@ -23,7 +23,7 @@ internal fun createDslStyleIcon(styleId: Int): Icon { val defaultIcon = KotlinIcons.DSL_MARKER_ANNOTATION icon.setIcon(defaultIcon, 0) icon.setIcon( - ColorsIcon(defaultIcon.iconHeight / 2, markersColor).scale(JBUI.pixScale()), + (ColorsIcon(defaultIcon.iconHeight / 2, markersColor) as ScalableIcon).scale(JBUI.pixScale()), 1, defaultIcon.iconHeight / 2, defaultIcon.iconWidth / 2 diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/dslStyleIcon.kt.192 b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/dslStyleIcon.kt.191 similarity index 87% rename from idea/src/org/jetbrains/kotlin/idea/highlighter/markers/dslStyleIcon.kt.192 rename to idea/src/org/jetbrains/kotlin/idea/highlighter/markers/dslStyleIcon.kt.191 index 02dd025c745..189cd7a4fd7 100644 --- a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/dslStyleIcon.kt.192 +++ b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/dslStyleIcon.kt.191 @@ -6,7 +6,6 @@ package org.jetbrains.kotlin.idea.highlighter.markers import com.intellij.openapi.editor.colors.EditorColorsManager -import com.intellij.openapi.util.ScalableIcon import com.intellij.ui.LayeredIcon import com.intellij.util.ui.ColorsIcon import com.intellij.util.ui.JBUI @@ -16,6 +15,7 @@ import javax.swing.Icon // BUNCH: as35 // BUNCH: as34 +// BUNCH: 191 internal fun createDslStyleIcon(styleId: Int): Icon { val globalScheme = EditorColorsManager.getInstance().globalScheme val markersColor = globalScheme.getAttributes(DslHighlighterExtension.styleById(styleId)).foregroundColor @@ -23,7 +23,7 @@ internal fun createDslStyleIcon(styleId: Int): Icon { val defaultIcon = KotlinIcons.DSL_MARKER_ANNOTATION icon.setIcon(defaultIcon, 0) icon.setIcon( - (ColorsIcon(defaultIcon.iconHeight / 2, markersColor) as ScalableIcon).scale(JBUI.pixScale()), + ColorsIcon(defaultIcon.iconHeight / 2, markersColor).scale(JBUI.pixScale()), 1, defaultIcon.iconHeight / 2, defaultIcon.iconWidth / 2 diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/PlatformUnresolvedProvider.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/PlatformUnresolvedProvider.kt index 466c7309ec1..3e927a427be 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/PlatformUnresolvedProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/PlatformUnresolvedProvider.kt @@ -49,7 +49,7 @@ object PlatformUnresolvedProvider : KotlinIntentionActionFactoryWithDelegate) { + override fun unregister(condition: Condition) { } }) } diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/PlatformUnresolvedProvider.kt.192 b/idea/src/org/jetbrains/kotlin/idea/inspections/PlatformUnresolvedProvider.kt.191 similarity index 97% rename from idea/src/org/jetbrains/kotlin/idea/inspections/PlatformUnresolvedProvider.kt.192 rename to idea/src/org/jetbrains/kotlin/idea/inspections/PlatformUnresolvedProvider.kt.191 index 3e927a427be..466c7309ec1 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/PlatformUnresolvedProvider.kt.192 +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/PlatformUnresolvedProvider.kt.191 @@ -49,7 +49,7 @@ object PlatformUnresolvedProvider : KotlinIntentionActionFactoryWithDelegate) { + override fun unregister(condition: Condition) { } }) } diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/ChangeMethodParameters.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/ChangeMethodParameters.kt index 8e513870958..06682bd5880 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/ChangeMethodParameters.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/ChangeMethodParameters.kt @@ -1,16 +1,19 @@ /* - * 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. + * Copyright 2010-2018 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.quickfix.crossLanguage import com.intellij.codeInsight.daemon.QuickFixBundle +import com.intellij.lang.jvm.actions.AnnotationRequest import com.intellij.lang.jvm.actions.ChangeParametersRequest import com.intellij.lang.jvm.actions.ExpectedParameter +import com.intellij.openapi.diagnostic.Logger 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.asJava.elements.KtLightElement import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.descriptors.SourceElement import org.jetbrains.kotlin.descriptors.annotations.Annotations @@ -25,12 +28,8 @@ 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.psi.* import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode -import org.jetbrains.kotlin.types.ErrorUtils import org.jetbrains.kotlin.types.KotlinType internal class ChangeMethodParameters( @@ -61,45 +60,112 @@ internal class ChangeMethodParameters( 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 sealed class ParameterModification { + data class Keep(val ktParameter: KtParameter) : ParameterModification() + data class Remove(val ktParameter: KtParameter) : ParameterModification() + data class Add( + val name: String, + val ktType: KotlinType, + val expectedAnnotations: Collection, + val beforeAnchor: KtParameter? + ) : ParameterModification() + } - private fun getParametersModifications( + private tailrec fun getParametersModifications( target: KtNamedFunction, - expectedParameters: List + currentParameters: List, + expectedParameters: List, + index: Int = 0, + collected: List = ArrayList(expectedParameters.size) ): 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") + val expectedHead = expectedParameters.firstOrNull() ?: return collected + currentParameters.map { ParameterModification.Remove(it) } - ParameterModification( - expectedParameter.semanticNames.firstOrNull() ?: "param$index", kotlinType + if (expectedHead is ChangeParametersRequest.ExistingParameterWrapper) { + val expectedExistingParameter = expectedHead.existingKtParameter + if (expectedExistingParameter == null) { + LOG.error("can't find the kotlinOrigin for parameter ${expectedHead.existingParameter} at index $index") + return collected + } + + val existingInTail = currentParameters.indexOf(expectedExistingParameter) + if (existingInTail == -1) { + throw IllegalArgumentException("can't find existing for parameter ${expectedHead.existingParameter} at index $index") + } + + return getParametersModifications( + target, + currentParameters.subList(existingInTail + 1, currentParameters.size), + expectedParameters.subList(1, expectedParameters.size), + index, + collected + + currentParameters.subList(0, existingInTail).map { ParameterModification.Remove(it) } + + ParameterModification.Keep(expectedExistingParameter) ) } + + val helper = JvmPsiConversionHelper.getInstance(target.project) + + val theType = expectedHead.expectedTypes.firstOrNull()?.theType ?: return emptyList() + val kotlinType = helper.convertType(theType).resolveToKotlinType(target.getResolutionFacade()) ?: return emptyList() + + return getParametersModifications( + target, + currentParameters, + expectedParameters.subList(1, expectedParameters.size), + index + 1, + collected + ParameterModification.Add( + expectedHead.semanticNames.firstOrNull() ?: "param$index", + kotlinType, + expectedHead.expectedAnnotations, + currentParameters.firstOrNull { anchor -> + expectedParameters.any { + it is ChangeParametersRequest.ExistingParameterWrapper && it.existingKtParameter == anchor + } + }) + ) + } + private val ChangeParametersRequest.ExistingParameterWrapper.existingKtParameter + get() = (existingParameter as? KtLightElement<*, *>)?.kotlinOrigin as? KtParameter + + 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 parameterActions = getParametersModifications(target, target.valueParameters, request.expectedParameters) - val parametersGenerated = parameterActions.let { + val parametersGenerated = parameterActions.filterIsInstance().let { it zip generateParameterList(project, functionDescriptor, it).parameters }.toMap() for (action in parameterActions) { - val parameter = parametersGenerated.getValue(action) - target.valueParameterList!!.addParameter(parameter) + when (action) { + is ParameterModification.Add -> { + val parameter = parametersGenerated.getValue(action) + for (expectedAnnotation in action.expectedAnnotations) { + addAnnotationEntry(parameter, expectedAnnotation, null) + } + val anchor = action.beforeAnchor + if (anchor != null) { + target.valueParameterList!!.addParameterBefore(parameter, anchor) + } else { + target.valueParameterList!!.addParameter(parameter) + } + } + + is ParameterModification.Keep -> { + // Do nothing + } + + is ParameterModification.Remove -> { + target.valueParameterList!!.removeParameter(action.ktParameter) + } + } } ShortenReferences.DEFAULT.process(target.valueParameterList!!) @@ -108,7 +174,7 @@ internal class ChangeMethodParameters( private fun generateParameterList( project: Project, functionDescriptor: FunctionDescriptor, - paramsToAdd: List + paramsToAdd: List ): KtParameterList { val newFunctionDescriptor = SimpleFunctionDescriptorImpl.create( functionDescriptor.containingDeclaration, @@ -159,4 +225,7 @@ internal class ChangeMethodParameters( ChangeMethodParameters(ktNamedFunction, request) } -} \ No newline at end of file + +} + +private val LOG = Logger.getInstance(ChangeMethodParameters::class.java) \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/ChangeMethodParameters.kt.192 b/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/ChangeMethodParameters.kt.191 similarity index 54% rename from idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/ChangeMethodParameters.kt.192 rename to idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/ChangeMethodParameters.kt.191 index 06682bd5880..8e513870958 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/ChangeMethodParameters.kt.192 +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/ChangeMethodParameters.kt.191 @@ -1,19 +1,16 @@ /* - * Copyright 2010-2018 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. + * 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.AnnotationRequest import com.intellij.lang.jvm.actions.ChangeParametersRequest import com.intellij.lang.jvm.actions.ExpectedParameter -import com.intellij.openapi.diagnostic.Logger 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.asJava.elements.KtLightElement import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.descriptors.SourceElement import org.jetbrains.kotlin.descriptors.annotations.Annotations @@ -28,8 +25,12 @@ 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.* +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( @@ -60,112 +61,45 @@ internal class ChangeMethodParameters( override fun isAvailable(project: Project, editor: Editor?, file: KtFile): Boolean = element != null && request.isValid - private sealed class ParameterModification { - data class Keep(val ktParameter: KtParameter) : ParameterModification() - data class Remove(val ktParameter: KtParameter) : ParameterModification() - data class Add( - val name: String, - val ktType: KotlinType, - val expectedAnnotations: Collection, - val beforeAnchor: KtParameter? - ) : ParameterModification() - } + private data class ParameterModification( + val name: String, + val ktType: KotlinType + ) - private tailrec fun getParametersModifications( + private fun getParametersModifications( target: KtNamedFunction, - currentParameters: List, - expectedParameters: List, - index: Int = 0, - collected: List = ArrayList(expectedParameters.size) + expectedParameters: List ): List { - - val expectedHead = expectedParameters.firstOrNull() ?: return collected + currentParameters.map { ParameterModification.Remove(it) } - - if (expectedHead is ChangeParametersRequest.ExistingParameterWrapper) { - val expectedExistingParameter = expectedHead.existingKtParameter - if (expectedExistingParameter == null) { - LOG.error("can't find the kotlinOrigin for parameter ${expectedHead.existingParameter} at index $index") - return collected - } - - val existingInTail = currentParameters.indexOf(expectedExistingParameter) - if (existingInTail == -1) { - throw IllegalArgumentException("can't find existing for parameter ${expectedHead.existingParameter} at index $index") - } - - return getParametersModifications( - target, - currentParameters.subList(existingInTail + 1, currentParameters.size), - expectedParameters.subList(1, expectedParameters.size), - index, - collected - + currentParameters.subList(0, existingInTail).map { ParameterModification.Remove(it) } - + ParameterModification.Keep(expectedExistingParameter) - ) - } - val helper = JvmPsiConversionHelper.getInstance(target.project) - val theType = expectedHead.expectedTypes.firstOrNull()?.theType ?: return emptyList() - val kotlinType = helper.convertType(theType).resolveToKotlinType(target.getResolutionFacade()) ?: return emptyList() - - return getParametersModifications( - target, - currentParameters, - expectedParameters.subList(1, expectedParameters.size), - index + 1, - collected + ParameterModification.Add( - expectedHead.semanticNames.firstOrNull() ?: "param$index", - kotlinType, - expectedHead.expectedAnnotations, - currentParameters.firstOrNull { anchor -> - expectedParameters.any { - it is ChangeParametersRequest.ExistingParameterWrapper && it.existingKtParameter == anchor - } - }) - ) + 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 + ) + } } - private val ChangeParametersRequest.ExistingParameterWrapper.existingKtParameter - get() = (existingParameter as? KtLightElement<*, *>)?.kotlinOrigin as? KtParameter - - override fun invoke(project: Project, editor: Editor?, file: KtFile) { if (!request.isValid) return val target = element ?: return val functionDescriptor = target.resolveToDescriptorIfAny(BodyResolveMode.FULL) ?: return - val parameterActions = getParametersModifications(target, target.valueParameters, request.expectedParameters) + target.valueParameterList!!.parameters.forEach { target.valueParameterList!!.removeParameter(it) } + val parameterActions = getParametersModifications(target, request.expectedParameters) - val parametersGenerated = parameterActions.filterIsInstance().let { + val parametersGenerated = parameterActions.let { it zip generateParameterList(project, functionDescriptor, it).parameters }.toMap() for (action in parameterActions) { - when (action) { - is ParameterModification.Add -> { - val parameter = parametersGenerated.getValue(action) - for (expectedAnnotation in action.expectedAnnotations) { - addAnnotationEntry(parameter, expectedAnnotation, null) - } - val anchor = action.beforeAnchor - if (anchor != null) { - target.valueParameterList!!.addParameterBefore(parameter, anchor) - } else { - target.valueParameterList!!.addParameter(parameter) - } - } - - is ParameterModification.Keep -> { - // Do nothing - } - - is ParameterModification.Remove -> { - target.valueParameterList!!.removeParameter(action.ktParameter) - } - } + val parameter = parametersGenerated.getValue(action) + target.valueParameterList!!.addParameter(parameter) } ShortenReferences.DEFAULT.process(target.valueParameterList!!) @@ -174,7 +108,7 @@ internal class ChangeMethodParameters( private fun generateParameterList( project: Project, functionDescriptor: FunctionDescriptor, - paramsToAdd: List + paramsToAdd: List ): KtParameterList { val newFunctionDescriptor = SimpleFunctionDescriptorImpl.create( functionDescriptor.containingDeclaration, @@ -225,7 +159,4 @@ internal class ChangeMethodParameters( ChangeMethodParameters(ktNamedFunction, request) } - -} - -private val LOG = Logger.getInstance(ChangeMethodParameters::class.java) \ No newline at end of file +} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt index 52e11d4e4ec..594e13c739d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt @@ -281,7 +281,7 @@ class KotlinElementActionsFactory : JvmElementActionsFactory() { return listOfNotNull(changePrimaryConstructorAction, addConstructorAction) } - override fun createAddPropertyActions(targetClass: JvmClass, request: MemberRequest.Property): List { + fun createAddPropertyActions(targetClass: JvmClass, request: MemberRequest.Property): List { val targetContainer = targetClass.toKtClassOrFile() ?: return emptyList() return createAddPropertyActions( targetContainer, listOf(request.visibilityModifier), diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt.192 b/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt.191 similarity index 99% rename from idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt.192 rename to idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt.191 index 594e13c739d..52e11d4e4ec 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt.192 +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/crossLanguage/KotlinElementActionsFactory.kt.191 @@ -281,7 +281,7 @@ class KotlinElementActionsFactory : JvmElementActionsFactory() { return listOfNotNull(changePrimaryConstructorAction, addConstructorAction) } - fun createAddPropertyActions(targetClass: JvmClass, request: MemberRequest.Property): List { + override fun createAddPropertyActions(targetClass: JvmClass, request: MemberRequest.Property): List { val targetContainer = targetClass.toKtClassOrFile() ?: return emptyList() return createAddPropertyActions( targetContainer, listOf(request.visibilityModifier), diff --git a/idea/src/org/jetbrains/kotlin/idea/slicer/KotlinSliceDereferenceUsage.kt b/idea/src/org/jetbrains/kotlin/idea/slicer/KotlinSliceDereferenceUsage.kt index d85372c8b0c..92a7e66ac5a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/slicer/KotlinSliceDereferenceUsage.kt +++ b/idea/src/org/jetbrains/kotlin/idea/slicer/KotlinSliceDereferenceUsage.kt @@ -26,7 +26,7 @@ class KotlinSliceDereferenceUsage( parent: KotlinSliceUsage, lambdaLevel: Int ) : KotlinSliceUsage(element, parent, lambdaLevel, false) { - override fun processChildren(processor: Processor) { + override fun processChildren(processor: Processor) { // no children } diff --git a/idea/src/org/jetbrains/kotlin/idea/slicer/KotlinSliceDereferenceUsage.kt.192 b/idea/src/org/jetbrains/kotlin/idea/slicer/KotlinSliceDereferenceUsage.kt.191 similarity index 94% rename from idea/src/org/jetbrains/kotlin/idea/slicer/KotlinSliceDereferenceUsage.kt.192 rename to idea/src/org/jetbrains/kotlin/idea/slicer/KotlinSliceDereferenceUsage.kt.191 index 92a7e66ac5a..d85372c8b0c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/slicer/KotlinSliceDereferenceUsage.kt.192 +++ b/idea/src/org/jetbrains/kotlin/idea/slicer/KotlinSliceDereferenceUsage.kt.191 @@ -26,7 +26,7 @@ class KotlinSliceDereferenceUsage( parent: KotlinSliceUsage, lambdaLevel: Int ) : KotlinSliceUsage(element, parent, lambdaLevel, false) { - override fun processChildren(processor: Processor) { + override fun processChildren(processor: Processor) { // no children } diff --git a/idea/tests/org/jetbrains/kotlin/formatter/AbstractFormatterTest.java b/idea/tests/org/jetbrains/kotlin/formatter/AbstractFormatterTest.java index e8aa2e78359..cd5722eacf5 100644 --- a/idea/tests/org/jetbrains/kotlin/formatter/AbstractFormatterTest.java +++ b/idea/tests/org/jetbrains/kotlin/formatter/AbstractFormatterTest.java @@ -131,7 +131,7 @@ public abstract class AbstractFormatterTest extends LightIdeaTestCase { String testFileExtension = expectedFileNameWithExtension.substring(expectedFileNameWithExtension.lastIndexOf(".")); String originalFileText = FileUtil.loadFile(new File(testFileName + testFileExtension), true); - CodeStyleSettings codeStyleSettings = FormatSettingsUtil.getSettings(); + CodeStyleSettings codeStyleSettings = FormatSettingsUtil.getSettings(getProject()); try { Integer rightMargin = InTextDirectivesUtils.getPrefixedInt(originalFileText, "// RIGHT_MARGIN: "); if (rightMargin != null) { diff --git a/idea/tests/org/jetbrains/kotlin/formatter/AbstractFormatterTest.java.192 b/idea/tests/org/jetbrains/kotlin/formatter/AbstractFormatterTest.java.191 similarity index 99% rename from idea/tests/org/jetbrains/kotlin/formatter/AbstractFormatterTest.java.192 rename to idea/tests/org/jetbrains/kotlin/formatter/AbstractFormatterTest.java.191 index cd5722eacf5..e8aa2e78359 100644 --- a/idea/tests/org/jetbrains/kotlin/formatter/AbstractFormatterTest.java.192 +++ b/idea/tests/org/jetbrains/kotlin/formatter/AbstractFormatterTest.java.191 @@ -131,7 +131,7 @@ public abstract class AbstractFormatterTest extends LightIdeaTestCase { String testFileExtension = expectedFileNameWithExtension.substring(expectedFileNameWithExtension.lastIndexOf(".")); String originalFileText = FileUtil.loadFile(new File(testFileName + testFileExtension), true); - CodeStyleSettings codeStyleSettings = FormatSettingsUtil.getSettings(getProject()); + CodeStyleSettings codeStyleSettings = FormatSettingsUtil.getSettings(); try { Integer rightMargin = InTextDirectivesUtils.getPrefixedInt(originalFileText, "// RIGHT_MARGIN: "); if (rightMargin != null) { diff --git a/idea/tests/org/jetbrains/kotlin/formatter/AbstractTypingIndentationTestBase.java b/idea/tests/org/jetbrains/kotlin/formatter/AbstractTypingIndentationTestBase.java index 055a84fa9ca..a1db573f06e 100644 --- a/idea/tests/org/jetbrains/kotlin/formatter/AbstractTypingIndentationTestBase.java +++ b/idea/tests/org/jetbrains/kotlin/formatter/AbstractTypingIndentationTestBase.java @@ -34,7 +34,7 @@ public abstract class AbstractTypingIndentationTestBase extends LightCodeInsight String originalFileText = FileUtil.loadFile(new File(originFilePath), true); try { - SettingsConfigurator configurator = FormatSettingsUtil.createConfigurator(originalFileText); + SettingsConfigurator configurator = FormatSettingsUtil.createConfigurator(originalFileText, getProject()); if (!inverted) { configurator.configureSettings(); } diff --git a/idea/tests/org/jetbrains/kotlin/formatter/AbstractTypingIndentationTestBase.java.192 b/idea/tests/org/jetbrains/kotlin/formatter/AbstractTypingIndentationTestBase.java.191 similarity index 97% rename from idea/tests/org/jetbrains/kotlin/formatter/AbstractTypingIndentationTestBase.java.192 rename to idea/tests/org/jetbrains/kotlin/formatter/AbstractTypingIndentationTestBase.java.191 index a1db573f06e..055a84fa9ca 100644 --- a/idea/tests/org/jetbrains/kotlin/formatter/AbstractTypingIndentationTestBase.java.192 +++ b/idea/tests/org/jetbrains/kotlin/formatter/AbstractTypingIndentationTestBase.java.191 @@ -34,7 +34,7 @@ public abstract class AbstractTypingIndentationTestBase extends LightCodeInsight String originalFileText = FileUtil.loadFile(new File(originFilePath), true); try { - SettingsConfigurator configurator = FormatSettingsUtil.createConfigurator(originalFileText, getProject()); + SettingsConfigurator configurator = FormatSettingsUtil.createConfigurator(originalFileText); if (!inverted) { configurator.configureSettings(); } diff --git a/idea/tests/org/jetbrains/kotlin/formatter/FormatSettingsUtil.java b/idea/tests/org/jetbrains/kotlin/formatter/FormatSettingsUtil.java index 65e52c81923..c9fceaf42db 100644 --- a/idea/tests/org/jetbrains/kotlin/formatter/FormatSettingsUtil.java +++ b/idea/tests/org/jetbrains/kotlin/formatter/FormatSettingsUtil.java @@ -6,8 +6,8 @@ package org.jetbrains.kotlin.formatter; import com.intellij.application.options.CodeStyle; +import com.intellij.openapi.project.Project; import com.intellij.psi.codeStyle.CodeStyleSettings; -import com.intellij.testFramework.LightPlatformTestCase; import org.jetbrains.kotlin.idea.KotlinLanguage; import org.jetbrains.kotlin.idea.core.formatter.KotlinCodeStyleSettings; import org.jetbrains.kotlin.test.SettingsConfigurator; @@ -16,8 +16,8 @@ public class FormatSettingsUtil { private FormatSettingsUtil() { } - public static CodeStyleSettings getSettings() { - return CodeStyle.getSettings(LightPlatformTestCase.getProject()); + public static CodeStyleSettings getSettings(Project project) { + return CodeStyle.getSettings(project); } public static SettingsConfigurator createConfigurator(String fileText, CodeStyleSettings settings) { @@ -26,7 +26,7 @@ public class FormatSettingsUtil { settings.getCommonSettings(KotlinLanguage.INSTANCE)); } - public static SettingsConfigurator createConfigurator(String fileText) { - return createConfigurator(fileText, getSettings()); + public static SettingsConfigurator createConfigurator(String fileText, Project project) { + return createConfigurator(fileText, getSettings(project)); } } diff --git a/idea/tests/org/jetbrains/kotlin/formatter/FormatSettingsUtil.java.192 b/idea/tests/org/jetbrains/kotlin/formatter/FormatSettingsUtil.java.191 similarity index 80% rename from idea/tests/org/jetbrains/kotlin/formatter/FormatSettingsUtil.java.192 rename to idea/tests/org/jetbrains/kotlin/formatter/FormatSettingsUtil.java.191 index c9fceaf42db..65e52c81923 100644 --- a/idea/tests/org/jetbrains/kotlin/formatter/FormatSettingsUtil.java.192 +++ b/idea/tests/org/jetbrains/kotlin/formatter/FormatSettingsUtil.java.191 @@ -6,8 +6,8 @@ package org.jetbrains.kotlin.formatter; import com.intellij.application.options.CodeStyle; -import com.intellij.openapi.project.Project; import com.intellij.psi.codeStyle.CodeStyleSettings; +import com.intellij.testFramework.LightPlatformTestCase; import org.jetbrains.kotlin.idea.KotlinLanguage; import org.jetbrains.kotlin.idea.core.formatter.KotlinCodeStyleSettings; import org.jetbrains.kotlin.test.SettingsConfigurator; @@ -16,8 +16,8 @@ public class FormatSettingsUtil { private FormatSettingsUtil() { } - public static CodeStyleSettings getSettings(Project project) { - return CodeStyle.getSettings(project); + public static CodeStyleSettings getSettings() { + return CodeStyle.getSettings(LightPlatformTestCase.getProject()); } public static SettingsConfigurator createConfigurator(String fileText, CodeStyleSettings settings) { @@ -26,7 +26,7 @@ public class FormatSettingsUtil { settings.getCommonSettings(KotlinLanguage.INSTANCE)); } - public static SettingsConfigurator createConfigurator(String fileText, Project project) { - return createConfigurator(fileText, getSettings(project)); + public static SettingsConfigurator createConfigurator(String fileText) { + return createConfigurator(fileText, getSettings()); } } diff --git a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/moveUpDown/AbstractCodeMoverTest.kt b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/moveUpDown/AbstractCodeMoverTest.kt index 8745b5aa3a4..8dda95178f8 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/moveUpDown/AbstractCodeMoverTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/moveUpDown/AbstractCodeMoverTest.kt @@ -91,12 +91,14 @@ abstract class AbstractCodeMoverTest : LightCodeInsightTestCase() { } private fun invokeAndCheck(fileText: String, path: String, action: EditorAction, isApplicableExpected: Boolean) { - val codeStyleSettings = FormatSettingsUtil.getSettings() + val editor = LightPlatformCodeInsightTestCase.getEditor() + val project = editor.project!! + + val codeStyleSettings = FormatSettingsUtil.getSettings(project) val configurator = FormatSettingsUtil.createConfigurator(fileText, codeStyleSettings) configurator.configureSettings() try { - val editor = LightPlatformCodeInsightTestCase.getEditor() val dataContext = LightPlatformCodeInsightTestCase.getCurrentEditorDataContext() val before = editor.document.text diff --git a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/moveUpDown/AbstractCodeMoverTest.kt.192 b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/moveUpDown/AbstractCodeMoverTest.kt.191 similarity index 96% rename from idea/tests/org/jetbrains/kotlin/idea/codeInsight/moveUpDown/AbstractCodeMoverTest.kt.192 rename to idea/tests/org/jetbrains/kotlin/idea/codeInsight/moveUpDown/AbstractCodeMoverTest.kt.191 index 8dda95178f8..8745b5aa3a4 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/moveUpDown/AbstractCodeMoverTest.kt.192 +++ b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/moveUpDown/AbstractCodeMoverTest.kt.191 @@ -91,14 +91,12 @@ abstract class AbstractCodeMoverTest : LightCodeInsightTestCase() { } private fun invokeAndCheck(fileText: String, path: String, action: EditorAction, isApplicableExpected: Boolean) { - val editor = LightPlatformCodeInsightTestCase.getEditor() - val project = editor.project!! - - val codeStyleSettings = FormatSettingsUtil.getSettings(project) + val codeStyleSettings = FormatSettingsUtil.getSettings() val configurator = FormatSettingsUtil.createConfigurator(fileText, codeStyleSettings) configurator.configureSettings() try { + val editor = LightPlatformCodeInsightTestCase.getEditor() val dataContext = LightPlatformCodeInsightTestCase.getCurrentEditorDataContext() val before = editor.document.text diff --git a/idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/AbstractNavigateFromLibrarySourcesTest.kt b/idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/AbstractNavigateFromLibrarySourcesTest.kt index 364e7beb244..d7a9b1353a1 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/AbstractNavigateFromLibrarySourcesTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/AbstractNavigateFromLibrarySourcesTest.kt @@ -5,7 +5,6 @@ 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 @@ -15,8 +14,6 @@ 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] diff --git a/idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/AbstractNavigateFromLibrarySourcesTest.kt.192 b/idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/AbstractNavigateFromLibrarySourcesTest.kt.191 similarity index 94% rename from idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/AbstractNavigateFromLibrarySourcesTest.kt.192 rename to idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/AbstractNavigateFromLibrarySourcesTest.kt.191 index d7a9b1353a1..364e7beb244 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/AbstractNavigateFromLibrarySourcesTest.kt.192 +++ b/idea/tests/org/jetbrains/kotlin/idea/decompiler/navigation/AbstractNavigateFromLibrarySourcesTest.kt.191 @@ -5,6 +5,7 @@ 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 @@ -14,6 +15,8 @@ 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] diff --git a/idea/tests/org/jetbrains/kotlin/idea/decompiler/stubBuilder/ClsStubForWrongAbiVersionTest.kt b/idea/tests/org/jetbrains/kotlin/idea/decompiler/stubBuilder/ClsStubForWrongAbiVersionTest.kt index d83a1baac12..978ac733ebd 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/decompiler/stubBuilder/ClsStubForWrongAbiVersionTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/decompiler/stubBuilder/ClsStubForWrongAbiVersionTest.kt @@ -5,7 +5,6 @@ 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 @@ -16,7 +15,6 @@ import java.io.File @RunWith(JUnit3WithIdeaConfigurationRunner::class) class ClsStubBuilderForWrongAbiVersionTest : AbstractClsStubBuilderTest() { - val module: Module get() = myModule fun testPackage() = testStubsForFileWithWrongAbiVersion("Wrong_packageKt") diff --git a/idea/tests/org/jetbrains/kotlin/idea/decompiler/stubBuilder/ClsStubForWrongAbiVersionTest.kt.192 b/idea/tests/org/jetbrains/kotlin/idea/decompiler/stubBuilder/ClsStubForWrongAbiVersionTest.kt.191 similarity index 94% rename from idea/tests/org/jetbrains/kotlin/idea/decompiler/stubBuilder/ClsStubForWrongAbiVersionTest.kt.192 rename to idea/tests/org/jetbrains/kotlin/idea/decompiler/stubBuilder/ClsStubForWrongAbiVersionTest.kt.191 index 978ac733ebd..d83a1baac12 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/decompiler/stubBuilder/ClsStubForWrongAbiVersionTest.kt.192 +++ b/idea/tests/org/jetbrains/kotlin/idea/decompiler/stubBuilder/ClsStubForWrongAbiVersionTest.kt.191 @@ -5,6 +5,7 @@ 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 @@ -15,6 +16,7 @@ import java.io.File @RunWith(JUnit3WithIdeaConfigurationRunner::class) class ClsStubBuilderForWrongAbiVersionTest : AbstractClsStubBuilderTest() { + val module: Module get() = myModule fun testPackage() = testStubsForFileWithWrongAbiVersion("Wrong_packageKt") diff --git a/idea/tests/org/jetbrains/kotlin/idea/editor/KotlinCommenterTest.java b/idea/tests/org/jetbrains/kotlin/idea/editor/KotlinCommenterTest.java index 7e8697c11fc..f05ce95224c 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/editor/KotlinCommenterTest.java +++ b/idea/tests/org/jetbrains/kotlin/idea/editor/KotlinCommenterTest.java @@ -51,7 +51,7 @@ public class KotlinCommenterTest extends LightCodeInsightTestCase { private void doLineCommentTest() throws Exception { configure(); - CodeStyleSettings codeStyleSettings = FormatSettingsUtil.getSettings(); + CodeStyleSettings codeStyleSettings = FormatSettingsUtil.getSettings(getProject()); try { String text = myFile.getText(); diff --git a/idea/tests/org/jetbrains/kotlin/idea/editor/KotlinCommenterTest.java.192 b/idea/tests/org/jetbrains/kotlin/idea/editor/KotlinCommenterTest.java.191 similarity index 99% rename from idea/tests/org/jetbrains/kotlin/idea/editor/KotlinCommenterTest.java.192 rename to idea/tests/org/jetbrains/kotlin/idea/editor/KotlinCommenterTest.java.191 index f05ce95224c..7e8697c11fc 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/editor/KotlinCommenterTest.java.192 +++ b/idea/tests/org/jetbrains/kotlin/idea/editor/KotlinCommenterTest.java.191 @@ -51,7 +51,7 @@ public class KotlinCommenterTest extends LightCodeInsightTestCase { private void doLineCommentTest() throws Exception { configure(); - CodeStyleSettings codeStyleSettings = FormatSettingsUtil.getSettings(getProject()); + CodeStyleSettings codeStyleSettings = FormatSettingsUtil.getSettings(); try { String text = myFile.getText(); diff --git a/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/InlayHintTypeTestUtil.kt b/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/InlayHintTypeTestUtil.kt index ba9b9730be0..4bb9278ebc8 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/InlayHintTypeTestUtil.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/InlayHintTypeTestUtil.kt @@ -7,7 +7,6 @@ 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 @@ -34,7 +33,7 @@ private fun getHintInfoFromProvider(offset: Int, file: PsiFile, editor: Editor): 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 isHintOwnedByElement: (PsiElement) -> Boolean = { e -> provider.getHintInfo(e)?.isOwnedByPsiElement(e, editor) ?: false } val method = PsiTreeUtil.findFirstParent(element, isHintOwnedByElement) ?: return null return provider.getHintInfo(method) diff --git a/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/InlayHintTypeTestUtil.kt.192 b/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/InlayHintTypeTestUtil.kt.191 similarity index 93% rename from idea/tests/org/jetbrains/kotlin/idea/parameterInfo/InlayHintTypeTestUtil.kt.192 rename to idea/tests/org/jetbrains/kotlin/idea/parameterInfo/InlayHintTypeTestUtil.kt.191 index 4bb9278ebc8..ba9b9730be0 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/InlayHintTypeTestUtil.kt.192 +++ b/idea/tests/org/jetbrains/kotlin/idea/parameterInfo/InlayHintTypeTestUtil.kt.191 @@ -7,6 +7,7 @@ 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 @@ -33,7 +34,7 @@ private fun getHintInfoFromProvider(offset: Int, file: PsiFile, editor: Editor): val element = file.findElementAt(offset) ?: return null val provider = InlayParameterHintsExtension.forLanguage(file.language) ?: return null - val isHintOwnedByElement: (PsiElement) -> Boolean = { e -> provider.getHintInfo(e)?.isOwnedByPsiElement(e, editor) ?: false } + 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 b/idea/tests/org/jetbrains/kotlin/idea/quickfix/CommonIntentionActionsParametersTest.kt index fb9b72d357c..1e887066ea4 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/CommonIntentionActionsParametersTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/CommonIntentionActionsParametersTest.kt @@ -1,18 +1,17 @@ /* - * 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. + * 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.quickfix -import com.intellij.lang.jvm.actions.createChangeParametersActions -import com.intellij.lang.jvm.actions.setMethodParametersRequest +import com.intellij.lang.jvm.actions.* 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.jetbrains.kotlin.test.JUnit3WithIdeaConfigurationRunner import org.junit.runner.RunWith @RunWith(JUnit3WithIdeaConfigurationRunner::class) @@ -20,6 +19,11 @@ class CommonIntentionActionsParametersTest : LightPlatformCodeInsightFixtureTest override fun getProjectDescriptor() = KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE_FULL_JDK + override fun setUp() { + super.setUp() + myFixture.configureByText("Anno.kt", "annotation class Anno(val i: Int)") + } + fun testSetParameters() { myFixture.configureByText( "foo.kt", @@ -53,5 +57,116 @@ class CommonIntentionActionsParametersTest : LightPlatformCodeInsightFixtureTest ) } + + fun testAddParameterToTheEnd() { + myFixture.configureByText( + "foo.kt", + """ + class Foo { + fun bar(@Anno(3) a: Int) {} + } + """.trimIndent() + ) + + runParametersTransformation("Change method parameters to '(a: Int, file: File)'") { currentParameters -> + currentParameters + expectedParameter( + PsiType.getTypeByName("java.io.File", project, myFixture.file.resolveScope), "file", + listOf(annotationRequest("Anno", intAttribute("i", 8))) + ) + } + + myFixture.checkResult( + """ + import java.io.File + + class Foo { + fun bar(@Anno(3) a: Int, @Anno(i = 8) file: File) {} + } + """.trimIndent(), true + ) + } + + + fun testAddParameterToTheBeginning() { + myFixture.configureByText( + "foo.kt", + """ + class Foo { + fun bar(@Anno(3) a: Int) {} + } + """.trimIndent() + ) + + runParametersTransformation("Change method parameters to '(file: File, a: Int)'") { currentParameters -> + listOf( + expectedParameter( + PsiType.getTypeByName("java.io.File", project, myFixture.file.resolveScope), "file", + listOf(annotationRequest("Anno", intAttribute("i", 8))) + ) + ) + currentParameters + } + + myFixture.checkResult( + """ + import java.io.File + + class Foo { + fun bar(@Anno(i = 8) file: File, @Anno(3) a: Int) {} + } + """.trimIndent(), true + ) + } + + fun testReplaceInTheMiddle() { + myFixture.configureByText( + "foo.kt", + """ + class Foo { + fun bar(@Anno(1) a: Int, @Anno(2) b: Int, @Anno(3) c: Int) {} + } + """.trimIndent() + ) + + runParametersTransformation("Change method parameters to '(a: Int, file: File, c: Int)'") { currentParameters -> + ArrayList(currentParameters).apply { + this[1] = expectedParameter( + PsiType.getTypeByName("java.io.File", project, myFixture.file.resolveScope), "file", + listOf(annotationRequest("Anno", intAttribute("i", 8))) + ) + } + } + + myFixture.checkResult( + """ + import java.io.File + + class Foo { + fun bar(@Anno(1) a: Int, @Anno(i = 8) file: File, @Anno(3) c: Int) {} + } + """.trimIndent(), true + ) + } + + private fun runParametersTransformation( + actionName: String, + transformation: (List) -> List + ) { + val psiMethod = myFixture.atCaret().javaPsi + val currentParameters = psiMethod.parameters.map { ChangeParametersRequest.ExistingParameterWrapper(it) } + myFixture.launchAction( + createChangeParametersActions( + psiMethod, + SimpleChangeParametersRequest( + transformation(currentParameters) + ) + ).findWithText(actionName) + ) + } + } +private class SimpleChangeParametersRequest(private val list: List) : ChangeParametersRequest { + override fun getExpectedParameters(): List = list + + override fun isValid(): Boolean = true +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/CommonIntentionActionsParametersTest.kt.191 b/idea/tests/org/jetbrains/kotlin/idea/quickfix/CommonIntentionActionsParametersTest.kt.191 new file mode 100644 index 00000000000..fb9b72d357c --- /dev/null +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/CommonIntentionActionsParametersTest.kt.191 @@ -0,0 +1,57 @@ +/* + * 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/CommonIntentionActionsParametersTest.kt.192 b/idea/tests/org/jetbrains/kotlin/idea/quickfix/CommonIntentionActionsParametersTest.kt.192 deleted file mode 100644 index 1e887066ea4..00000000000 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/CommonIntentionActionsParametersTest.kt.192 +++ /dev/null @@ -1,172 +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.quickfix - -import com.intellij.lang.jvm.actions.* -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.uast.UMethod -import org.jetbrains.kotlin.test.JUnit3WithIdeaConfigurationRunner -import org.junit.runner.RunWith - -@RunWith(JUnit3WithIdeaConfigurationRunner::class) -class CommonIntentionActionsParametersTest : LightPlatformCodeInsightFixtureTestCase() { - - override fun getProjectDescriptor() = KotlinWithJdkAndRuntimeLightProjectDescriptor.INSTANCE_FULL_JDK - - override fun setUp() { - super.setUp() - myFixture.configureByText("Anno.kt", "annotation class Anno(val i: Int)") - } - - 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 - ) - } - - - fun testAddParameterToTheEnd() { - myFixture.configureByText( - "foo.kt", - """ - class Foo { - fun bar(@Anno(3) a: Int) {} - } - """.trimIndent() - ) - - runParametersTransformation("Change method parameters to '(a: Int, file: File)'") { currentParameters -> - currentParameters + expectedParameter( - PsiType.getTypeByName("java.io.File", project, myFixture.file.resolveScope), "file", - listOf(annotationRequest("Anno", intAttribute("i", 8))) - ) - } - - myFixture.checkResult( - """ - import java.io.File - - class Foo { - fun bar(@Anno(3) a: Int, @Anno(i = 8) file: File) {} - } - """.trimIndent(), true - ) - } - - - fun testAddParameterToTheBeginning() { - myFixture.configureByText( - "foo.kt", - """ - class Foo { - fun bar(@Anno(3) a: Int) {} - } - """.trimIndent() - ) - - runParametersTransformation("Change method parameters to '(file: File, a: Int)'") { currentParameters -> - listOf( - expectedParameter( - PsiType.getTypeByName("java.io.File", project, myFixture.file.resolveScope), "file", - listOf(annotationRequest("Anno", intAttribute("i", 8))) - ) - ) + currentParameters - } - - myFixture.checkResult( - """ - import java.io.File - - class Foo { - fun bar(@Anno(i = 8) file: File, @Anno(3) a: Int) {} - } - """.trimIndent(), true - ) - } - - fun testReplaceInTheMiddle() { - myFixture.configureByText( - "foo.kt", - """ - class Foo { - fun bar(@Anno(1) a: Int, @Anno(2) b: Int, @Anno(3) c: Int) {} - } - """.trimIndent() - ) - - runParametersTransformation("Change method parameters to '(a: Int, file: File, c: Int)'") { currentParameters -> - ArrayList(currentParameters).apply { - this[1] = expectedParameter( - PsiType.getTypeByName("java.io.File", project, myFixture.file.resolveScope), "file", - listOf(annotationRequest("Anno", intAttribute("i", 8))) - ) - } - } - - myFixture.checkResult( - """ - import java.io.File - - class Foo { - fun bar(@Anno(1) a: Int, @Anno(i = 8) file: File, @Anno(3) c: Int) {} - } - """.trimIndent(), true - ) - } - - private fun runParametersTransformation( - actionName: String, - transformation: (List) -> List - ) { - val psiMethod = myFixture.atCaret().javaPsi - val currentParameters = psiMethod.parameters.map { ChangeParametersRequest.ExistingParameterWrapper(it) } - myFixture.launchAction( - createChangeParametersActions( - psiMethod, - SimpleChangeParametersRequest( - transformation(currentParameters) - ) - ).findWithText(actionName) - ) - } - -} - -private class SimpleChangeParametersRequest(private val list: List) : ChangeParametersRequest { - override fun getExpectedParameters(): List = list - - override fun isValid(): Boolean = true -} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/UpdateConfigurationQuickFixTest.kt b/idea/tests/org/jetbrains/kotlin/idea/quickfix/UpdateConfigurationQuickFixTest.kt index 81b8a7b24ec..b1d004e6253 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/UpdateConfigurationQuickFixTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/UpdateConfigurationQuickFixTest.kt @@ -35,9 +35,6 @@ import java.io.File @RunWith(JUnit3WithIdeaConfigurationRunner::class) class UpdateConfigurationQuickFixTest : LightPlatformCodeInsightFixtureTestCase() { - - val module: Module get() = myModule - fun testDisableInlineClasses() { configureRuntime("mockRuntime11") resetProjectSettings(LanguageVersion.KOTLIN_1_3) diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/UpdateConfigurationQuickFixTest.kt.192 b/idea/tests/org/jetbrains/kotlin/idea/quickfix/UpdateConfigurationQuickFixTest.kt.191 similarity index 99% rename from idea/tests/org/jetbrains/kotlin/idea/quickfix/UpdateConfigurationQuickFixTest.kt.192 rename to idea/tests/org/jetbrains/kotlin/idea/quickfix/UpdateConfigurationQuickFixTest.kt.191 index b1d004e6253..81b8a7b24ec 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/UpdateConfigurationQuickFixTest.kt.192 +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/UpdateConfigurationQuickFixTest.kt.191 @@ -35,6 +35,9 @@ import java.io.File @RunWith(JUnit3WithIdeaConfigurationRunner::class) class UpdateConfigurationQuickFixTest : LightPlatformCodeInsightFixtureTestCase() { + + val module: Module get() = myModule + fun testDisableInlineClasses() { configureRuntime("mockRuntime11") resetProjectSettings(LanguageVersion.KOTLIN_1_3) diff --git a/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterForWebDemoTest.kt b/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterForWebDemoTest.kt index f9be4d4a121..dfed38f4584 100644 --- a/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterForWebDemoTest.kt +++ b/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterForWebDemoTest.kt @@ -87,7 +87,6 @@ abstract class AbstractJavaToKotlinConverterForWebDemoTest : TestCase() { 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) diff --git a/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterForWebDemoTest.kt.192 b/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterForWebDemoTest.kt.191 similarity index 98% rename from j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterForWebDemoTest.kt.192 rename to j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterForWebDemoTest.kt.191 index dfed38f4584..f9be4d4a121 100644 --- a/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterForWebDemoTest.kt.192 +++ b/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterForWebDemoTest.kt.191 @@ -87,6 +87,7 @@ abstract class AbstractJavaToKotlinConverterForWebDemoTest : TestCase() { 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) diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUFile.kt b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUFile.kt index 690861f455a..dbcaaf1ae22 100644 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUFile.kt +++ b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUFile.kt @@ -39,7 +39,7 @@ class KotlinUFile( override val javaPsi: PsiElement? = null - override val sourcePsi: PsiElement? = psi + override val sourcePsi: KtFile = psi override val allCommentsInFile by lz { val comments = ArrayList(0) diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUFile.kt.192 b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUFile.kt.191 similarity index 98% rename from plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUFile.kt.192 rename to plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUFile.kt.191 index dbcaaf1ae22..690861f455a 100644 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUFile.kt.192 +++ b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUFile.kt.191 @@ -39,7 +39,7 @@ class KotlinUFile( override val javaPsi: PsiElement? = null - override val sourcePsi: KtFile = psi + override val sourcePsi: PsiElement? = psi override val allCommentsInFile by lz { val comments = ArrayList(0) diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt index 764a2ceb594..543e2041ad2 100644 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt +++ b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt @@ -105,9 +105,6 @@ open class KotlinUMethod( wrapExpressionBody(this, bodyExpression) } - override val isOverride: Boolean - get() = (kotlinOrigin as? KtCallableDeclaration)?.hasModifier(KtTokens.OVERRIDE_KEYWORD) ?: false - override fun getBody(): PsiCodeBlock? = super.getBody() override fun getOriginalElement(): PsiElement? = super.getOriginalElement() diff --git a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt.192 b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt.191 similarity index 97% rename from plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt.192 rename to plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt.191 index 543e2041ad2..764a2ceb594 100644 --- a/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt.192 +++ b/plugins/uast-kotlin/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt.191 @@ -105,6 +105,9 @@ open class KotlinUMethod( wrapExpressionBody(this, bodyExpression) } + override val isOverride: Boolean + get() = (kotlinOrigin as? KtCallableDeclaration)?.hasModifier(KtTokens.OVERRIDE_KEYWORD) ?: false + override fun getBody(): PsiCodeBlock? = super.getBody() override fun getOriginalElement(): PsiElement? = super.getOriginalElement() diff --git a/plugins/uast-kotlin/tests/AbstractKotlinIdentifiersTest.kt b/plugins/uast-kotlin/tests/AbstractKotlinIdentifiersTest.kt index 0262154ebf6..7ad8eaf5956 100644 --- a/plugins/uast-kotlin/tests/AbstractKotlinIdentifiersTest.kt +++ b/plugins/uast-kotlin/tests/AbstractKotlinIdentifiersTest.kt @@ -4,6 +4,7 @@ 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.common.visitUFileAndGetResult import org.jetbrains.uast.test.env.assertEqualsToFile import java.io.File import kotlin.test.assertNotNull diff --git a/plugins/uast-kotlin/tests/AbstractKotlinIdentifiersTest.kt.192 b/plugins/uast-kotlin/tests/AbstractKotlinIdentifiersTest.kt.191 similarity index 96% rename from plugins/uast-kotlin/tests/AbstractKotlinIdentifiersTest.kt.192 rename to plugins/uast-kotlin/tests/AbstractKotlinIdentifiersTest.kt.191 index 7ad8eaf5956..0262154ebf6 100644 --- a/plugins/uast-kotlin/tests/AbstractKotlinIdentifiersTest.kt.192 +++ b/plugins/uast-kotlin/tests/AbstractKotlinIdentifiersTest.kt.191 @@ -4,7 +4,6 @@ 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.common.visitUFileAndGetResult import org.jetbrains.uast.test.env.assertEqualsToFile import java.io.File import kotlin.test.assertNotNull diff --git a/plugins/uast-kotlin/tests/org/jetbrains/uast/test/common/kotlin/ResolveTestBase.kt b/plugins/uast-kotlin/tests/org/jetbrains/uast/test/common/kotlin/ResolveTestBase.kt index 731ff0d07b7..96c36267c22 100644 --- a/plugins/uast-kotlin/tests/org/jetbrains/uast/test/common/kotlin/ResolveTestBase.kt +++ b/plugins/uast-kotlin/tests/org/jetbrains/uast/test/common/kotlin/ResolveTestBase.kt @@ -28,7 +28,7 @@ interface ResolveTestBase { 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 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 "") diff --git a/plugins/uast-kotlin/tests/org/jetbrains/uast/test/common/kotlin/ResolveTestBase.kt.192 b/plugins/uast-kotlin/tests/org/jetbrains/uast/test/common/kotlin/ResolveTestBase.kt.191 similarity index 97% rename from plugins/uast-kotlin/tests/org/jetbrains/uast/test/common/kotlin/ResolveTestBase.kt.192 rename to plugins/uast-kotlin/tests/org/jetbrains/uast/test/common/kotlin/ResolveTestBase.kt.191 index 96c36267c22..731ff0d07b7 100644 --- a/plugins/uast-kotlin/tests/org/jetbrains/uast/test/common/kotlin/ResolveTestBase.kt.192 +++ b/plugins/uast-kotlin/tests/org/jetbrains/uast/test/common/kotlin/ResolveTestBase.kt.191 @@ -28,7 +28,7 @@ interface ResolveTestBase { 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 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 "")