summaryrefslogtreecommitdiff
path: root/plugins/kotlin/idea/src/org
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/kotlin/idea/src/org')
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/KotlinDocumentationProvider.kt1
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/KotlinIdeFileIconProviderService.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/KotlinJpsClasspathProvider.kt25
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/PluginStartupActivity.kt6
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/caches/FileAttributeServiceImpl.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/codeInliner/CodeToInlineBuilder.kt17
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/codeInliner/introduceValue.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCopyPasteReferenceProcessor.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java15
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinMigrationProjectService.kt4
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/configuration/notifications/eapSurveyNotification.kt45
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetEditorGeneralTab.kt20
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/facet/KotlinVersionInfoProviderByModuleDependencies.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinFindUsagesSupportImpl.kt8
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/goto/gotoContributors.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinRainbowVisitor.kt4
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinRecursiveCallLineMarkerProvider.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinSuspendCallLineMarkerProvider.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/imports/KotlinImportOptimizer.kt6
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/JavaCollectionsStaticMethodInspection.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/LeakingThisInspection.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/NestedLambdaShadowedImplicitParameterInspection.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantRequireNotNullCallInspection.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/RemoveRedundantQualifierNameInspection.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceArrayOfWithLiteralInspection.kt9
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceAssertBooleanWithAssertEqualityInspection.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceWithEnumMapInspection.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/UnnecessaryOptInAnnotationInspection.kt7
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/UnsafeCastFromDynamicInspection.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedLambdaExpressionBodyInspection.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedUnaryOperatorInspection.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/UseExpressionBodyInspection.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/collections/ConvertCallChainIntoSequenceInspection.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/dfa/KtDfaHelpers.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/jdk2k/ReplaceJavaStaticMethodWithKotlinAnalogInspection.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/migration/AbstractDiagnosticBasedMigrationInspection.kt10
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/migration/AddConversionCallMigrationInspection.kt28
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/migration/AmbiguousExpressionInWhenBranchMigrationInspection.kt29
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/migration/InlineClassDeprecatedMigrationInspection.kt28
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/migration/NoConstructorMigrationInspection.kt21
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/migration/OverrideDeprecatedMigrationInspection.kt21
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/InsertExplicitTypeArgumentsIntention.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/LambdaToAnonymousFunctionIntention.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/RemoveExplicitSuperQualifierIntention.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/SimplifyBooleanWithConstantsIntention.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/SpecifyTypeExplicitlyIntention.kt6
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/UsePropertyAccessSyntaxIntention.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/Utils.kt3
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/branchedTransformations/IfThenUtils.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/parameterInfo/HintsTypeRenderer.kt17
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/parameterInfo/KotlinIdeDescriptorRenderer.kt18
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/platform/IdePlatformKindTooling.kt6
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/AddConversionCallFix.kt49
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeCallableReturnTypeFix.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVariableTypeFix.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVisibilityOnExposureFactory.kt71
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ConfusingExpressionInWhenBranchFix.kt38
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ConverKClassToClassFix.kt3
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ImportFix.kt19
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/MakeUpperBoundNonNullableFix.kt56
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixFactoryForTypeMismatchError.kt20
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt14
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/SpecifySuperTypeFix.kt6
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableInfo.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/typeUtils.kt5
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateIteratorFunctionActionFactory.kt3
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateSetFunctionActionFactory.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/changeSignatureUtils.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractableAnalysisUtil.kt1
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt3
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/renameConflictUtils.kt2
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/search/KotlinSearchUsagesSupportImpl.kt9
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/FE10KotlinTargetElementEvaluator.kt51
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinTargetElementEvaluator.kt108
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/search/usagesSearch/utils.kt44
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/slicer/InflowSlicer.kt4
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/structuralsearch/KotlinStructuralSearchUtil.kt3
-rw-r--r--plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/structuralsearch/visitor/KotlinMatchingVisitor.kt2
79 files changed, 577 insertions, 356 deletions
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/KotlinDocumentationProvider.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/KotlinDocumentationProvider.kt
index bc5a4811cf31..f32800eac41f 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/KotlinDocumentationProvider.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/KotlinDocumentationProvider.kt
@@ -29,6 +29,7 @@ import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.idea.caches.resolve.analyze
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
+import org.jetbrains.kotlin.idea.caches.resolve.safeAnalyzeNonSourceRootCode
import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde
import org.jetbrains.kotlin.idea.core.completion.DeclarationLookupObject
import org.jetbrains.kotlin.idea.decompiler.navigation.SourceNavigationHelper
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/KotlinIdeFileIconProviderService.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/KotlinIdeFileIconProviderService.kt
index e6eed868b117..cf9b61482147 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/KotlinIdeFileIconProviderService.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/KotlinIdeFileIconProviderService.kt
@@ -11,6 +11,8 @@ import javax.swing.Icon
class KotlinIdeFileIconProviderService : KotlinIconProviderService() {
override fun getFileIcon(): Icon = KotlinIcons.FILE
+ override fun getBuiltInFileIcon(): Icon = KotlinIcons.FILE
+
override fun getLightVariableIcon(element: PsiModifierListOwner, flags: Int): Icon {
val iconManager = IconManager.getInstance()
val elementFlags = ElementPresentationUtil.getFlags(element, false)
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/KotlinJpsClasspathProvider.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/KotlinJpsClasspathProvider.kt
index 88eb49ebb26e..bde2d7de2515 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/KotlinJpsClasspathProvider.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/KotlinJpsClasspathProvider.kt
@@ -1,30 +1,11 @@
// Copyright 2000-2021 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package org.jetbrains.kotlin.idea
-import com.intellij.DynamicBundle
import com.intellij.compiler.server.BuildProcessParametersProvider
-import com.intellij.openapi.application.PathManager.getJarPathForClass
+import org.jetbrains.kotlin.idea.compiler.configuration.KotlinPluginLayout
class KotlinJpsClasspathProvider : BuildProcessParametersProvider() {
- override fun getClassPath(): List<String?> {
- return listOf(
- // kotlin-reflect.jar
- getJarPathForClass(kotlin.reflect.full.IllegalCallableAccessException::class.java),
-
- // kotlin-plugin.jar (aka kotlin-compiler-for-ide.jar)
- // TODO: note it has to be compiler-components-for-jps.jar rather than kotlin-compiler-for-ide.jar
- // as kotlin-compiler-for-ide.jar includes kotlin-jps-common.jar as well (+maybe smth else)
- // kotlin-compiler-common-for-ide.jar
- getJarPathForClass(org.jetbrains.kotlin.idea.KotlinFileType::class.java),
-
- // kotlin-compiler-fe10-for-ide.jar
- getJarPathForClass(org.jetbrains.kotlin.descriptors.ClassDescriptor::class.java),
-
- // kotlin-compiler-ir-for-ide.jar
- getJarPathForClass(org.jetbrains.kotlin.ir.IrElement::class.java),
-
- // Base of i18n
- getJarPathForClass(DynamicBundle::class.java),
- )
+ override fun getClassPath(): List<String> {
+ return listOf(KotlinPluginLayout.instance.jpsPluginJar.canonicalPath)
}
} \ No newline at end of file
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/PluginStartupActivity.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/PluginStartupActivity.kt
index 25a3c5c5c836..c6279fd1ecb3 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/PluginStartupActivity.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/PluginStartupActivity.kt
@@ -20,8 +20,10 @@ import org.jetbrains.kotlin.diagnostics.Errors
import org.jetbrains.kotlin.idea.KotlinPluginCompatibilityVerifier.checkCompatibility
import org.jetbrains.kotlin.idea.configuration.notifications.checkExternalKotlinCompilerVersion
import org.jetbrains.kotlin.idea.configuration.notifications.notifyKotlinStyleUpdateIfNeeded
+import org.jetbrains.kotlin.idea.configuration.notifications.showEapSurveyNotification
import org.jetbrains.kotlin.idea.reporter.KotlinReportSubmitter.Companion.setupReportingFromRelease
import org.jetbrains.kotlin.idea.search.containsKotlinFile
+import org.jetbrains.kotlin.idea.util.application.isUnitTestMode
import org.jetbrains.kotlin.js.resolve.diagnostics.ErrorsJs
import org.jetbrains.kotlin.resolve.jvm.KotlinJavaPsiFacade
import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm
@@ -78,6 +80,10 @@ internal class PluginStartupActivity : StartupActivity.Background {
if (!ApplicationManager.getApplication().isHeadlessEnvironment) {
notifyKotlinStyleUpdateIfNeeded(project)
+
+ if (!isUnitTestMode()) {
+ showEapSurveyNotification(project)
+ }
}
val daemonCodeAnalyzer = DaemonCodeAnalyzerImpl.getInstanceEx(project) as DaemonCodeAnalyzerImpl
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/caches/FileAttributeServiceImpl.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/caches/FileAttributeServiceImpl.kt
index e9d54950e29f..def49798763d 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/caches/FileAttributeServiceImpl.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/caches/FileAttributeServiceImpl.kt
@@ -6,6 +6,8 @@ import com.intellij.openapi.vfs.VirtualFile
import com.intellij.openapi.vfs.VirtualFileWithId
import com.intellij.openapi.vfs.newvfs.FileAttribute
import com.intellij.util.io.DataInputOutputUtil
+import org.jetbrains.kotlin.analysis.decompiler.stub.file.CachedAttributeData
+import org.jetbrains.kotlin.analysis.decompiler.stub.file.FileAttributeService
import java.io.DataInput
import java.io.DataOutput
import java.util.concurrent.ConcurrentHashMap
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/codeInliner/CodeToInlineBuilder.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/codeInliner/CodeToInlineBuilder.kt
index ac3934214afc..98a828a58215 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/codeInliner/CodeToInlineBuilder.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/codeInliner/CodeToInlineBuilder.kt
@@ -28,15 +28,15 @@ import org.jetbrains.kotlin.psi.psiUtil.*
import org.jetbrains.kotlin.renderer.render
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.ImportedFromObjectCallableDescriptor
-import org.jetbrains.kotlin.resolve.calls.util.getResolvedCall
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
import org.jetbrains.kotlin.resolve.calls.model.isReallySuccess
+import org.jetbrains.kotlin.resolve.calls.util.getResolvedCall
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameOrNull
import org.jetbrains.kotlin.resolve.descriptorUtil.isExtension
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
import org.jetbrains.kotlin.resolve.scopes.receivers.ImplicitReceiver
import org.jetbrains.kotlin.resolve.scopes.utils.findClassifier
-import org.jetbrains.kotlin.types.ErrorUtils
+import org.jetbrains.kotlin.types.error.ErrorUtils
import org.jetbrains.kotlin.types.typeUtil.unCapture
import org.jetbrains.kotlin.utils.addToStdlib.cast
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
@@ -282,8 +282,8 @@ class CodeToInlineBuilder(
}
private fun processReferences(codeToInline: MutableCodeToInline, analyze: (KtExpression) -> BindingContext, reformat: Boolean) {
- val targetDispatchReceiverType = targetCallable.dispatchReceiverParameter?.value?.type
- val targetExtensionReceiverType = targetCallable.extensionReceiverParameter?.value?.type
+ val targetDispatchReceiverType = targetCallable.dispatchReceiverParameter?.value?.type?.unCapture()
+ val targetExtensionReceiverType = targetCallable.extensionReceiverParameter?.value?.type?.unCapture()
val isAnonymousFunction = originalDeclaration?.isAnonymousFunction == true
val isAnonymousFunctionWithReceiver = isAnonymousFunction &&
originalDeclaration.cast<KtNamedFunction>().receiverTypeReference != null
@@ -357,8 +357,11 @@ class CodeToInlineBuilder(
if (receiver is ImplicitReceiver) {
val resolutionScope = expression.getResolutionScope(bindingContext, resolutionFacade)
val receiverExpressionToInline = receiver.asExpression(resolutionScope, psiFactory)
- if (receiverExpressionToInline != null) {
- val receiverType = receiver.type.unCapture()
+ val receiverType = receiver.type.unCapture()
+ val isSameReceiverType = receiverType == targetDispatchReceiverType || receiverType == targetExtensionReceiverType
+ val receiverIsUnnecessary =
+ (receiverExpressionToInline as? KtThisExpression)?.labelQualifier != null && isSameReceiverType
+ if (receiverExpressionToInline != null && !receiverIsUnnecessary) {
codeToInline.addPreCommitAction(expressionToResolve) { expr ->
val expressionToReplace = expr.parent as? KtCallExpression ?: expr
val replaced = codeToInline.replaceExpression(
@@ -372,7 +375,7 @@ class CodeToInlineBuilder(
val thisExpression = replaced?.receiverExpression ?: return@addPreCommitAction
if (isAnonymousFunctionWithReceiver && receiverType == targetExtensionReceiverType) {
thisExpression.putCopyableUserData(CodeToInline.PARAMETER_USAGE_KEY, getFirstParameterName())
- } else if (receiverType != targetDispatchReceiverType && receiverType != targetExtensionReceiverType) {
+ } else if (!isSameReceiverType) {
thisExpression.putCopyableUserData(CodeToInline.SIDE_RECEIVER_USAGE_KEY, Unit)
}
}
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/codeInliner/introduceValue.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/codeInliner/introduceValue.kt
index 5262d6183436..b40bce1d3869 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/codeInliner/introduceValue.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/codeInliner/introduceValue.kt
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.resolve.bindingContextUtil.getDataFlowInfoBefore
import org.jetbrains.kotlin.resolve.descriptorUtil.isExtension
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
import org.jetbrains.kotlin.resolve.scopes.LexicalScope
-import org.jetbrains.kotlin.types.ErrorUtils
+import org.jetbrains.kotlin.types.error.ErrorUtils
import org.jetbrains.kotlin.types.KotlinType
/**
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCopyPasteReferenceProcessor.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCopyPasteReferenceProcessor.kt
index 6a2214892f35..5ff1213692e1 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCopyPasteReferenceProcessor.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/codeInsight/KotlinCopyPasteReferenceProcessor.kt
@@ -59,7 +59,7 @@ import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
import org.jetbrains.kotlin.resolve.scopes.LexicalScope
import org.jetbrains.kotlin.resolve.scopes.utils.findFunction
import org.jetbrains.kotlin.resolve.scopes.utils.findVariable
-import org.jetbrains.kotlin.types.ErrorUtils
+import org.jetbrains.kotlin.types.error.ErrorUtils
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
import java.awt.datatransfer.Transferable
import java.awt.datatransfer.UnsupportedFlavorException
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java
index 410eea2c2a76..7a45d13a72ba 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java
@@ -28,10 +28,7 @@ import kotlin.jvm.functions.Function1;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments;
-import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments;
-import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments;
-import org.jetbrains.kotlin.cli.common.arguments.K2JsArgumentConstants;
+import org.jetbrains.kotlin.cli.common.arguments.*;
import org.jetbrains.kotlin.config.*;
import org.jetbrains.kotlin.idea.KotlinBundle;
import org.jetbrains.kotlin.idea.PluginStartupApplicationService;
@@ -165,10 +162,10 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Di
@SuppressWarnings("unused")
public KotlinCompilerConfigurableTab(Project project) {
this(project,
- (CommonCompilerArguments) KotlinCommonCompilerArgumentsHolder.Companion.getInstance(project).getSettings().unfrozen(),
- (K2JSCompilerArguments) Kotlin2JsCompilerArgumentsHolder.Companion.getInstance(project).getSettings().unfrozen(),
- (K2JVMCompilerArguments) Kotlin2JvmCompilerArgumentsHolder.Companion.getInstance(project).getSettings().unfrozen(),
- (CompilerSettings) KotlinCompilerSettings.Companion.getInstance(project).getSettings().unfrozen(),
+ FreezableKt.unfrozen(KotlinCommonCompilerArgumentsHolder.Companion.getInstance(project).getSettings()),
+ FreezableKt.unfrozen(Kotlin2JsCompilerArgumentsHolder.Companion.getInstance(project).getSettings()),
+ FreezableKt.unfrozen(Kotlin2JvmCompilerArgumentsHolder.Companion.getInstance(project).getSettings()),
+ FreezableKt.unfrozen(KotlinCompilerSettings.Companion.getInstance(project).getSettings()),
KotlinCompilerWorkspaceSettings.getInstance(project),
true,
false);
@@ -390,7 +387,7 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Di
apiVersionComboBox.setRenderer(new DescriptionListCellRenderer());
}
- public void setTargetPlatform(@Nullable IdePlatformKind<?> targetPlatform) {
+ public void setTargetPlatform(@Nullable IdePlatformKind targetPlatform) {
k2jsPanel.setVisible(JsIdePlatformUtil.isJavaScript(targetPlatform));
scriptPanel.setVisible(JvmIdePlatformUtil.isJvm(targetPlatform));
}
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinMigrationProjectService.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinMigrationProjectService.kt
index 813aa14edd35..31c9ebf2e550 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinMigrationProjectService.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinMigrationProjectService.kt
@@ -219,8 +219,8 @@ data class MigrationInfo(
}
}
-fun MigrationInfo.isLanguageVersionUpdate(old: LanguageVersion, new: LanguageVersion): Boolean {
- return oldLanguageVersion <= old && newLanguageVersion >= new
+fun MigrationInfo.isLanguageVersionUpdate(untilOldVersion: LanguageVersion, sinceNewVersion: LanguageVersion): Boolean {
+ return oldLanguageVersion <= untilOldVersion && newLanguageVersion >= sinceNewVersion
}
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/configuration/notifications/eapSurveyNotification.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/configuration/notifications/eapSurveyNotification.kt
new file mode 100644
index 000000000000..7b9b534b924a
--- /dev/null
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/configuration/notifications/eapSurveyNotification.kt
@@ -0,0 +1,45 @@
+// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
+package org.jetbrains.kotlin.idea.configuration.notifications
+
+import com.intellij.ide.util.RunOnceUtil
+import com.intellij.notification.BrowseNotificationAction
+import com.intellij.notification.NotificationGroupManager
+import com.intellij.notification.NotificationType
+import com.intellij.openapi.project.Project
+import org.jetbrains.kotlin.idea.KotlinBundle
+import org.jetbrains.kotlin.idea.KotlinIcons
+import org.jetbrains.kotlin.idea.compiler.configuration.KotlinPluginLayout
+import java.time.LocalDate
+import java.util.*
+
+internal fun showEapSurveyNotification(project: Project) {
+ if (LocalDate.now() > LocalDate.of(/* year = */ 2022, /* month = */ 5, /* dayOfMonth = */ 8)) return
+
+ val compilerVersion = KotlinPluginLayout.instance.ideCompilerVersion.lowercase(Locale.getDefault())
+ if (!compilerVersion.contains("1.7.0-beta")) return
+
+ // Only beta 1. Yes, it is a bit ugly, but we don't have nice IdeKotlinVersion in old kt branches. And yes, I hope we won't have beta3.
+ if (compilerVersion.contains("1.7.0-beta2")) return
+
+ RunOnceUtil.runOnceForApp("kotlin.eap.survey.was.shown.once") {
+ @Suppress("DialogTitleCapitalization")
+ val action = NotificationGroupManager.getInstance()
+ .getNotificationGroup("Kotlin EAP Survey")
+ .createNotification(
+ KotlinBundle.message("kotlin.eap.survey.notification.title"),
+ KotlinBundle.message("kotlin.eap.survey.notification.text"),
+ NotificationType.INFORMATION,
+ )
+ .addAction(
+ BrowseNotificationAction(
+ KotlinBundle.message("kotlin.eap.survey.notification.action"),
+ KotlinBundle.message("kotlin.eap.survey.notification.link"),
+ )
+ )
+
+ action.setSuggestionType(true)
+ action.setIcon(KotlinIcons.SMALL_LOGO)
+ action.setImportant(true)
+ action.notify(project)
+ }
+} \ No newline at end of file
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetEditorGeneralTab.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetEditorGeneralTab.kt
index 983971446ce0..5020acbd04de 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetEditorGeneralTab.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetEditorGeneralTab.kt
@@ -11,10 +11,7 @@ import com.intellij.ui.HoverHyperlinkLabel
import com.intellij.util.ui.FormBuilder
import com.intellij.util.ui.ThreeStateCheckBox
import org.jetbrains.kotlin.cli.common.arguments.*
-import org.jetbrains.kotlin.config.CompilerSettings
-import org.jetbrains.kotlin.config.createArguments
-import org.jetbrains.kotlin.config.isHmpp
-import org.jetbrains.kotlin.config.splitArgumentString
+import org.jetbrains.kotlin.config.*
import org.jetbrains.kotlin.idea.KotlinBundle
import org.jetbrains.kotlin.idea.compiler.configuration.*
import org.jetbrains.kotlin.idea.core.util.onTextChange
@@ -119,9 +116,9 @@ class KotlinFacetEditorGeneralTab(
} else {
editableCommonArguments = configuration!!.settings.compilerArguments!!
editableJvmArguments = editableCommonArguments as? K2JVMCompilerArguments
- ?: Kotlin2JvmCompilerArgumentsHolder.getInstance(project).settings.unfrozen() as K2JVMCompilerArguments
+ ?: Kotlin2JvmCompilerArgumentsHolder.getInstance(project).settings.unfrozen()
editableJsArguments = editableCommonArguments as? K2JSCompilerArguments
- ?: Kotlin2JsCompilerArgumentsHolder.getInstance(project).settings.unfrozen() as K2JSCompilerArguments
+ ?: Kotlin2JsCompilerArgumentsHolder.getInstance(project).settings.unfrozen()
editableCompilerSettings = configuration.settings.compilerSettings!!
}
@@ -201,13 +198,10 @@ class KotlinFacetEditorGeneralTab(
compilerConfigurable.setTargetPlatform(getChosenPlatform()?.idePlatformKind)
compilerConfigurable.setEnabled(!useProjectSettings)
if (useProjectSettings) {
- compilerConfigurable.commonCompilerArguments =
- KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.unfrozen() as CommonCompilerArguments?
- compilerConfigurable.k2jvmCompilerArguments =
- Kotlin2JvmCompilerArgumentsHolder.getInstance(project).settings.unfrozen() as K2JVMCompilerArguments?
- compilerConfigurable.k2jsCompilerArguments =
- Kotlin2JsCompilerArgumentsHolder.getInstance(project).settings.unfrozen() as K2JSCompilerArguments?
- compilerConfigurable.compilerSettings = KotlinCompilerSettings.getInstance(project).settings.unfrozen() as CompilerSettings?
+ compilerConfigurable.commonCompilerArguments = KotlinCommonCompilerArgumentsHolder.getInstance(project).settings.unfrozen()
+ compilerConfigurable.k2jvmCompilerArguments = Kotlin2JvmCompilerArgumentsHolder.getInstance(project).settings.unfrozen()
+ compilerConfigurable.k2jsCompilerArguments = Kotlin2JsCompilerArgumentsHolder.getInstance(project).settings.unfrozen()
+ compilerConfigurable.compilerSettings = KotlinCompilerSettings.getInstance(project).settings.unfrozen()
} else {
compilerConfigurable.commonCompilerArguments = editableCommonArguments
compilerConfigurable.k2jvmCompilerArguments = editableJvmArguments
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/facet/KotlinVersionInfoProviderByModuleDependencies.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/facet/KotlinVersionInfoProviderByModuleDependencies.kt
index 9c01845b208b..16c12773aaf5 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/facet/KotlinVersionInfoProviderByModuleDependencies.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/facet/KotlinVersionInfoProviderByModuleDependencies.kt
@@ -15,7 +15,7 @@ class KotlinVersionInfoProviderByModuleDependencies : KotlinVersionInfoProvider
override fun getLibraryVersions(
module: Module,
- platformKind: IdePlatformKind<*>,
+ platformKind: IdePlatformKind,
rootModel: ModuleRootModel?
): Collection<String> {
if (module.isDisposed) {
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt
index 688cb46979bd..55f551714d75 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/facet/facetUtils.kt
@@ -104,7 +104,7 @@ fun KotlinFacetSettings.initializeIfNeeded(
}
}
-val mavenLibraryIdToPlatform: Map<String, IdePlatformKind<*>> by lazy {
+val mavenLibraryIdToPlatform: Map<String, IdePlatformKind> by lazy {
IdePlatformKind.ALL_KINDS
.flatMap { platform -> platform.tooling.mavenLibraryIds.map { it to platform } }
.sortedByDescending { it.first.length }
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinFindUsagesSupportImpl.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinFindUsagesSupportImpl.kt
index 8bbe51caf6ff..67be98e4b3ce 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinFindUsagesSupportImpl.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/findUsages/KotlinFindUsagesSupportImpl.kt
@@ -9,7 +9,7 @@ import com.intellij.psi.search.GlobalSearchScope
import com.intellij.util.Processor
import org.jetbrains.kotlin.idea.search.usagesSearch.dataClassComponentFunction
import org.jetbrains.kotlin.idea.search.usagesSearch.isCallReceiverRefersToCompanionObject
-import org.jetbrains.kotlin.idea.search.usagesSearch.isConstructorUsage
+import org.jetbrains.kotlin.idea.search.usagesSearch.isKotlinConstructorUsage
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.anyDescendantOfType
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
@@ -37,12 +37,12 @@ class KotlinFindUsagesSupportImpl : KotlinFindUsagesSupport {
override fun tryRenderDeclarationCompactStyle(declaration: KtDeclaration): String? =
org.jetbrains.kotlin.idea.search.usagesSearch.tryRenderDeclarationCompactStyle(declaration)
- override fun isConstructorUsage(psiReference: PsiReference, ktClassOrObject: KtClassOrObject): Boolean =
- psiReference.isConstructorUsage(ktClassOrObject)
+ override fun isKotlinConstructorUsage(psiReference: PsiReference, ktClassOrObject: KtClassOrObject): Boolean =
+ psiReference.isKotlinConstructorUsage(ktClassOrObject)
override fun getSuperMethods(declaration: KtDeclaration, ignore: Collection<PsiElement>?): List<PsiElement> =
org.jetbrains.kotlin.idea.refactoring.getSuperMethods(declaration, ignore)
override fun sourcesAndLibraries(delegate: GlobalSearchScope, project: Project): GlobalSearchScope =
org.jetbrains.kotlin.idea.stubindex.KotlinSourceFilterScope.sourcesAndLibraries(delegate, project)
-} \ No newline at end of file
+}
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/goto/gotoContributors.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/goto/gotoContributors.kt
index 0b2e1310e93a..e43f55de8201 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/goto/gotoContributors.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/goto/gotoContributors.kt
@@ -8,9 +8,9 @@ import com.intellij.navigation.NavigationItem
import com.intellij.openapi.project.Project
import com.intellij.psi.search.GlobalSearchScope
import com.intellij.psi.stubs.StubIndex
+import org.jetbrains.kotlin.analysis.decompiler.psi.KotlinBuiltInFileType
import org.jetbrains.kotlin.asJava.LightClassUtil
import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil
-import org.jetbrains.kotlin.idea.decompiler.builtIns.KotlinBuiltInFileType
import org.jetbrains.kotlin.idea.stubindex.*
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.containingClass
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinRainbowVisitor.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinRainbowVisitor.kt
index 5b29fce92054..77ffeb758288 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinRainbowVisitor.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinRainbowVisitor.kt
@@ -10,7 +10,7 @@ import com.intellij.psi.PsiFile
import com.intellij.psi.util.PsiTreeUtil
import org.jetbrains.kotlin.idea.highlighter.KotlinHighlightingColors.*
import org.jetbrains.kotlin.idea.references.mainReference
-import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinTargetElementEvaluator
+import org.jetbrains.kotlin.idea.search.ideaExtensions.FE10KotlinTargetElementEvaluator
import org.jetbrains.kotlin.idea.util.isAnonymousFunction
import org.jetbrains.kotlin.kdoc.psi.impl.KDocName
import org.jetbrains.kotlin.psi.*
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.psi.psiUtil.parents
class KotlinRainbowVisitor : RainbowVisitor() {
companion object {
- val KOTLIN_TARGET_ELEMENT_EVALUATOR = KotlinTargetElementEvaluator()
+ val KOTLIN_TARGET_ELEMENT_EVALUATOR = FE10KotlinTargetElementEvaluator()
}
override fun suitableForFile(file: PsiFile) = file is KtFile
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinRecursiveCallLineMarkerProvider.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinRecursiveCallLineMarkerProvider.kt
index faa5b7c60fd2..350dfdda91c5 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinRecursiveCallLineMarkerProvider.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinRecursiveCallLineMarkerProvider.kt
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.analyze
import org.jetbrains.kotlin.idea.highlighter.markers.LineMarkerInfos
import org.jetbrains.kotlin.idea.inspections.RecursivePropertyAccessorInspection
import org.jetbrains.kotlin.idea.util.getReceiverTargetDescriptor
-import org.jetbrains.kotlin.idea.util.safeAnalyzeNonSourceRootCode
+import org.jetbrains.kotlin.idea.caches.resolve.safeAnalyzeNonSourceRootCode
import org.jetbrains.kotlin.lexer.KtToken
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.*
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinSuspendCallLineMarkerProvider.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinSuspendCallLineMarkerProvider.kt
index d18cdba7760e..0eb37a3823d7 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinSuspendCallLineMarkerProvider.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/highlighter/KotlinSuspendCallLineMarkerProvider.kt
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.idea.KotlinBundle
import org.jetbrains.kotlin.idea.KotlinIcons
import org.jetbrains.kotlin.idea.highlighter.markers.LineMarkerInfos
import org.jetbrains.kotlin.idea.refactoring.getLineNumber
-import org.jetbrains.kotlin.idea.util.safeAnalyzeNonSourceRootCode
+import org.jetbrains.kotlin.idea.caches.resolve.safeAnalyzeNonSourceRootCode
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.BindingContext.*
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/imports/KotlinImportOptimizer.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/imports/KotlinImportOptimizer.kt
index bac5a47fedd4..c9c4a4d0a3fa 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/imports/KotlinImportOptimizer.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/imports/KotlinImportOptimizer.kt
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
import org.jetbrains.kotlin.idea.formatter.kotlinCustomSettings
import org.jetbrains.kotlin.idea.project.languageVersionSettings
import org.jetbrains.kotlin.idea.references.*
-import org.jetbrains.kotlin.idea.util.safeAnalyzeNonSourceRootCode
+import org.jetbrains.kotlin.idea.caches.resolve.safeAnalyzeNonSourceRootCode
import org.jetbrains.kotlin.idea.util.getResolutionScope
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
import org.jetbrains.kotlin.name.FqName
@@ -31,7 +31,7 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.getImportableDescriptor
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
import org.jetbrains.kotlin.resolve.scopes.HierarchicalScope
import org.jetbrains.kotlin.resolve.scopes.utils.*
-import org.jetbrains.kotlin.types.error.ErrorSimpleFunctionDescriptorImpl
+import org.jetbrains.kotlin.types.error.ErrorFunctionDescriptor
class KotlinImportOptimizer : ImportOptimizer {
override fun supports(file: PsiFile) = file is KtFile
@@ -310,5 +310,5 @@ private fun hasResolvedDescriptor(element: KtElement, bindingContext: BindingCon
element.getResolvedCall(bindingContext) != null
else
element.mainReference?.resolveToDescriptors(bindingContext)?.let { descriptors ->
- descriptors.isNotEmpty() && descriptors.none { it is ErrorSimpleFunctionDescriptorImpl }
+ descriptors.isNotEmpty() && descriptors.none { it is ErrorFunctionDescriptor }
} == true
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/JavaCollectionsStaticMethodInspection.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/JavaCollectionsStaticMethodInspection.kt
index 27c51396015c..553b1ebc47b3 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/JavaCollectionsStaticMethodInspection.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/JavaCollectionsStaticMethodInspection.kt
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.idea.KotlinBundle
import org.jetbrains.kotlin.idea.imports.importableFqName
import org.jetbrains.kotlin.idea.intentions.callExpression
import org.jetbrains.kotlin.idea.project.languageVersionSettings
-import org.jetbrains.kotlin.idea.util.safeAnalyzeNonSourceRootCode
+import org.jetbrains.kotlin.idea.caches.resolve.safeAnalyzeNonSourceRootCode
import org.jetbrains.kotlin.load.java.descriptors.JavaMethodDescriptor
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.resolve.calls.util.getResolvedCall
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/LeakingThisInspection.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/LeakingThisInspection.kt
index 7161322678be..ffb864443d6c 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/LeakingThisInspection.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/LeakingThisInspection.kt
@@ -12,8 +12,8 @@ import org.jetbrains.annotations.Nls
import org.jetbrains.kotlin.cfg.LeakingThisDescriptor.*
import org.jetbrains.kotlin.descriptors.Modality
import org.jetbrains.kotlin.idea.KotlinBundle
+import org.jetbrains.kotlin.idea.caches.resolve.safeAnalyzeWithContentNonSourceRootCode
import org.jetbrains.kotlin.idea.quickfix.AddModifierFixFE10
-import org.jetbrains.kotlin.idea.util.safeAnalyzeWithContentNonSourceRootCode
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/NestedLambdaShadowedImplicitParameterInspection.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/NestedLambdaShadowedImplicitParameterInspection.kt
index 3c87aba12adb..b2672713f588 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/NestedLambdaShadowedImplicitParameterInspection.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/NestedLambdaShadowedImplicitParameterInspection.kt
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.idea.inspections.collections.isCalling
import org.jetbrains.kotlin.idea.intentions.ReplaceItWithExplicitFunctionLiteralParamIntention
import org.jetbrains.kotlin.idea.intentions.callExpression
import org.jetbrains.kotlin.idea.refactoring.rename.KotlinVariableInplaceRenameHandler
-import org.jetbrains.kotlin.idea.util.safeAnalyzeNonSourceRootCode
+import org.jetbrains.kotlin.idea.caches.resolve.safeAnalyzeNonSourceRootCode
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.*
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantRequireNotNullCallInspection.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantRequireNotNullCallInspection.kt
index b71323cd1f42..4c8dfe9ae96c 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantRequireNotNullCallInspection.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/RedundantRequireNotNullCallInspection.kt
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.idea.inspections.collections.isCalling
import org.jetbrains.kotlin.idea.project.languageVersionSettings
import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
import org.jetbrains.kotlin.idea.resolve.getDataFlowValueFactory
-import org.jetbrains.kotlin.idea.util.safeAnalyzeNonSourceRootCode
+import org.jetbrains.kotlin.idea.caches.resolve.safeAnalyzeNonSourceRootCode
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.KtCallExpression
import org.jetbrains.kotlin.psi.KtReferenceExpression
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/RemoveRedundantQualifierNameInspection.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/RemoveRedundantQualifierNameInspection.kt
index feda48ca2f8b..b28f28520f9d 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/RemoveRedundantQualifierNameInspection.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/RemoveRedundantQualifierNameInspection.kt
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.idea.imports.importableFqName
import org.jetbrains.kotlin.idea.intentions.isReferenceToBuiltInEnumFunction
import org.jetbrains.kotlin.idea.references.mainReference
import org.jetbrains.kotlin.idea.references.resolveToDescriptors
-import org.jetbrains.kotlin.idea.util.safeAnalyzeNonSourceRootCode
+import org.jetbrains.kotlin.idea.caches.resolve.safeAnalyzeNonSourceRootCode
import org.jetbrains.kotlin.idea.util.getResolutionScope
import org.jetbrains.kotlin.idea.util.hasNotReceiver
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceArrayOfWithLiteralInspection.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceArrayOfWithLiteralInspection.kt
index 657e5eb9419b..15b010bc1243 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceArrayOfWithLiteralInspection.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceArrayOfWithLiteralInspection.kt
@@ -8,20 +8,13 @@ import com.intellij.codeInspection.ProblemHighlightType
import com.intellij.codeInspection.ProblemsHolder
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElementVisitor
-import org.jetbrains.kotlin.config.LanguageFeature.ArrayLiteralsInAnnotations
import org.jetbrains.kotlin.idea.KotlinBundle
import org.jetbrains.kotlin.idea.intentions.isArrayOfMethod
-import org.jetbrains.kotlin.idea.project.languageVersionSettings
-import org.jetbrains.kotlin.idea.util.application.isUnitTestMode
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
class ReplaceArrayOfWithLiteralInspection : AbstractKotlinInspection() {
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean): PsiElementVisitor = callExpressionVisitor(fun(expression) {
- if (!expression.languageVersionSettings.supportsFeature(ArrayLiteralsInAnnotations) &&
- !isUnitTestMode()
- ) return
-
val calleeExpression = expression.calleeExpression as? KtNameReferenceExpression ?: return
when (val parent = expression.parent) {
@@ -74,4 +67,4 @@ class ReplaceArrayOfWithLiteralInspection : AbstractKotlinInspection() {
callExpression.replace(arrayLiteral)
}
}
-} \ No newline at end of file
+}
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceAssertBooleanWithAssertEqualityInspection.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceAssertBooleanWithAssertEqualityInspection.kt
index b0c4966d8032..dc20fcee2e45 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceAssertBooleanWithAssertEqualityInspection.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceAssertBooleanWithAssertEqualityInspection.kt
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.descriptors.CallableDescriptor
import org.jetbrains.kotlin.idea.KotlinBundle
import org.jetbrains.kotlin.idea.core.ShortenReferences
import org.jetbrains.kotlin.idea.core.replaced
-import org.jetbrains.kotlin.idea.util.safeAnalyzeNonSourceRootCode
+import org.jetbrains.kotlin.idea.caches.resolve.safeAnalyzeNonSourceRootCode
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.*
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceWithEnumMapInspection.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceWithEnumMapInspection.kt
index 7b76b2dee233..2286b183691a 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceWithEnumMapInspection.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceWithEnumMapInspection.kt
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.idea.KotlinBundle
import org.jetbrains.kotlin.idea.caches.resolve.resolveImportReference
import org.jetbrains.kotlin.idea.project.platform
import org.jetbrains.kotlin.idea.util.ImportInsertHelper
-import org.jetbrains.kotlin.idea.util.safeAnalyzeNonSourceRootCode
+import org.jetbrains.kotlin.idea.caches.resolve.safeAnalyzeNonSourceRootCode
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.platform.jvm.isJvm
import org.jetbrains.kotlin.psi.KtCallExpression
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/UnnecessaryOptInAnnotationInspection.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/UnnecessaryOptInAnnotationInspection.kt
index 8ca03bda8664..732e1890ea23 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/UnnecessaryOptInAnnotationInspection.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/UnnecessaryOptInAnnotationInspection.kt
@@ -31,6 +31,7 @@ import org.jetbrains.kotlin.renderer.render
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.SINCE_KOTLIN_FQ_NAME
import org.jetbrains.kotlin.resolve.checkers.OptInNames
+import org.jetbrains.kotlin.resolve.checkers.OptInNames.OPT_IN_FQ_NAMES
import org.jetbrains.kotlin.resolve.constants.ArrayValue
import org.jetbrains.kotlin.resolve.constants.KClassValue
import org.jetbrains.kotlin.resolve.constants.StringValue
@@ -75,7 +76,7 @@ class UnnecessaryOptInAnnotationInspection : AbstractKotlinInspection() {
)
// Short names for `kotlin.OptIn` and `kotlin.UseExperimental` for faster comparison without name resolution
- private val USE_EXPERIMENTAL_SHORT_NAMES = OptInNames.USE_EXPERIMENTAL_FQ_NAMES.map { it.shortName().asString() }.toSet()
+ private val OPT_IN_SHORT_NAMES = OPT_IN_FQ_NAMES.map { it.shortName().asString() }.toSet()
/**
* Main inspection visitor to traverse all annotation entries.
@@ -84,7 +85,7 @@ class UnnecessaryOptInAnnotationInspection : AbstractKotlinInspection() {
val optInAliases = holder.file.safeAs<KtFile>()
?.aliasImportMap()
?.entries()
- ?.filter { it.value in USE_EXPERIMENTAL_SHORT_NAMES }
+ ?.filter { it.value in OPT_IN_SHORT_NAMES }
?.mapNotNull { it.key }
?.toSet()
?: emptySet()
@@ -92,7 +93,7 @@ class UnnecessaryOptInAnnotationInspection : AbstractKotlinInspection() {
return annotationEntryVisitor { annotationEntry ->
// Fast check if the annotation may be `@OptIn`/`@UseExperimental` or any of their import aliases
val entryShortName = annotationEntry.shortName?.asString()
- if (entryShortName != null && entryShortName !in USE_EXPERIMENTAL_SHORT_NAMES && entryShortName !in optInAliases)
+ if (entryShortName != null && entryShortName !in OPT_IN_SHORT_NAMES && entryShortName !in optInAliases)
return@annotationEntryVisitor
// Resolve the candidate annotation entry. If it is an `@OptIn`/`@UseExperimental` annotation,
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/UnsafeCastFromDynamicInspection.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/UnsafeCastFromDynamicInspection.kt
index b0c1edbb5d2d..d49763e3a832 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/UnsafeCastFromDynamicInspection.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/UnsafeCastFromDynamicInspection.kt
@@ -6,7 +6,7 @@ import com.intellij.codeInspection.*
import com.intellij.openapi.project.Project
import com.intellij.psi.PsiElementVisitor
import org.jetbrains.kotlin.idea.KotlinBundle
-import org.jetbrains.kotlin.idea.util.safeAnalyzeNonSourceRootCode
+import org.jetbrains.kotlin.idea.caches.resolve.safeAnalyzeNonSourceRootCode
import org.jetbrains.kotlin.psi.KtExpression
import org.jetbrains.kotlin.psi.KtPsiFactory
import org.jetbrains.kotlin.psi.createExpressionByPattern
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedLambdaExpressionBodyInspection.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedLambdaExpressionBodyInspection.kt
index ec960c3f7e9e..f865025d75a8 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedLambdaExpressionBodyInspection.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedLambdaExpressionBodyInspection.kt
@@ -12,7 +12,7 @@ import com.intellij.psi.PsiFile
import org.jetbrains.kotlin.builtins.isFunctionType
import org.jetbrains.kotlin.descriptors.CallableDescriptor
import org.jetbrains.kotlin.idea.KotlinBundle
-import org.jetbrains.kotlin.idea.util.safeAnalyzeNonSourceRootCode
+import org.jetbrains.kotlin.idea.caches.resolve.safeAnalyzeNonSourceRootCode
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.allChildren
import org.jetbrains.kotlin.resolve.BindingContext
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedUnaryOperatorInspection.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedUnaryOperatorInspection.kt
index 0066ef4c1591..873604e8a182 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedUnaryOperatorInspection.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedUnaryOperatorInspection.kt
@@ -9,7 +9,7 @@ import com.intellij.openapi.project.Project
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.idea.KotlinBundle
-import org.jetbrains.kotlin.idea.util.safeAnalyzeNonSourceRootCode
+import org.jetbrains.kotlin.idea.caches.resolve.safeAnalyzeNonSourceRootCode
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.KtAnnotationEntry
import org.jetbrains.kotlin.psi.KtExpression
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/UseExpressionBodyInspection.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/UseExpressionBodyInspection.kt
index 16a293ba11e2..365a11df6f97 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/UseExpressionBodyInspection.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/UseExpressionBodyInspection.kt
@@ -15,12 +15,12 @@ import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.builtins.StandardNames
import org.jetbrains.kotlin.idea.KotlinBundle
+import org.jetbrains.kotlin.idea.caches.resolve.safeAnalyzeNonSourceRootCode
import org.jetbrains.kotlin.idea.core.canOmitDeclaredType
import org.jetbrains.kotlin.idea.core.replaced
import org.jetbrains.kotlin.idea.core.setType
import org.jetbrains.kotlin.idea.core.util.isOneLiner
import org.jetbrains.kotlin.idea.intentions.hasResultingIfWithoutElse
-import org.jetbrains.kotlin.idea.util.safeAnalyzeNonSourceRootCode
import org.jetbrains.kotlin.idea.util.CommentSaver
import org.jetbrains.kotlin.idea.util.resultingWhens
import org.jetbrains.kotlin.lexer.KtTokens
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/collections/ConvertCallChainIntoSequenceInspection.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/collections/ConvertCallChainIntoSequenceInspection.kt
index 04768b2b9d5c..411ef992c0d6 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/collections/ConvertCallChainIntoSequenceInspection.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/collections/ConvertCallChainIntoSequenceInspection.kt
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.idea.core.replaced
import org.jetbrains.kotlin.idea.inspections.AbstractKotlinInspection
import org.jetbrains.kotlin.idea.intentions.callExpression
import org.jetbrains.kotlin.idea.util.CommentSaver
-import org.jetbrains.kotlin.idea.util.safeAnalyzeNonSourceRootCode
+import org.jetbrains.kotlin.idea.caches.resolve.safeAnalyzeNonSourceRootCode
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.*
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/dfa/KtDfaHelpers.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/dfa/KtDfaHelpers.kt
index 61e5dc046db7..0293f01ac02e 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/dfa/KtDfaHelpers.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/dfa/KtDfaHelpers.kt
@@ -23,8 +23,8 @@ import org.jetbrains.kotlin.builtins.StandardNames.FqNames
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.idea.caches.resolve.analyze
import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
+import org.jetbrains.kotlin.idea.caches.resolve.safeAnalyzeNonSourceRootCode
import org.jetbrains.kotlin.idea.project.builtIns
-import org.jetbrains.kotlin.idea.util.safeAnalyzeNonSourceRootCode
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.name.FqNameUnsafe
import org.jetbrains.kotlin.psi.*
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/jdk2k/ReplaceJavaStaticMethodWithKotlinAnalogInspection.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/jdk2k/ReplaceJavaStaticMethodWithKotlinAnalogInspection.kt
index 6a8481066f19..1c7ec4bf5c98 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/jdk2k/ReplaceJavaStaticMethodWithKotlinAnalogInspection.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/jdk2k/ReplaceJavaStaticMethodWithKotlinAnalogInspection.kt
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.analyze
import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
import org.jetbrains.kotlin.idea.inspections.AbstractKotlinInspection
import org.jetbrains.kotlin.idea.inspections.collections.isCalling
-import org.jetbrains.kotlin.idea.util.safeAnalyzeNonSourceRootCode
+import org.jetbrains.kotlin.idea.caches.resolve.safeAnalyzeNonSourceRootCode
import org.jetbrains.kotlin.idea.util.textRangeIn
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.KtCallExpression
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/migration/AbstractDiagnosticBasedMigrationInspection.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/migration/AbstractDiagnosticBasedMigrationInspection.kt
index e9677fb452c4..5a778dd406d2 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/migration/AbstractDiagnosticBasedMigrationInspection.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/migration/AbstractDiagnosticBasedMigrationInspection.kt
@@ -8,6 +8,7 @@ import com.intellij.codeInspection.IntentionWrapper
import com.intellij.codeInspection.ProblemDescriptor
import com.intellij.codeInspection.ProblemHighlightType
import com.intellij.openapi.util.TextRange
+import com.intellij.psi.PsiElement
import com.intellij.psi.PsiFile
import org.jetbrains.annotations.Nls
import org.jetbrains.kotlin.diagnostics.Diagnostic
@@ -16,12 +17,11 @@ import org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages
import org.jetbrains.kotlin.idea.caches.resolve.analyzeWithAllCompilerChecks
import org.jetbrains.kotlin.idea.inspections.AbstractKotlinInspection
import org.jetbrains.kotlin.idea.quickfix.QuickFixes
-import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtTreeVisitorVoid
-abstract class AbstractDiagnosticBasedMigrationInspection<T : KtElement>(val elementType: Class<T>) : AbstractKotlinInspection() {
+abstract class AbstractDiagnosticBasedMigrationInspection<T : PsiElement>(val elementType: Class<T>) : AbstractKotlinInspection() {
abstract val diagnosticFactory: DiagnosticFactoryWithPsiElement<T, *>
open fun customIntentionFactory(): ((Diagnostic) -> IntentionAction?)? = null
open fun customHighlightRangeIn(element: T): TextRange? = null
@@ -44,8 +44,8 @@ abstract class AbstractDiagnosticBasedMigrationInspection<T : KtElement>(val ele
val actionFactory = getActionFactory()
file.accept(
object : KtTreeVisitorVoid() {
- override fun visitKtElement(element: KtElement) {
- super.visitKtElement(element)
+ override fun visitElement(element: PsiElement) {
+ super.visitElement(element)
if (!elementType.isInstance(element) || element.textLength == 0) return
val diagnostic = diagnostics.forElement(element)
@@ -65,7 +65,7 @@ abstract class AbstractDiagnosticBasedMigrationInspection<T : KtElement>(val ele
ProblemHighlightType.GENERIC_ERROR_OR_WARNING,
false,
IntentionWrapper(intentionAction),
- ),
+ )
)
}
},
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/migration/AddConversionCallMigrationInspection.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/migration/AddConversionCallMigrationInspection.kt
new file mode 100644
index 000000000000..6ae6146ded11
--- /dev/null
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/migration/AddConversionCallMigrationInspection.kt
@@ -0,0 +1,28 @@
+// Copyright 2000-2021 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
+
+package org.jetbrains.kotlin.idea.inspections.migration
+
+import com.intellij.codeInspection.CleanupLocalInspectionTool
+import org.jetbrains.kotlin.config.LanguageVersion
+import org.jetbrains.kotlin.diagnostics.DiagnosticFactoryWithPsiElement
+import org.jetbrains.kotlin.diagnostics.Errors
+import org.jetbrains.kotlin.idea.KotlinBundle
+import org.jetbrains.kotlin.idea.configuration.MigrationInfo
+import org.jetbrains.kotlin.idea.configuration.isLanguageVersionUpdate
+import org.jetbrains.kotlin.idea.quickfix.migration.MigrationFix
+import org.jetbrains.kotlin.psi.KtExpression
+
+
+class AddConversionCallMigrationInspection :
+ AbstractDiagnosticBasedMigrationInspection<KtExpression>(KtExpression::class.java),
+ MigrationFix,
+ CleanupLocalInspectionTool {
+ override fun isApplicable(migrationInfo: MigrationInfo): Boolean {
+ return migrationInfo.isLanguageVersionUpdate(LanguageVersion.KOTLIN_1_6, LanguageVersion.KOTLIN_1_7)
+ }
+
+ override fun descriptionMessage(): String = KotlinBundle.message("inspection.add.conversion.call.display.name")
+
+ override val diagnosticFactory: DiagnosticFactoryWithPsiElement<KtExpression, *>
+ get() = Errors.INTEGER_OPERATOR_RESOLVE_WILL_CHANGE
+} \ No newline at end of file
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/migration/AmbiguousExpressionInWhenBranchMigrationInspection.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/migration/AmbiguousExpressionInWhenBranchMigrationInspection.kt
new file mode 100644
index 000000000000..1fd4ee4933b2
--- /dev/null
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/migration/AmbiguousExpressionInWhenBranchMigrationInspection.kt
@@ -0,0 +1,29 @@
+// Copyright 2000-2021 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
+
+package org.jetbrains.kotlin.idea.inspections.migration
+
+import com.intellij.codeInspection.CleanupLocalInspectionTool
+import com.intellij.psi.PsiElement
+import org.jetbrains.kotlin.config.LanguageVersion
+import org.jetbrains.kotlin.diagnostics.DiagnosticFactoryWithPsiElement
+import org.jetbrains.kotlin.diagnostics.Errors
+import org.jetbrains.kotlin.idea.KotlinBundle
+import org.jetbrains.kotlin.idea.configuration.MigrationInfo
+import org.jetbrains.kotlin.idea.configuration.isLanguageVersionUpdate
+import org.jetbrains.kotlin.idea.quickfix.migration.MigrationFix
+
+
+class AmbiguousExpressionInWhenBranchMigrationInspection :
+ AbstractDiagnosticBasedMigrationInspection<PsiElement>(PsiElement::class.java),
+ MigrationFix,
+ CleanupLocalInspectionTool {
+
+ override fun isApplicable(migrationInfo: MigrationInfo): Boolean {
+ return migrationInfo.isLanguageVersionUpdate(LanguageVersion.KOTLIN_1_6, LanguageVersion.KOTLIN_1_7)
+ }
+
+ override fun descriptionMessage(): String = KotlinBundle.message("inspection.ambiguous.expression.when.branch.migration.display.name")
+
+ override val diagnosticFactory: DiagnosticFactoryWithPsiElement<PsiElement, *>
+ get() = Errors.CONFUSING_BRANCH_CONDITION.warningFactory
+} \ No newline at end of file
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/migration/InlineClassDeprecatedMigrationInspection.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/migration/InlineClassDeprecatedMigrationInspection.kt
new file mode 100644
index 000000000000..030797caff1d
--- /dev/null
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/migration/InlineClassDeprecatedMigrationInspection.kt
@@ -0,0 +1,28 @@
+// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
+
+package org.jetbrains.kotlin.idea.inspections.migration
+
+import com.intellij.codeInspection.CleanupLocalInspectionTool
+import com.intellij.psi.PsiElement
+import org.jetbrains.kotlin.config.LanguageVersion
+import org.jetbrains.kotlin.diagnostics.DiagnosticFactoryWithPsiElement
+import org.jetbrains.kotlin.diagnostics.Errors
+import org.jetbrains.kotlin.idea.KotlinBundle
+import org.jetbrains.kotlin.idea.configuration.MigrationInfo
+import org.jetbrains.kotlin.idea.configuration.isLanguageVersionUpdate
+import org.jetbrains.kotlin.idea.quickfix.migration.MigrationFix
+
+
+class InlineClassDeprecatedMigrationInspection :
+ AbstractDiagnosticBasedMigrationInspection<PsiElement>(PsiElement::class.java),
+ MigrationFix,
+ CleanupLocalInspectionTool {
+ override fun isApplicable(migrationInfo: MigrationInfo): Boolean {
+ return migrationInfo.isLanguageVersionUpdate(LanguageVersion.KOTLIN_1_4, LanguageVersion.KOTLIN_1_5)
+ }
+
+ override fun descriptionMessage(): String = KotlinBundle.message("inspection.deprecated.inline.class.text")
+
+ override val diagnosticFactory: DiagnosticFactoryWithPsiElement<PsiElement, *>
+ get() = Errors.INLINE_CLASS_DEPRECATED
+} \ No newline at end of file
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/migration/NoConstructorMigrationInspection.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/migration/NoConstructorMigrationInspection.kt
new file mode 100644
index 000000000000..79d8389d36a2
--- /dev/null
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/migration/NoConstructorMigrationInspection.kt
@@ -0,0 +1,21 @@
+// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
+package org.jetbrains.kotlin.idea.inspections.migration
+
+import com.intellij.psi.PsiElement
+import org.jetbrains.kotlin.config.LanguageVersion
+import org.jetbrains.kotlin.diagnostics.DiagnosticFactory0
+import org.jetbrains.kotlin.diagnostics.Errors
+import org.jetbrains.kotlin.idea.configuration.MigrationInfo
+import org.jetbrains.kotlin.idea.configuration.isLanguageVersionUpdate
+import org.jetbrains.kotlin.idea.quickfix.migration.MigrationFix
+
+class NoConstructorMigrationInspection :
+ AbstractDiagnosticBasedMigrationInspection<PsiElement>(PsiElement::class.java),
+ MigrationFix {
+ override fun isApplicable(migrationInfo: MigrationInfo): Boolean = migrationInfo.isLanguageVersionUpdate(
+ untilOldVersion = LanguageVersion.KOTLIN_1_8,
+ sinceNewVersion = LanguageVersion.KOTLIN_1_7,
+ )
+
+ override val diagnosticFactory: DiagnosticFactory0<PsiElement> get() = Errors.NO_CONSTRUCTOR_WARNING
+}
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/migration/OverrideDeprecatedMigrationInspection.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/migration/OverrideDeprecatedMigrationInspection.kt
new file mode 100644
index 000000000000..56ec3a204d37
--- /dev/null
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/inspections/migration/OverrideDeprecatedMigrationInspection.kt
@@ -0,0 +1,21 @@
+// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
+package org.jetbrains.kotlin.idea.inspections.migration
+
+import org.jetbrains.kotlin.config.LanguageVersion
+import org.jetbrains.kotlin.diagnostics.DiagnosticFactoryWithPsiElement
+import org.jetbrains.kotlin.diagnostics.Errors
+import org.jetbrains.kotlin.idea.configuration.MigrationInfo
+import org.jetbrains.kotlin.idea.configuration.isLanguageVersionUpdate
+import org.jetbrains.kotlin.idea.quickfix.migration.MigrationFix
+import org.jetbrains.kotlin.psi.KtNamedDeclaration
+
+class OverrideDeprecatedMigrationInspection :
+ AbstractDiagnosticBasedMigrationInspection<KtNamedDeclaration>(KtNamedDeclaration::class.java),
+ MigrationFix {
+ override fun isApplicable(migrationInfo: MigrationInfo): Boolean = migrationInfo.isLanguageVersionUpdate(
+ untilOldVersion = LanguageVersion.KOTLIN_1_8,
+ sinceNewVersion = LanguageVersion.KOTLIN_1_7,
+ )
+
+ override val diagnosticFactory: DiagnosticFactoryWithPsiElement<KtNamedDeclaration, *> get() = Errors.OVERRIDE_DEPRECATION
+}
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/InsertExplicitTypeArgumentsIntention.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/InsertExplicitTypeArgumentsIntention.kt
index 55ed23205399..43d800f23334 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/InsertExplicitTypeArgumentsIntention.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/InsertExplicitTypeArgumentsIntention.kt
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.resolve.calls.util.getResolvedCall
import org.jetbrains.kotlin.resolve.calls.inference.CapturedType
import org.jetbrains.kotlin.resolve.calls.tower.NewResolvedCallImpl
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
-import org.jetbrains.kotlin.types.ErrorUtils
+import org.jetbrains.kotlin.types.error.ErrorUtils
import org.jetbrains.kotlin.types.checker.NewCapturedType
class InsertExplicitTypeArgumentsIntention : SelfTargetingRangeIntention<KtCallExpression>(
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/LambdaToAnonymousFunctionIntention.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/LambdaToAnonymousFunctionIntention.kt
index e5d59d05cc01..733cdb26656d 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/LambdaToAnonymousFunctionIntention.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/LambdaToAnonymousFunctionIntention.kt
@@ -28,9 +28,9 @@ import org.jetbrains.kotlin.resolve.bindingContextUtil.getTargetFunctionDescript
import org.jetbrains.kotlin.resolve.calls.util.getParameterForArgument
import org.jetbrains.kotlin.resolve.calls.util.getResolvedCall
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
-import org.jetbrains.kotlin.types.ErrorType
import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.types.TypeConstructor
+import org.jetbrains.kotlin.types.error.ErrorType
import org.jetbrains.kotlin.types.isFlexible
import org.jetbrains.kotlin.types.typeUtil.isTypeParameter
import org.jetbrains.kotlin.types.typeUtil.isUnit
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/RemoveExplicitSuperQualifierIntention.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/RemoveExplicitSuperQualifierIntention.kt
index 8dba90de0614..2637e8dc6da2 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/RemoveExplicitSuperQualifierIntention.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/RemoveExplicitSuperQualifierIntention.kt
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.psi.psiUtil.getQualifiedExpressionForReceiver
import org.jetbrains.kotlin.psi.psiUtil.startOffset
import org.jetbrains.kotlin.resolve.calls.util.getResolvedCall
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
-import org.jetbrains.kotlin.types.ErrorUtils
+import org.jetbrains.kotlin.types.error.ErrorUtils
@Suppress("DEPRECATION")
class RemoveExplicitSuperQualifierInspection : IntentionBasedInspection<KtSuperExpression>(
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/SimplifyBooleanWithConstantsIntention.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/SimplifyBooleanWithConstantsIntention.kt
index 0e761455be84..9dd67f421e75 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/SimplifyBooleanWithConstantsIntention.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/SimplifyBooleanWithConstantsIntention.kt
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.idea.core.copied
import org.jetbrains.kotlin.idea.core.replaced
import org.jetbrains.kotlin.idea.inspections.IntentionBasedInspection
import org.jetbrains.kotlin.idea.intentions.loopToCallChain.isTrueConstant
-import org.jetbrains.kotlin.idea.util.safeAnalyzeNonSourceRootCode
+import org.jetbrains.kotlin.idea.caches.resolve.safeAnalyzeNonSourceRootCode
import org.jetbrains.kotlin.lexer.KtTokens.*
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/SpecifyTypeExplicitlyIntention.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/SpecifyTypeExplicitlyIntention.kt
index 2c9f759ae2cd..2e20c9e9f5a1 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/SpecifyTypeExplicitlyIntention.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/SpecifyTypeExplicitlyIntention.kt
@@ -32,6 +32,8 @@ import org.jetbrains.kotlin.resolve.checkers.ExplicitApiDeclarationChecker
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameOrNull
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
import org.jetbrains.kotlin.types.*
+import org.jetbrains.kotlin.types.error.ErrorUtils
+import org.jetbrains.kotlin.types.error.ErrorTypeKind
import org.jetbrains.kotlin.types.typeUtil.makeNotNullable
import org.jetbrains.kotlin.utils.ifEmpty
@@ -114,10 +116,10 @@ class SpecifyTypeExplicitlyIntention : SelfTargetingRangeIntention<KtCallableDec
}
if (type != null && type.isError && descriptor is PropertyDescriptor) {
- return descriptor.setterType ?: ErrorUtils.createErrorType("null type")
+ return descriptor.setterType ?: ErrorUtils.createErrorType(ErrorTypeKind.NOT_FOUND_DESCRIPTOR_FOR_FUNCTION, declaration.text)
}
- return type ?: ErrorUtils.createErrorType("null type")
+ return type ?: ErrorUtils.createErrorType(ErrorTypeKind.NOT_FOUND_DESCRIPTOR_FOR_FUNCTION, declaration.text)
}
fun createTypeExpressionForTemplate(
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/UsePropertyAccessSyntaxIntention.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/UsePropertyAccessSyntaxIntention.kt
index d5955e9b0269..e562007c6284 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/UsePropertyAccessSyntaxIntention.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/UsePropertyAccessSyntaxIntention.kt
@@ -29,7 +29,7 @@ import org.jetbrains.kotlin.idea.resolve.getLanguageVersionSettings
import org.jetbrains.kotlin.idea.util.application.runWriteActionIfPhysical
import org.jetbrains.kotlin.idea.util.application.withPsiAttachment
import org.jetbrains.kotlin.idea.util.getResolutionScope
-import org.jetbrains.kotlin.idea.util.safeAnalyzeNonSourceRootCode
+import org.jetbrains.kotlin.idea.caches.resolve.safeAnalyzeNonSourceRootCode
import org.jetbrains.kotlin.idea.util.shouldNotConvertToProperty
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.name.FqNameUnsafe
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/Utils.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/Utils.kt
index b1dfe4102f4c..5265fd9d76c7 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/Utils.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/Utils.kt
@@ -33,6 +33,7 @@ import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.types.KotlinTypeFactory
import org.jetbrains.kotlin.types.isFlexible
+import org.jetbrains.kotlin.types.toDefaultAttributes
import org.jetbrains.kotlin.types.typeUtil.builtIns
import org.jetbrains.kotlin.types.typeUtil.isUnit
import org.jetbrains.kotlin.util.OperatorChecks
@@ -348,7 +349,7 @@ fun KotlinType.reflectToRegularFunctionType(): KotlinType {
val parameterCount = if (isTypeAnnotatedWithExtensionFunctionType) arguments.size - 2 else arguments.size - 1
val classDescriptor =
if (isKSuspendFunctionType) builtIns.getSuspendFunction(parameterCount) else builtIns.getFunction(parameterCount)
- return KotlinTypeFactory.simpleNotNullType(annotations, classDescriptor, arguments)
+ return KotlinTypeFactory.simpleNotNullType(annotations.toDefaultAttributes(), classDescriptor, arguments)
}
private val KOTLIN_BUILTIN_ENUM_FUNCTIONS = listOf(FqName("kotlin.enumValues"), FqName("kotlin.enumValueOf"))
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/branchedTransformations/IfThenUtils.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/branchedTransformations/IfThenUtils.kt
index 54dabc67f9ff..6beeeb766126 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/branchedTransformations/IfThenUtils.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/intentions/branchedTransformations/IfThenUtils.kt
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.idea.util.application.invokeLater
import org.jetbrains.kotlin.idea.util.application.isUnitTestMode
import org.jetbrains.kotlin.idea.util.application.withPsiAttachment
import org.jetbrains.kotlin.idea.util.getResolutionScope
-import org.jetbrains.kotlin.idea.util.safeAnalyzeNonSourceRootCode
+import org.jetbrains.kotlin.idea.caches.resolve.safeAnalyzeNonSourceRootCode
import org.jetbrains.kotlin.idea.util.textRangeIn
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
import org.jetbrains.kotlin.lexer.KtTokens
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/parameterInfo/HintsTypeRenderer.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/parameterInfo/HintsTypeRenderer.kt
index 54dbac5acaa9..5f322ab21b73 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/parameterInfo/HintsTypeRenderer.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/parameterInfo/HintsTypeRenderer.kt
@@ -22,6 +22,9 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.isCompanionObject
import org.jetbrains.kotlin.resolve.descriptorUtil.parentsWithSelf
import org.jetbrains.kotlin.resolve.scopes.utils.findClassifier
import org.jetbrains.kotlin.types.*
+import org.jetbrains.kotlin.types.error.*
+import org.jetbrains.kotlin.types.typeUtil.isUnresolvedType
+import org.jetbrains.kotlin.types.error.ErrorUtils
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
import java.util.ArrayList
@@ -107,13 +110,13 @@ class HintsTypeRenderer private constructor(override val options: HintsDescripto
}
private fun SimpleType.renderSimpleTypeTo(list: MutableList<InlayInfoDetail>) {
- if (this == TypeUtils.CANT_INFER_FUNCTION_PARAM_TYPE || TypeUtils.isDontCarePlaceholder(this)) {
+ if (this == TypeUtils.CANNOT_INFER_FUNCTION_PARAM_TYPE || TypeUtils.isDontCarePlaceholder(this)) {
list.append("???")
return
}
- if (ErrorUtils.isUninferredParameter(this)) {
+ if (ErrorUtils.isUninferredTypeVariable(this)) {
if (options.uninferredTypeParameterAsName) {
- list.append(renderError((this.constructor as ErrorUtils.UninferredParameterTypeConstructor).typeParameterDescriptor.name.toString()))
+ list.append(renderError((this.constructor as ErrorTypeConstructor).getParam(0)))
} else {
list.append("???")
}
@@ -143,11 +146,11 @@ class HintsTypeRenderer private constructor(override val options: HintsDescripto
renderAnnotationsTo(list)
if (this.isError) {
- if (this is UnresolvedType && options.presentableUnresolvedTypes) {
- list.append(this.presentableName)
+ if (isUnresolvedType(this) && options.presentableUnresolvedTypes) {
+ list.append(this.debugMessage)
} else {
if (this is ErrorType && !options.informativeErrorType) {
- list.append(this.presentableName)
+ list.append(this.debugMessage)
} else {
list.append(this.constructor.toString()) // Debug name of an error type is more informative
}
@@ -162,7 +165,7 @@ class HintsTypeRenderer private constructor(override val options: HintsDescripto
}
if (this.isDefinitelyNotNullType) {
- list.append("!!")
+ list.append("& Any")
}
}
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/parameterInfo/KotlinIdeDescriptorRenderer.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/parameterInfo/KotlinIdeDescriptorRenderer.kt
index a36236396da2..baf9fac50119 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/parameterInfo/KotlinIdeDescriptorRenderer.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/parameterInfo/KotlinIdeDescriptorRenderer.kt
@@ -23,8 +23,10 @@ import org.jetbrains.kotlin.resolve.constants.KClassValue
import org.jetbrains.kotlin.resolve.descriptorUtil.annotationClass
import org.jetbrains.kotlin.resolve.descriptorUtil.declaresOrInheritsDefaultValue
import org.jetbrains.kotlin.types.*
-import org.jetbrains.kotlin.types.ErrorUtils.UninferredParameterTypeConstructor
-import org.jetbrains.kotlin.types.TypeUtils.CANT_INFER_FUNCTION_PARAM_TYPE
+import org.jetbrains.kotlin.types.error.*
+import org.jetbrains.kotlin.types.TypeUtils.CANNOT_INFER_FUNCTION_PARAM_TYPE
+import org.jetbrains.kotlin.types.error.ErrorUtils
+import org.jetbrains.kotlin.types.typeUtil.isUnresolvedType
import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly
import java.util.*
@@ -236,13 +238,13 @@ open class KotlinIdeDescriptorRenderer(
}
private fun StringBuilder.appendSimpleType(type: SimpleType) {
- if (type == CANT_INFER_FUNCTION_PARAM_TYPE || TypeUtils.isDontCarePlaceholder(type)) {
+ if (type == CANNOT_INFER_FUNCTION_PARAM_TYPE || TypeUtils.isDontCarePlaceholder(type)) {
appendHighlighted("???") { asError }
return
}
- if (ErrorUtils.isUninferredParameter(type)) {
+ if (ErrorUtils.isUninferredTypeVariable(type)) {
if (uninferredTypeParameterAsName) {
- append(renderError((type.constructor as UninferredParameterTypeConstructor).typeParameterDescriptor.name.toString()))
+ append(renderError((type.constructor as ErrorTypeConstructor).getParam(0)))
} else {
appendHighlighted("???") { asError }
}
@@ -334,11 +336,11 @@ open class KotlinIdeDescriptorRenderer(
appendAnnotations(type)
if (type.isError) {
- if (type is UnresolvedType && presentableUnresolvedTypes) {
- appendHighlighted(type.presentableName) { asError }
+ if (isUnresolvedType(type) && presentableUnresolvedTypes) {
+ appendHighlighted(type.debugMessage) { asError }
} else {
if (type is ErrorType && !informativeErrorType) {
- appendHighlighted(type.presentableName) { asError }
+ appendHighlighted(type.debugMessage) { asError }
} else {
appendHighlighted(type.constructor.toString()) { asError } // Debug name of an error type is more informative
}
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/platform/IdePlatformKindTooling.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/platform/IdePlatformKindTooling.kt
index 662ade5be00c..4eb9061c2d8c 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/platform/IdePlatformKindTooling.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/platform/IdePlatformKindTooling.kt
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.psi.KtNamedDeclaration
import javax.swing.Icon
abstract class IdePlatformKindTooling {
- abstract val kind: IdePlatformKind<*>
+ abstract val kind: IdePlatformKind
abstract fun compilerArgumentsForProject(project: Project): CommonCompilerArguments?
@@ -61,7 +61,7 @@ abstract class IdePlatformKindTooling {
ALL_TOOLING_SUPPORT.flatMap { tooling -> tooling.gradlePlatformIds.map { it to tooling } }.toMap()
}
- fun getTooling(kind: IdePlatformKind<*>): IdePlatformKindTooling {
+ fun getTooling(kind: IdePlatformKind): IdePlatformKindTooling {
return TOOLING_SUPPORT_BY_KIND[kind] ?: error("Unknown platform $kind")
}
@@ -78,5 +78,5 @@ abstract class IdePlatformKindTooling {
}
}
-val IdePlatformKind<*>.tooling: IdePlatformKindTooling
+val IdePlatformKind.tooling: IdePlatformKindTooling
get() = IdePlatformKindTooling.getTooling(this) \ No newline at end of file
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/AddConversionCallFix.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/AddConversionCallFix.kt
new file mode 100644
index 000000000000..344d4498e63f
--- /dev/null
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/AddConversionCallFix.kt
@@ -0,0 +1,49 @@
+// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
+
+package org.jetbrains.kotlin.idea.quickfix
+
+import com.intellij.codeInsight.intention.IntentionAction
+import com.intellij.openapi.editor.Editor
+import com.intellij.openapi.project.Project
+import com.intellij.psi.PsiElement
+import org.jetbrains.kotlin.idea.KotlinBundle
+import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
+import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers
+import org.jetbrains.kotlin.psi.*
+import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
+import org.jetbrains.kotlin.resolve.calls.util.getParameterForArgument
+import org.jetbrains.kotlin.utils.addToStdlib.safeAs
+
+class AddConversionCallFix(element: KtExpression, val targetType: String) : KotlinQuickFixAction<KtExpression>(element) {
+
+ companion object : QuickFixesPsiBasedFactory<PsiElement>(PsiElement::class, PsiElementSuitabilityCheckers.ALWAYS_SUITABLE) {
+ override fun doCreateQuickFix(psiElement: PsiElement): List<IntentionAction> {
+ val expression = psiElement.safeAs<KtExpression>() ?: return emptyList()
+ val targetType = calculateTargetType(expression) ?: return emptyList()
+ return listOf(AddConversionCallFix(expression, targetType))
+ }
+
+ private fun calculateTargetType(expression: KtExpression): String? {
+ val valueArgument = expression.getParentOfType<KtValueArgument>(false) ?: return null
+ val callExpression = valueArgument.getParentOfType<KtCallExpression>(false) ?: return null
+ val resolvedCall = callExpression.resolveToCall() ?: return null
+ val parameterDescriptor = resolvedCall.getParameterForArgument(valueArgument) ?: return null
+ val type = parameterDescriptor.type
+ return IdeDescriptorRenderers.SOURCE_CODE_SHORT_NAMES_NO_ANNOTATIONS.renderType(type)
+ }
+ }
+
+ override fun isAvailable(project: Project, editor: Editor?, file: KtFile): Boolean = element != null
+
+ override fun invoke(project: Project, editor: Editor?, file: KtFile) {
+ val expression = element ?: return
+ val convertExpression = KtPsiFactory(file).createExpressionByPattern("($0).to$1()", expression, targetType)
+ expression.replace(convertExpression)
+ }
+
+ override fun getText(): String {
+ return KotlinBundle.message("convert.expression.to.0", targetType)
+ }
+
+ override fun getFamilyName(): String = text
+} \ No newline at end of file
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeCallableReturnTypeFix.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeCallableReturnTypeFix.kt
index 379068cbc700..7e719b75c28c 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeCallableReturnTypeFix.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeCallableReturnTypeFix.kt
@@ -29,7 +29,7 @@ import org.jetbrains.kotlin.resolve.DataClassDescriptorResolver
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
-import org.jetbrains.kotlin.types.ErrorUtils
+import org.jetbrains.kotlin.types.error.ErrorUtils
import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.types.checker.KotlinTypeChecker
import org.jetbrains.kotlin.types.typeUtil.isUnit
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVariableTypeFix.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVariableTypeFix.kt
index a3cf10017517..39b51ab40390 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVariableTypeFix.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVariableTypeFix.kt
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
-import org.jetbrains.kotlin.types.ErrorUtils
+import org.jetbrains.kotlin.types.error.ErrorUtils
import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.types.checker.KotlinTypeChecker
import org.jetbrains.kotlin.types.typeUtil.makeNullable
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVisibilityOnExposureFactory.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVisibilityOnExposureFactory.kt
index f073fd455db1..5c13aa603d86 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVisibilityOnExposureFactory.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeVisibilityOnExposureFactory.kt
@@ -1,11 +1,10 @@
-// Copyright 2000-2021 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
+// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.kotlin.idea.quickfix
import com.intellij.codeInsight.intention.IntentionAction
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities.*
-import org.jetbrains.kotlin.descriptors.EffectiveVisibility.Permissiveness.LESS
import org.jetbrains.kotlin.diagnostics.Diagnostic
import org.jetbrains.kotlin.diagnostics.DiagnosticFactory3
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
@@ -14,19 +13,18 @@ import org.jetbrains.kotlin.idea.resolve.getLanguageVersionSettings
import org.jetbrains.kotlin.psi.KtDeclaration
import org.jetbrains.kotlin.psi.KtModifierListOwner
import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
+import org.jetbrains.kotlin.psi.psiUtil.isPrivate
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
-import org.jetbrains.kotlin.types.checker.SimpleClassicTypeSystemContext
-import java.util.*
object ChangeVisibilityOnExposureFactory : KotlinIntentionActionsFactory() {
private fun addFixToTargetVisibility(
- modifierListOwner: KtModifierListOwner,
- descriptor: DeclarationDescriptorWithVisibility,
- targetVisibility: DescriptorVisibility,
- boundVisibility: DescriptorVisibility,
- protectedAllowed: Boolean,
- fixes: MutableList<IntentionAction>
+ modifierListOwner: KtModifierListOwner,
+ descriptor: DeclarationDescriptorWithVisibility,
+ targetVisibility: DescriptorVisibility,
+ boundVisibility: DescriptorVisibility,
+ protectedAllowed: Boolean,
+ fixes: MutableList<IntentionAction>,
) {
val possibleVisibilities = when (targetVisibility) {
PROTECTED -> if (protectedAllowed) listOf(boundVisibility, PROTECTED) else listOf(boundVisibility)
@@ -34,6 +32,7 @@ object ChangeVisibilityOnExposureFactory : KotlinIntentionActionsFactory() {
boundVisibility -> listOf(boundVisibility)
else -> listOf()
}
+
possibleVisibilities.mapNotNullTo(fixes) { ChangeVisibilityFix.create(modifierListOwner, descriptor, it) }
}
@@ -42,33 +41,51 @@ object ChangeVisibilityOnExposureFactory : KotlinIntentionActionsFactory() {
val factory = diagnostic.factory as DiagnosticFactory3<*, EffectiveVisibility, DescriptorWithRelation, EffectiveVisibility>
// We have USER that uses some EXPOSED object. USER visibility must be same or less permissive.
val exposedDiagnostic = factory.cast(diagnostic)
- val exposedDescriptor = exposedDiagnostic.b.descriptor as? DeclarationDescriptorWithVisibility ?: return emptyList()
- val exposedDeclaration =
- DescriptorToSourceUtils.getSourceFromDescriptor(exposedDescriptor) as? KtModifierListOwner ?: return emptyList()
- val exposedVisibility = exposedDiagnostic.c
- val userVisibility = exposedDiagnostic.a
- val (targetUserVisibility, targetExposedVisibility) = when (exposedVisibility.relation(userVisibility, SimpleClassicTypeSystemContext)) {
- LESS -> Pair(exposedVisibility.toDescriptorVisibility(), userVisibility.toDescriptorVisibility())
- else -> Pair(PRIVATE, PUBLIC)
- }
+ val exposedDescriptor = exposedDiagnostic.b.descriptor as? DeclarationDescriptorWithVisibility
+ ?: return emptyList()
+
+ val exposedDeclaration = DescriptorToSourceUtils.getSourceFromDescriptor(exposedDescriptor) as? KtModifierListOwner
+ ?: return emptyList()
+
+ val exposedVisibility = exposedDiagnostic.c.toDescriptorVisibility()
+ val userVisibility = exposedDiagnostic.a.toDescriptorVisibility()
+ val (targetUserVisibility, targetExposedVisibility) =
+ if (exposedVisibility.compareTo(userVisibility)?.let { it < 0 } == true)
+ Pair(exposedVisibility, userVisibility)
+ else
+ Pair(PRIVATE, PUBLIC)
+
val result = ArrayList<IntentionAction>()
val userDeclaration = diagnostic.psiElement.getParentOfType<KtDeclaration>(true)
val protectedAllowed = exposedDeclaration.parent == userDeclaration?.parent
- if (userDeclaration != null) {
+ if (userDeclaration != null && !userDeclaration.isPrivate()) {
val userDescriptor = userDeclaration.toDescriptor() as? DeclarationDescriptorWithVisibility
- if (userDescriptor != null && DescriptorVisibilityUtils.isVisibleIgnoringReceiver(exposedDescriptor, userDescriptor, exposedDeclaration.getResolutionFacade().getLanguageVersionSettings())) {
+ if (userDescriptor != null && DescriptorVisibilityUtils.isVisibleIgnoringReceiver(
+ exposedDescriptor,
+ userDescriptor,
+ exposedDeclaration.getResolutionFacade().getLanguageVersionSettings(),
+ )
+ ) {
addFixToTargetVisibility(
- userDeclaration, userDescriptor,
- targetUserVisibility, PRIVATE,
- protectedAllowed, result
+ modifierListOwner = userDeclaration,
+ descriptor = userDescriptor,
+ targetVisibility = targetUserVisibility,
+ boundVisibility = PRIVATE,
+ protectedAllowed = protectedAllowed,
+ fixes = result,
)
}
}
+
addFixToTargetVisibility(
- exposedDeclaration, exposedDescriptor,
- targetExposedVisibility, PUBLIC,
- protectedAllowed, result
+ modifierListOwner = exposedDeclaration,
+ descriptor = exposedDescriptor,
+ targetVisibility = targetExposedVisibility,
+ boundVisibility = PUBLIC,
+ protectedAllowed = protectedAllowed,
+ fixes = result,
)
+
return result
}
}
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ConfusingExpressionInWhenBranchFix.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ConfusingExpressionInWhenBranchFix.kt
new file mode 100644
index 000000000000..d84798885e4f
--- /dev/null
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ConfusingExpressionInWhenBranchFix.kt
@@ -0,0 +1,38 @@
+// Copyright 2000-2021 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
+
+package org.jetbrains.kotlin.idea.quickfix
+
+import com.intellij.codeInsight.intention.IntentionAction
+import com.intellij.openapi.editor.Editor
+import com.intellij.openapi.project.Project
+import com.intellij.psi.PsiElement
+import org.jetbrains.kotlin.idea.KotlinBundle
+import org.jetbrains.kotlin.psi.KtExpression
+import org.jetbrains.kotlin.psi.KtFile
+import org.jetbrains.kotlin.psi.KtPsiFactory
+import org.jetbrains.kotlin.psi.createExpressionByPattern
+import org.jetbrains.kotlin.utils.addToStdlib.safeAs
+
+class ConfusingExpressionInWhenBranchFix(element: KtExpression) : KotlinPsiOnlyQuickFixAction<KtExpression>(element) {
+
+ companion object : QuickFixesPsiBasedFactory<PsiElement>(PsiElement::class, PsiElementSuitabilityCheckers.ALWAYS_SUITABLE) {
+ override fun doCreateQuickFix(psiElement: PsiElement): List<IntentionAction> {
+ val expression = psiElement.safeAs<KtExpression>() ?: return emptyList()
+ return listOf(ConfusingExpressionInWhenBranchFix(expression))
+ }
+ }
+
+ override fun isAvailable(project: Project, editor: Editor?, file: KtFile): Boolean = element != null
+
+ override fun invoke(project: Project, editor: Editor?, file: KtFile) {
+ val expression = element ?: return
+ val wrapped = KtPsiFactory(file).createExpressionByPattern("($0)", expression)
+ expression.replace(wrapped)
+ }
+
+ override fun getText(): String {
+ return KotlinBundle.message("wrap.expression.in.parentheses")
+ }
+
+ override fun getFamilyName(): String = text
+} \ No newline at end of file
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ConverKClassToClassFix.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ConverKClassToClassFix.kt
index c331b03140a6..47ac0c1c0687 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ConverKClassToClassFix.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ConverKClassToClassFix.kt
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.psi.KtPsiFactory
import org.jetbrains.kotlin.psi.createExpressionByPattern
import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.types.KotlinTypeFactory
+import org.jetbrains.kotlin.types.TypeAttributes
import org.jetbrains.kotlin.types.TypeProjectionImpl
import org.jetbrains.kotlin.types.typeUtil.isSubtypeOf
@@ -38,7 +39,7 @@ class ConvertKClassToClassFix(element: KtExpression) : KotlinQuickFixAction<KtEx
val javaLangClassDescriptor = file.resolveImportReference(JAVA_LANG_CLASS_FQ_NAME)
.singleOrNull() as? ClassDescriptor ?: return null
val javaLangClassType = KotlinTypeFactory.simpleNotNullType(
- Annotations.EMPTY,
+ TypeAttributes.Empty,
javaLangClassDescriptor,
listOf(TypeProjectionImpl(expressionTypeArgument))
)
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ImportFix.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ImportFix.kt
index 2217bc4ed91d..4b24fbb8319b 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ImportFix.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/ImportFix.kt
@@ -4,10 +4,18 @@ package org.jetbrains.kotlin.idea.quickfix
import com.intellij.codeInsight.daemon.impl.ShowAutoImportPass
import com.intellij.openapi.editor.Editor
+import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.diagnostics.Diagnostic
+import org.jetbrains.kotlin.psi.KtCallExpression
import org.jetbrains.kotlin.psi.KtSimpleNameExpression
internal class ImportFix(expression: KtSimpleNameExpression) : AbstractImportFix(expression, MyFactory) {
+
+ override fun elementsToCheckDiagnostics(): Collection<PsiElement> {
+ val expression = element ?: return emptyList()
+ return listOfNotNull(expression, expression.parent?.takeIf { it is KtCallExpression })
+ }
+
override fun fixSilently(editor: Editor): Boolean {
if (isOutdated()) return false
val element = element ?: return false
@@ -22,7 +30,14 @@ internal class ImportFix(expression: KtSimpleNameExpression) : AbstractImportFix
}
companion object MyFactory : Factory() {
- override fun createImportAction(diagnostic: Diagnostic) =
- (diagnostic.psiElement as? KtSimpleNameExpression)?.let(::ImportFix)
+ override fun createImportAction(diagnostic: Diagnostic): ImportFix? {
+ val simpleNameExpression = when (val element = diagnostic.psiElement) {
+ is KtSimpleNameExpression -> element
+ is KtCallExpression -> element.calleeExpression
+ else -> null
+ } as? KtSimpleNameExpression ?: return null
+
+ return ImportFix(simpleNameExpression)
+ }
}
} \ No newline at end of file
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/MakeUpperBoundNonNullableFix.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/MakeUpperBoundNonNullableFix.kt
index 7c8cea7d4304..fbfd0a6f69cd 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/MakeUpperBoundNonNullableFix.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/MakeUpperBoundNonNullableFix.kt
@@ -6,12 +6,13 @@ import com.intellij.codeInsight.intention.IntentionAction
import com.intellij.codeInspection.util.IntentionName
import com.intellij.openapi.editor.Editor
import com.intellij.openapi.project.Project
-import com.intellij.openapi.util.NlsContext
-import com.intellij.openapi.util.NlsSafe
-import org.jetbrains.annotations.Nls
+import com.intellij.util.containers.addIfNotNull
import org.jetbrains.kotlin.backend.jvm.ir.psiElement
import org.jetbrains.kotlin.builtins.StandardNames
-import org.jetbrains.kotlin.descriptors.*
+import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
+import org.jetbrains.kotlin.descriptors.ClassDescriptor
+import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
+import org.jetbrains.kotlin.descriptors.isOverridable
import org.jetbrains.kotlin.diagnostics.Diagnostic
import org.jetbrains.kotlin.diagnostics.Errors
import org.jetbrains.kotlin.idea.KotlinBundle
@@ -20,7 +21,9 @@ import org.jetbrains.kotlin.idea.core.ShortenReferences
import org.jetbrains.kotlin.idea.quickfix.createFromUsage.callableBuilder.getTypeParameters
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
-import org.jetbrains.kotlin.psi.*
+import org.jetbrains.kotlin.psi.KtFile
+import org.jetbrains.kotlin.psi.KtPsiFactory
+import org.jetbrains.kotlin.psi.KtTypeParameter
import org.jetbrains.kotlin.renderer.render
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm
@@ -111,7 +114,12 @@ open class MakeUpperBoundNonNullableFix(
return when (diagnostic.factory) {
ErrorsJvm.NULLABLE_TYPE_PARAMETER_AGAINST_NOT_NULL_TYPE_PARAMETER -> {
val info = ErrorsJvm.NULLABLE_TYPE_PARAMETER_AGAINST_NOT_NULL_TYPE_PARAMETER.cast(diagnostic)
- createActionsForType(info.a)
+ listOfNotNull(createActionForTypeParameter(info.a))
+ }
+
+ ErrorsJvm.WRONG_TYPE_PARAMETER_NULLABILITY_FOR_JAVA_OVERRIDE -> {
+ val info = ErrorsJvm.WRONG_TYPE_PARAMETER_NULLABILITY_FOR_JAVA_OVERRIDE.cast(diagnostic)
+ listOfNotNull(createActionForTypeParameter(info.a))
}
Errors.TYPE_MISMATCH -> {
@@ -192,6 +200,17 @@ open class MakeUpperBoundNonNullableFix(
}
private fun createActionsForType(type: KotlinType, highPriority: Boolean = false): List<IntentionAction> {
+ val result = mutableListOf<IntentionAction>()
+ for (typeParameterDescriptor in type.getTypeParameters()) {
+ result.addIfNotNull(createActionForTypeParameter(typeParameterDescriptor, highPriority))
+ }
+ return result
+ }
+
+ private fun createActionForTypeParameter(
+ typeParameterDescriptor: TypeParameterDescriptor,
+ highPriority: Boolean = false,
+ ): IntentionAction? {
fun makeAction(typeParameter: KtTypeParameter, kind: Kind): IntentionAction {
return if (highPriority)
HighPriorityMakeUpperBoundNonNullableFix(typeParameter, kind)
@@ -199,22 +218,21 @@ open class MakeUpperBoundNonNullableFix(
MakeUpperBoundNonNullableFix(typeParameter, kind)
}
- val result = mutableListOf<IntentionAction>()
- for (typeParameterDescriptor in type.getTypeParameters()) {
- val psiElement = typeParameterDescriptor.psiElement?.safeAs<KtTypeParameter>() ?: continue
- val existingUpperBound = psiElement.extendsBound
- if (existingUpperBound != null) {
- val context = existingUpperBound.analyze(BodyResolveMode.PARTIAL)
- val upperBoundType = context[BindingContext.TYPE, existingUpperBound] ?: continue
- if (upperBoundType.isMarkedNullable) {
- result.add(makeAction(psiElement, Kind.ReplaceExistingUpperBound(upperBoundType.makeNotNullable())))
- }
- } else {
- result.add(makeAction(psiElement, Kind.AddAnyAsUpperBound))
+ val psiElement = typeParameterDescriptor.psiElement?.safeAs<KtTypeParameter>() ?: return null
+ val existingUpperBound = psiElement.extendsBound
+ if (existingUpperBound != null) {
+ val context = existingUpperBound.analyze(BodyResolveMode.PARTIAL)
+ val upperBoundType = context[BindingContext.TYPE, existingUpperBound] ?: return null
+ if (upperBoundType.isMarkedNullable) {
+ return makeAction(psiElement, Kind.ReplaceExistingUpperBound(upperBoundType.makeNotNullable()))
}
+ } else {
+ return makeAction(psiElement, Kind.AddAnyAsUpperBound)
}
- return result
+
+ return null
}
+
}
}
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixFactoryForTypeMismatchError.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixFactoryForTypeMismatchError.kt
index cbcb50e9f02d..37e4c3457ae3 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixFactoryForTypeMismatchError.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixFactoryForTypeMismatchError.kt
@@ -20,25 +20,23 @@ import org.jetbrains.kotlin.idea.intentions.reflectToRegularFunctionType
import org.jetbrains.kotlin.idea.project.languageVersionSettings
import org.jetbrains.kotlin.idea.util.approximateWithResolvableType
import org.jetbrains.kotlin.idea.util.getResolutionScope
+import org.jetbrains.kotlin.idea.util.module
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.*
-import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
import org.jetbrains.kotlin.psi.psiUtil.getQualifiedExpressionForSelectorOrThis
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
import org.jetbrains.kotlin.resolve.bindingContextUtil.getTargetFunction
+import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
import org.jetbrains.kotlin.resolve.calls.util.getParameterForArgument
import org.jetbrains.kotlin.resolve.calls.util.getParentResolvedCall
import org.jetbrains.kotlin.resolve.calls.util.getResolvedCall
import org.jetbrains.kotlin.resolve.calls.util.getValueArgumentForExpression
-import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
import org.jetbrains.kotlin.resolve.constants.IntegerValueTypeConstant
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
-import org.jetbrains.kotlin.resolve.descriptorUtil.module
import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm
import org.jetbrains.kotlin.types.KotlinType
-import org.jetbrains.kotlin.types.TypeProjection
import org.jetbrains.kotlin.types.TypeUtils
import org.jetbrains.kotlin.types.TypeUtils.NO_EXPECTED_TYPE
import org.jetbrains.kotlin.types.isDefinitelyNotNullType
@@ -147,7 +145,6 @@ class QuickFixFactoryForTypeMismatchError : KotlinIntentionActionsFactory() {
}
}
-
actions.addAll(WrapWithCollectionLiteralCallFix.create(expectedType, expressionType, diagnosticElement))
ConvertCollectionFix.getConversionTypeOrNull(expressionType, expectedType)?.let {
@@ -203,7 +200,13 @@ class QuickFixFactoryForTypeMismatchError : KotlinIntentionActionsFactory() {
// Suggest replacing the parameter type `T` with its expected definitely non-nullable subtype `T & Any`.
// Types that contain DNN types as arguments (like `(Mutable)Collection<T & Any>`) are currently not supported.
- if (diagnosticElement is KtReferenceExpression && expectedType.isDefinitelyNotNullType) {
+ // The "Change parameter type" action is generated only if the `DefinitelyNonNullableTypes` language feature is enabled:
+ // if it is disabled, the `T & Any` intersection type is resolved as just `T`, so the fix would not have any effect.
+ if (
+ diagnosticElement is KtReferenceExpression &&
+ expectedType.isDefinitelyNotNullType &&
+ diagnosticElement.module?.languageVersionSettings?.supportsFeature(LanguageFeature.DefinitelyNonNullableTypes) == true
+ ) {
val descriptor = context[BindingContext.REFERENCE_TARGET, diagnosticElement]?.safeAs<CallableDescriptor>()
when (val declaration = QuickFixUtil.safeGetDeclaration(descriptor)) {
is KtParameter -> {
@@ -233,7 +236,6 @@ class QuickFixFactoryForTypeMismatchError : KotlinIntentionActionsFactory() {
val expressionParent = diagnosticElement.parent
// Mismatch in returned expression:
-
val function = if (expressionParent is KtReturnExpression)
expressionParent.getTargetFunction(context)
else
@@ -271,9 +273,7 @@ class QuickFixFactoryForTypeMismatchError : KotlinIntentionActionsFactory() {
|| KotlinBuiltIns.isPrimitiveArray(expectedType)
) {
actions.add(AddArrayOfTypeFix(diagnosticElement, expectedType))
- if (diagnosticElement.languageVersionSettings.supportsFeature(LanguageFeature.ArrayLiteralsInAnnotations)) {
- actions.add(WrapWithArrayLiteralFix(diagnosticElement))
- }
+ actions.add(WrapWithArrayLiteralFix(diagnosticElement))
}
}
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt
index 088876cda67f..84e3809d9812 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/QuickFixRegistrar.kt
@@ -1,4 +1,4 @@
-// Copyright 2000-2021 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
+// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.kotlin.idea.quickfix
@@ -152,7 +152,10 @@ class QuickFixRegistrar : QuickFixContributor {
NO_EXPLICIT_RETURN_TYPE_IN_API_MODE_WARNING.registerActions(SpecifyTypeExplicitlyFix())
+ INVISIBLE_REFERENCE.registerFactory(ImportFix)
+ INVISIBLE_MEMBER.registerFactory(ImportFix)
UNRESOLVED_REFERENCE.registerFactory(ImportFix)
+
UNRESOLVED_REFERENCE.registerFactory(ImportConstructorReferenceFix)
DEPRECATED_ACCESS_BY_SHORT_NAME.registerFactory(AddExplicitImportForDeprecatedVisibilityFix.Factory)
TYPE_INFERENCE_CANDIDATE_WITH_SAM_AND_VARARG.registerFactory(AddSpreadOperatorForArrayAsVarargAfterSamFixFactory)
@@ -287,10 +290,16 @@ class QuickFixRegistrar : QuickFixContributor {
SENSELESS_NULL_IN_WHEN.registerFactory(RemoveWhenBranchFix, RemoveWhenConditionFix)
BREAK_OR_CONTINUE_IN_WHEN.registerFactory(AddLoopLabelFix)
NO_ELSE_IN_WHEN.registerFactory(AddWhenElseBranchFix, AddWhenRemainingBranchesFix)
+ NO_ELSE_IN_WHEN_WARNING.registerFactory(AddWhenElseBranchFix, AddWhenRemainingBranchesFix)
NON_EXHAUSTIVE_WHEN.registerFactory(AddWhenElseBranchFix, AddWhenRemainingBranchesFix)
NON_EXHAUSTIVE_WHEN_ON_SEALED_CLASS.registerFactory(AddWhenElseBranchFix, AddWhenRemainingBranchesFix)
NON_EXHAUSTIVE_WHEN_STATEMENT.registerFactory(AddWhenElseBranchFix, AddWhenRemainingBranchesFix)
+ INVALID_IF_AS_EXPRESSION.registerFactory(AddIfElseBranchFix)
+ INVALID_IF_AS_EXPRESSION_WARNING.registerFactory(AddIfElseBranchFix)
+
+ INTEGER_OPERATOR_RESOLVE_WILL_CHANGE.registerFactory(AddConversionCallFix)
+
NO_TYPE_ARGUMENTS_ON_RHS.registerFactory(AddStarProjectionsFixFactory)
TYPE_ARGUMENTS_REDUNDANT_IN_SUPER_QUALIFIER.registerFactory(RemovePsiElementSimpleFix.RemoveTypeArgumentsFactory)
@@ -610,6 +619,7 @@ class QuickFixRegistrar : QuickFixContributor {
NO_CONSTRUCTOR.registerFactory(RemoveNoConstructorFix)
NO_CONSTRUCTOR.registerFactory(AddDefaultConstructorFix)
+ NO_CONSTRUCTOR_WARNING.registerFactory(RemoveNoConstructorFix)
ANNOTATION_USED_AS_ANNOTATION_ARGUMENT.registerFactory(RemoveAtFromAnnotationArgument)
@@ -717,11 +727,13 @@ class QuickFixRegistrar : QuickFixContributor {
OVERRIDE_DEPRECATION.registerFactory(AddAnnotationWithArgumentsFix.CopyDeprecatedAnnotation)
NULLABLE_TYPE_PARAMETER_AGAINST_NOT_NULL_TYPE_PARAMETER.registerFactory(MakeUpperBoundNonNullableFix)
+ WRONG_TYPE_PARAMETER_NULLABILITY_FOR_JAVA_OVERRIDE.registerFactory(MakeUpperBoundNonNullableFix)
WRONG_NULLABILITY_FOR_JAVA_OVERRIDE.registerFactory(MakeUpperBoundNonNullableFix)
TYPE_MISMATCH.registerFactory(MakeUpperBoundNonNullableFix)
TYPE_MISMATCH_WARNING.registerFactory(MakeUpperBoundNonNullableFix)
NOTHING_TO_OVERRIDE.registerFactory(MakeUpperBoundNonNullableFix)
WRONG_NULLABILITY_FOR_JAVA_OVERRIDE.registerFactory(ChangeMemberFunctionSignatureFix)
+ CONFUSING_BRANCH_CONDITION.registerFactory(ConfusingExpressionInWhenBranchFix)
}
}
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/SpecifySuperTypeFix.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/SpecifySuperTypeFix.kt
index 7e6e11517620..edeefabc4be1 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/SpecifySuperTypeFix.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/SpecifySuperTypeFix.kt
@@ -29,7 +29,7 @@ class SpecifySuperTypeFix(
private val superTypes: List<String>
) : KotlinQuickFixAction<KtSuperExpression>(superExpression) {
- override fun getText() = KotlinIdeaCompletionBundle.message("intention.name.specify.supertype")
+ override fun getText() = KotlinBundle.message("intention.name.specify.supertype")
override fun getFamilyName() = text
@@ -49,14 +49,14 @@ class SpecifySuperTypeFix(
}
private fun KtSuperExpression.specifySuperType(superType: String) {
- project.executeWriteCommand(KotlinIdeaCompletionBundle.message("intention.name.specify.supertype")) {
+ project.executeWriteCommand(KotlinBundle.message("intention.name.specify.supertype")) {
val label = this.labelQualifier?.text ?: ""
replace(KtPsiFactory(this).createExpression("super<$superType>$label"))
}
}
private fun createListPopupStep(superExpression: KtSuperExpression, superTypes: List<String>): ListPopupStep<*> {
- return object : BaseListPopupStep<String>(KotlinIdeaCompletionBundle.message("popup.title.choose.supertype"), superTypes) {
+ return object : BaseListPopupStep<String>(KotlinBundle.message("popup.title.choose.supertype"), superTypes) {
override fun isAutoSelectionEnabled() = false
override fun onChosen(selectedValue: String, finalChoice: Boolean): PopupStep<*>? {
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableInfo.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableInfo.kt
index a56401da92aa..dbf8dc528ea9 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableInfo.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/CallableInfo.kt
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.psi.psiUtil.parents
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
import org.jetbrains.kotlin.resolve.scopes.LexicalScope
-import org.jetbrains.kotlin.types.ErrorUtils
+import org.jetbrains.kotlin.types.error.ErrorUtils
import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.types.Variance
import org.jetbrains.kotlin.types.typeUtil.makeNotNullable
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/typeUtils.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/typeUtils.kt
index 1075b875ec6c..9e2cd44e5ba5 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/typeUtils.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/callableBuilder/typeUtils.kt
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.resolveTopLevelClass
import org.jetbrains.kotlin.resolve.scopes.HierarchicalScope
import org.jetbrains.kotlin.resolve.scopes.utils.findClassifier
import org.jetbrains.kotlin.types.*
+import org.jetbrains.kotlin.types.error.ErrorUtils
import org.jetbrains.kotlin.types.checker.KotlinTypeChecker
import org.jetbrains.kotlin.types.typeUtil.makeNotNullable
import org.jetbrains.kotlin.types.typeUtil.supertypes
@@ -65,7 +66,7 @@ private fun KotlinType.renderSingle(typeParameterNameMap: Map<TypeParameterDescr
val defaultType = typeParameter.defaultType
val wrappingType = KotlinTypeFactory.simpleTypeWithNonTrivialMemberScope(
- defaultType.annotations,
+ defaultType.annotations.toDefaultAttributes(),
wrappingTypeConstructor,
defaultType.arguments,
defaultType.isMarkedNullable,
@@ -300,7 +301,7 @@ internal fun KotlinType.substitute(substitution: KotlinTypeSubstitution, varianc
val (projection, typeParameter) = pair
TypeProjectionImpl(Variance.INVARIANT, projection.type.substitute(substitution, typeParameter.variance))
}
- KotlinTypeFactory.simpleTypeWithNonTrivialMemberScope(annotations, constructor, newArguments, isMarkedNullable, memberScope)
+ KotlinTypeFactory.simpleTypeWithNonTrivialMemberScope(annotations.toDefaultAttributes(), constructor, newArguments, isMarkedNullable, memberScope)
}
}
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateIteratorFunctionActionFactory.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateIteratorFunctionActionFactory.kt
index f448579592fa..696f72d3ebfd 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateIteratorFunctionActionFactory.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateIteratorFunctionActionFactory.kt
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.psi.KtPsiFactory
import org.jetbrains.kotlin.types.KotlinTypeFactory
import org.jetbrains.kotlin.types.TypeProjectionImpl
import org.jetbrains.kotlin.types.Variance
+import org.jetbrains.kotlin.types.toDefaultAttributes
import org.jetbrains.kotlin.util.OperatorNameConventions
import java.util.*
@@ -40,7 +41,7 @@ object CreateIteratorFunctionActionFactory : CreateCallableMemberFromUsageFactor
val returnJetTypeParameterType = TypeProjectionImpl(returnJetTypeParameterTypes[0])
val returnJetTypeArguments = Collections.singletonList(returnJetTypeParameterType)
val newReturnJetType = KotlinTypeFactory.simpleTypeWithNonTrivialMemberScope(
- returnJetType.annotations,
+ returnJetType.annotations.toDefaultAttributes(),
returnJetType.constructor,
returnJetTypeArguments,
returnJetType.isMarkedNullable,
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateSetFunctionActionFactory.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateSetFunctionActionFactory.kt
index c7436ab4321b..cebc2923c65b 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateSetFunctionActionFactory.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createCallable/CreateSetFunctionActionFactory.kt
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.resolve.calls.util.getType
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
-import org.jetbrains.kotlin.types.ErrorUtils
+import org.jetbrains.kotlin.types.error.ErrorUtils
import org.jetbrains.kotlin.types.Variance
import org.jetbrains.kotlin.types.expressions.OperatorConventions
import org.jetbrains.kotlin.util.OperatorNameConventions
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/changeSignatureUtils.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/changeSignatureUtils.kt
index a04dae8c1ca8..3efc3b08ca6f 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/changeSignatureUtils.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/changeSignatureUtils.kt
@@ -98,7 +98,7 @@ private object ForceTypeCopySubstitution : TypeSubstitution() {
}
private fun KotlinType.copyAsSimpleType(): SimpleType = KotlinTypeFactory.simpleTypeWithNonTrivialMemberScope(
- annotations,
+ annotations.toDefaultAttributes(),
constructor,
arguments,
isMarkedNullable,
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractableAnalysisUtil.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractableAnalysisUtil.kt
index 7bbb5721a83f..863745df76c8 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractableAnalysisUtil.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/extractionEngine/extractableAnalysisUtil.kt
@@ -56,6 +56,7 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
import org.jetbrains.kotlin.resolve.descriptorUtil.getImportableDescriptor
import org.jetbrains.kotlin.resolve.scopes.LexicalScope
import org.jetbrains.kotlin.types.*
+import org.jetbrains.kotlin.types.error.ErrorUtils
import org.jetbrains.kotlin.types.typeUtil.makeNullable
import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeAsciiOnly
import org.jetbrains.kotlin.utils.DFS.*
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt
index 0b52072c65f7..ed8523d92df3 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt
@@ -51,6 +51,7 @@ import org.jetbrains.annotations.Nls
import org.jetbrains.kotlin.asJava.LightClassUtil
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
import org.jetbrains.kotlin.asJava.getAccessorLightMethods
+import org.jetbrains.kotlin.asJava.isSyntheticValuesOrValueOfMethod
import org.jetbrains.kotlin.asJava.namedUnwrappedElement
import org.jetbrains.kotlin.asJava.toLightClass
import org.jetbrains.kotlin.descriptors.*
@@ -664,6 +665,8 @@ fun createJavaClass(klass: KtClass, targetClass: PsiClass?, forcePlainClass: Boo
}
for (method in template.methods) {
+ if (isSyntheticValuesOrValueOfMethod(method)) continue
+
val hasParams = method.parameterList.parametersCount > 0
val needSuperCall = !template.isEnum &&
(template.superClass?.constructors ?: PsiMethod.EMPTY_ARRAY).all {
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/renameConflictUtils.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/renameConflictUtils.kt
index a5e65ccc7cbf..916371b7fa26 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/renameConflictUtils.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/renameConflictUtils.kt
@@ -58,7 +58,7 @@ import org.jetbrains.kotlin.resolve.scopes.getDescriptorsFiltered
import org.jetbrains.kotlin.resolve.scopes.utils.findClassifier
import org.jetbrains.kotlin.resolve.scopes.utils.getImplicitReceiversHierarchy
import org.jetbrains.kotlin.resolve.source.getPsi
-import org.jetbrains.kotlin.types.ErrorUtils
+import org.jetbrains.kotlin.types.error.ErrorUtils
import org.jetbrains.kotlin.utils.SmartList
import org.jetbrains.kotlin.utils.addIfNotNull
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/search/KotlinSearchUsagesSupportImpl.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/search/KotlinSearchUsagesSupportImpl.kt
index 94afe8ea7771..e8559374a53d 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/search/KotlinSearchUsagesSupportImpl.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/search/KotlinSearchUsagesSupportImpl.kt
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.idea.caches.resolve.util.hasJavaResolutionFacade
import org.jetbrains.kotlin.idea.core.isInheritable
import org.jetbrains.kotlin.idea.core.isOverridable
import org.jetbrains.kotlin.idea.search.declarationsSearch.forEachOverridingMethod
-import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions
import org.jetbrains.kotlin.idea.search.usagesSearch.*
import org.jetbrains.kotlin.idea.stubindex.KotlinTypeAliasShortNameIndex
import org.jetbrains.kotlin.idea.util.ProjectRootsUtil
@@ -34,12 +33,6 @@ class KotlinSearchUsagesSupportImpl : KotlinSearchUsagesSupport {
override fun isSamInterface(psiClass: PsiClass): Boolean =
org.jetbrains.kotlin.idea.search.usagesSearch.isSamInterface(psiClass)
- override fun <T : PsiNamedElement> filterDataClassComponentsIfDisabled(
- elements: List<T>,
- kotlinOptions: KotlinReferencesSearchOptions
- ): List<T> =
- elements.filterDataClassComponentsIfDisabled(kotlinOptions)
-
override fun isCallableOverrideUsage(reference: PsiReference, declaration: KtNamedDeclaration): Boolean =
reference.isCallableOverrideUsage(declaration)
@@ -117,4 +110,4 @@ class KotlinSearchUsagesSupportImpl : KotlinSearchUsagesSupport {
override fun createConstructorHandle(psiMethod: PsiMethod): KotlinSearchUsagesSupport.ConstructorCallHandle =
JavaConstructorCallLazyDescriptorHandle(psiMethod)
-} \ No newline at end of file
+}
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/FE10KotlinTargetElementEvaluator.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/FE10KotlinTargetElementEvaluator.kt
new file mode 100644
index 000000000000..809cc451cc07
--- /dev/null
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/FE10KotlinTargetElementEvaluator.kt
@@ -0,0 +1,51 @@
+/*
+ * 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.idea.search.ideaExtensions
+
+import com.intellij.psi.PsiElement
+import com.intellij.psi.PsiReference
+import org.jetbrains.kotlin.descriptors.CallableDescriptor
+import org.jetbrains.kotlin.descriptors.DeclarationDescriptorWithSource
+import org.jetbrains.kotlin.idea.refactoring.rename.RenameKotlinImplicitLambdaParameter.Companion.isAutoCreatedItUsage
+import org.jetbrains.kotlin.idea.references.resolveMainReferenceToDescriptors
+import org.jetbrains.kotlin.psi.KtCallableDeclaration
+import org.jetbrains.kotlin.psi.KtLambdaExpression
+import org.jetbrains.kotlin.psi.KtNameReferenceExpression
+import org.jetbrains.kotlin.resolve.descriptorUtil.isExtension
+import org.jetbrains.kotlin.resolve.source.getPsi
+
+class FE10KotlinTargetElementEvaluator : KotlinTargetElementEvaluator() {
+ companion object {
+ fun findLambdaOpenLBraceForGeneratedIt(ref: PsiReference): PsiElement? {
+ val element: PsiElement = ref.element
+ if (element.text != "it") return null
+
+ if (element !is KtNameReferenceExpression || !isAutoCreatedItUsage(element)) return null
+
+ val itDescriptor = element.resolveMainReferenceToDescriptors().singleOrNull() ?: return null
+ val descriptorWithSource = itDescriptor.containingDeclaration as? DeclarationDescriptorWithSource ?: return null
+ val lambdaExpression = descriptorWithSource.source.getPsi()?.parent as? KtLambdaExpression ?: return null
+ return lambdaExpression.leftCurlyBrace.treeNext?.psi
+ }
+ }
+
+ override fun findLambdaOpenLBraceForGeneratedIt(ref: PsiReference): PsiElement? =
+ Companion.findLambdaOpenLBraceForGeneratedIt(ref)
+
+ override fun findReceiverForThisInExtensionFunction(ref: PsiReference): PsiElement? {
+ val element: PsiElement = ref.element
+ if (element.text != "this") return null
+
+ if (element !is KtNameReferenceExpression) return null
+ val callableDescriptor = element.resolveMainReferenceToDescriptors().singleOrNull() as? CallableDescriptor ?: return null
+
+ if (!callableDescriptor.isExtension) return null
+ val callableDeclaration = callableDescriptor.source.getPsi() as? KtCallableDeclaration ?: return null
+
+ return callableDeclaration.receiverTypeReference
+ }
+
+
+} \ No newline at end of file
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinTargetElementEvaluator.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinTargetElementEvaluator.kt
deleted file mode 100644
index f368899b617c..000000000000
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/search/ideaExtensions/KotlinTargetElementEvaluator.kt
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright 2000-2021 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
-
-package org.jetbrains.kotlin.idea.search.ideaExtensions
-
-import com.intellij.codeInsight.JavaTargetElementEvaluator
-import com.intellij.codeInsight.TargetElementEvaluatorEx
-import com.intellij.codeInsight.TargetElementUtil
-import com.intellij.codeInsight.TargetElementUtilExtender
-import com.intellij.psi.PsiElement
-import com.intellij.psi.PsiFile
-import com.intellij.psi.PsiReference
-import com.intellij.util.BitUtil
-import org.jetbrains.kotlin.descriptors.CallableDescriptor
-import org.jetbrains.kotlin.descriptors.DeclarationDescriptorWithSource
-import org.jetbrains.kotlin.idea.refactoring.rename.RenameKotlinImplicitLambdaParameter.Companion.isAutoCreatedItUsage
-import org.jetbrains.kotlin.idea.references.KtDestructuringDeclarationReference
-import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
-import org.jetbrains.kotlin.idea.references.mainReference
-import org.jetbrains.kotlin.idea.references.resolveMainReferenceToDescriptors
-import org.jetbrains.kotlin.lexer.KtTokens
-import org.jetbrains.kotlin.psi.*
-import org.jetbrains.kotlin.psi.psiUtil.*
-import org.jetbrains.kotlin.resolve.descriptorUtil.isExtension
-import org.jetbrains.kotlin.resolve.source.getPsi
-
-class KotlinTargetElementEvaluator : TargetElementEvaluatorEx, TargetElementUtilExtender {
- companion object {
- const val DO_NOT_UNWRAP_LABELED_EXPRESSION = 0x100
- const val BYPASS_IMPORT_ALIAS = 0x200
-
- // Place caret after the open curly brace in lambda for generated 'it'
- fun findLambdaOpenLBraceForGeneratedIt(ref: PsiReference): PsiElement? {
- val element: PsiElement = ref.element
- if (element.text != "it") return null
-
- if (element !is KtNameReferenceExpression || !isAutoCreatedItUsage(element)) return null
-
- val itDescriptor = element.resolveMainReferenceToDescriptors().singleOrNull() ?: return null
- val descriptorWithSource = itDescriptor.containingDeclaration as? DeclarationDescriptorWithSource ?: return null
- val lambdaExpression = descriptorWithSource.source.getPsi()?.parent as? KtLambdaExpression ?: return null
- return lambdaExpression.leftCurlyBrace.treeNext?.psi
- }
-
- // Navigate to receiver element for this in extension declaration
- fun findReceiverForThisInExtensionFunction(ref: PsiReference): PsiElement? {
- val element: PsiElement = ref.element
- if (element.text != "this") return null
-
- if (element !is KtNameReferenceExpression) return null
- val callableDescriptor = element.resolveMainReferenceToDescriptors().singleOrNull() as? CallableDescriptor ?: return null
-
- if (!callableDescriptor.isExtension) return null
- val callableDeclaration = callableDescriptor.source.getPsi() as? KtCallableDeclaration ?: return null
-
- return callableDeclaration.receiverTypeReference
- }
- }
-
- override fun getAdditionalDefinitionSearchFlags() = 0
-
- override fun getAdditionalReferenceSearchFlags() = DO_NOT_UNWRAP_LABELED_EXPRESSION or BYPASS_IMPORT_ALIAS
-
- override fun getAllAdditionalFlags() = additionalDefinitionSearchFlags + additionalReferenceSearchFlags
-
- override fun includeSelfInGotoImplementation(element: PsiElement): Boolean = !(element is KtClass && element.isAbstract())
-
- override fun getElementByReference(ref: PsiReference, flags: Int): PsiElement? {
- if (ref is KtSimpleNameReference && ref.expression is KtLabelReferenceExpression) {
- val refTarget = ref.resolve() as? KtExpression ?: return null
- if (!BitUtil.isSet(flags, DO_NOT_UNWRAP_LABELED_EXPRESSION)) {
- return refTarget.getLabeledParent(ref.expression.getReferencedName()) ?: refTarget
- }
- return refTarget
- }
-
- if (!BitUtil.isSet(flags, BYPASS_IMPORT_ALIAS)) {
- (ref.element as? KtSimpleNameExpression)?.mainReference?.getImportAlias()?.let { return it }
- }
-
- // prefer destructing declaration entry to its target if element name is accepted
- if (ref is KtDestructuringDeclarationReference && BitUtil.isSet(flags, TargetElementUtil.ELEMENT_NAME_ACCEPTED)) {
- return ref.element
- }
-
- val refExpression = ref.element as? KtSimpleNameExpression
- val calleeExpression = refExpression?.getParentOfTypeAndBranch<KtCallElement> { calleeExpression }
- if (calleeExpression != null) {
- (ref.resolve() as? KtConstructor<*>)?.let {
- return if (flags and JavaTargetElementEvaluator().additionalReferenceSearchFlags != 0) it else it.containingClassOrObject
- }
- }
-
- if (BitUtil.isSet(flags, TargetElementUtil.REFERENCED_ELEMENT_ACCEPTED)) {
- return findLambdaOpenLBraceForGeneratedIt(ref)
- ?: findReceiverForThisInExtensionFunction(ref)
- }
-
- return null
- }
-
- override fun isIdentifierPart(file: PsiFile, text: CharSequence, offset: Int): Boolean {
- val elementAtCaret = file.findElementAt(offset)
-
- if (elementAtCaret?.node?.elementType == KtTokens.IDENTIFIER) return true
- // '(' is considered identifier part if it belongs to primary constructor without 'constructor' keyword
- return elementAtCaret?.getNonStrictParentOfType<KtPrimaryConstructor>()?.textOffset == offset
- }
-}
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/search/usagesSearch/utils.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/search/usagesSearch/utils.kt
index 13319e85efe1..421ff73a5114 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/search/usagesSearch/utils.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/search/usagesSearch/utils.kt
@@ -5,7 +5,6 @@ package org.jetbrains.kotlin.idea.search.usagesSearch
import com.intellij.openapi.project.Project
import com.intellij.psi.*
import com.intellij.psi.util.MethodSignatureUtil
-import org.jetbrains.kotlin.asJava.classes.KtLightClass
import org.jetbrains.kotlin.asJava.classes.lazyPub
import org.jetbrains.kotlin.asJava.toLightClass
import org.jetbrains.kotlin.asJava.toLightMethods
@@ -26,13 +25,11 @@ import org.jetbrains.kotlin.idea.project.findAnalyzerServices
import org.jetbrains.kotlin.idea.references.unwrappedTargets
import org.jetbrains.kotlin.idea.search.KotlinSearchUsagesSupport
import org.jetbrains.kotlin.idea.search.ReceiverTypeSearcherInfo
-import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinReferencesSearchOptions
import org.jetbrains.kotlin.idea.util.FuzzyType
import org.jetbrains.kotlin.idea.util.application.runReadAction
import org.jetbrains.kotlin.idea.util.fuzzyExtensionReceiverType
import org.jetbrains.kotlin.idea.util.toFuzzyType
import org.jetbrains.kotlin.load.java.descriptors.JavaClassDescriptor
-import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.getNonStrictParentOfType
import org.jetbrains.kotlin.renderer.DescriptorRenderer
@@ -129,22 +126,13 @@ fun PsiReference.checkUsageVsOriginalDescriptor(
}
}
-fun PsiReference.isConstructorUsage(ktClassOrObject: KtClassOrObject): Boolean = with(element) {
- fun checkJavaUsage(): Boolean {
- val call = getNonStrictParentOfType<PsiConstructorCall>()
- return call == parent && call?.resolveConstructor()?.containingClass?.navigationElement == ktClassOrObject
- }
-
- fun checkKotlinUsage(): Boolean {
- if (this !is KtElement) return false
+fun PsiReference.isKotlinConstructorUsage(ktClassOrObject: KtClassOrObject): Boolean = with(element) {
+ if (this !is KtElement) return false
- val descriptor = getConstructorCallDescriptor() as? ConstructorDescriptor ?: return false
-
- val declaration = DescriptorToSourceUtils.descriptorToDeclaration(descriptor.containingDeclaration)
- return declaration == ktClassOrObject || (declaration is KtConstructor<*> && declaration.getContainingClassOrObject() == ktClassOrObject)
- }
+ val descriptor = getConstructorCallDescriptor() as? ConstructorDescriptor ?: return false
- checkJavaUsage() || checkKotlinUsage()
+ val declaration = DescriptorToSourceUtils.descriptorToDeclaration(descriptor.containingDeclaration)
+ return declaration == ktClassOrObject || (declaration is KtConstructor<*> && declaration.getContainingClassOrObject() == ktClassOrObject)
}
private fun KtElement.getConstructorCallDescriptor(): DeclarationDescriptor? {
@@ -228,26 +216,6 @@ fun PsiReference.isCallableOverrideUsage(declaration: KtNamedDeclaration): Boole
}
}
-fun <T : PsiNamedElement> List<T>.filterDataClassComponentsIfDisabled(kotlinOptions: KotlinReferencesSearchOptions): List<T> {
- if (kotlinOptions.searchForComponentConventions) return this
-
- fun PsiNamedElement.isComponentElement(): Boolean {
-
- if (this !is PsiMethod) return false
-
- val dataClassParent = ((parent as? KtLightClass)?.kotlinOrigin as? KtClass)?.isData() == true
- if (!dataClassParent) return false
-
- if (!Name.isValidIdentifier(name)) return false
- val nameIdentifier = Name.identifier(name)
- if (!DataClassDescriptorResolver.isComponentLike(nameIdentifier)) return false
-
- return true
- }
-
- return filter { !it.isComponentElement() }
-}
-
fun KtFile.forceResolveReferences(elements: List<KtElement>) {
getResolutionFacade().analyze(elements, BodyResolveMode.PARTIAL)
}
@@ -314,4 +282,4 @@ fun KtFile.getDefaultImports(): List<ImportPath> {
)
}
-fun PsiFile.scriptDefinitionExists(): Boolean = findScriptDefinition() != null \ No newline at end of file
+fun PsiFile.scriptDefinitionExists(): Boolean = findScriptDefinition() != null
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/slicer/InflowSlicer.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/slicer/InflowSlicer.kt
index c4e0f9fbba3f..285d3933b32b 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/slicer/InflowSlicer.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/slicer/InflowSlicer.kt
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.idea.refactoring.changeSignature.toValVar
import org.jetbrains.kotlin.idea.references.KtPropertyDelegationMethodsReference
import org.jetbrains.kotlin.idea.references.mainReference
import org.jetbrains.kotlin.idea.references.readWriteAccessWithFullExpression
-import org.jetbrains.kotlin.idea.search.ideaExtensions.KotlinTargetElementEvaluator
+import org.jetbrains.kotlin.idea.search.ideaExtensions.FE10KotlinTargetElementEvaluator
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.collectDescendantsOfType
@@ -380,7 +380,7 @@ class InflowSlicer(
private fun KtFunctionLiteral.implicitItUsages(): Collection<KtSimpleNameExpression> {
return collectDescendantsOfType(fun(expression: KtSimpleNameExpression): Boolean {
if (expression.getQualifiedExpressionForSelector() != null || expression.getReferencedName() != "it") return false
- val lBrace = KotlinTargetElementEvaluator.findLambdaOpenLBraceForGeneratedIt(expression.mainReference) ?: return false
+ val lBrace = FE10KotlinTargetElementEvaluator.findLambdaOpenLBraceForGeneratedIt(expression.mainReference) ?: return false
return lBrace == this.lBrace.node.treeNext.psi
})
}
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/structuralsearch/KotlinStructuralSearchUtil.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/structuralsearch/KotlinStructuralSearchUtil.kt
index 8d4c386fdbc2..7c1166377c24 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/structuralsearch/KotlinStructuralSearchUtil.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/structuralsearch/KotlinStructuralSearchUtil.kt
@@ -18,6 +18,7 @@ import org.jetbrains.kotlin.psi.KtDeclaration
import org.jetbrains.kotlin.renderer.DescriptorRenderer
import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.types.KotlinTypeFactory
+import org.jetbrains.kotlin.types.TypeAttributes
import org.jetbrains.kotlin.types.expressions.OperatorConventions
fun getCommentText(comment: PsiComment): String {
@@ -56,4 +57,4 @@ fun KtDeclaration.resolveKotlinType(): KotlinType? =
(resolveToDescriptorIfAny() as? CallableDescriptor)?.returnType
fun ClassDescriptor.toSimpleType(nullable: Boolean = false) =
- KotlinTypeFactory.simpleType(Annotations.EMPTY, this.typeConstructor, emptyList(), nullable) \ No newline at end of file
+ KotlinTypeFactory.simpleType(TypeAttributes.Empty, this.typeConstructor, emptyList(), nullable)
diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/structuralsearch/visitor/KotlinMatchingVisitor.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/structuralsearch/visitor/KotlinMatchingVisitor.kt
index 583fc5041181..913c1a29542f 100644
--- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/structuralsearch/visitor/KotlinMatchingVisitor.kt
+++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/structuralsearch/visitor/KotlinMatchingVisitor.kt
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.descriptors.impl.AnonymousFunctionDescriptor
import org.jetbrains.kotlin.descriptors.impl.PropertyDescriptorImpl
import org.jetbrains.kotlin.idea.KotlinBundle
import org.jetbrains.kotlin.idea.caches.resolve.resolveToCall
+import org.jetbrains.kotlin.idea.caches.resolve.safeAnalyzeNonSourceRootCode
import org.jetbrains.kotlin.idea.core.resolveType
import org.jetbrains.kotlin.idea.intentions.callExpression
import org.jetbrains.kotlin.idea.intentions.calleeName
@@ -32,7 +33,6 @@ import org.jetbrains.kotlin.idea.search.declarationsSearch.HierarchySearchReques
import org.jetbrains.kotlin.idea.search.declarationsSearch.searchInheritors
import org.jetbrains.kotlin.idea.search.usagesSearch.descriptor
import org.jetbrains.kotlin.idea.structuralsearch.*
-import org.jetbrains.kotlin.idea.util.safeAnalyzeNonSourceRootCode
import org.jetbrains.kotlin.kdoc.lexer.KDocTokens
import org.jetbrains.kotlin.kdoc.psi.api.KDoc
import org.jetbrains.kotlin.kdoc.psi.impl.KDocImpl