Minor. Extract KtElement::isMainFunction in the IDE context
This commit is contained in:
@@ -20,10 +20,8 @@ import com.intellij.execution.lineMarker.ExecutorAction
|
||||
import com.intellij.execution.lineMarker.RunLineMarkerContributor
|
||||
import com.intellij.icons.AllIcons
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.idea.MainFunctionDetector
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||
import org.jetbrains.kotlin.idea.isMainFunction
|
||||
import org.jetbrains.kotlin.idea.platform.tooling
|
||||
import org.jetbrains.kotlin.idea.project.languageVersionSettings
|
||||
import org.jetbrains.kotlin.idea.project.platform
|
||||
import org.jetbrains.kotlin.idea.util.module
|
||||
import org.jetbrains.kotlin.psi.KtNamedFunction
|
||||
@@ -34,11 +32,7 @@ class KotlinRunLineMarkerContributor : RunLineMarkerContributor() {
|
||||
|
||||
if (function.nameIdentifier != element) return null
|
||||
|
||||
val detector = MainFunctionDetector(function.languageVersionSettings) { someFunction ->
|
||||
someFunction.resolveToDescriptorIfAny()
|
||||
}
|
||||
|
||||
if (detector.isMain(function)) {
|
||||
if (function.isMainFunction()) {
|
||||
val platform = function.containingKtFile.module?.platform ?: return null
|
||||
if (!platform.kind.tooling.acceptsAsEntryPoint(function)) return null
|
||||
|
||||
|
||||
@@ -25,11 +25,10 @@ import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor
|
||||
import org.jetbrains.kotlin.idea.KotlinBundle
|
||||
import org.jetbrains.kotlin.idea.MainFunctionDetector
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.analyzeWithContent
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||
import org.jetbrains.kotlin.idea.core.isOverridable
|
||||
import org.jetbrains.kotlin.idea.project.languageVersionSettings
|
||||
import org.jetbrains.kotlin.idea.isMainFunction
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.KotlinChangeSignatureConfiguration
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.KotlinMethodDescriptor
|
||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.modify
|
||||
@@ -78,9 +77,7 @@ class UnusedReceiverParameterInspection : AbstractKotlinInspection() {
|
||||
|
||||
val callable = callableDeclaration.descriptor ?: return
|
||||
|
||||
val mainFunctionDetector =
|
||||
MainFunctionDetector(callableDeclaration.languageVersionSettings) { it.resolveToDescriptorIfAny() }
|
||||
if (mainFunctionDetector.isMain(callable)) return
|
||||
if (callableDeclaration.isMainFunction(callable)) return
|
||||
|
||||
val containingDeclaration = callable.containingDeclaration
|
||||
if (containingDeclaration != null && containingDeclaration == receiverTypeDeclaration) {
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||
* that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.idea
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||
import org.jetbrains.kotlin.idea.project.languageVersionSettings
|
||||
import org.jetbrains.kotlin.psi.KtElement
|
||||
import org.jetbrains.kotlin.psi.KtNamedFunction
|
||||
|
||||
fun KtElement.isMainFunction(computedDescriptor: DeclarationDescriptor? = null): Boolean {
|
||||
if (this !is KtNamedFunction) return false
|
||||
val mainFunctionDetector = MainFunctionDetector(languageVersionSettings) { it.resolveToDescriptorIfAny() }
|
||||
|
||||
if (computedDescriptor != null) return mainFunctionDetector.isMain(computedDescriptor)
|
||||
|
||||
return mainFunctionDetector.isMain(this)
|
||||
}
|
||||
Reference in New Issue
Block a user