Uast: implementing specific javaPsi for UVariables

This commit is contained in:
Nicolay Mitropolsky
2019-02-19 15:54:25 +03:00
parent 7dc818d42b
commit bd0c6736ce
4 changed files with 37 additions and 6 deletions
@@ -40,7 +40,8 @@ import org.jetbrains.uast.kotlin.psi.UastKotlinPsiParameter
import org.jetbrains.uast.kotlin.psi.UastKotlinPsiVariable
import org.jetbrains.uast.visitor.UastVisitor
abstract class AbstractKotlinUVariable(givenParent: UElement?) : KotlinAbstractUElement(givenParent), PsiVariable, UVariable, UAnchorOwner {
abstract class AbstractKotlinUVariable(givenParent: UElement?) : KotlinAbstractUElement(givenParent), PsiVariable, UVariableExPlaceHolder,
UAnchorOwner {
override val uastInitializer: UExpression?
get() {
@@ -183,7 +184,7 @@ open class KotlinUParameter(
psi: PsiParameter,
final override val sourcePsi: KtElement?,
givenParent: UElement?
) : AbstractKotlinUVariable(givenParent), UParameter, PsiParameter by psi {
) : AbstractKotlinUVariable(givenParent), UParameterExPlaceHolder, PsiParameter by psi {
final override val javaPsi = unwrap<UParameter, PsiParameter>(psi)
@@ -290,7 +291,7 @@ open class KotlinUField(
psi: PsiField,
override val sourcePsi: KtElement?,
givenParent: UElement?
) : AbstractKotlinUVariable(givenParent), UField, PsiField by psi {
) : AbstractKotlinUVariable(givenParent), UFieldExPlaceHolder, PsiField by psi {
override fun getSourceElement() = sourcePsi ?: this
override val javaPsi = unwrap<UField, PsiField>(psi)
@@ -335,7 +336,7 @@ open class KotlinULocalVariable(
psi: PsiLocalVariable,
override val sourcePsi: KtElement,
givenParent: UElement?
) : AbstractKotlinUVariable(givenParent), ULocalVariable, PsiLocalVariable by psi {
) : AbstractKotlinUVariable(givenParent), ULocalVariableExPlaceHolder, PsiLocalVariable by psi {
override val javaPsi = unwrap<ULocalVariable, PsiLocalVariable>(psi)
@@ -382,7 +383,7 @@ class KotlinUEnumConstant(
psi: PsiEnumConstant,
override val sourcePsi: KtElement?,
givenParent: UElement?
) : AbstractKotlinUVariable(givenParent), UEnumConstant, UCallExpressionEx, DelegatedMultiResolve, PsiEnumConstant by psi {
) : AbstractKotlinUVariable(givenParent), UEnumConstantExPlaceHolder, UCallExpressionEx, DelegatedMultiResolve, PsiEnumConstant by psi {
override val initializingClass: UClass? by lz {
(psi.initializingClass as? KtLightClass)?.let { initializingClass ->
@@ -14,7 +14,7 @@ internal class KotlinLocalFunctionUVariable(
val function: KtFunction,
override val psi: PsiVariable,
givenParent: UElement?
) : KotlinAbstractUElement(givenParent), UVariable, PsiVariable by psi {
) : KotlinAbstractUElement(givenParent), UVariableExPlaceHolder, PsiVariable by psi {
override val javaPsi = psi
override val sourcePsi: PsiElement? = (psi as? UastKotlinPsiVariable?)?.ktElement ?: psi
@@ -0,0 +1,15 @@
/*
* Copyright 2010-2019 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.uast.kotlin
import org.jetbrains.uast.*
typealias UFieldExPlaceHolder = UFieldEx
typealias UParameterExPlaceHolder = UParameterEx
typealias UVariableExPlaceHolder = UVariableEx
typealias ULocalVariableExPlaceHolder = ULocalVariableEx
typealias UEnumConstantExPlaceHolder = UEnumConstantEx
typealias UClassInitializerExPlaceHolder = UClassInitializerEx
@@ -0,0 +1,15 @@
/*
* Copyright 2010-2019 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.uast.kotlin
import org.jetbrains.uast.*
typealias UFieldExPlaceHolder = UField
typealias UParameterExPlaceHolder = UParameter
typealias UVariableExPlaceHolder = UVariable
typealias ULocalVariableExPlaceHolder = ULocalVariable
typealias UEnumConstantExPlaceHolder = UEnumConstant
typealias UClassInitializerExPlaceHolder = UClassInitializer