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.execution.lineMarker.RunLineMarkerContributor
|
||||||
import com.intellij.icons.AllIcons
|
import com.intellij.icons.AllIcons
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.idea.MainFunctionDetector
|
import org.jetbrains.kotlin.idea.isMainFunction
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
|
||||||
import org.jetbrains.kotlin.idea.platform.tooling
|
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.project.platform
|
||||||
import org.jetbrains.kotlin.idea.util.module
|
import org.jetbrains.kotlin.idea.util.module
|
||||||
import org.jetbrains.kotlin.psi.KtNamedFunction
|
import org.jetbrains.kotlin.psi.KtNamedFunction
|
||||||
@@ -34,11 +32,7 @@ class KotlinRunLineMarkerContributor : RunLineMarkerContributor() {
|
|||||||
|
|
||||||
if (function.nameIdentifier != element) return null
|
if (function.nameIdentifier != element) return null
|
||||||
|
|
||||||
val detector = MainFunctionDetector(function.languageVersionSettings) { someFunction ->
|
if (function.isMainFunction()) {
|
||||||
someFunction.resolveToDescriptorIfAny()
|
|
||||||
}
|
|
||||||
|
|
||||||
if (detector.isMain(function)) {
|
|
||||||
val platform = function.containingKtFile.module?.platform ?: return null
|
val platform = function.containingKtFile.module?.platform ?: return null
|
||||||
if (!platform.kind.tooling.acceptsAsEntryPoint(function)) 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.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor
|
import org.jetbrains.kotlin.descriptors.ReceiverParameterDescriptor
|
||||||
import org.jetbrains.kotlin.idea.KotlinBundle
|
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.analyzeWithContent
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||||
import org.jetbrains.kotlin.idea.core.isOverridable
|
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.KotlinChangeSignatureConfiguration
|
||||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.KotlinMethodDescriptor
|
import org.jetbrains.kotlin.idea.refactoring.changeSignature.KotlinMethodDescriptor
|
||||||
import org.jetbrains.kotlin.idea.refactoring.changeSignature.modify
|
import org.jetbrains.kotlin.idea.refactoring.changeSignature.modify
|
||||||
@@ -78,9 +77,7 @@ class UnusedReceiverParameterInspection : AbstractKotlinInspection() {
|
|||||||
|
|
||||||
val callable = callableDeclaration.descriptor ?: return
|
val callable = callableDeclaration.descriptor ?: return
|
||||||
|
|
||||||
val mainFunctionDetector =
|
if (callableDeclaration.isMainFunction(callable)) return
|
||||||
MainFunctionDetector(callableDeclaration.languageVersionSettings) { it.resolveToDescriptorIfAny() }
|
|
||||||
if (mainFunctionDetector.isMain(callable)) return
|
|
||||||
|
|
||||||
val containingDeclaration = callable.containingDeclaration
|
val containingDeclaration = callable.containingDeclaration
|
||||||
if (containingDeclaration != null && containingDeclaration == receiverTypeDeclaration) {
|
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