New J2K: use internal getStrictParentOfType instead of custom one
This commit is contained in:
+2
-1
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.nj2k.parentOfType
|
|||||||
import org.jetbrains.kotlin.psi.KtElement
|
import org.jetbrains.kotlin.psi.KtElement
|
||||||
import org.jetbrains.kotlin.psi.KtImportDirective
|
import org.jetbrains.kotlin.psi.KtImportDirective
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.forEachDescendantOfType
|
import org.jetbrains.kotlin.psi.psiUtil.forEachDescendantOfType
|
||||||
|
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
|
||||||
|
|
||||||
class ConstraintsCollectorAggregator(
|
class ConstraintsCollectorAggregator(
|
||||||
private val resolutionFacade: ResolutionFacade,
|
private val resolutionFacade: ResolutionFacade,
|
||||||
@@ -24,7 +25,7 @@ class ConstraintsCollectorAggregator(
|
|||||||
val constraintsBuilder = ConstraintBuilder(inferenceContext, boundTypeCalculator)
|
val constraintsBuilder = ConstraintBuilder(inferenceContext, boundTypeCalculator)
|
||||||
for (element in elements) {
|
for (element in elements) {
|
||||||
element.forEachDescendantOfType<KtElement> { innerElement ->
|
element.forEachDescendantOfType<KtElement> { innerElement ->
|
||||||
if (innerElement.parentOfType<KtImportDirective>() != null) return@forEachDescendantOfType
|
if (innerElement.getStrictParentOfType<KtImportDirective>() != null) return@forEachDescendantOfType
|
||||||
for (collector in collectors) {
|
for (collector in collectors) {
|
||||||
with(collector) {
|
with(collector) {
|
||||||
constraintsBuilder.collectConstraints(
|
constraintsBuilder.collectConstraints(
|
||||||
|
|||||||
+4
-5
@@ -28,7 +28,6 @@ import org.jetbrains.kotlin.lexer.KtTokens
|
|||||||
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.asGetterName
|
import org.jetbrains.kotlin.nj2k.asGetterName
|
||||||
import org.jetbrains.kotlin.nj2k.asSetterName
|
import org.jetbrains.kotlin.nj2k.asSetterName
|
||||||
import org.jetbrains.kotlin.nj2k.parentOfType
|
|
||||||
import org.jetbrains.kotlin.nj2k.postProcessing.*
|
import org.jetbrains.kotlin.nj2k.postProcessing.*
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.*
|
import org.jetbrains.kotlin.psi.psiUtil.*
|
||||||
@@ -133,7 +132,7 @@ class ConvertGettersAndSettersToPropertyProcessing : ElementsBasedPostProcessing
|
|||||||
return property.add(ktGetter).cast<KtPropertyAccessor>().let {
|
return property.add(ktGetter).cast<KtPropertyAccessor>().let {
|
||||||
if (getter is RealGetter) {
|
if (getter is RealGetter) {
|
||||||
getter.function.forAllUsages { usage ->
|
getter.function.forAllUsages { usage ->
|
||||||
usage.parentOfType<KtCallExpression>()!!.replace(factory.createExpression(getter.name))
|
usage.getStrictParentOfType<KtCallExpression>()!!.replace(factory.createExpression(getter.name))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
it
|
it
|
||||||
@@ -183,7 +182,7 @@ class ConvertGettersAndSettersToPropertyProcessing : ElementsBasedPostProcessing
|
|||||||
ktSetter.filterModifiers()
|
ktSetter.filterModifiers()
|
||||||
if (setter is RealSetter) {
|
if (setter is RealSetter) {
|
||||||
setter.function.forAllUsages { usage ->
|
setter.function.forAllUsages { usage ->
|
||||||
val callExpression = usage.parentOfType<KtCallExpression>()!!
|
val callExpression = usage.getStrictParentOfType<KtCallExpression>()!!
|
||||||
val qualifier = callExpression.getQualifiedExpressionForSelector()
|
val qualifier = callExpression.getQualifiedExpressionForSelector()
|
||||||
val newValue = callExpression.valueArguments.single()
|
val newValue = callExpression.valueArguments.single()
|
||||||
if (qualifier != null) {
|
if (qualifier != null) {
|
||||||
@@ -206,8 +205,8 @@ class ConvertGettersAndSettersToPropertyProcessing : ElementsBasedPostProcessing
|
|||||||
|
|
||||||
private fun KtExpression.isReferenceToThis() =
|
private fun KtExpression.isReferenceToThis() =
|
||||||
when (this) {
|
when (this) {
|
||||||
is KtThisExpression -> instanceReference.resolve() == parentOfType<KtClassOrObject>()
|
is KtThisExpression -> instanceReference.resolve() == getStrictParentOfType<KtClassOrObject>()
|
||||||
is KtReferenceExpression -> resolve() == parentOfType<KtClassOrObject>()
|
is KtReferenceExpression -> resolve() == getStrictParentOfType<KtClassOrObject>()
|
||||||
else -> false
|
else -> false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-5
@@ -33,7 +33,6 @@ import org.jetbrains.kotlin.idea.util.getResolutionScope
|
|||||||
import org.jetbrains.kotlin.j2k.ConverterSettings
|
import org.jetbrains.kotlin.j2k.ConverterSettings
|
||||||
import org.jetbrains.kotlin.lexer.KtTokens
|
import org.jetbrains.kotlin.lexer.KtTokens
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.nj2k.parentOfType
|
|
||||||
import org.jetbrains.kotlin.nj2k.postProcessing.ApplicabilityBasedInspectionLikeProcessing
|
import org.jetbrains.kotlin.nj2k.postProcessing.ApplicabilityBasedInspectionLikeProcessing
|
||||||
import org.jetbrains.kotlin.nj2k.postProcessing.InspectionLikeProcessing
|
import org.jetbrains.kotlin.nj2k.postProcessing.InspectionLikeProcessing
|
||||||
import org.jetbrains.kotlin.nj2k.postProcessing.generalInspectionBasedProcessing
|
import org.jetbrains.kotlin.nj2k.postProcessing.generalInspectionBasedProcessing
|
||||||
@@ -219,7 +218,7 @@ class UninitializedVariableReferenceFromInitializerToThisReferenceProcessing :
|
|||||||
|
|
||||||
override fun createAction(element: PsiElement, settings: ConverterSettings?): (() -> Unit)? {
|
override fun createAction(element: PsiElement, settings: ConverterSettings?): (() -> Unit)? {
|
||||||
if (element !is KtSimpleNameExpression) return null
|
if (element !is KtSimpleNameExpression) return null
|
||||||
val anonymousObject = element.getParentOfType<KtClassOrObject>(true)?.takeIf { it.name == null } ?: return null
|
val anonymousObject = element.getStrictParentOfType<KtClassOrObject>()?.takeIf { it.name == null } ?: return null
|
||||||
|
|
||||||
val resolved = element.mainReference.resolve() ?: return null
|
val resolved = element.mainReference.resolve() ?: return null
|
||||||
if (resolved.isAncestor(element, strict = true)) {
|
if (resolved.isAncestor(element, strict = true)) {
|
||||||
@@ -241,9 +240,9 @@ class UnresolvedVariableReferenceFromInitializerToThisReferenceProcessing :
|
|||||||
override fun createAction(element: PsiElement, settings: ConverterSettings?): (() -> Unit)? {
|
override fun createAction(element: PsiElement, settings: ConverterSettings?): (() -> Unit)? {
|
||||||
if (element !is KtSimpleNameExpression || element.mainReference.resolve() != null) return null
|
if (element !is KtSimpleNameExpression || element.mainReference.resolve() != null) return null
|
||||||
|
|
||||||
val anonymousObject = element.getParentOfType<KtClassOrObject>(true) ?: return null
|
val anonymousObject = element.getStrictParentOfType<KtClassOrObject>() ?: return null
|
||||||
|
|
||||||
val variable = anonymousObject.getParentOfType<KtVariableDeclaration>(true) ?: return null
|
val variable = anonymousObject.getStrictParentOfType<KtVariableDeclaration>() ?: return null
|
||||||
|
|
||||||
if (variable.nameAsName == element.getReferencedNameAsName() &&
|
if (variable.nameAsName == element.getReferencedNameAsName() &&
|
||||||
variable.initializer?.getChildOfType<KtClassOrObject>() == anonymousObject
|
variable.initializer?.getChildOfType<KtClassOrObject>() == anonymousObject
|
||||||
@@ -260,7 +259,7 @@ class VarToValProcessing : ApplicabilityBasedInspectionLikeProcessing<KtProperty
|
|||||||
ReferencesSearch.search(this, useScope).any { usage ->
|
ReferencesSearch.search(this, useScope).any { usage ->
|
||||||
(usage as? KtSimpleNameReference)?.element?.let { nameReference ->
|
(usage as? KtSimpleNameReference)?.element?.let { nameReference ->
|
||||||
val receiver = nameReference.parent?.safeAs<KtDotQualifiedExpression>()?.receiverExpression
|
val receiver = nameReference.parent?.safeAs<KtDotQualifiedExpression>()?.receiverExpression
|
||||||
if (nameReference.parentOfType<KtAnonymousInitializer>() != null
|
if (nameReference.getStrictParentOfType<KtAnonymousInitializer>() != null
|
||||||
&& (receiver == null || receiver is KtThisExpression)
|
&& (receiver == null || receiver is KtThisExpression)
|
||||||
) return@let false
|
) return@let false
|
||||||
nameReference.readWriteAccess(useResolveForReadWrite = true).isWrite
|
nameReference.readWriteAccess(useResolveForReadWrite = true).isWrite
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 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.nj2k
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.nj2k.tree.JKTreeElement
|
||||||
|
|
||||||
|
interface BatchBaseConversion {
|
||||||
|
fun runConversion(treeRoots: List<JKTreeElement>, context: NewJ2kConverterContext): Boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
interface SequentialBaseConversion : BatchBaseConversion {
|
||||||
|
fun runConversion(treeRoot: JKTreeElement, context: NewJ2kConverterContext): Boolean
|
||||||
|
|
||||||
|
override fun runConversion(treeRoots: List<JKTreeElement>, context: NewJ2kConverterContext): Boolean {
|
||||||
|
return treeRoots.asSequence().map { runConversion(it, context) }.max() ?: false
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.nj2k
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.j2k.ast.Nullability
|
import org.jetbrains.kotlin.j2k.ast.Nullability
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.nj2k.conversions.parentOfType
|
|
||||||
import org.jetbrains.kotlin.nj2k.symbols.JKClassSymbol
|
import org.jetbrains.kotlin.nj2k.symbols.JKClassSymbol
|
||||||
import org.jetbrains.kotlin.nj2k.symbols.getDisplayName
|
import org.jetbrains.kotlin.nj2k.symbols.getDisplayName
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
|
|||||||
@@ -1,32 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2017 JetBrains s.r.o.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.nj2k.conversions
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
|
||||||
import org.jetbrains.kotlin.nj2k.tree.JKTreeElement
|
|
||||||
|
|
||||||
interface BatchBaseConversion {
|
|
||||||
fun runConversion(treeRoots: List<JKTreeElement>, context: NewJ2kConverterContext): Boolean
|
|
||||||
}
|
|
||||||
|
|
||||||
interface SequentialBaseConversion : BatchBaseConversion {
|
|
||||||
fun runConversion(treeRoot: JKTreeElement, context: NewJ2kConverterContext): Boolean
|
|
||||||
|
|
||||||
override fun runConversion(treeRoots: List<JKTreeElement>, context: NewJ2kConverterContext): Boolean {
|
|
||||||
return treeRoots.asSequence().map { runConversion(it, context) }.max() ?: false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
|
import org.jetbrains.kotlin.nj2k.parentOfType
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
import org.jetbrains.kotlin.nj2k.tree.impl.*
|
||||||
|
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
|
import org.jetbrains.kotlin.nj2k.parentOfType
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKKtConstructorImpl
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKKtConstructorImpl
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKStubExpressionImpl
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKStubExpressionImpl
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.nj2k.conversions
|
|||||||
|
|
||||||
import com.intellij.psi.PsiEnumConstant
|
import com.intellij.psi.PsiEnumConstant
|
||||||
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
|
import org.jetbrains.kotlin.nj2k.parentOfType
|
||||||
import org.jetbrains.kotlin.nj2k.symbols.*
|
import org.jetbrains.kotlin.nj2k.symbols.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKClassAccessExpressionImpl
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKClassAccessExpressionImpl
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.nj2k.conversions
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.findUsages
|
import org.jetbrains.kotlin.nj2k.findUsages
|
||||||
|
import org.jetbrains.kotlin.nj2k.parentOfType
|
||||||
import org.jetbrains.kotlin.nj2k.symbols.JKMethodSymbol
|
import org.jetbrains.kotlin.nj2k.symbols.JKMethodSymbol
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKBooleanLiteral
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKBooleanLiteral
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.nj2k.conversions
|
|||||||
|
|
||||||
import com.intellij.psi.PsiMember
|
import com.intellij.psi.PsiMember
|
||||||
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
|
import org.jetbrains.kotlin.nj2k.parentOfType
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.psi
|
import org.jetbrains.kotlin.nj2k.tree.impl.psi
|
||||||
import org.jetbrains.kotlin.nj2k.visibility
|
import org.jetbrains.kotlin.nj2k.visibility
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.nj2k.SequentialBaseConversion
|
||||||
import org.jetbrains.kotlin.nj2k.tree.JKTreeElement
|
import org.jetbrains.kotlin.nj2k.tree.JKTreeElement
|
||||||
|
|
||||||
abstract class MatchBasedConversion : SequentialBaseConversion {
|
abstract class MatchBasedConversion : SequentialBaseConversion {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.nj2k.conversions
|
|||||||
import com.intellij.psi.PsiClass
|
import com.intellij.psi.PsiClass
|
||||||
import com.intellij.psi.PsiMethod
|
import com.intellij.psi.PsiMethod
|
||||||
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
|
import org.jetbrains.kotlin.nj2k.parentOfType
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKOtherModifierElementImpl
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKOtherModifierElementImpl
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.psi
|
import org.jetbrains.kotlin.nj2k.tree.impl.psi
|
||||||
|
|||||||
+1
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.nj2k.conversions
|
package org.jetbrains.kotlin.nj2k.conversions
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.nj2k.parentOfType
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
|
|
||||||
class RemoveWrongExtraModifiersForSingleFunctionsConversion : RecursiveApplicableConversionBase() {
|
class RemoveWrongExtraModifiersForSingleFunctionsConversion : RecursiveApplicableConversionBase() {
|
||||||
|
|||||||
+1
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.nj2k.conversions
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.nj2k.asStatement
|
import org.jetbrains.kotlin.nj2k.asStatement
|
||||||
import org.jetbrains.kotlin.nj2k.copyTreeAndDetach
|
import org.jetbrains.kotlin.nj2k.copyTreeAndDetach
|
||||||
|
import org.jetbrains.kotlin.nj2k.parentOfType
|
||||||
import org.jetbrains.kotlin.nj2k.tree.*
|
import org.jetbrains.kotlin.nj2k.tree.*
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKLabelTextImpl
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKLabelTextImpl
|
||||||
import org.jetbrains.kotlin.nj2k.tree.impl.JKLabeledStatementImpl
|
import org.jetbrains.kotlin.nj2k.tree.impl.JKLabeledStatementImpl
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.nj2k.conversions
|
|||||||
import com.intellij.lang.jvm.JvmModifier
|
import com.intellij.lang.jvm.JvmModifier
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import com.intellij.psi.PsiModifierListOwner
|
import com.intellij.psi.PsiModifierListOwner
|
||||||
|
import com.intellij.psi.util.parentOfType
|
||||||
import org.jetbrains.kotlin.j2k.getContainingClass
|
import org.jetbrains.kotlin.j2k.getContainingClass
|
||||||
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
import org.jetbrains.kotlin.nj2k.NewJ2kConverterContext
|
||||||
import org.jetbrains.kotlin.nj2k.asQualifierWithThisAsSelector
|
import org.jetbrains.kotlin.nj2k.asQualifierWithThisAsSelector
|
||||||
@@ -23,6 +24,7 @@ import org.jetbrains.kotlin.psi.KtClassOrObject
|
|||||||
import org.jetbrains.kotlin.psi.KtElement
|
import org.jetbrains.kotlin.psi.KtElement
|
||||||
import org.jetbrains.kotlin.psi.KtObjectDeclaration
|
import org.jetbrains.kotlin.psi.KtObjectDeclaration
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.containingClass
|
import org.jetbrains.kotlin.psi.psiUtil.containingClass
|
||||||
|
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||||
|
|
||||||
|
|
||||||
@@ -67,7 +69,7 @@ class StaticMemberAccessConversion(private val context: NewJ2kConverterContext)
|
|||||||
val target = target
|
val target = target
|
||||||
return when (target) {
|
return when (target) {
|
||||||
is KtElement ->
|
is KtElement ->
|
||||||
target.parentOfType<KtClassOrObject>()?.let { klass ->
|
target.getStrictParentOfType<KtClassOrObject>()?.let { klass ->
|
||||||
if (klass is KtObjectDeclaration && klass.isCompanion()) klass.containingClass()
|
if (klass is KtObjectDeclaration && klass.isCompanion()) klass.containingClass()
|
||||||
else klass
|
else klass
|
||||||
}?.let { context.symbolProvider.provideDirectSymbol(it) }
|
}?.let { context.symbolProvider.provideDirectSymbol(it) }
|
||||||
|
|||||||
@@ -10,12 +10,12 @@ import com.intellij.psi.PsiMember
|
|||||||
import com.intellij.psi.PsiNamedElement
|
import com.intellij.psi.PsiNamedElement
|
||||||
import org.jetbrains.kotlin.idea.refactoring.fqName.getKotlinFqName
|
import org.jetbrains.kotlin.idea.refactoring.fqName.getKotlinFqName
|
||||||
import org.jetbrains.kotlin.nj2k.JKSymbolProvider
|
import org.jetbrains.kotlin.nj2k.JKSymbolProvider
|
||||||
import org.jetbrains.kotlin.nj2k.conversions.parentOfType
|
|
||||||
import org.jetbrains.kotlin.nj2k.parentOfType
|
import org.jetbrains.kotlin.nj2k.parentOfType
|
||||||
import org.jetbrains.kotlin.nj2k.tree.JKDeclaration
|
import org.jetbrains.kotlin.nj2k.tree.JKDeclaration
|
||||||
import org.jetbrains.kotlin.nj2k.tree.JKFile
|
import org.jetbrains.kotlin.nj2k.tree.JKFile
|
||||||
import org.jetbrains.kotlin.psi.KtDeclaration
|
import org.jetbrains.kotlin.psi.KtDeclaration
|
||||||
import org.jetbrains.kotlin.psi.KtNamedDeclaration
|
import org.jetbrains.kotlin.psi.KtNamedDeclaration
|
||||||
|
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
|
||||||
|
|
||||||
interface JKSymbol {
|
interface JKSymbol {
|
||||||
val target: Any
|
val target: Any
|
||||||
@@ -51,7 +51,7 @@ interface JKMultiverseSymbol<T> : JKSymbol where T : PsiNamedElement, T : PsiEle
|
|||||||
|
|
||||||
override val target: T
|
override val target: T
|
||||||
override val declaredIn: JKSymbol?
|
override val declaredIn: JKSymbol?
|
||||||
get() = target.parentOfType<PsiMember>()?.let { symbolProvider.provideDirectSymbol(it) }
|
get() = target.getStrictParentOfType<PsiMember>()?.let { symbolProvider.provideDirectSymbol(it) }
|
||||||
override val fqName: String
|
override val fqName: String
|
||||||
get() = target.getKotlinFqName()?.asString() ?: name
|
get() = target.getKotlinFqName()?.asString() ?: name
|
||||||
override val name: String
|
override val name: String
|
||||||
@@ -65,7 +65,7 @@ interface JKMultiverseKtSymbol<T : KtNamedDeclaration> : JKSymbol {
|
|||||||
override val name: String
|
override val name: String
|
||||||
get() = target.name!!
|
get() = target.name!!
|
||||||
override val declaredIn: JKSymbol?
|
override val declaredIn: JKSymbol?
|
||||||
get() = target.parentOfType<KtDeclaration>()?.let { symbolProvider.provideDirectSymbol(it) }
|
get() = target.getStrictParentOfType<KtDeclaration>()?.let { symbolProvider.provideDirectSymbol(it) }
|
||||||
override val fqName: String
|
override val fqName: String
|
||||||
get() = target.fqName?.asString() ?: name
|
get() = target.fqName?.asString() ?: name
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user