From b3d85e656e956e6df9611aea25b7d038e62de400 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Tue, 8 Dec 2020 12:36:19 +0100 Subject: [PATCH] Fix warnings after update to 202 platform #KT-44069 Fixed --- .../kotlin/codegen/ClassBuilderRecord.kt.201 | 1 + .../SignatureCollectingClassBuilderFactory.kt | 3 +- .../kotlin/codegen/inline/LambdaInfo.kt | 19 ++++-------- .../codegen/inline/ObjectTransformer.kt | 5 ++-- .../codegen/inline/inlineCodegenUtils.kt | 10 +++---- .../KotlinCoreApplicationEnvironment.java | 5 ++-- .../cli/jvm/compiler/KotlinCoreEnvironment.kt | 7 ++--- .../compiler/KotlinCoreEnvironment.kt.as42 | 30 +++++++++++-------- .../cli/jvm/index/JvmDependenciesIndexImpl.kt | 3 +- .../org/jetbrains/kotlin/container/Cache.kt | 3 +- .../ApplicationExtensionDescriptor.kt | 8 ++--- .../diagnostics/DiagnosticsElementsCache.java | 5 ++-- .../classes/KotlinClassInnerStuffCache.kt | 11 ++----- .../asJava/classes/lightClassPlatformUtils.kt | 13 ++++++++ .../classes/lightClassPlatformUtils.kt.201 | 13 ++++++++ .../resolve/jvm/KotlinJavaPsiFacade.java | 8 ++--- .../AbstractCheckLocalVariablesTableTest.kt | 11 ++----- .../jetbrains/kotlin/utils/platformUtils.kt | 4 +++ .../kotlin/utils/platformUtils.kt.201 | 5 ++++ .../KotlinScriptDefinitionProvider.kt | 3 +- 20 files changed, 93 insertions(+), 74 deletions(-) create mode 100644 compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/lightClassPlatformUtils.kt create mode 100644 compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/lightClassPlatformUtils.kt.201 diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassBuilderRecord.kt.201 b/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassBuilderRecord.kt.201 index 72d66859291..9bbdd111b61 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassBuilderRecord.kt.201 +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ClassBuilderRecord.kt.201 @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.codegen +@Suppress("UNUSED_PARAMETER", "unused") fun ClassBuilder.addRecordComponent(name: String, desc: String, signature: String?) { // newRecordComponent(name, desc, signature) } diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/SignatureCollectingClassBuilderFactory.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/SignatureCollectingClassBuilderFactory.kt index e3f4ca845bd..6897eb2bad1 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/SignatureCollectingClassBuilderFactory.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/SignatureCollectingClassBuilderFactory.kt @@ -17,7 +17,6 @@ package org.jetbrains.kotlin.codegen import com.intellij.psi.PsiElement -import com.intellij.util.containers.LinkedMultiMap import com.intellij.util.containers.MultiMap import org.jetbrains.kotlin.codegen.state.JvmMethodExceptionTypes import org.jetbrains.kotlin.resolve.jvm.diagnostics.ConflictingJvmDeclarationsData @@ -49,7 +48,7 @@ abstract class SignatureCollectingClassBuilderFactory( private lateinit var classInternalName: String - private val signatures = LinkedMultiMap() + private val signatures = MultiMap.createLinked() override fun defineClass(origin: PsiElement?, version: Int, access: Int, name: String, signature: String?, superName: String, interfaces: Array) { classInternalName = name diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/LambdaInfo.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/LambdaInfo.kt index 4013f24796a..2da961b68cd 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/LambdaInfo.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/LambdaInfo.kt @@ -137,7 +137,8 @@ abstract class DefaultLambda( override val isSuspend = parameterDescriptor.isSuspendLambda override fun generateLambdaBody(sourceCompiler: SourceCompilerForInline, reifiedTypeInliner: ReifiedTypeInliner<*>) { - val classReader = buildClassReaderByInternalName(sourceCompiler.state, lambdaClassType.internalName) + val classBytes = loadClassBytesByInternalName(sourceCompiler.state, lambdaClassType.internalName) + val classReader = ClassReader(classBytes) var isPropertyReference = false var isFunctionReference = false classReader.accept(object : ClassVisitor(Opcodes.API_VERSION) { @@ -162,12 +163,7 @@ abstract class DefaultLambda( } val descriptor = Type.getMethodDescriptor(Type.VOID_TYPE, *capturedArgs) - val constructor = getMethodNode( - classReader.b, - "", - descriptor, - lambdaClassType - )?.node + val constructor = getMethodNode(classBytes, "", descriptor, lambdaClassType)?.node assert(constructor != null || capturedArgs.isEmpty()) { "Can't find non-default constructor $descriptor for default lambda $lambdaClassType" @@ -190,13 +186,8 @@ abstract class DefaultLambda( val signature = mapAsmSignature(sourceCompiler) - node = getMethodNode( - classReader.b, - methodName, - signature.descriptor, - lambdaClassType, - signatureAmbiguity = true - ) ?: error("Can't find method '$methodName$signature' in '${classReader.className}'") + node = getMethodNode(classBytes, methodName, signature.descriptor, lambdaClassType, signatureAmbiguity = true) + ?: error("Can't find method '$methodName$signature' in '${classReader.className}'") invokeMethod = Method(node.node.name, node.node.desc) diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ObjectTransformer.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ObjectTransformer.kt index 4cf70706bb2..fb735ffa313 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ObjectTransformer.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/ObjectTransformer.kt @@ -46,9 +46,8 @@ abstract class ObjectTransformer(@JvmField val trans ) } - fun createClassReader(): ClassReader { - return buildClassReaderByInternalName(state, transformationInfo.oldClassName) - } + fun createClassReader(): ClassReader = + ClassReader(loadClassBytesByInternalName(state, transformationInfo.oldClassName)) } class WhenMappingTransformer( diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/inlineCodegenUtils.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/inlineCodegenUtils.kt index cc29fc26a61..c090f200925 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/inlineCodegenUtils.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/inlineCodegenUtils.kt @@ -346,16 +346,16 @@ internal val AbstractInsnNode?.insnText: String internal val AbstractInsnNode?.insnOpcodeText: String get() = if (this == null) "null" else Printer.OPCODES[opcode] -internal fun buildClassReaderByInternalName(state: GenerationState, internalName: String): ClassReader { +internal fun loadClassBytesByInternalName(state: GenerationState, internalName: String): ByteArray { //try to find just compiled classes then in dependencies - val outputFile = state.factory.get(internalName + ".class") + val outputFile = state.factory.get("$internalName.class") if (outputFile != null) { - return ClassReader(outputFile.asByteArray()) + return outputFile.asByteArray() } - val file = findVirtualFileImprecise(state, internalName) ?: throw RuntimeException("Couldn't find virtual file for " + internalName) + val file = findVirtualFileImprecise(state, internalName) ?: throw RuntimeException("Couldn't find virtual file for $internalName") - return ClassReader(file.contentsToByteArray()) + return file.contentsToByteArray() } fun generateFinallyMarker(v: InstructionAdapter, depth: Int, start: Boolean) { diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreApplicationEnvironment.java b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreApplicationEnvironment.java index 447e2acd62e..8b86d40a0c3 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreApplicationEnvironment.java +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreApplicationEnvironment.java @@ -10,11 +10,10 @@ import com.intellij.codeInsight.runner.JavaMainMethodProvider; import com.intellij.core.JavaCoreApplicationEnvironment; import com.intellij.lang.MetaLanguage; import com.intellij.openapi.Disposable; -import com.intellij.openapi.extensions.Extensions; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.vfs.VirtualFileSystem; import com.intellij.psi.FileContextProvider; import com.intellij.psi.augment.PsiAugmentProvider; -import com.intellij.psi.compiled.ClassFileDecompilers; import com.intellij.psi.meta.MetaDataContributor; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -43,7 +42,7 @@ public class KotlinCoreApplicationEnvironment extends JavaCoreApplicationEnviron registerApplicationExtensionPoint(MetaLanguage.EP_NAME, MetaLanguage.class); - IdeaExtensionPoints.INSTANCE.registerVersionSpecificAppExtensionPoints(Extensions.getRootArea()); + IdeaExtensionPoints.INSTANCE.registerVersionSpecificAppExtensionPoints(ApplicationManager.getApplication().getExtensionArea()); } @Nullable diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt index dc9270e9345..6c9c67719ae 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt @@ -25,11 +25,11 @@ import com.intellij.ide.highlighter.JavaFileType import com.intellij.lang.java.JavaParserDefinition import com.intellij.mock.MockProject import com.intellij.openapi.Disposable +import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.TransactionGuard import com.intellij.openapi.application.TransactionGuardImpl import com.intellij.openapi.components.ServiceManager import com.intellij.openapi.diagnostic.Logger -import com.intellij.openapi.extensions.Extensions import com.intellij.openapi.extensions.ExtensionsArea import com.intellij.openapi.fileTypes.PlainTextFileType import com.intellij.openapi.project.Project @@ -42,7 +42,6 @@ import com.intellij.openapi.vfs.impl.ZipHandler import com.intellij.pom.java.LanguageLevel import com.intellij.psi.PsiElementFinder import com.intellij.psi.PsiManager -import com.intellij.psi.compiled.ClassFileDecompilers import com.intellij.psi.impl.JavaClassSupersImpl import com.intellij.psi.impl.PsiElementFinderImpl import com.intellij.psi.impl.PsiTreeChangePreprocessor @@ -530,7 +529,7 @@ class KotlinCoreEnvironment private constructor( registerApplicationExtensionPointsAndExtensionsFrom(configuration, "extensions/compiler.xml") // FIX ME WHEN BUNCH 202 REMOVED: this code is required to support compiler bundled to both 202 and 203. // Please, remove "com.intellij.psi.classFileDecompiler" EP registration once 202 is no longer supported by the compiler - if (!Extensions.getRootArea().hasExtensionPoint("com.intellij.psi.classFileDecompiler")) { + if (!ApplicationManager.getApplication().extensionArea.hasExtensionPoint("com.intellij.psi.classFileDecompiler")) { registerApplicationExtensionPointsAndExtensionsFrom(configuration, "extensions/core.xml") } @@ -564,7 +563,7 @@ class KotlinCoreEnvironment private constructor( CoreApplicationEnvironment.registerExtensionPointAndExtensions( FileSystems.getDefault().getPath(pluginRoot.path), configFilePath, - Extensions.getRootArea() + ApplicationManager.getApplication().extensionArea ) } diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt.as42 b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt.as42 index dc420f7f739..c1eeff31cc6 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt.as42 +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/KotlinCoreEnvironment.kt.as42 @@ -25,11 +25,11 @@ import com.intellij.ide.highlighter.JavaFileType import com.intellij.lang.java.JavaParserDefinition import com.intellij.mock.MockProject import com.intellij.openapi.Disposable +import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.TransactionGuard import com.intellij.openapi.application.TransactionGuardImpl import com.intellij.openapi.components.ServiceManager import com.intellij.openapi.diagnostic.Logger -import com.intellij.openapi.extensions.Extensions import com.intellij.openapi.extensions.ExtensionsArea import com.intellij.openapi.fileTypes.PlainTextFileType import com.intellij.openapi.project.DumbUtil @@ -123,7 +123,7 @@ class KotlinCoreEnvironment private constructor( private var extensionRegistered = false override fun preregisterServices() { - registerProjectExtensionPoints(Extensions.getArea(project)) + registerProjectExtensionPoints(project.extensionArea) } fun registerExtensionsFromPlugins(configuration: CompilerConfiguration) { @@ -552,7 +552,7 @@ class KotlinCoreEnvironment private constructor( CoreApplicationEnvironment.registerExtensionPointAndExtensions( FileSystems.getDefault().getPath(pluginRoot.path), configFilePath, - Extensions.getRootArea() + ApplicationManager.getApplication().extensionArea ) } @@ -621,9 +621,9 @@ class KotlinCoreEnvironment private constructor( @JvmStatic fun registerProjectExtensionPoints(area: ExtensionsArea) { CoreApplicationEnvironment.registerExtensionPoint( - area, PsiTreeChangePreprocessor.EP_NAME, PsiTreeChangePreprocessor::class.java + area, PsiTreeChangePreprocessor.EP.name, PsiTreeChangePreprocessor::class.java ) - CoreApplicationEnvironment.registerExtensionPoint(area, PsiElementFinder.EP_NAME, PsiElementFinder::class.java) + CoreApplicationEnvironment.registerExtensionPoint(area, PsiElementFinder.EP.name, PsiElementFinder::class.java) IdeaExtensionPoints.registerVersionSpecificProjectExtensionPoints(area) } @@ -631,7 +631,10 @@ class KotlinCoreEnvironment private constructor( // made public for Upsource @JvmStatic @Deprecated("Use registerProjectServices(project) instead.", ReplaceWith("registerProjectServices(projectEnvironment.project)")) - fun registerProjectServices(projectEnvironment: JavaCoreProjectEnvironment, messageCollector: MessageCollector?) { + fun registerProjectServices( + projectEnvironment: JavaCoreProjectEnvironment, + @Suppress("UNUSED_PARAMETER") messageCollector: MessageCollector? + ) { registerProjectServices(projectEnvironment.project) } @@ -666,12 +669,15 @@ class KotlinCoreEnvironment private constructor( @Suppress("UnstableApiUsage") registerService(DumbUtil::class.java, KotlinCoreDumbUtil()) - val area = Extensions.getArea(this) - - area.getExtensionPoint(PsiElementFinder.EP_NAME).registerExtension(JavaElementFinder(this, kotlinAsJavaSupport)) - area.getExtensionPoint(PsiElementFinder.EP_NAME).registerExtension( - PsiElementFinderImpl(this, ServiceManager.getService(this, JavaFileManager::class.java)) - ) + // We don't pass Disposable because in some tests, we manually unregister these extensions, and that leads to LOG.error + // exception from `ExtensionPointImpl.doRegisterExtension`, because the registered extension can no longer be found + // when the project is being disposed. + // For example, see the `unregisterExtension` call in `GenerationUtils.compileFilesUsingFrontendIR`. + // TODO: refactor this to avoid registering unneeded extensions in the first place, and avoid using deprecated API. + @Suppress("DEPRECATION") + PsiElementFinder.EP.getPoint(project).registerExtension(JavaElementFinder(this, kotlinAsJavaSupport)) + @Suppress("DEPRECATION") + PsiElementFinder.EP.getPoint(project).registerExtension(PsiElementFinderImpl(this)) } } diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/index/JvmDependenciesIndexImpl.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/index/JvmDependenciesIndexImpl.kt index e46f60491ac..bf901db9ef7 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/index/JvmDependenciesIndexImpl.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/index/JvmDependenciesIndexImpl.kt @@ -45,7 +45,8 @@ class JvmDependenciesIndexImpl(_roots: List) : JvmDependenciesIndex { // indices of roots that are known to contain this package // if this list contains [1, 3, 5] then roots with indices 1, 3 and 5 are known to contain this package, 2 and 4 are known not to (no information about roots 6 or higher) // if this list contains maxIndex that means that all roots containing this package are known - val rootIndices = IntArrayList(2) + @Suppress("DEPRECATION") // TODO: fix deprecation + val rootIndices = com.intellij.util.containers.IntArrayList(2) } // root "Cache" object corresponds to DefaultPackage which exists in every root. Roots with non-default fqname are also listed here but diff --git a/compiler/container/src/org/jetbrains/kotlin/container/Cache.kt b/compiler/container/src/org/jetbrains/kotlin/container/Cache.kt index 9a663cf4e74..191ecd37471 100644 --- a/compiler/container/src/org/jetbrains/kotlin/container/Cache.kt +++ b/compiler/container/src/org/jetbrains/kotlin/container/Cache.kt @@ -19,10 +19,11 @@ package org.jetbrains.kotlin.container import com.intellij.util.containers.ContainerUtil import java.lang.reflect.* import java.util.* +import java.util.concurrent.ConcurrentHashMap private object ClassTraversalCache { private val cache = - if (System.getProperty("idea.system.path") != null) ContainerUtil.newConcurrentMap, ClassInfo>() + if (System.getProperty("idea.system.path") != null) ConcurrentHashMap, ClassInfo>() else ContainerUtil.createConcurrentWeakKeySoftValueMap, ClassInfo>() fun getClassInfo(c: Class<*>): ClassInfo { diff --git a/compiler/frontend/src/org/jetbrains/kotlin/extensions/ApplicationExtensionDescriptor.kt b/compiler/frontend/src/org/jetbrains/kotlin/extensions/ApplicationExtensionDescriptor.kt index 8f4572a2a6d..29a64ee1c2b 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/extensions/ApplicationExtensionDescriptor.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/extensions/ApplicationExtensionDescriptor.kt @@ -6,15 +6,15 @@ package org.jetbrains.kotlin.extensions import com.intellij.openapi.Disposable +import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.extensions.ExtensionPoint import com.intellij.openapi.extensions.ExtensionPointName -import com.intellij.openapi.extensions.Extensions open class ApplicationExtensionDescriptor(name: String, private val extensionClass: Class) { val extensionPointName: ExtensionPointName = ExtensionPointName.create(name) fun registerExtensionPoint() { - Extensions.getRootArea().registerExtensionPoint( + ApplicationManager.getApplication().extensionArea.registerExtensionPoint( extensionPointName.name, extensionClass.name, ExtensionPoint.Kind.INTERFACE @@ -22,11 +22,11 @@ open class ApplicationExtensionDescriptor(name: String, private val ext } fun registerExtension(extension: T, disposable: Disposable) { - Extensions.getRootArea().getExtensionPoint(extensionPointName).registerExtension(extension, disposable) + ApplicationManager.getApplication().extensionArea.getExtensionPoint(extensionPointName).registerExtension(extension, disposable) } fun getInstances(): List { - val projectArea = Extensions.getRootArea() + val projectArea = ApplicationManager.getApplication().extensionArea if (!projectArea.hasExtensionPoint(extensionPointName.name)) return listOf() return projectArea.getExtensionPoint(extensionPointName).extensions.toList() diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/diagnostics/DiagnosticsElementsCache.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/diagnostics/DiagnosticsElementsCache.java index a4a4c101959..d08282e9a46 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/diagnostics/DiagnosticsElementsCache.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/diagnostics/DiagnosticsElementsCache.java @@ -18,7 +18,6 @@ package org.jetbrains.kotlin.resolve.diagnostics; import com.intellij.openapi.util.AtomicNotNullLazyValue; import com.intellij.psi.PsiElement; -import com.intellij.util.containers.ConcurrentMultiMap; import com.intellij.util.containers.MultiMap; import kotlin.collections.CollectionsKt; import kotlin.jvm.functions.Function1; @@ -27,6 +26,8 @@ import org.jetbrains.kotlin.diagnostics.Diagnostic; import java.util.Collection; +import static org.jetbrains.kotlin.utils.PlatformUtilsKt.createConcurrentMultiMap; + public class DiagnosticsElementsCache { private final Diagnostics diagnostics; private final Function1 filter; @@ -50,7 +51,7 @@ public class DiagnosticsElementsCache { } private static MultiMap buildElementToDiagnosticCache(Diagnostics diagnostics, Function1 filter) { - MultiMap elementToDiagnostic = new ConcurrentMultiMap<>(); + MultiMap elementToDiagnostic = createConcurrentMultiMap(); for (Diagnostic diagnostic : diagnostics) { if (diagnostic == null) { throw new IllegalStateException( diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KotlinClassInnerStuffCache.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KotlinClassInnerStuffCache.kt index 442e9669d8c..d9451a32011 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KotlinClassInnerStuffCache.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/KotlinClassInnerStuffCache.kt @@ -8,8 +8,6 @@ package org.jetbrains.kotlin.asJava.classes import com.intellij.openapi.diagnostic.Logger import com.intellij.openapi.util.SimpleModificationTracker import com.intellij.psi.* -import com.intellij.psi.augment.PsiAugmentProvider -import com.intellij.psi.impl.PsiCachedValueImpl import com.intellij.psi.impl.PsiClassImplUtil import com.intellij.psi.impl.PsiImplUtil import com.intellij.psi.impl.light.LightMethod @@ -17,12 +15,9 @@ import com.intellij.psi.impl.source.PsiExtensibleClass import com.intellij.psi.scope.ElementClassHint import com.intellij.psi.scope.NameHint import com.intellij.psi.scope.PsiScopeProcessor -import com.intellij.psi.util.CachedValueProvider import com.intellij.util.ArrayUtil import gnu.trove.THashMap import org.jetbrains.kotlin.utils.SmartList -import java.util.concurrent.TimeUnit -import java.util.concurrent.locks.ReentrantLock class KotlinClassInnerStuffCache( private val myClass: PsiExtensibleClass, @@ -102,19 +97,19 @@ class KotlinClassInnerStuffCache( private fun getAllFields(): Array { val own = myClass.ownFields - val ext = PsiAugmentProvider.collectAugments(myClass, PsiField::class.java) + val ext = collectAugments(myClass, PsiField::class.java) return ArrayUtil.mergeCollections(own, ext, PsiField.ARRAY_FACTORY) } private fun getAllMethods(): Array { val own = myClass.ownMethods - val ext = PsiAugmentProvider.collectAugments(myClass, PsiMethod::class.java) + val ext = collectAugments(myClass, PsiMethod::class.java) return ArrayUtil.mergeCollections(own, ext, PsiMethod.ARRAY_FACTORY) } private fun getAllInnerClasses(): Array { val own = myClass.ownInnerClasses - val ext = PsiAugmentProvider.collectAugments(myClass, PsiClass::class.java) + val ext = collectAugments(myClass, PsiClass::class.java) return ArrayUtil.mergeCollections(own, ext, PsiClass.ARRAY_FACTORY) } diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/lightClassPlatformUtils.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/lightClassPlatformUtils.kt new file mode 100644 index 00000000000..81cac306ecf --- /dev/null +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/lightClassPlatformUtils.kt @@ -0,0 +1,13 @@ +/* + * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.asJava.classes + +import com.intellij.psi.PsiElement +import com.intellij.psi.augment.PsiAugmentProvider + +internal fun collectAugments(element: PsiElement, type: Class): List { + return PsiAugmentProvider.collectAugments(element, type, null) +} diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/lightClassPlatformUtils.kt.201 b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/lightClassPlatformUtils.kt.201 new file mode 100644 index 00000000000..8ba9866df58 --- /dev/null +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/lightClassPlatformUtils.kt.201 @@ -0,0 +1,13 @@ +/* + * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.asJava.classes + +import com.intellij.psi.PsiElement +import com.intellij.psi.augment.PsiAugmentProvider + +internal fun collectAugments(element: PsiElement, type: Class): List { + return PsiAugmentProvider.collectAugments(element, type) +} diff --git a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/resolve/jvm/KotlinJavaPsiFacade.java b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/resolve/jvm/KotlinJavaPsiFacade.java index 1d79feed0b3..72a8c5b5033 100644 --- a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/resolve/jvm/KotlinJavaPsiFacade.java +++ b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/resolve/jvm/KotlinJavaPsiFacade.java @@ -38,7 +38,6 @@ import com.intellij.psi.util.PsiModificationTracker; import com.intellij.util.CommonProcessors; import com.intellij.util.ConcurrencyUtil; import com.intellij.util.Query; -import com.intellij.util.containers.ContainerUtil; import com.intellij.util.messages.MessageBusConnection; import kotlin.collections.CollectionsKt; import org.jetbrains.annotations.NotNull; @@ -56,6 +55,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; public class KotlinJavaPsiFacade { @@ -63,11 +63,11 @@ public class KotlinJavaPsiFacade { private static class PackageCache { // long term cache - final ConcurrentMap, PsiPackage> packageInLibScopeCache = ContainerUtil.newConcurrentMap(); + final ConcurrentMap, PsiPackage> packageInLibScopeCache = new ConcurrentHashMap<>(); // short term caches - final ConcurrentMap, PsiPackage> packageInScopeCache = ContainerUtil.newConcurrentMap(); - final ConcurrentMap hasPackageInAllScopeCache = ContainerUtil.newConcurrentMap(); + final ConcurrentMap, PsiPackage> packageInScopeCache = new ConcurrentHashMap<>(); + final ConcurrentMap hasPackageInAllScopeCache = new ConcurrentHashMap<>(); void clear() { packageInScopeCache.clear(); diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/AbstractCheckLocalVariablesTableTest.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/AbstractCheckLocalVariablesTableTest.kt index baea2dfdeb3..9c503cc710a 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/AbstractCheckLocalVariablesTableTest.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/AbstractCheckLocalVariablesTableTest.kt @@ -16,13 +16,12 @@ package org.jetbrains.kotlin.codegen -import com.intellij.openapi.util.Comparing import com.intellij.openapi.util.text.StringUtil import junit.framework.TestCase import org.jetbrains.kotlin.backend.common.output.OutputFileCollection import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.org.objectweb.asm.* -import org.junit.ComparisonFailure +import org.junit.Assert import java.io.File import java.util.* import java.util.regex.Pattern @@ -82,13 +81,7 @@ abstract class AbstractCheckLocalVariablesTableTest : CodegenTestCase() { ) { val actual = getActualVariablesAsString(actualLocalVariables) val expected = getExpectedVariablesAsString(testFileLines) - if (!Comparing.equal(expected, actual)) { - throw ComparisonFailure( - "Variables differ from expected", - expected, - actual - ) - } + Assert.assertEquals(expected, actual) } private fun getActualVariablesAsString(list: List) = if (backend.isIR) { diff --git a/compiler/util/src/org/jetbrains/kotlin/utils/platformUtils.kt b/compiler/util/src/org/jetbrains/kotlin/utils/platformUtils.kt index 1dd80a77019..edd87f30abd 100644 --- a/compiler/util/src/org/jetbrains/kotlin/utils/platformUtils.kt +++ b/compiler/util/src/org/jetbrains/kotlin/utils/platformUtils.kt @@ -6,6 +6,10 @@ package org.jetbrains.kotlin.utils import com.intellij.util.containers.Interner +import com.intellij.util.containers.MultiMap fun createStringInterner(): Interner = Interner.createStringInterner() + +fun createConcurrentMultiMap(): MultiMap = + MultiMap.createConcurrent() diff --git a/compiler/util/src/org/jetbrains/kotlin/utils/platformUtils.kt.201 b/compiler/util/src/org/jetbrains/kotlin/utils/platformUtils.kt.201 index 95f9bd17118..c3fc229149b 100644 --- a/compiler/util/src/org/jetbrains/kotlin/utils/platformUtils.kt.201 +++ b/compiler/util/src/org/jetbrains/kotlin/utils/platformUtils.kt.201 @@ -5,8 +5,13 @@ package org.jetbrains.kotlin.utils +import com.intellij.util.containers.ConcurrentMultiMap import com.intellij.util.containers.Interner +import com.intellij.util.containers.MultiMap import com.intellij.util.containers.StringInterner fun createStringInterner(): Interner = StringInterner() + +fun createConcurrentMultiMap(): MultiMap = + ConcurrentMultiMap() diff --git a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/KotlinScriptDefinitionProvider.kt b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/KotlinScriptDefinitionProvider.kt index d050c7595d8..9d37d5c69d9 100644 --- a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/KotlinScriptDefinitionProvider.kt +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/KotlinScriptDefinitionProvider.kt @@ -28,7 +28,6 @@ interface ScriptDefinitionProvider { ServiceManager.getService(project, ScriptDefinitionProvider::class.java) fun getServiceIfCreated(project: Project): ScriptDefinitionProvider? = - ServiceManager.getServiceIfCreated(project, ScriptDefinitionProvider::class.java) + project.getServiceIfCreated(ScriptDefinitionProvider::class.java) } } -