Introduce KtNamedFunction.resolveToDescriptorIfAny()
This commit is contained in:
@@ -69,6 +69,10 @@ fun KtClassOrObject.resolveToDescriptorIfAny(bodyResolveMode: BodyResolveMode =
|
|||||||
return (this as KtDeclaration).resolveToDescriptorIfAny(bodyResolveMode) as? ClassDescriptor
|
return (this as KtDeclaration).resolveToDescriptorIfAny(bodyResolveMode) as? ClassDescriptor
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun KtNamedFunction.resolveToDescriptorIfAny(bodyResolveMode: BodyResolveMode = BodyResolveMode.PARTIAL): FunctionDescriptor? {
|
||||||
|
return (this as KtDeclaration).resolveToDescriptorIfAny(bodyResolveMode) as? FunctionDescriptor
|
||||||
|
}
|
||||||
|
|
||||||
fun KtParameter.resolveToParameterDescriptorIfAny(bodyResolveMode: BodyResolveMode = BodyResolveMode.PARTIAL): ValueParameterDescriptor? {
|
fun KtParameter.resolveToParameterDescriptorIfAny(bodyResolveMode: BodyResolveMode = BodyResolveMode.PARTIAL): ValueParameterDescriptor? {
|
||||||
val context = analyze(bodyResolveMode)
|
val context = analyze(bodyResolveMode)
|
||||||
return context.get(BindingContext.VALUE_PARAMETER, this) as? ValueParameterDescriptor
|
return context.get(BindingContext.VALUE_PARAMETER, this) as? ValueParameterDescriptor
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ private class GlobalSyntheticPackageViewDescriptor(override val fqName: FqName,
|
|||||||
.filter { it.isChildOf(fqName) }
|
.filter { it.isChildOf(fqName) }
|
||||||
.filter { nameFilter(it.shortName()) }
|
.filter { nameFilter(it.shortName()) }
|
||||||
.flatMap { KotlinTopLevelFunctionFqnNameIndex.getInstance()[it.asString(), project, scope].asSequence() }
|
.flatMap { KotlinTopLevelFunctionFqnNameIndex.getInstance()[it.asString(), project, scope].asSequence() }
|
||||||
.map { it.resolveToDescriptorIfAny() }
|
.map { it.resolveToDescriptorIfAny() as? DeclarationDescriptor }
|
||||||
|
|
||||||
fun getSubpackages(nameFilter: (Name) -> Boolean) =
|
fun getSubpackages(nameFilter: (Name) -> Boolean) =
|
||||||
PackageIndexUtil.getSubPackageFqNames(fqName, scope, project, nameFilter)
|
PackageIndexUtil.getSubPackageFqNames(fqName, scope, project, nameFilter)
|
||||||
|
|||||||
@@ -27,7 +27,6 @@ import com.intellij.psi.util.ClassUtil
|
|||||||
import com.intellij.psi.util.PsiTreeUtil
|
import com.intellij.psi.util.PsiTreeUtil
|
||||||
import org.jetbrains.kotlin.asJava.toLightClass
|
import org.jetbrains.kotlin.asJava.toLightClass
|
||||||
import org.jetbrains.kotlin.config.TargetPlatformKind
|
import org.jetbrains.kotlin.config.TargetPlatformKind
|
||||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
|
||||||
import org.jetbrains.kotlin.fileClasses.javaFileFacadeFqName
|
import org.jetbrains.kotlin.fileClasses.javaFileFacadeFqName
|
||||||
import org.jetbrains.kotlin.idea.MainFunctionDetector
|
import org.jetbrains.kotlin.idea.MainFunctionDetector
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||||
@@ -83,7 +82,7 @@ class KotlinRunConfigurationProducer : RunConfigurationProducer<KotlinRunConfigu
|
|||||||
val psiFile = locationElement.containingFile
|
val psiFile = locationElement.containingFile
|
||||||
if (!(psiFile is KtFile && ProjectRootsUtil.isInProjectOrLibSource(psiFile))) return null
|
if (!(psiFile is KtFile && ProjectRootsUtil.isInProjectOrLibSource(psiFile))) return null
|
||||||
|
|
||||||
val mainFunctionDetector = MainFunctionDetector { it.resolveToDescriptorIfAny(BodyResolveMode.FULL) as? FunctionDescriptor }
|
val mainFunctionDetector = MainFunctionDetector { it.resolveToDescriptorIfAny(BodyResolveMode.FULL) }
|
||||||
|
|
||||||
var currentElement = locationElement.declarationContainer(false)
|
var currentElement = locationElement.declarationContainer(false)
|
||||||
while (currentElement != null) {
|
while (currentElement != null) {
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ import com.intellij.ide.util.DefaultPsiElementCellRenderer
|
|||||||
import com.intellij.openapi.util.text.StringUtil
|
import com.intellij.openapi.util.text.StringUtil
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import com.intellij.psi.presentation.java.SymbolPresentationUtil
|
import com.intellij.psi.presentation.java.SymbolPresentationUtil
|
||||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||||
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers
|
import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers
|
||||||
import org.jetbrains.kotlin.psi.KtNamedFunction
|
import org.jetbrains.kotlin.psi.KtNamedFunction
|
||||||
@@ -37,7 +36,7 @@ class KotlinSearchEverywherePsiRenderer(private val list: JList<*>) : DefaultPsi
|
|||||||
|
|
||||||
override fun getElementText(element: PsiElement?): String {
|
override fun getElementText(element: PsiElement?): String {
|
||||||
if (element is KtNamedFunction) {
|
if (element is KtNamedFunction) {
|
||||||
val descriptor = element.resolveToDescriptorIfAny() as? FunctionDescriptor
|
val descriptor = element.resolveToDescriptorIfAny()
|
||||||
if (descriptor != null) {
|
if (descriptor != null) {
|
||||||
return buildString {
|
return buildString {
|
||||||
descriptor.extensionReceiverParameter?.let { append(RENDERER.renderType(it.type)).append('.') }
|
descriptor.extensionReceiverParameter?.let { append(RENDERER.renderType(it.type)).append('.') }
|
||||||
|
|||||||
@@ -28,7 +28,6 @@ import com.intellij.psi.*
|
|||||||
import com.intellij.psi.search.GlobalSearchScope
|
import com.intellij.psi.search.GlobalSearchScope
|
||||||
import org.jetbrains.kotlin.asJava.toLightClass
|
import org.jetbrains.kotlin.asJava.toLightClass
|
||||||
import org.jetbrains.kotlin.config.TargetPlatformKind
|
import org.jetbrains.kotlin.config.TargetPlatformKind
|
||||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.lightClasses.KtFakeLightClass
|
import org.jetbrains.kotlin.idea.caches.resolve.lightClasses.KtFakeLightClass
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||||
import org.jetbrains.kotlin.idea.project.targetPlatform
|
import org.jetbrains.kotlin.idea.project.targetPlatform
|
||||||
@@ -70,7 +69,7 @@ class KotlinTypeHierarchyProvider : JavaTypeHierarchyProvider() {
|
|||||||
is KtClassOrObject -> getOriginalPsiClassOrCreateLightClass(target, module)
|
is KtClassOrObject -> getOriginalPsiClassOrCreateLightClass(target, module)
|
||||||
is KtNamedFunction -> { // Factory methods
|
is KtNamedFunction -> { // Factory methods
|
||||||
val functionName = target.name
|
val functionName = target.name
|
||||||
val functionDescriptor = target.resolveToDescriptorIfAny(BodyResolveMode.FULL) as? FunctionDescriptor ?: return null
|
val functionDescriptor = target.resolveToDescriptorIfAny(BodyResolveMode.FULL) ?: return null
|
||||||
val type = functionDescriptor.returnType ?: return null
|
val type = functionDescriptor.returnType ?: return null
|
||||||
val returnTypeText = DescriptorRenderer.FQ_NAMES_IN_TYPES.renderType(type)
|
val returnTypeText = DescriptorRenderer.FQ_NAMES_IN_TYPES.renderType(type)
|
||||||
if (returnTypeText != functionName) return null
|
if (returnTypeText != functionName) return null
|
||||||
|
|||||||
@@ -20,8 +20,6 @@ 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.descriptors.FunctionDescriptor
|
|
||||||
import org.jetbrains.kotlin.idea.KotlinIcons
|
|
||||||
import org.jetbrains.kotlin.idea.MainFunctionDetector
|
import org.jetbrains.kotlin.idea.MainFunctionDetector
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||||
import org.jetbrains.kotlin.psi.KtNamedFunction
|
import org.jetbrains.kotlin.psi.KtNamedFunction
|
||||||
@@ -34,7 +32,7 @@ class KotlinRunLineMarkerContributor : RunLineMarkerContributor() {
|
|||||||
if (function.nameIdentifier != element) return null
|
if (function.nameIdentifier != element) return null
|
||||||
|
|
||||||
val detector = MainFunctionDetector { someFunction ->
|
val detector = MainFunctionDetector { someFunction ->
|
||||||
someFunction.resolveToDescriptorIfAny() as? FunctionDescriptor
|
someFunction.resolveToDescriptorIfAny()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (detector.isMain(function)) {
|
if (detector.isMain(function)) {
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ import com.intellij.codeInspection.IntentionWrapper
|
|||||||
import com.intellij.codeInspection.ProblemHighlightType
|
import com.intellij.codeInspection.ProblemHighlightType
|
||||||
import com.intellij.codeInspection.ProblemsHolder
|
import com.intellij.codeInspection.ProblemsHolder
|
||||||
import com.intellij.psi.PsiElementVisitor
|
import com.intellij.psi.PsiElementVisitor
|
||||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||||
import org.jetbrains.kotlin.idea.intentions.RemoveExplicitTypeIntention
|
import org.jetbrains.kotlin.idea.intentions.RemoveExplicitTypeIntention
|
||||||
import org.jetbrains.kotlin.psi.KtCodeFragment
|
import org.jetbrains.kotlin.psi.KtCodeFragment
|
||||||
@@ -22,7 +21,7 @@ class RedundantUnitReturnTypeInspection : AbstractKotlinInspection(), CleanupLoc
|
|||||||
return namedFunctionVisitor(fun(function) {
|
return namedFunctionVisitor(fun(function) {
|
||||||
if (function.containingFile is KtCodeFragment) return
|
if (function.containingFile is KtCodeFragment) return
|
||||||
val typeElement = function.typeReference?.typeElement ?: return
|
val typeElement = function.typeReference?.typeElement ?: return
|
||||||
val descriptor = function.resolveToDescriptorIfAny() as? FunctionDescriptor ?: return
|
val descriptor = function.resolveToDescriptorIfAny() ?: return
|
||||||
if (descriptor.returnType?.isUnit() == true) {
|
if (descriptor.returnType?.isUnit() == true) {
|
||||||
if (!function.hasBlockBody()) {
|
if (!function.hasBlockBody()) {
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ package org.jetbrains.kotlin.idea.intentions
|
|||||||
|
|
||||||
import com.intellij.openapi.editor.Editor
|
import com.intellij.openapi.editor.Editor
|
||||||
import com.intellij.openapi.util.TextRange
|
import com.intellij.openapi.util.TextRange
|
||||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||||
import org.jetbrains.kotlin.idea.refactoring.withExpectedActuals
|
import org.jetbrains.kotlin.idea.refactoring.withExpectedActuals
|
||||||
import org.jetbrains.kotlin.lexer.KtTokens
|
import org.jetbrains.kotlin.lexer.KtTokens
|
||||||
@@ -28,7 +27,7 @@ import org.jetbrains.kotlin.util.OperatorChecks
|
|||||||
class AddOperatorModifierIntention : SelfTargetingRangeIntention<KtNamedFunction>(KtNamedFunction::class.java, "Add 'operator' modifier") {
|
class AddOperatorModifierIntention : SelfTargetingRangeIntention<KtNamedFunction>(KtNamedFunction::class.java, "Add 'operator' modifier") {
|
||||||
override fun applicabilityRange(element: KtNamedFunction): TextRange? {
|
override fun applicabilityRange(element: KtNamedFunction): TextRange? {
|
||||||
val nameIdentifier = element.nameIdentifier ?: return null
|
val nameIdentifier = element.nameIdentifier ?: return null
|
||||||
val functionDescriptor = element.resolveToDescriptorIfAny() as? FunctionDescriptor ?: return null
|
val functionDescriptor = element.resolveToDescriptorIfAny() ?: return null
|
||||||
if (functionDescriptor.isOperator || !OperatorChecks.check(functionDescriptor).isSuccess) return null
|
if (functionDescriptor.isOperator || !OperatorChecks.check(functionDescriptor).isSuccess) return null
|
||||||
return nameIdentifier.textRange
|
return nameIdentifier.textRange
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -210,7 +210,7 @@ class ConvertFunctionToPropertyIntention : SelfTargetingIntention<KtNamedFunctio
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
val descriptor = element.resolveToDescriptorIfAny() as? FunctionDescriptor ?: return false
|
val descriptor = element.resolveToDescriptorIfAny() ?: return false
|
||||||
val returnType = descriptor.returnType ?: return false
|
val returnType = descriptor.returnType ?: return false
|
||||||
return !KotlinBuiltIns.isUnit(returnType) && !KotlinBuiltIns.isNothing(returnType)
|
return !KotlinBuiltIns.isUnit(returnType) && !KotlinBuiltIns.isNothing(returnType)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ import com.intellij.codeInsight.intention.LowPriorityAction
|
|||||||
import com.intellij.openapi.editor.Editor
|
import com.intellij.openapi.editor.Editor
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||||
import org.jetbrains.kotlin.idea.core.setType
|
import org.jetbrains.kotlin.idea.core.setType
|
||||||
@@ -101,7 +100,7 @@ class ConvertToBlockBodyIntention : SelfTargetingIntention<KtDeclarationWithBody
|
|||||||
|
|
||||||
private fun KtNamedFunction.returnType(): KotlinType? {
|
private fun KtNamedFunction.returnType(): KotlinType? {
|
||||||
val descriptor = resolveToDescriptorIfAny() ?: return null
|
val descriptor = resolveToDescriptorIfAny() ?: return null
|
||||||
return (descriptor as FunctionDescriptor).returnType
|
return descriptor.returnType
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ package org.jetbrains.kotlin.idea.intentions
|
|||||||
|
|
||||||
import com.intellij.openapi.editor.Editor
|
import com.intellij.openapi.editor.Editor
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||||
import org.jetbrains.kotlin.idea.core.moveCaret
|
import org.jetbrains.kotlin.idea.core.moveCaret
|
||||||
import org.jetbrains.kotlin.idea.core.replaced
|
import org.jetbrains.kotlin.idea.core.replaced
|
||||||
@@ -212,7 +211,7 @@ class InvertIfConditionIntention : SelfTargetingIntention<KtIfExpression>(KtIfEx
|
|||||||
is KtNamedFunction -> {
|
is KtNamedFunction -> {
|
||||||
if (parent.bodyExpression == expression) {
|
if (parent.bodyExpression == expression) {
|
||||||
if (!parent.hasBlockBody()) return null
|
if (!parent.hasBlockBody()) return null
|
||||||
val returnType = (parent.resolveToDescriptorIfAny() as? FunctionDescriptor)?.returnType
|
val returnType = parent.resolveToDescriptorIfAny()?.returnType
|
||||||
if (returnType == null || !returnType.isUnit()) return null
|
if (returnType == null || !returnType.isUnit()) return null
|
||||||
return KtPsiFactory(expression).createExpression("return")
|
return KtPsiFactory(expression).createExpression("return")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ import com.intellij.psi.PsiComment
|
|||||||
import com.intellij.psi.search.LocalSearchScope
|
import com.intellij.psi.search.LocalSearchScope
|
||||||
import com.intellij.psi.search.searches.ReferencesSearch
|
import com.intellij.psi.search.searches.ReferencesSearch
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
|
||||||
import org.jetbrains.kotlin.descriptors.Modality
|
import org.jetbrains.kotlin.descriptors.Modality
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
|
||||||
@@ -61,7 +60,7 @@ class ObjectLiteralToLambdaIntention : SelfTargetingRangeIntention<KtObjectLiter
|
|||||||
|
|
||||||
if (!SingleAbstractMethodUtils.isSamType(baseType)) return null
|
if (!SingleAbstractMethodUtils.isSamType(baseType)) return null
|
||||||
|
|
||||||
val functionDescriptor = singleFunction.resolveToDescriptorIfAny(BodyResolveMode.FULL) as? FunctionDescriptor ?: return null
|
val functionDescriptor = singleFunction.resolveToDescriptorIfAny(BodyResolveMode.FULL) ?: return null
|
||||||
val overridden = functionDescriptor.overriddenDescriptors.singleOrNull() ?: return null
|
val overridden = functionDescriptor.overriddenDescriptors.singleOrNull() ?: return null
|
||||||
if (overridden.modality != Modality.ABSTRACT) return null
|
if (overridden.modality != Modality.ABSTRACT) return null
|
||||||
|
|
||||||
|
|||||||
@@ -158,8 +158,7 @@ class AddFunctionToSupertypeFix private constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun generateFunctionsToAdd(functionElement: KtNamedFunction): List<FunctionDescriptor> {
|
private fun generateFunctionsToAdd(functionElement: KtNamedFunction): List<FunctionDescriptor> {
|
||||||
val functionDescriptor = functionElement.resolveToDescriptorIfAny(BodyResolveMode.FULL) as? FunctionDescriptor
|
val functionDescriptor = functionElement.resolveToDescriptorIfAny(BodyResolveMode.FULL) ?: return emptyList()
|
||||||
?: return emptyList()
|
|
||||||
|
|
||||||
val containingClass = functionDescriptor.containingDeclaration as? ClassDescriptor ?: return emptyList()
|
val containingClass = functionDescriptor.containingDeclaration as? ClassDescriptor ?: return emptyList()
|
||||||
|
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ class ChangeMemberFunctionSignatureFix private constructor(
|
|||||||
return emptyList()
|
return emptyList()
|
||||||
}
|
}
|
||||||
|
|
||||||
val functionDescriptor = functionElement.resolveToDescriptorIfAny(BodyResolveMode.FULL) as? FunctionDescriptor
|
val functionDescriptor = functionElement.resolveToDescriptorIfAny(BodyResolveMode.FULL)
|
||||||
?: return emptyList()
|
?: return emptyList()
|
||||||
val superFunctions = getPossibleSuperFunctionsDescriptors(functionDescriptor)
|
val superFunctions = getPossibleSuperFunctionsDescriptors(functionDescriptor)
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -440,7 +440,7 @@ class KotlinChangeSignatureUsageProcessor : ChangeSignatureUsageProcessor {
|
|||||||
|
|
||||||
for (overridingMethod in OverridingMethodsSearch.search(method)) {
|
for (overridingMethod in OverridingMethodsSearch.search(method)) {
|
||||||
val unwrappedElement = overridingMethod.namedUnwrappedElement as? KtNamedFunction ?: continue
|
val unwrappedElement = overridingMethod.namedUnwrappedElement as? KtNamedFunction ?: continue
|
||||||
val functionDescriptor = unwrappedElement.resolveToDescriptorIfAny() as? FunctionDescriptor ?: continue
|
val functionDescriptor = unwrappedElement.resolveToDescriptorIfAny() ?: continue
|
||||||
result.add(DeferredJavaMethodOverrideOrSAMUsage(unwrappedElement, functionDescriptor, null))
|
result.add(DeferredJavaMethodOverrideOrSAMUsage(unwrappedElement, functionDescriptor, null))
|
||||||
findDeferredUsagesOfParameters(changeInfo, result, unwrappedElement, functionDescriptor)
|
findDeferredUsagesOfParameters(changeInfo, result, unwrappedElement, functionDescriptor)
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -44,7 +44,7 @@ private class KotlinNodeJsRunConfigurationProducer :
|
|||||||
val project = psiFile.project
|
val project = psiFile.project
|
||||||
|
|
||||||
if (psiElement is KtNamedFunction) {
|
if (psiElement is KtNamedFunction) {
|
||||||
val detector = MainFunctionDetector { it.resolveToDescriptorIfAny() as? FunctionDescriptor }
|
val detector = MainFunctionDetector { it.resolveToDescriptorIfAny() }
|
||||||
if (!detector.isMain(psiElement, false)) return false
|
if (!detector.isMain(psiElement, false)) return false
|
||||||
}
|
}
|
||||||
else if (!TestElementPath.isModuleAssociatedDir(psiElement, jsModule)) return false
|
else if (!TestElementPath.isModuleAssociatedDir(psiElement, jsModule)) return false
|
||||||
|
|||||||
Reference in New Issue
Block a user