diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinLightClass.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinLightClass.kt index 1efb15de5fc..dfecd5736c8 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinLightClass.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinLightClass.kt @@ -21,5 +21,5 @@ import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.psi.JetClassOrObject public trait KotlinLightClass : PsiClass, KotlinLightElement { - val fqName: FqName + public fun getFqName(): FqName } diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinLightElement.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinLightElement.kt index 047582f4643..4f0963d9340 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinLightElement.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinLightElement.kt @@ -20,6 +20,7 @@ import org.jetbrains.kotlin.psi.JetDeclaration import com.intellij.psi.PsiElement public trait KotlinLightElement { - public val origin: T? - public val delegate: D + public fun getOrigin(): T? + + public fun getDelegate(): D } diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinLightMethodForDeclaration.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinLightMethodForDeclaration.kt index a073a6bf0fa..663aef4792b 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinLightMethodForDeclaration.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinLightMethodForDeclaration.kt @@ -34,8 +34,8 @@ import com.intellij.psi.util.MethodSignatureBackedByPsiMethod open public class KotlinLightMethodForDeclaration( manager: PsiManager, - override val delegate: PsiMethod, - override val origin: JetDeclaration, + private val delegate: PsiMethod, + private val origin: JetDeclaration, containingClass: PsiClass ): LightMethod(manager, delegate, containingClass), KotlinLightMethod { @@ -65,8 +65,12 @@ open public class KotlinLightMethodForDeclaration( }, false) } - override fun getNavigationElement() : PsiElement = origin - override fun getOriginalElement() : PsiElement = origin + override fun getNavigationElement(): PsiElement = origin + override fun getOriginalElement(): PsiElement = origin + + override fun getDelegate(): PsiMethod = delegate + + override fun getOrigin(): JetDeclaration = origin override fun getParent(): PsiElement? = getContainingClass() @@ -82,7 +86,7 @@ open public class KotlinLightMethodForDeclaration( } override fun isEquivalentTo(another: PsiElement?): Boolean { - if (another is KotlinLightMethod && origin == another.origin) { + if (another is KotlinLightMethod && origin == another.getOrigin()) { return true } diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinLightMethodForTraitFakeOverride.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinLightMethodForTraitFakeOverride.kt index 87f873833a3..b48223d3724 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinLightMethodForTraitFakeOverride.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/KotlinLightMethodForTraitFakeOverride.kt @@ -24,11 +24,15 @@ import com.intellij.psi.PsiElement public class KotlinLightMethodForTraitFakeOverride( manager: PsiManager, - override val delegate: PsiMethod, - override val origin: JetDeclaration, + private val delegate: PsiMethod, + private val origin: JetDeclaration, containingClass: PsiClass ) : KotlinLightMethodForDeclaration(manager, delegate, origin, containingClass) { + override fun getDelegate(): PsiMethod = delegate + + override fun getOrigin(): JetDeclaration = origin + override fun copy(): PsiElement { - return KotlinLightMethodForTraitFakeOverride(getManager()!!, delegate, origin.copy() as JetDeclaration, getContainingClass()!!) + return KotlinLightMethodForTraitFakeOverride(getManager(), delegate, origin.copy() as JetDeclaration, getContainingClass()) } } diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/lightClassUtils.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/lightClassUtils.kt index 81c21753f42..b1cca7280d7 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/lightClassUtils.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/lightClassUtils.kt @@ -97,7 +97,7 @@ public fun JetTypeParameter.toPsiTypeParameters(): List { // Returns original declaration if given PsiElement is a Kotlin light element, and element itself otherwise public val PsiElement.unwrapped: PsiElement? - get() = if (this is KotlinLightElement<*, *>) origin else this + get() = if (this is KotlinLightElement<*, *>) getOrigin() else this public val PsiElement.namedUnwrappedElement: PsiNamedElement? get() = unwrapped?.getNonStrictParentOfType() diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/JavaResolveExtension.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/JavaResolveExtension.kt index 1d5547bb45c..a778b911861 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/JavaResolveExtension.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/JavaResolveExtension.kt @@ -48,7 +48,7 @@ public object JavaResolveExtension : CacheExtension<(PsiElement) -> Pair.getModuleInfoForLightElement(): IdeaModuleI if (this is KotlinLightClassForDecompiledDeclaration) { return getModuleInfoByVirtualFile(getProject(), getContainingFile().getVirtualFile(), false) } - val element = origin ?: when (this) { + val element = getOrigin() ?: when (this) { is FakeLightClassForFileOfPackage -> this.getContainingFile()!! is KotlinLightClassForPackage -> this.getFiles().first() else -> throw IllegalStateException("Unknown light class without origin is referenced by IDE lazy resolve: $javaClass") diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/usagesSearch/utils.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/usagesSearch/utils.kt index d4be9e54fd8..c7a0a6ce1c4 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/usagesSearch/utils.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/search/usagesSearch/utils.kt @@ -140,7 +140,7 @@ fun PsiReference.isPropertyReadOnlyUsage(): Boolean { val refTarget = resolve() if (refTarget is KotlinLightMethod) { - val origin = refTarget.origin + val origin = refTarget.getOrigin() val declaration: JetNamedDeclaration? = when (origin) { is JetPropertyAccessor -> origin.getNonStrictParentOfType() is JetProperty, is JetParameter -> origin as JetNamedDeclaration diff --git a/idea/src/org/jetbrains/kotlin/idea/completion/smart/TypeInstantiationItems.kt b/idea/src/org/jetbrains/kotlin/idea/completion/smart/TypeInstantiationItems.kt index 67ce2c39b78..7d09817db8c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/completion/smart/TypeInstantiationItems.kt +++ b/idea/src/org/jetbrains/kotlin/idea/completion/smart/TypeInstantiationItems.kt @@ -286,7 +286,7 @@ class TypeInstantiationItems( val parameters = ClassInheritorsSearch.SearchParameters(psiClass, inheritorSearchScope, true, true, false, nameFilter) for (inheritor in ClassInheritorsSearch.search(parameters)) { val descriptor = if (inheritor is KotlinLightClass && inheritor !is KotlinLightClassForDecompiledDeclaration) { - val origin = inheritor.origin ?: continue + val origin = inheritor.getOrigin() ?: continue val declaration = toFromOriginalFileMapper.toSyntheticFile(origin) ?: continue resolutionFacade.resolveToDescriptor(declaration) } diff --git a/idea/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinCodeFragmentFactory.kt b/idea/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinCodeFragmentFactory.kt index 82b362eacbd..30e2e23577c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinCodeFragmentFactory.kt +++ b/idea/src/org/jetbrains/kotlin/idea/debugger/evaluate/KotlinCodeFragmentFactory.kt @@ -105,7 +105,7 @@ class KotlinCodeFragmentFactory: CodeFragmentFactory() { } if (elementAt is KotlinLightClass) { - return getContextElement(elementAt.origin) + return getContextElement(elementAt.getOrigin()) } val expressionAtOffset = PsiTreeUtil.findElementOfClassAtOffset(elementAt.getContainingFile()!!, elementAt.getTextOffset(), javaClass(), false) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureData.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureData.kt index 8656b98fec8..52522129f31 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureData.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureData.kt @@ -78,7 +78,7 @@ public class JetChangeSignatureData( val overrides = lightMethod?.let { OverridingMethodsSearch.search(it).findAll() } ?: Collections.emptyList() overrides.map { method -> if (method is KotlinLightMethod) { - val overridingDeclaration = method.origin + val overridingDeclaration = method.getOrigin() val overridingDescriptor = overridingDeclaration?.resolveToDescriptor() as FunctionDescriptor JetFunctionDefinitionUsage(overridingDeclaration, overridingDescriptor, primaryFunction, null) } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinFunctionProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinFunctionProcessor.kt index 7d4ec76246c..c21dfc21421 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinFunctionProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinFunctionProcessor.kt @@ -36,7 +36,7 @@ public class RenameKotlinFunctionProcessor : RenameKotlinPsiProcessor() { } override fun canProcessElement(element: PsiElement): Boolean { - return element is JetNamedFunction || (element is KotlinLightMethod && element.origin is JetNamedFunction) + return element is JetNamedFunction || (element is KotlinLightMethod && element.getOrigin() is JetNamedFunction) } override fun substituteElementToRename(element: PsiElement?, editor: Editor?): PsiElement? { @@ -50,7 +50,7 @@ public class RenameKotlinFunctionProcessor : RenameKotlinPsiProcessor() { val substitutedJavaElement = javaMethodProcessorInstance.substituteElementToRename(wrappedMethod, editor) return when (substitutedJavaElement) { - is KotlinLightMethod -> substitutedJavaElement.origin as? JetNamedFunction + is KotlinLightMethod -> substitutedJavaElement.getOrigin() as? JetNamedFunction else -> substitutedJavaElement } } diff --git a/j2k/src/org/jetbrains/kotlin/j2k/ExpressionConverter.kt b/j2k/src/org/jetbrains/kotlin/j2k/ExpressionConverter.kt index 72400518106..a72cc835715 100644 --- a/j2k/src/org/jetbrains/kotlin/j2k/ExpressionConverter.kt +++ b/j2k/src/org/jetbrains/kotlin/j2k/ExpressionConverter.kt @@ -210,7 +210,7 @@ class DefaultExpressionConverter : JavaElementVisitor(), ExpressionConverter { val typeArguments = convertTypeArguments(expression) if (target is KotlinLightMethod) { - val origin = target.origin + val origin = target.getOrigin() val isTopLevel = origin?.getStrictParentOfType() == null if (origin is JetProperty || origin is JetPropertyAccessor || origin is JetParameter) { val property = if (origin is JetPropertyAccessor) diff --git a/j2k/src/org/jetbrains/kotlin/j2k/TypeConverter.kt b/j2k/src/org/jetbrains/kotlin/j2k/TypeConverter.kt index de9c167d7c1..81616c7fd7f 100644 --- a/j2k/src/org/jetbrains/kotlin/j2k/TypeConverter.kt +++ b/j2k/src/org/jetbrains/kotlin/j2k/TypeConverter.kt @@ -369,7 +369,7 @@ class TypeConverter(val converter: Converter) { override fun fromAnnotations(owner: PsiModifierListOwner): Mutability { if (owner is KotlinLightElement<*, *>) { - val jetDeclaration = owner.origin as? JetCallableDeclaration ?: return Mutability.Default + val jetDeclaration = owner.getOrigin() as? JetCallableDeclaration ?: return Mutability.Default val descriptor = converter.resolverForConverter.resolveToDescriptor(jetDeclaration) as? CallableDescriptor ?: return Mutability.Default val type = descriptor.getReturnType() ?: return Mutability.Default val classDescriptor = TypeUtils.getClassDescriptor(type) ?: return Mutability.Default