From c64577b7350250702281eb3b251f6a2ff0dd385b Mon Sep 17 00:00:00 2001 From: Mikhail Zarechenskiy Date: Thu, 6 Feb 2020 10:06:59 +0300 Subject: [PATCH] Temporary fixes for Kotlin project after enabling NI Most of these fixes will gone away after compiler bootstraping --- .../jetbrains/kotlin/idea/caches/project/getModuleInfo.kt | 2 +- .../idea/search/usagesSearch/ExpressionsOfTypeProcessor.kt | 2 +- .../kotlin/idea/editor/KotlinLiteralCopyPasteProcessor.kt | 4 ++-- .../kotlin/idea/inspections/UnusedSymbolInspection.kt | 5 +++-- .../idea/intentions/ImplementAbstractMemberIntention.kt | 4 ++-- .../createFromUsage/createClass/CreateClassFromUsageFix.kt | 2 +- .../idea/refactoring/copy/CopyKotlinDeclarationsHandler.kt | 2 +- .../idea/refactoring/safeDelete/KotlinSafeDeleteProcessor.kt | 2 +- .../scripting/definitions/AutoloadedScriptDefinitions.kt | 2 +- .../ScriptiDefinitionsFromClasspathDiscoverySource.kt | 4 ++-- 10 files changed, 15 insertions(+), 14 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/getModuleInfo.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/getModuleInfo.kt index 66ddca08ad2..8bd375780a4 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/getModuleInfo.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/getModuleInfo.kt @@ -315,7 +315,7 @@ private fun OrderEntry.toIdeaModuleInfo( /** * @see [org.jetbrains.kotlin.types.typeUtil.closure]. */ -fun Collection.lazyClosure(f: (T) -> Collection): Sequence = sequence { +fun Collection.lazyClosure(f: (T) -> Collection): Sequence = sequence { if (size == 0) return@sequence var sizeBeforeIteration = 0 diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/usagesSearch/ExpressionsOfTypeProcessor.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/usagesSearch/ExpressionsOfTypeProcessor.kt index d8b3e3580be..27c4d57fcfc 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/usagesSearch/ExpressionsOfTypeProcessor.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/usagesSearch/ExpressionsOfTypeProcessor.kt @@ -308,7 +308,7 @@ class ExpressionsOfTypeProcessor( } val file = psiClass.containingFile - (file ?: psiClass).useScope + if (file != null) file.useScope else psiClass.useScope } private fun addStaticMemberToProcess(psiMember: PsiMember, scope: SearchScope, processor: ReferenceProcessor) { diff --git a/idea/src/org/jetbrains/kotlin/idea/editor/KotlinLiteralCopyPasteProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/editor/KotlinLiteralCopyPasteProcessor.kt index 64017b28e4c..c795c54ba8b 100644 --- a/idea/src/org/jetbrains/kotlin/idea/editor/KotlinLiteralCopyPasteProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/editor/KotlinLiteralCopyPasteProcessor.kt @@ -243,8 +243,8 @@ private class TemplateTokenSequence(private val inputString: String) : Sequence< while (to < inputString.length) { val c = inputString[to] if (c == '\\') { - to += 1 - if (to < inputString.length) to += 1 + to += 1.toInt() + if (to < inputString.length) to += 1.toInt() continue } else if (c == '$') { if (inputString.substring(to).guessIsTemplateEntryStart()) { diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedSymbolInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedSymbolInspection.kt index 40ce64940e3..4860767d317 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedSymbolInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedSymbolInspection.kt @@ -32,6 +32,7 @@ import com.intellij.psi.search.searches.DefinitionsScopedSearch import com.intellij.psi.search.searches.MethodReferencesSearch import com.intellij.psi.search.searches.ReferencesSearch import com.intellij.refactoring.safeDelete.SafeDeleteHandler +import com.intellij.util.Processor import org.jetbrains.kotlin.asJava.LightClassUtil import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.asJava.toLightClass @@ -376,7 +377,7 @@ class UnusedSymbolInspection : AbstractKotlinInspection() { useScope, kotlinOptions = searchOptions ) - val referenceUsed: Boolean by lazy { !ReferencesSearch.search(searchParameters).forEach(::checkReference) } + val referenceUsed: Boolean by lazy { !ReferencesSearch.search(searchParameters).forEach(Processor { checkReference(it) }) } if (descriptor is FunctionDescriptor && DescriptorUtils.findJvmNameAnnotation(descriptor) != null) { if (referenceUsed) return true @@ -386,7 +387,7 @@ class UnusedSymbolInspection : AbstractKotlinInspection() { val lightMethods = declaration.toLightMethods() if (lightMethods.isNotEmpty()) { val lightMethodsUsed = lightMethods.any { method -> - !MethodReferencesSearch.search(method).forEach(::checkReference) + !MethodReferencesSearch.search(method).forEach(Processor { checkReference(it) }) } if (lightMethodsUsed) return true if (!declaration.hasActualModifier()) return false diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ImplementAbstractMemberIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ImplementAbstractMemberIntention.kt index 6e37206ccaf..3d52f067de8 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ImplementAbstractMemberIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ImplementAbstractMemberIntention.kt @@ -129,9 +129,9 @@ abstract class ImplementAbstractMemberIntentionBase : private fun implementInClass(member: KtNamedDeclaration, targetClasses: List) { val project = member.project - project.executeCommand(CodeInsightBundle.message("intention.implement.abstract.method.command.name")) { + project.executeCommand(CodeInsightBundle.message("intention.implement.abstract.method.command.name")) { if (!FileModificationService.getInstance().preparePsiElementsForWrite(targetClasses)) return@executeCommand - runWriteAction { + runWriteAction { for (targetClass in targetClasses) { try { val descriptor = OpenFileDescriptor(project, targetClass.containingFile.virtualFile) diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createClass/CreateClassFromUsageFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createClass/CreateClassFromUsageFix.kt index 4164cba66f0..d47e85108ea 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createClass/CreateClassFromUsageFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createClass/CreateClassFromUsageFix.kt @@ -202,7 +202,7 @@ open class CreateClassFromUsageFix protected constructor( val element = element ?: return - runWriteAction { + runWriteAction { with(classInfo) { val targetParent = when (selectedParent) { diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/copy/CopyKotlinDeclarationsHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/copy/CopyKotlinDeclarationsHandler.kt index 81dba8a6201..47b2fa18ef2 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/copy/CopyKotlinDeclarationsHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/copy/CopyKotlinDeclarationsHandler.kt @@ -381,7 +381,7 @@ class CopyKotlinDeclarationsHandler : CopyHandlerDelegateBase() { doRefactoringOnElement(sourceData, targetFile) } - refactoringResult.copiedDeclaration?.let { newDeclaration -> + refactoringResult.copiedDeclaration?.let { newDeclaration -> if (targetData.newName == newDeclaration.name) return@let val selfReferences = ReferencesSearch.search(newDeclaration, LocalSearchScope(newDeclaration)).findAll() runWriteAction { diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinSafeDeleteProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinSafeDeleteProcessor.kt index 7b944cfa4a3..39980f16d05 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinSafeDeleteProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinSafeDeleteProcessor.kt @@ -250,7 +250,7 @@ class KotlinSafeDeleteProcessor : JavaSafeDeleteProcessor() { else -> return } for (constructor in constructors) { - constructor.processDelegationCallConstructorUsages(constructor.useScope) { + constructor.processDelegationCallConstructorUsages((constructor as PsiElement).useScope) { if (!getIgnoranceCondition().value(it)) { usages.add(SafeDeleteReferenceSimpleDeleteUsageInfo(it, element, false)) } diff --git a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/AutoloadedScriptDefinitions.kt b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/AutoloadedScriptDefinitions.kt index fa447565d4d..2dad3690724 100644 --- a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/AutoloadedScriptDefinitions.kt +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/AutoloadedScriptDefinitions.kt @@ -31,7 +31,7 @@ class AutoloadedScriptDefinitions( loadScriptTemplatesFromClasspath( listOf("org.jetbrains.kotlin.mainKts.MainKtsScript"), mainKtsJars, - emptyList(), + emptyList(), baseClassloader, hostConfiguration, messageReporter diff --git a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/ScriptiDefinitionsFromClasspathDiscoverySource.kt b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/ScriptiDefinitionsFromClasspathDiscoverySource.kt index 12ff6496230..72aa9e18f42 100644 --- a/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/ScriptiDefinitionsFromClasspathDiscoverySource.kt +++ b/plugins/scripting/scripting-compiler-impl/src/org/jetbrains/kotlin/scripting/definitions/ScriptiDefinitionsFromClasspathDiscoverySource.kt @@ -72,7 +72,7 @@ private fun scriptTemplatesDiscoverySequence( hostConfiguration: ScriptingHostConfiguration, messageReporter: MessageReporter ): Sequence { - return sequence { + return sequence { // for jar files the definition class is expected in the same jar as the discovery file // in case of directories, the class output may come separate from the resources, so some candidates should be deffered and processed later val defferedDirDependencies = ArrayList() @@ -165,7 +165,7 @@ fun loadScriptTemplatesFromClasspath( messageReporter: MessageReporter ): Sequence = if (scriptTemplates.isEmpty()) emptySequence() - else sequence { + else sequence { // trying the direct classloading from baseClassloader first, since this is the most performant variant val (initialLoadedDefinitions, initialNotFoundTemplates) = scriptTemplates.partitionMapNotNull { loadScriptDefinition(