summaryrefslogtreecommitdiff
path: root/plugins/kotlin/uast/uast-kotlin-base
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/kotlin/uast/uast-kotlin-base')
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/kotlin.uast.uast-kotlin-base.iml3
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/BaseKotlinConverter.kt4
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/BaseKotlinUastResolveProviderService.kt4
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/KotlinAbstractUElement.kt4
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/KotlinAbstractUExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/ElvisExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUCatchClause.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUDoWhileExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUForEachExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUIfExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUSwitchEntry.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUSwitchExpression.kt3
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUTryExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUWhileExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/AbstractKotlinUClass.kt10
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/AbstractKotlinUVariable.kt6
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinConstructorUMethod.kt4
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinInvalidUClass.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinNullabilityUAnnotation.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinReceiverUParameter.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinScriptUClass.kt5
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinSecondaryConstructorWithInitializersUMethod.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUAnnotatedLocalVariable.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUAnnotation.kt20
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUAnnotationMethod.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUAnonymousClass.kt6
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUClass.kt6
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUEnumConstant.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUField.kt23
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUFile.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUIdentifier.kt4
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUImportStatement.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinULocalVariable.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt7
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethodWithFakeLightDelegate.kt11
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUParameter.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUVariable.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/UastLightIdentifier.kt8
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinClassViaConstructorUSimpleReferenceExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinCustomUBinaryExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinCustomUBinaryExpressionWithType.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinDocUQualifiedReferenceExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinEvaluatableUElement.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinLazyUBlockExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinLocalFunctionULambdaExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinLocalFunctionUVariable.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinStringTemplateUPolyadicExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinStringULiteralExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinStringUSimpleReferenceExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinSupertypeDelegationUExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUArrayAccessExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUBinaryExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUBinaryExpressionWithType.kt4
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUBlockExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUBreakExpression.kt3
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUCallableReferenceExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUClassLiteralExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUCollectionLiteralExpression.kt6
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUContinueExpression.kt3
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUDeclarationsExpression.kt8
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUDestructuringDeclarationExpression.kt3
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUElementWithType.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUExpressionList.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUFunctionCallExpression.kt6
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUImplicitReturnExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinULabeledExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinULambdaExpression.kt8
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinULiteralExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUNamedExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUObjectLiteralExpression.kt3
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUParenthesizedExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUPostfixExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUPrefixExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUQualifiedReferenceExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUReturnExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUSafeQualifiedExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUSimpleReferenceExpression.kt6
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUSuperExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUThisExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUThrowExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUTypeCheckExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUTypeReferenceExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUVarargExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/UnknownKotlinExpression.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/internal/DelegatedMultiResolve.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/internal/KotlinFakeUElement.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/internal/KotlinUElementWithComments.kt36
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/internal/baseKotlinInternalUastUtils.kt55
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/kinds/KotlinBinaryExpressionWithTypeKinds.kt4
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/kinds/KotlinBinaryOperators.kt4
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/kinds/KotlinPostfixOperators.kt4
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/kinds/KotlinQualifiedExpressionAccessTypes.kt4
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/kinds/KotlinSpecialExpressionKinds.kt4
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/kotlinConvertParentUtils.kt4
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/psi/UastFakeLightMethod.kt8
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/psi/UastKotlinPsiParameter.kt3
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/psi/UastKotlinPsiVariable.kt2
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/test/org/jetbrains/uast/test/common/kotlin/UastCommentLogTestBase.kt5
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/test/org/jetbrains/uast/test/common/kotlin/UastResolveApiFixtureTestBase.kt126
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/test/org/jetbrains/uast/test/common/kotlin/UastResolveApiTestBase.kt9
-rw-r--r--plugins/kotlin/uast/uast-kotlin-base/test/org/jetbrains/uast/test/common/kotlin/UastResolveEverythingTestBase.kt25
101 files changed, 512 insertions, 77 deletions
diff --git a/plugins/kotlin/uast/uast-kotlin-base/kotlin.uast.uast-kotlin-base.iml b/plugins/kotlin/uast/uast-kotlin-base/kotlin.uast.uast-kotlin-base.iml
index 7915d756310c..b4cc704d6baa 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/kotlin.uast.uast-kotlin-base.iml
+++ b/plugins/kotlin/uast/uast-kotlin-base/kotlin.uast.uast-kotlin-base.iml
@@ -31,13 +31,12 @@
<orderEntry type="module" module-name="intellij.java.psi.impl" />
<orderEntry type="module" module-name="intellij.java.rt" scope="TEST" />
<orderEntry type="module" module-name="intellij.java.uast" />
- <orderEntry type="module" module-name="kotlin.fir.frontend-independent" />
<orderEntry type="library" scope="TEST" name="kotlin-test" level="project" />
<orderEntry type="module" module-name="intellij.platform.uast.tests" scope="TEST" />
<orderEntry type="module" module-name="kotlin.tests-common" scope="TEST" />
<orderEntry type="module" module-name="kotlin.test-framework" scope="TEST" />
<orderEntry type="library" scope="TEST" name="kotlinc.kotlin-compiler-cli" level="project" />
<orderEntry type="library" scope="TEST" name="kotlinc.kotlin-compiler-tests" level="project" />
- <orderEntry type="module" module-name="kotlin.core" />
+ <!-- PLEASE DON'T ADD FRONTEND-SPECIFIC DEPENDENCIES: they should rather go to frontend variants, such as uast-kotlin(-fir) -->
</component>
</module>
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/BaseKotlinConverter.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/BaseKotlinConverter.kt
index b1a68df59e43..577c92fc3d94 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/BaseKotlinConverter.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/BaseKotlinConverter.kt
@@ -5,6 +5,7 @@ package org.jetbrains.uast.kotlin
import com.intellij.openapi.components.ServiceManager
import com.intellij.psi.*
import com.intellij.psi.impl.source.tree.LeafPsiElement
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.asJava.LightClassUtil
import org.jetbrains.kotlin.asJava.classes.KtLightClass
import org.jetbrains.kotlin.asJava.elements.*
@@ -25,6 +26,7 @@ import org.jetbrains.uast.internal.alternative
import org.jetbrains.uast.expressions.UInjectionHost
import org.jetbrains.uast.kotlin.psi.*
+@ApiStatus.Internal
interface BaseKotlinConverter {
val languagePlugin: UastLanguagePlugin
@@ -686,7 +688,7 @@ interface BaseKotlinConverter {
fun createVarargsHolder(
arguments: Collection<ValueArgument>,
parent: UElement?,
- ): KotlinUExpressionList =
+ ): UExpressionList =
KotlinUExpressionList(null, UastSpecialExpressionKind.VARARGS, parent).apply {
expressions = arguments.map { convertOrEmpty(it.getArgumentExpression(), parent) }
}
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/BaseKotlinUastResolveProviderService.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/BaseKotlinUastResolveProviderService.kt
index 432eea11b5c5..7391563defcb 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/BaseKotlinUastResolveProviderService.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/BaseKotlinUastResolveProviderService.kt
@@ -18,6 +18,8 @@ interface BaseKotlinUastResolveProviderService {
val baseKotlinConverter: BaseKotlinConverter
+ fun convertToPsiAnnotation(ktElement: KtElement): PsiAnnotation?
+
fun convertParent(uElement: UElement): UElement? {
return convertParentImpl(this, uElement)
}
@@ -42,6 +44,8 @@ interface BaseKotlinUastResolveProviderService {
includeExplicitParameters: Boolean = false
): List<KotlinUParameter>
+ fun getPsiAnnotations(psiElement: PsiModifierListOwner): Array<PsiAnnotation>
+
// ----------
// Resolution
// ----------
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/KotlinAbstractUElement.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/KotlinAbstractUElement.kt
index e25c098d22a8..b501d1d5f863 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/KotlinAbstractUElement.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/KotlinAbstractUElement.kt
@@ -3,11 +3,13 @@
package org.jetbrains.uast.kotlin
import com.intellij.openapi.components.ServiceManager
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.uast.UElement
import org.jetbrains.uast.UastFacade
import org.jetbrains.uast.UastLanguagePlugin
import org.jetbrains.uast.kotlin.internal.KotlinUElementWithComments
+@ApiStatus.Internal
abstract class KotlinAbstractUElement(
givenParent: UElement?,
) : KotlinUElementWithComments {
@@ -16,7 +18,7 @@ abstract class KotlinAbstractUElement(
psi?.let { UastFacade.findPlugin(it) }
}
- open val baseResolveProviderService: BaseKotlinUastResolveProviderService by lz {
+ val baseResolveProviderService: BaseKotlinUastResolveProviderService by lz {
ServiceManager.getService(BaseKotlinUastResolveProviderService::class.java)
?: error("${BaseKotlinUastResolveProviderService::class.java.name} is not available for ${this::class.simpleName}")
}
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/KotlinAbstractUExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/KotlinAbstractUExpression.kt
index 40ad85c82fa2..c0065d583ed7 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/KotlinAbstractUExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/KotlinAbstractUExpression.kt
@@ -3,12 +3,14 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiElement
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtAnnotatedExpression
import org.jetbrains.uast.UAnnotation
import org.jetbrains.uast.UElement
import org.jetbrains.uast.UExpression
import org.jetbrains.uast.convertOpt
+@ApiStatus.Internal
abstract class KotlinAbstractUExpression(
givenParent: UElement?,
) : KotlinAbstractUElement(givenParent), UExpression {
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/ElvisExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/ElvisExpression.kt
index f960dd5af059..0fac67b2c553 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/ElvisExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/ElvisExpression.kt
@@ -5,6 +5,7 @@ import com.intellij.openapi.components.ServiceManager
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiMethod
import com.intellij.psi.PsiType
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtAnnotatedExpression
import org.jetbrains.kotlin.psi.KtBinaryExpression
import org.jetbrains.kotlin.psi.KtExpression
@@ -93,6 +94,7 @@ fun createElvisExpression(elvisExpression: KtBinaryExpression, givenParent: UEle
return KotlinUElvisExpression(elvisExpression, left, right, givenParent)
}
+@ApiStatus.Internal
class KotlinUElvisExpression(
private val elvisExpression: KtBinaryExpression,
private val left: KtExpression,
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUCatchClause.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUCatchClause.kt
index f8c315981374..99546301664b 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUCatchClause.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUCatchClause.kt
@@ -3,12 +3,14 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiElement
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtCatchClause
import org.jetbrains.uast.*
import org.jetbrains.uast.internal.acceptList
import org.jetbrains.uast.kotlin.psi.UastKotlinPsiParameter
import org.jetbrains.uast.visitor.UastVisitor
+@ApiStatus.Internal
class KotlinUCatchClause(
override val sourcePsi: KtCatchClause,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUDoWhileExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUDoWhileExpression.kt
index 8dd0577cda82..d7144f9f49a7 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUDoWhileExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUDoWhileExpression.kt
@@ -2,11 +2,13 @@
package org.jetbrains.uast.kotlin
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtDoWhileExpression
import org.jetbrains.uast.UDoWhileExpression
import org.jetbrains.uast.UElement
import org.jetbrains.uast.UIdentifier
+@ApiStatus.Internal
class KotlinUDoWhileExpression(
override val sourcePsi: KtDoWhileExpression,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUForEachExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUForEachExpression.kt
index 5ebe6926d405..62a34431f168 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUForEachExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUForEachExpression.kt
@@ -2,6 +2,7 @@
package org.jetbrains.uast.kotlin
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.idea.KotlinLanguage
import org.jetbrains.kotlin.psi.KtForExpression
import org.jetbrains.uast.UElement
@@ -10,6 +11,7 @@ import org.jetbrains.uast.UIdentifier
import org.jetbrains.uast.kotlin.psi.UastKotlinPsiParameter
import org.jetbrains.uast.psi.UastPsiParameterNotResolved
+@ApiStatus.Internal
class KotlinUForEachExpression(
override val sourcePsi: KtForExpression,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUIfExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUIfExpression.kt
index b4fb618c6e31..213bf1460e84 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUIfExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUIfExpression.kt
@@ -2,11 +2,13 @@
package org.jetbrains.uast.kotlin
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtIfExpression
import org.jetbrains.uast.UElement
import org.jetbrains.uast.UIdentifier
import org.jetbrains.uast.UIfExpression
+@ApiStatus.Internal
class KotlinUIfExpression(
override val sourcePsi: KtIfExpression,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUSwitchEntry.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUSwitchEntry.kt
index ba81a93f3552..75daf9d559c8 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUSwitchEntry.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUSwitchEntry.kt
@@ -2,6 +2,7 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiElement
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtBlockExpression
import org.jetbrains.kotlin.psi.KtExpression
import org.jetbrains.kotlin.psi.KtWhenEntry
@@ -9,6 +10,7 @@ import org.jetbrains.kotlin.utils.addToStdlib.safeAs
import org.jetbrains.uast.*
import org.jetbrains.uast.kotlin.kinds.KotlinSpecialExpressionKinds
+@ApiStatus.Internal
class KotlinUSwitchEntry(
override val sourcePsi: KtWhenEntry,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUSwitchExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUSwitchExpression.kt
index 0ded104b4351..feadc6e0910b 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUSwitchExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUSwitchExpression.kt
@@ -2,11 +2,12 @@
package org.jetbrains.uast.kotlin
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtWhenExpression
import org.jetbrains.uast.*
-import org.jetbrains.uast.kotlin.*
import org.jetbrains.uast.kotlin.kinds.KotlinSpecialExpressionKinds
+@ApiStatus.Internal
class KotlinUSwitchExpression(
override val sourcePsi: KtWhenExpression,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUTryExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUTryExpression.kt
index cce86bf205e0..b5594ac94f6f 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUTryExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUTryExpression.kt
@@ -2,9 +2,11 @@
package org.jetbrains.uast.kotlin
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtTryExpression
import org.jetbrains.uast.*
+@ApiStatus.Internal
class KotlinUTryExpression(
override val sourcePsi: KtTryExpression,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUWhileExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUWhileExpression.kt
index 981df98799cf..93ac0e42cb67 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUWhileExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/controlStructures/KotlinUWhileExpression.kt
@@ -2,11 +2,13 @@
package org.jetbrains.uast.kotlin
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtWhileExpression
import org.jetbrains.uast.UElement
import org.jetbrains.uast.UIdentifier
import org.jetbrains.uast.UWhileExpression
+@ApiStatus.Internal
class KotlinUWhileExpression(
override val sourcePsi: KtWhileExpression,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/AbstractKotlinUClass.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/AbstractKotlinUClass.kt
index 27c0d1466d2d..849428388f93 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/AbstractKotlinUClass.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/AbstractKotlinUClass.kt
@@ -2,6 +2,7 @@
package org.jetbrains.uast.kotlin
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.asJava.classes.KtLightClass
import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtDelegatedSuperTypeEntry
@@ -10,6 +11,7 @@ import org.jetbrains.uast.*
import org.jetbrains.uast.internal.acceptList
import org.jetbrains.uast.visitor.UastVisitor
+@ApiStatus.Internal
abstract class AbstractKotlinUClass(
givenParent: UElement?
) : KotlinAbstractUElement(givenParent), UClass, UAnchorOwner {
@@ -23,17 +25,19 @@ abstract class AbstractKotlinUClass(
}
}
- open val ktClass: KtClassOrObject? get() = (psi as? KtLightClass)?.kotlinOrigin
+ protected open val ktClass: KtClassOrObject?
+ get() = (psi as? KtLightClass)?.kotlinOrigin
override val uastSuperTypes: List<UTypeReferenceExpression>
get() = ktClass?.superTypeListEntries.orEmpty().mapNotNull { it.typeReference }.map {
KotlinUTypeReferenceExpression(it, this)
}
- val delegateExpressions: List<UExpression>
- get() = ktClass?.superTypeListEntries.orEmpty()
+ private val delegateExpressions: List<UExpression> by lz {
+ ktClass?.superTypeListEntries.orEmpty()
.filterIsInstance<KtDelegatedSuperTypeEntry>()
.map { KotlinSupertypeDelegationUExpression(it, this) }
+ }
override fun accept(visitor: UastVisitor) {
if (visitor.visitClass(this)) return
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/AbstractKotlinUVariable.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/AbstractKotlinUVariable.kt
index cfb3ffd55a90..f54c5d8316b3 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/AbstractKotlinUVariable.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/AbstractKotlinUVariable.kt
@@ -2,6 +2,7 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.*
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.asJava.elements.KtLightAbstractAnnotation
import org.jetbrains.kotlin.asJava.elements.KtLightElement
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
@@ -13,6 +14,7 @@ import org.jetbrains.uast.kotlin.internal.DelegatedMultiResolve
import org.jetbrains.uast.kotlin.psi.UastKotlinPsiParameter
import org.jetbrains.uast.kotlin.psi.UastKotlinPsiVariable
+@ApiStatus.Internal
abstract class AbstractKotlinUVariable(
givenParent: UElement?
) : KotlinAbstractUElement(givenParent), PsiVariable, UVariableEx, UAnchorOwner {
@@ -36,7 +38,7 @@ abstract class AbstractKotlinUVariable(
return languagePlugin?.convertElement(initializerExpression, this) as? UExpression ?: UastEmptyExpression(null)
}
- val delegateExpression: UExpression? by lz {
+ protected val delegateExpression: UExpression? by lz {
val psi = psi
val expression = when (psi) {
is KtLightElement<*, *> -> (psi.kotlinOrigin as? KtProperty)?.delegateExpression
@@ -103,7 +105,7 @@ abstract class AbstractKotlinUVariable(
psi.parameterList.attributes.map { WrappedUNamedExpression(it, this) }
}
- override val uastAnchor by lazy {
+ override val uastAnchor: UIdentifier by lz {
KotlinUIdentifier(
{ javaPsi.nameReferenceElement?.referenceNameElement },
sourcePsi.safeAs<KtAnnotationEntry>()?.typeReference?.nameElement,
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinConstructorUMethod.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinConstructorUMethod.kt
index 9e21ce02503c..c3514b55f31d 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinConstructorUMethod.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinConstructorUMethod.kt
@@ -3,6 +3,7 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiMethod
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.utils.SmartList
@@ -11,6 +12,7 @@ import org.jetbrains.uast.UElement
import org.jetbrains.uast.UExpression
import org.jetbrains.uast.UIdentifier
+@ApiStatus.Internal
open class KotlinConstructorUMethod(
private val ktClass: KtClassOrObject?,
override val psi: PsiMethod,
@@ -26,7 +28,7 @@ open class KotlinConstructorUMethod(
override val javaPsi = psi
- val isPrimary: Boolean
+ internal val isPrimary: Boolean
get() = sourcePsi is KtPrimaryConstructor || sourcePsi is KtClassOrObject
override val uastBody: UExpression? by lz {
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinInvalidUClass.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinInvalidUClass.kt
index bebdb99fcc6f..b60d2de85fbd 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinInvalidUClass.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinInvalidUClass.kt
@@ -6,12 +6,14 @@ import com.intellij.psi.PsiClass
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiFile
import com.intellij.psi.impl.light.LightPsiClassBuilder
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.asJava.classes.KtLightClass
import org.jetbrains.uast.*
/**
* implementation of [UClass] for invalid code, when it is impossible to create a [KtLightClass]
*/
+@ApiStatus.Internal
class KotlinInvalidUClass(
override val psi: PsiClass,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinNullabilityUAnnotation.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinNullabilityUAnnotation.kt
index 5e0bab733cac..c912fca2d250 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinNullabilityUAnnotation.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinNullabilityUAnnotation.kt
@@ -6,12 +6,14 @@ import com.intellij.psi.PsiAnnotation
import com.intellij.psi.PsiClass
import com.intellij.psi.PsiElement
import com.intellij.psi.search.GlobalSearchScope
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.annotations.NotNull
import org.jetbrains.annotations.Nullable
import org.jetbrains.kotlin.types.typeUtil.TypeNullability
import org.jetbrains.uast.*
import org.jetbrains.uast.kotlin.internal.DelegatedMultiResolve
+@ApiStatus.Internal
class KotlinNullabilityUAnnotation(
private val baseKotlinUastResolveProviderService: BaseKotlinUastResolveProviderService,
val annotatedElement: PsiElement,
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinReceiverUParameter.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinReceiverUParameter.kt
index 44b1481c44f0..2d07a2c7405b 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinReceiverUParameter.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinReceiverUParameter.kt
@@ -2,11 +2,13 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiParameter
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
import org.jetbrains.kotlin.psi.KtTypeReference
import org.jetbrains.uast.UAnnotation
import org.jetbrains.uast.UElement
+@ApiStatus.Internal
class KotlinReceiverUParameter(
psi: PsiParameter,
private val receiver: KtTypeReference,
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinScriptUClass.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinScriptUClass.kt
index 32cdd27d3974..f6589e04affb 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinScriptUClass.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinScriptUClass.kt
@@ -5,6 +5,7 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.*
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.asJava.classes.KtLightClassForScript
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
import org.jetbrains.kotlin.psi.KtClassOrObject
@@ -12,6 +13,7 @@ import org.jetbrains.kotlin.psi.KtScript
import org.jetbrains.kotlin.psi.KtScriptInitializer
import org.jetbrains.uast.*
+@ApiStatus.Internal
class KotlinScriptUClass(
psi: KtLightClassForScript,
givenParent: UElement?
@@ -20,7 +22,7 @@ class KotlinScriptUClass(
override fun getNameIdentifier(): PsiIdentifier = UastLightIdentifier(psi, psi.kotlinOrigin)
- override val uastAnchor by lazy { KotlinUIdentifier(nameIdentifier, sourcePsi?.nameIdentifier, this) }
+ override val uastAnchor: UIdentifier by lz { KotlinUIdentifier(nameIdentifier, sourcePsi?.nameIdentifier, this) }
override val javaPsi: PsiClass = psi
@@ -50,6 +52,7 @@ class KotlinScriptUClass(
override fun getOriginalElement(): PsiElement? = psi.originalElement
+ @ApiStatus.Internal
class KotlinScriptConstructorUMethod(
script: KtScript,
override val psi: KtLightMethod,
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinSecondaryConstructorWithInitializersUMethod.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinSecondaryConstructorWithInitializersUMethod.kt
index 9db4147640e6..5d0ba29bfbf0 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinSecondaryConstructorWithInitializersUMethod.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinSecondaryConstructorWithInitializersUMethod.kt
@@ -2,6 +2,7 @@
package org.jetbrains.uast.kotlin
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtExpression
@@ -10,6 +11,7 @@ import org.jetbrains.uast.UElement
// This class was created as a workaround for KT-21617 to be the only constructor which includes `init` block
// when there is no primary constructors in the class.
// It is expected to have only one constructor of this type in a UClass.
+@ApiStatus.Internal
class KotlinSecondaryConstructorWithInitializersUMethod(
ktClass: KtClassOrObject?,
psi: KtLightMethod,
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUAnnotatedLocalVariable.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUAnnotatedLocalVariable.kt
index 383b6204a173..0d0023143e8b 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUAnnotatedLocalVariable.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUAnnotatedLocalVariable.kt
@@ -2,10 +2,12 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiLocalVariable
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.uast.UAnnotation
import org.jetbrains.uast.UElement
+@ApiStatus.Internal
open class KotlinUAnnotatedLocalVariable(
psi: PsiLocalVariable,
sourcePsi: KtElement,
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUAnnotation.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUAnnotation.kt
index 5bea2bb5c638..4e659c233d6f 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUAnnotation.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUAnnotation.kt
@@ -6,17 +6,15 @@ import com.intellij.psi.PsiAnnotation
import com.intellij.psi.PsiClass
import com.intellij.psi.PsiElement
import com.intellij.psi.ResolveResult
-import org.jetbrains.kotlin.asJava.toLightAnnotation
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
-import org.jetbrains.kotlin.idea.util.actionUnderSafeAnalyzeBlock
import org.jetbrains.kotlin.psi.*
-import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
-import org.jetbrains.kotlin.resolve.lazy.ForceResolveUtil
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
import org.jetbrains.uast.*
import org.jetbrains.uast.kotlin.internal.multiResolveResults
+@ApiStatus.Internal
sealed class KotlinUAnnotationBase<T : KtCallElement>(
final override val sourcePsi: T,
givenParent: UElement?
@@ -72,13 +70,14 @@ sealed class KotlinUAnnotationBase<T : KtCallElement>(
override fun multiResolve(): Iterable<ResolveResult> = sourcePsi.multiResolveResults().asIterable()
}
+@ApiStatus.Internal
class KotlinUAnnotation(
annotationEntry: KtAnnotationEntry,
givenParent: UElement?
) : KotlinUAnnotationBase<KtAnnotationEntry>(annotationEntry, givenParent), UAnnotation {
override val javaPsi: PsiAnnotation? by lz {
- annotationEntry.actionUnderSafeAnalyzeBlock({ annotationEntry.toLightAnnotation() }, { null })
+ baseResolveProviderService.convertToPsiAnnotation(annotationEntry)
}
override fun annotationUseSiteTarget() = sourcePsi.useSiteTarget?.getAnnotationUseSiteTarget()
@@ -87,7 +86,7 @@ class KotlinUAnnotation(
return baseResolveProviderService.resolveToClass(sourcePsi, this)
}
- override val uastAnchor by lz {
+ override val uastAnchor: UIdentifier by lz {
KotlinUIdentifier(
javaPsi?.nameReferenceElement,
annotationEntry.typeReference?.nameElement,
@@ -97,12 +96,15 @@ class KotlinUAnnotation(
}
+@ApiStatus.Internal
class KotlinUNestedAnnotation private constructor(
original: KtCallExpression,
givenParent: UElement?
) : KotlinUAnnotationBase<KtCallExpression>(original, givenParent) {
- override val javaPsi: PsiAnnotation? by lz { original.toLightAnnotation() }
+ override val javaPsi: PsiAnnotation? by lz {
+ baseResolveProviderService.convertToPsiAnnotation(original)
+ }
override fun annotationUseSiteTarget(): AnnotationUseSiteTarget? = null
@@ -110,7 +112,7 @@ class KotlinUNestedAnnotation private constructor(
return baseResolveProviderService.resolveToClassIfConstructorCall(sourcePsi, this)
}
- override val uastAnchor by lz {
+ override val uastAnchor: UIdentifier by lz {
KotlinUIdentifier(
javaPsi?.nameReferenceElement?.referenceNameElement,
(original.calleeExpression as? KtNameReferenceExpression)?.getReferencedNameElement(),
@@ -129,5 +131,3 @@ class KotlinUNestedAnnotation private constructor(
}
}
-
-
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUAnnotationMethod.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUAnnotationMethod.kt
index a01309976b63..64f1a09dbad0 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUAnnotationMethod.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUAnnotationMethod.kt
@@ -2,10 +2,12 @@
package org.jetbrains.uast.kotlin
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
import org.jetbrains.kotlin.psi.KtParameter
import org.jetbrains.uast.*
+@ApiStatus.Internal
class KotlinUAnnotationMethod(
psi: KtLightMethod,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUAnonymousClass.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUAnonymousClass.kt
index 723431117a22..d1d5649e61fc 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUAnonymousClass.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUAnonymousClass.kt
@@ -5,11 +5,13 @@ package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiAnonymousClass
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiFile
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.asJava.classes.KtLightClass
import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtObjectDeclaration
import org.jetbrains.uast.*
+@ApiStatus.Internal
class KotlinUAnonymousClass(
psi: PsiAnonymousClass,
givenParent: UElement?
@@ -31,8 +33,8 @@ class KotlinUAnonymousClass(
override fun getContainingFile(): PsiFile = unwrapFakeFileForLightClass(psi.containingFile)
- override val uastAnchor by lazy {
- val ktClassOrObject = (psi.originalElement as? KtLightClass)?.kotlinOrigin as? KtObjectDeclaration ?: return@lazy null
+ override val uastAnchor: UIdentifier? by lz {
+ val ktClassOrObject = (psi.originalElement as? KtLightClass)?.kotlinOrigin as? KtObjectDeclaration ?: return@lz null
KotlinUIdentifier(ktClassOrObject.getObjectKeyword(), this)
}
}
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUClass.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUClass.kt
index a8a0ff24bdd6..6b4321f336e4 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUClass.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUClass.kt
@@ -3,6 +3,7 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.*
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.asJava.classes.KtLightClass
import org.jetbrains.kotlin.asJava.classes.KtLightClassForFacade
import org.jetbrains.kotlin.asJava.classes.KtLightClassForScript
@@ -14,6 +15,7 @@ import org.jetbrains.kotlin.psi.KtObjectDeclaration
import org.jetbrains.kotlin.utils.addIfNotNull
import org.jetbrains.uast.*
+@ApiStatus.Internal
class KotlinUClass(
psi: KtLightClass,
givenParent: UElement?
@@ -34,7 +36,9 @@ class KotlinUClass(
override fun getContainingFile(): PsiFile = unwrapFakeFileForLightClass(psi.containingFile)
- override val uastAnchor by lazy { getIdentifierSourcePsi()?.let { KotlinUIdentifier(nameIdentifier, it, this) } }
+ override val uastAnchor: UIdentifier? by lz {
+ getIdentifierSourcePsi()?.let { KotlinUIdentifier(nameIdentifier, it, this) }
+ }
private fun getIdentifierSourcePsi(): PsiElement? {
ktClass?.nameIdentifier?.let { return it }
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUEnumConstant.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUEnumConstant.kt
index de5d801cb459..97b480d86945 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUEnumConstant.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUEnumConstant.kt
@@ -3,6 +3,7 @@ package org.jetbrains.uast.kotlin
import com.intellij.psi.*
import com.intellij.psi.util.PsiTypesUtil
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.asJava.classes.KtLightClass
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
import org.jetbrains.kotlin.psi.KtElement
@@ -11,6 +12,7 @@ import org.jetbrains.kotlin.psi.KtSuperTypeCallEntry
import org.jetbrains.uast.*
import org.jetbrains.uast.kotlin.internal.DelegatedMultiResolve
+@ApiStatus.Internal
class KotlinUEnumConstant(
psi: PsiEnumConstant,
override val sourcePsi: KtElement?,
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUField.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUField.kt
index 6bebb0ab0ac1..b037a50dcde5 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUField.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUField.kt
@@ -2,6 +2,7 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.*
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtProperty
@@ -11,6 +12,7 @@ import org.jetbrains.uast.UFieldEx
import org.jetbrains.uast.internal.acceptList
import org.jetbrains.uast.visitor.UastVisitor
+@ApiStatus.Internal
open class KotlinUField(
psi: PsiField,
override val sourcePsi: KtElement?,
@@ -22,6 +24,10 @@ open class KotlinUField(
override val psi = javaPsi
+ override fun getType(): PsiType {
+ return delegateExpression?.getExpressionType() ?: javaPsi.type
+ }
+
override fun acceptsAnnotationTarget(target: AnnotationUseSiteTarget?): Boolean =
target == AnnotationUseSiteTarget.FIELD ||
target == AnnotationUseSiteTarget.PROPERTY_DELEGATE_FIELD ||
@@ -54,4 +60,21 @@ open class KotlinUField(
delegateExpression?.accept(visitor)
visitor.afterVisitField(this)
}
+
+ override fun asRenderString(): String = buildString {
+ if (uAnnotations.isNotEmpty()) {
+ uAnnotations.joinTo(this, separator = " ", postfix = " ") { it.asRenderString() }
+ }
+ append(javaPsi.renderModifiers())
+ // NB: use of (potentially delegated) `type`, instead of `javaPsiInternal.type`, is the only major difference.
+ append("var ").append(javaPsi.name).append(": ").append(type.getCanonicalText(false))
+ uastInitializer?.let { initializer -> append(" = " + initializer.asRenderString()) }
+ }
+}
+
+// copy of internal org.jetbrains.uast.InternalUastUtilsKt.renderModifiers
+// original function should be used instead as soon as becomes public
+private fun PsiModifierListOwner.renderModifiers(): String {
+ val modifiers = PsiModifier.MODIFIERS.filter { hasModifierProperty(it) }.joinToString(" ")
+ return if (modifiers.isEmpty()) "" else modifiers + " "
}
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUFile.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUFile.kt
index 9f3b9a3ede57..7737582d0006 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUFile.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUFile.kt
@@ -3,6 +3,7 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.*
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.asJava.findFacadeClass
import org.jetbrains.kotlin.asJava.toLightClass
import org.jetbrains.kotlin.psi.KtClassOrObject
@@ -11,6 +12,7 @@ import org.jetbrains.uast.*
import org.jetbrains.uast.kotlin.internal.KotlinUElementWithComments
import java.util.ArrayList
+@ApiStatus.Internal
class KotlinUFile(
override val psi: KtFile,
override val languagePlugin: UastLanguagePlugin
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUIdentifier.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUIdentifier.kt
index f5a49a9f8a4a..fad4bb63366b 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUIdentifier.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUIdentifier.kt
@@ -5,6 +5,7 @@ package org.jetbrains.uast.kotlin
import com.intellij.openapi.application.ApplicationManager
import com.intellij.psi.PsiElement
import com.intellij.psi.impl.source.tree.LeafPsiElement
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.kdoc.psi.impl.KDocName
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.utils.KotlinExceptionWithAttachments
@@ -12,7 +13,8 @@ import org.jetbrains.uast.UElement
import org.jetbrains.uast.UIdentifier
import org.jetbrains.uast.toUElement
-class KotlinUIdentifier constructor(
+@ApiStatus.Internal
+class KotlinUIdentifier(
javaPsiSupplier: () -> PsiElement?,
override val sourcePsi: PsiElement?,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUImportStatement.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUImportStatement.kt
index a2748915bee0..795c124fd6a3 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUImportStatement.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUImportStatement.kt
@@ -3,6 +3,7 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiElement
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtExpression
import org.jetbrains.kotlin.psi.KtImportDirective
import org.jetbrains.kotlin.psi.KtReferenceExpression
@@ -12,6 +13,7 @@ import org.jetbrains.uast.UImportStatement
import org.jetbrains.uast.USimpleNameReferenceExpression
import org.jetbrains.uast.kotlin.internal.DelegatedMultiResolve
+@ApiStatus.Internal
class KotlinUImportStatement(
override val psi: KtImportDirective,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinULocalVariable.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinULocalVariable.kt
index 62c0eb1eb1eb..16c874fd5204 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinULocalVariable.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinULocalVariable.kt
@@ -2,6 +2,7 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.*
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.uast.UElement
@@ -10,6 +11,7 @@ import org.jetbrains.uast.ULocalVariableEx
import org.jetbrains.uast.internal.acceptList
import org.jetbrains.uast.visitor.UastVisitor
+@ApiStatus.Internal
open class KotlinULocalVariable(
psi: PsiLocalVariable,
override val sourcePsi: KtElement?,
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt
index d9bb66cc0e67..2763177d99ab 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethod.kt
@@ -7,11 +7,11 @@ import com.intellij.psi.PsiFile
import com.intellij.psi.PsiMethod
import com.intellij.psi.PsiNameIdentifierOwner
import com.intellij.psi.PsiParameter
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.asJava.elements.KtLightElement
import org.jetbrains.kotlin.asJava.elements.KtLightMethod
import org.jetbrains.kotlin.asJava.elements.isGetter
import org.jetbrains.kotlin.asJava.elements.isSetter
-import org.jetbrains.kotlin.idea.util.actionUnderSafeAnalyzeBlock
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
@@ -19,6 +19,7 @@ import org.jetbrains.kotlin.utils.SmartList
import org.jetbrains.uast.*
import org.jetbrains.uast.kotlin.psi.UastKotlinPsiParameter
+@ApiStatus.Internal
open class KotlinUMethod(
psi: PsiMethod,
final override val sourcePsi: KtDeclaration?,
@@ -61,7 +62,9 @@ open class KotlinUMethod(
override fun getNameIdentifier() = UastLightIdentifier(psi, kotlinOrigin)
override val uAnnotations: List<UAnnotation> by lz {
- psi.actionUnderSafeAnalyzeBlock({ psi.annotations }, { emptyArray<PsiAnnotation>() })
+ // NB: we can't use sourcePsi.annotationEntries directly due to annotation use-site targets. The given `psi` as a light element,
+ // which spans regular function, property accessors, etc., is already built with targeted annotation.
+ baseResolveProviderService.getPsiAnnotations(psi)
.mapNotNull { (it as? KtLightElement<*, *>)?.kotlinOrigin as? KtAnnotationEntry }
.map { baseResolveProviderService.baseKotlinConverter.convertAnnotation(it, this) }
}
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethodWithFakeLightDelegate.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethodWithFakeLightDelegate.kt
index 3895b7fef965..6735950dad06 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethodWithFakeLightDelegate.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUMethodWithFakeLightDelegate.kt
@@ -4,10 +4,12 @@ package org.jetbrains.uast.kotlin
import com.intellij.openapi.util.TextRange
import com.intellij.psi.*
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.*
import org.jetbrains.uast.*
import org.jetbrains.uast.kotlin.psi.UastFakeLightMethod
+@ApiStatus.Internal
class KotlinUMethodWithFakeLightDelegate(
val original: KtFunction,
fakePsi: UastFakeLightMethod,
@@ -17,13 +19,12 @@ class KotlinUMethodWithFakeLightDelegate(
constructor(original: KtFunction, containingLightClass: PsiClass, givenParent: UElement?)
: this(original, UastFakeLightMethod(original, containingLightClass), givenParent)
- private val _annotations: List<UAnnotation> by lz {
- original.annotationEntries.mapNotNull { it.toUElementOfType() }
+ override val uAnnotations: List<UAnnotation> by lz {
+ original.annotationEntries.map {
+ baseResolveProviderService.baseKotlinConverter.convertAnnotation(it, this)
+ }
}
- override val uAnnotations: List<UAnnotation>
- get() = _annotations
-
override fun getTextRange(): TextRange {
return original.textRange
}
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUParameter.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUParameter.kt
index 3ce042b57426..3b12d85d68de 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUParameter.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUParameter.kt
@@ -2,6 +2,7 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.*
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
@@ -9,6 +10,7 @@ import org.jetbrains.uast.UElement
import org.jetbrains.uast.UParameter
import org.jetbrains.uast.UParameterEx
+@ApiStatus.Internal
open class KotlinUParameter(
psi: PsiParameter,
final override val sourcePsi: KtElement?,
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUVariable.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUVariable.kt
index 8ee45e2ab1f1..14842d4f8f95 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUVariable.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/KotlinUVariable.kt
@@ -2,11 +2,13 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.*
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.uast.UElement
import org.jetbrains.uast.UVariable
+@ApiStatus.Internal
class KotlinUVariable(
psi: PsiVariable,
override val sourcePsi: KtElement,
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/UastLightIdentifier.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/UastLightIdentifier.kt
index c75f7c0bc991..884fb4f9f9a7 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/UastLightIdentifier.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/declarations/UastLightIdentifier.kt
@@ -4,15 +4,11 @@ package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiFile
import com.intellij.psi.PsiNameIdentifierOwner
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.asJava.elements.KtLightIdentifier
-import org.jetbrains.kotlin.kdoc.psi.impl.KDocName
import org.jetbrains.kotlin.psi.*
-import org.jetbrains.kotlin.utils.KotlinExceptionWithAttachments
-import org.jetbrains.uast.UElement
-import org.jetbrains.uast.UIdentifier
-import org.jetbrains.uast.kotlin.createKDocNameSimpleNameReference
-import org.jetbrains.uast.toUElement
+@ApiStatus.Internal
class UastLightIdentifier(
lightOwner: PsiNameIdentifierOwner,
ktDeclaration: KtDeclaration?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinClassViaConstructorUSimpleReferenceExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinClassViaConstructorUSimpleReferenceExpression.kt
index ef1c8be61bd1..4ead113ceede 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinClassViaConstructorUSimpleReferenceExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinClassViaConstructorUSimpleReferenceExpression.kt
@@ -8,12 +8,14 @@ import com.intellij.psi.PsiClass
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiMethod
import com.intellij.psi.PsiNamedElement
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtCallElement
import org.jetbrains.uast.UElement
import org.jetbrains.uast.USimpleNameReferenceExpression
import org.jetbrains.uast.internal.log
import org.jetbrains.uast.visitor.UastVisitor
+@ApiStatus.Internal
class KotlinClassViaConstructorUSimpleReferenceExpression(
override val sourcePsi: KtCallElement,
override val identifier: String,
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinCustomUBinaryExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinCustomUBinaryExpression.kt
index b6f4f9e7b1fe..83118d956889 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinCustomUBinaryExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinCustomUBinaryExpression.kt
@@ -3,8 +3,10 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiElement
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.uast.*
+@ApiStatus.Internal
class KotlinCustomUBinaryExpression(
override val psi: PsiElement,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinCustomUBinaryExpressionWithType.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinCustomUBinaryExpressionWithType.kt
index e4865ea9b22d..4d882b716401 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinCustomUBinaryExpressionWithType.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinCustomUBinaryExpressionWithType.kt
@@ -4,8 +4,10 @@ package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiType
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.uast.*
+@ApiStatus.Internal
class KotlinCustomUBinaryExpressionWithType(
override val psi: PsiElement,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinDocUQualifiedReferenceExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinDocUQualifiedReferenceExpression.kt
index 7b90400199f3..80874dfdfcbe 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinDocUQualifiedReferenceExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinDocUQualifiedReferenceExpression.kt
@@ -4,10 +4,12 @@ package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiNamedElement
import com.intellij.psi.ResolveResult
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.kdoc.psi.impl.KDocName
import org.jetbrains.uast.*
import org.jetbrains.uast.kotlin.internal.multiResolveResults
+@ApiStatus.Internal
class KotlinDocUQualifiedReferenceExpression(
override val sourcePsi: KDocName,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinEvaluatableUElement.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinEvaluatableUElement.kt
index 50a668aaaa34..1e4cfafb228f 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinEvaluatableUElement.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinEvaluatableUElement.kt
@@ -2,8 +2,10 @@
package org.jetbrains.uast.kotlin
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.uast.UExpression
+@ApiStatus.Internal
interface KotlinEvaluatableUElement : UExpression {
val baseResolveProviderService: BaseKotlinUastResolveProviderService
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinLazyUBlockExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinLazyUBlockExpression.kt
index 542d6797b461..f688e5814910 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinLazyUBlockExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinLazyUBlockExpression.kt
@@ -3,9 +3,11 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiElement
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtAnonymousInitializer
import org.jetbrains.uast.*
+@ApiStatus.Internal
class KotlinLazyUBlockExpression(
override val uastParent: UElement?,
expressionProducer: (expressionParent: UElement) -> List<UExpression>
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinLocalFunctionULambdaExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinLocalFunctionULambdaExpression.kt
index 6df44b2f5a91..a0666bf2fd04 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinLocalFunctionULambdaExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinLocalFunctionULambdaExpression.kt
@@ -2,10 +2,12 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiType
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtFunction
import org.jetbrains.uast.*
import org.jetbrains.uast.kotlin.psi.UastKotlinPsiParameter
+@ApiStatus.Internal
class KotlinLocalFunctionULambdaExpression(
override val sourcePsi: KtFunction,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinLocalFunctionUVariable.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinLocalFunctionUVariable.kt
index eba344dfd714..0de28430da5a 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinLocalFunctionUVariable.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinLocalFunctionUVariable.kt
@@ -4,10 +4,12 @@ package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiExpression
import com.intellij.psi.PsiVariable
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtFunction
import org.jetbrains.uast.*
import org.jetbrains.uast.kotlin.psi.UastKotlinPsiVariable
+@ApiStatus.Internal
class KotlinLocalFunctionUVariable(
val function: KtFunction,
override val javaPsi: PsiVariable,
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinStringTemplateUPolyadicExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinStringTemplateUPolyadicExpression.kt
index 50d38665bce7..450e371f4966 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinStringTemplateUPolyadicExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinStringTemplateUPolyadicExpression.kt
@@ -3,10 +3,12 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiLanguageInjectionHost
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtStringTemplateExpression
import org.jetbrains.uast.*
import org.jetbrains.uast.expressions.UInjectionHost
+@ApiStatus.Internal
class KotlinStringTemplateUPolyadicExpression(
override val sourcePsi: KtStringTemplateExpression,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinStringULiteralExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinStringULiteralExpression.kt
index 46326bd2343f..f461e8a62ede 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinStringULiteralExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinStringULiteralExpression.kt
@@ -4,12 +4,14 @@ package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiType
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtEscapeStringTemplateEntry
import org.jetbrains.uast.UElement
import org.jetbrains.uast.ULiteralExpression
import org.jetbrains.uast.kotlin.internal.KotlinFakeUElement
import org.jetbrains.uast.wrapULiteral
+@ApiStatus.Internal
class KotlinStringULiteralExpression(
override val sourcePsi: PsiElement,
givenParent: UElement?,
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinStringUSimpleReferenceExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinStringUSimpleReferenceExpression.kt
index 992e59faa3e3..2b045ac0fdc6 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinStringUSimpleReferenceExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinStringUSimpleReferenceExpression.kt
@@ -4,12 +4,14 @@ package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiNamedElement
import com.intellij.psi.ResolveResult
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.uast.UElement
import org.jetbrains.uast.UMultiResolvable
import org.jetbrains.uast.USimpleNameReferenceExpression
import org.jetbrains.uast.kotlin.internal.multiResolveResults
+@ApiStatus.Internal
class KotlinStringUSimpleReferenceExpression(
override val identifier: String,
givenParent: UElement?,
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinSupertypeDelegationUExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinSupertypeDelegationUExpression.kt
index f5fd256d2a39..cd7e6adbee0f 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinSupertypeDelegationUExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinSupertypeDelegationUExpression.kt
@@ -3,10 +3,12 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiElement
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtDelegatedSuperTypeEntry
import org.jetbrains.uast.*
import org.jetbrains.uast.kotlin.kinds.KotlinSpecialExpressionKinds
+@ApiStatus.Internal
class KotlinSupertypeDelegationUExpression(
override val sourcePsi: KtDelegatedSuperTypeEntry,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUArrayAccessExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUArrayAccessExpression.kt
index b3413b3a6379..d0bbed38c55c 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUArrayAccessExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUArrayAccessExpression.kt
@@ -2,10 +2,12 @@
package org.jetbrains.uast.kotlin
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtArrayAccessExpression
import org.jetbrains.uast.UArrayAccessExpression
import org.jetbrains.uast.UElement
+@ApiStatus.Internal
class KotlinUArrayAccessExpression(
override val sourcePsi: KtArrayAccessExpression,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUBinaryExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUBinaryExpression.kt
index df2111bf3787..8dca70bd539e 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUBinaryExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUBinaryExpression.kt
@@ -3,6 +3,7 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiMethod
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.KtBinaryExpression
import org.jetbrains.uast.UBinaryExpression
@@ -10,6 +11,7 @@ import org.jetbrains.uast.UElement
import org.jetbrains.uast.UIdentifier
import org.jetbrains.uast.UastBinaryOperator
+@ApiStatus.Internal
class KotlinUBinaryExpression(
override val sourcePsi: KtBinaryExpression,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUBinaryExpressionWithType.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUBinaryExpressionWithType.kt
index f9d0c0c31151..63942059b773 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUBinaryExpressionWithType.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUBinaryExpressionWithType.kt
@@ -2,10 +2,12 @@
package org.jetbrains.uast.kotlin
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.KtBinaryExpressionWithTypeRHS
import org.jetbrains.uast.*
+@ApiStatus.Internal
class KotlinUBinaryExpressionWithType(
override val sourcePsi: KtBinaryExpressionWithTypeRHS,
givenParent: UElement?
@@ -20,7 +22,7 @@ class KotlinUBinaryExpressionWithType(
} ?: UastErrorType
}
- override val typeReference by lz {
+ override val typeReference: UTypeReferenceExpression? by lz {
sourcePsi.right?.let {
KotlinUTypeReferenceExpression(it, this) { type }
}
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUBlockExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUBlockExpression.kt
index a9016b7debd3..0b49476d67a2 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUBlockExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUBlockExpression.kt
@@ -2,12 +2,14 @@
package org.jetbrains.uast.kotlin
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtAnonymousInitializer
import org.jetbrains.kotlin.psi.KtBlockExpression
import org.jetbrains.uast.UBlockExpression
import org.jetbrains.uast.UElement
import org.jetbrains.uast.getContainingUClass
+@ApiStatus.Internal
open class KotlinUBlockExpression(
override val sourcePsi: KtBlockExpression,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUBreakExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUBreakExpression.kt
index 4a4d7b3e305a..671c80964cbd 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUBreakExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUBreakExpression.kt
@@ -2,11 +2,12 @@
package org.jetbrains.uast.kotlin
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtBreakExpression
import org.jetbrains.uast.UBreakExpression
import org.jetbrains.uast.UElement
-import org.jetbrains.uast.kotlin.KotlinAbstractUExpression
+@ApiStatus.Internal
class KotlinUBreakExpression(
override val sourcePsi: KtBreakExpression,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUCallableReferenceExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUCallableReferenceExpression.kt
index 7aa1c5b48ca8..fb7e30781aa6 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUCallableReferenceExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUCallableReferenceExpression.kt
@@ -5,10 +5,12 @@ package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiNamedElement
import com.intellij.psi.ResolveResult
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtCallableReferenceExpression
import org.jetbrains.uast.*
import org.jetbrains.uast.kotlin.internal.getResolveResultVariants
+@ApiStatus.Internal
class KotlinUCallableReferenceExpression(
override val sourcePsi: KtCallableReferenceExpression,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUClassLiteralExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUClassLiteralExpression.kt
index 454486b4f3b4..3840f257291d 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUClassLiteralExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUClassLiteralExpression.kt
@@ -2,12 +2,14 @@
package org.jetbrains.uast.kotlin
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtClassLiteralExpression
import org.jetbrains.uast.DEFAULT_EXPRESSION_TYPES_LIST
import org.jetbrains.uast.UClassLiteralExpression
import org.jetbrains.uast.UElement
import org.jetbrains.uast.UExpression
+@ApiStatus.Internal
class KotlinUClassLiteralExpression(
override val sourcePsi: KtClassLiteralExpression,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUCollectionLiteralExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUCollectionLiteralExpression.kt
index 6832ab6b4814..b9f27b0818af 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUCollectionLiteralExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUCollectionLiteralExpression.kt
@@ -6,10 +6,12 @@ import com.intellij.psi.PsiArrayType
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiMethod
import com.intellij.psi.PsiType
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtCollectionLiteralExpression
import org.jetbrains.uast.*
import org.jetbrains.uast.kotlin.internal.DelegatedMultiResolve
+@ApiStatus.Internal
class KotlinUCollectionLiteralExpression(
override val sourcePsi: KtCollectionLiteralExpression,
givenParent: UElement?
@@ -19,7 +21,7 @@ class KotlinUCollectionLiteralExpression(
override val kind: UastCallKind = UastCallKind.NESTED_ARRAY_INITIALIZER
- override val methodIdentifier: UIdentifier? by lazy { UIdentifier(sourcePsi.leftBracket, this) }
+ override val methodIdentifier: UIdentifier? by lz { UIdentifier(sourcePsi.leftBracket, this) }
override val methodName: String? get() = null
@@ -36,7 +38,7 @@ class KotlinUCollectionLiteralExpression(
override val valueArgumentCount: Int
get() = sourcePsi.getInnerExpressions().size
- override val valueArguments by lazy {
+ override val valueArguments by lz {
sourcePsi.getInnerExpressions().map {
baseResolveProviderService.baseKotlinConverter.convertOrEmpty(it, this)
}
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUContinueExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUContinueExpression.kt
index 32eeab3d30b6..f5385b2cef69 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUContinueExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUContinueExpression.kt
@@ -2,11 +2,12 @@
package org.jetbrains.uast.kotlin
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtContinueExpression
import org.jetbrains.uast.UContinueExpression
import org.jetbrains.uast.UElement
-import org.jetbrains.uast.kotlin.KotlinAbstractUExpression
+@ApiStatus.Internal
class KotlinUContinueExpression(
override val sourcePsi: KtContinueExpression,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUDeclarationsExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUDeclarationsExpression.kt
index 2cee06b32154..c3bf4f6b38cc 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUDeclarationsExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUDeclarationsExpression.kt
@@ -1,9 +1,13 @@
// Copyright 2000-2021 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
-package org.jetbrains.uast
+package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiElement
-import org.jetbrains.uast.kotlin.KotlinAbstractUExpression
+import org.jetbrains.annotations.ApiStatus
+import org.jetbrains.uast.UDeclaration
+import org.jetbrains.uast.UDeclarationsExpression
+import org.jetbrains.uast.UElement
+@ApiStatus.Internal
open class KotlinUDeclarationsExpression(
override val psi: PsiElement?,
givenParent: UElement?,
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUDestructuringDeclarationExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUDestructuringDeclarationExpression.kt
index 609e1941ecfb..07d58b7b8560 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUDestructuringDeclarationExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUDestructuringDeclarationExpression.kt
@@ -3,9 +3,10 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiElement
-import org.jetbrains.uast.KotlinUDeclarationsExpression
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.uast.UElement
+@ApiStatus.Internal
class KotlinUDestructuringDeclarationExpression(
givenParent: UElement?,
psiAnchor: PsiElement,
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUElementWithType.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUElementWithType.kt
index 7d7b8dc948ba..1c99531eba7a 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUElementWithType.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUElementWithType.kt
@@ -3,9 +3,11 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiType
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtExpression
import org.jetbrains.uast.UExpression
+@ApiStatus.Internal
interface KotlinUElementWithType : UExpression {
val baseResolveProviderService: BaseKotlinUastResolveProviderService
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUExpressionList.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUExpressionList.kt
index 19dbbca219ed..3318407cbb9c 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUExpressionList.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUExpressionList.kt
@@ -3,12 +3,14 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiElement
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.uast.UElement
import org.jetbrains.uast.UExpression
import org.jetbrains.uast.UExpressionList
import org.jetbrains.uast.UastSpecialExpressionKind
import org.jetbrains.uast.kotlin.kinds.KotlinSpecialExpressionKinds
+@ApiStatus.Internal
open class KotlinUExpressionList(
override val sourcePsi: PsiElement?,
override val kind: UastSpecialExpressionKind, // original element
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUFunctionCallExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUFunctionCallExpression.kt
index 16c5c76d303e..c187120c6eaa 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUFunctionCallExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUFunctionCallExpression.kt
@@ -4,12 +4,14 @@ package org.jetbrains.uast.kotlin
import com.intellij.psi.*
import com.intellij.psi.util.PsiTypesUtil
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.*
import org.jetbrains.uast.*
import org.jetbrains.uast.internal.acceptList
import org.jetbrains.uast.kotlin.internal.TypedResolveResult
import org.jetbrains.uast.visitor.UastVisitor
+@ApiStatus.Internal
class KotlinUFunctionCallExpression(
override val sourcePsi: KtCallElement,
givenParent: UElement?,
@@ -23,11 +25,11 @@ class KotlinUFunctionCallExpression(
baseResolveProviderService.resolvedFunctionName(sourcePsi)
}
- override val classReference by lz {
+ override val classReference: UReferenceExpression by lz {
KotlinClassViaConstructorUSimpleReferenceExpression(sourcePsi, methodName.orAnonymous("class"), this)
}
- override val methodIdentifier by lz {
+ override val methodIdentifier: UIdentifier? by lz {
if (sourcePsi is KtSuperTypeCallEntry) {
((sourcePsi.parent as? KtInitializerList)?.parent as? KtEnumEntry)?.let { ktEnumEntry ->
return@lz KotlinUIdentifier(ktEnumEntry.nameIdentifier, this)
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUImplicitReturnExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUImplicitReturnExpression.kt
index 35816a49fab7..7e072f45fbc3 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUImplicitReturnExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUImplicitReturnExpression.kt
@@ -3,11 +3,13 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiElement
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.uast.UElement
import org.jetbrains.uast.UExpression
import org.jetbrains.uast.UReturnExpression
import org.jetbrains.uast.kotlin.internal.KotlinFakeUElement
+@ApiStatus.Internal
class KotlinUImplicitReturnExpression(
givenParent: UElement?,
) : KotlinAbstractUExpression(givenParent), UReturnExpression, KotlinUElementWithType, KotlinFakeUElement {
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinULabeledExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinULabeledExpression.kt
index 21868f00b998..e3d78eb502a4 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinULabeledExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinULabeledExpression.kt
@@ -2,11 +2,13 @@
package org.jetbrains.uast.kotlin
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtLabeledExpression
import org.jetbrains.uast.UElement
import org.jetbrains.uast.UIdentifier
import org.jetbrains.uast.ULabeledExpression
+@ApiStatus.Internal
class KotlinULabeledExpression(
override val sourcePsi: KtLabeledExpression,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinULambdaExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinULambdaExpression.kt
index ffcf9e7ed130..261ef717119f 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinULambdaExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinULambdaExpression.kt
@@ -3,11 +3,13 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiType
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtBlockExpression
import org.jetbrains.kotlin.psi.KtLambdaExpression
import org.jetbrains.uast.*
import org.jetbrains.uast.kotlin.psi.UastKotlinPsiParameter
+@ApiStatus.Internal
class KotlinULambdaExpression(
override val sourcePsi: KtLambdaExpression,
givenParent: UElement?
@@ -20,7 +22,11 @@ class KotlinULambdaExpression(
sourcePsi.bodyExpression?.let { Body(it, this) } ?: UastEmptyExpression(this)
}
- class Body(bodyExpression: KtBlockExpression, parent: KotlinULambdaExpression) : KotlinUBlockExpression(bodyExpression, parent) {
+ @ApiStatus.Internal
+ class Body(
+ bodyExpression: KtBlockExpression,
+ parent: KotlinULambdaExpression
+ ) : KotlinUBlockExpression(bodyExpression, parent) {
override val expressions: List<UExpression> by lz {
val statements = sourcePsi.statements
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinULiteralExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinULiteralExpression.kt
index d0922d5d98ca..9f92c2dec0da 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinULiteralExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinULiteralExpression.kt
@@ -3,6 +3,7 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiElement
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.KtNodeTypes
import org.jetbrains.kotlin.psi.KtConstantExpression
import org.jetbrains.uast.UElement
@@ -10,6 +11,7 @@ import org.jetbrains.uast.ULiteralExpression
import org.jetbrains.uast.kotlin.internal.KotlinFakeUElement
import org.jetbrains.uast.wrapULiteral
+@ApiStatus.Internal
class KotlinULiteralExpression(
override val sourcePsi: KtConstantExpression,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUNamedExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUNamedExpression.kt
index 5716eb82328b..41693f321540 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUNamedExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUNamedExpression.kt
@@ -3,9 +3,11 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiElement
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.ValueArgument
import org.jetbrains.uast.*
+@ApiStatus.Internal
class KotlinUNamedExpression private constructor(
override val name: String?,
override val sourcePsi: PsiElement?,
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUObjectLiteralExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUObjectLiteralExpression.kt
index e9ad511e9929..bd5104755bda 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUObjectLiteralExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUObjectLiteralExpression.kt
@@ -4,13 +4,14 @@ package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiType
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.asJava.toLightClass
import org.jetbrains.kotlin.psi.KtObjectLiteralExpression
import org.jetbrains.kotlin.psi.KtSuperTypeCallEntry
import org.jetbrains.uast.*
-import org.jetbrains.uast.kotlin.*
import org.jetbrains.uast.kotlin.internal.DelegatedMultiResolve
+@ApiStatus.Internal
class KotlinUObjectLiteralExpression(
override val sourcePsi: KtObjectLiteralExpression,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUParenthesizedExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUParenthesizedExpression.kt
index c5a825a6571e..d17112db0381 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUParenthesizedExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUParenthesizedExpression.kt
@@ -2,10 +2,12 @@
package org.jetbrains.uast.kotlin
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtParenthesizedExpression
import org.jetbrains.uast.UElement
import org.jetbrains.uast.UParenthesizedExpression
+@ApiStatus.Internal
class KotlinUParenthesizedExpression(
override val sourcePsi: KtParenthesizedExpression,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUPostfixExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUPostfixExpression.kt
index 01d35a6ff8a0..7a87b27ce290 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUPostfixExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUPostfixExpression.kt
@@ -3,11 +3,13 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiMethod
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.KtPostfixExpression
import org.jetbrains.uast.*
import org.jetbrains.uast.kotlin.internal.DelegatedMultiResolve
+@ApiStatus.Internal
class KotlinUPostfixExpression(
override val sourcePsi: KtPostfixExpression,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUPrefixExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUPrefixExpression.kt
index 6653326daea2..42bef8b8d4fd 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUPrefixExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUPrefixExpression.kt
@@ -3,6 +3,7 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiMethod
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.KtPrefixExpression
import org.jetbrains.uast.UElement
@@ -10,6 +11,7 @@ import org.jetbrains.uast.UIdentifier
import org.jetbrains.uast.UPrefixExpression
import org.jetbrains.uast.UastPrefixOperator
+@ApiStatus.Internal
class KotlinUPrefixExpression(
override val sourcePsi: KtPrefixExpression,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUQualifiedReferenceExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUQualifiedReferenceExpression.kt
index 3792dcd29ef0..726ec2b29520 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUQualifiedReferenceExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUQualifiedReferenceExpression.kt
@@ -4,10 +4,12 @@ package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiNamedElement
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtDotQualifiedExpression
import org.jetbrains.uast.*
import org.jetbrains.uast.kotlin.internal.DelegatedMultiResolve
+@ApiStatus.Internal
class KotlinUQualifiedReferenceExpression(
override val sourcePsi: KtDotQualifiedExpression,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUReturnExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUReturnExpression.kt
index 83789bbf51b6..9b4ebbaf8858 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUReturnExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUReturnExpression.kt
@@ -2,9 +2,11 @@
package org.jetbrains.uast.kotlin
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtReturnExpression
import org.jetbrains.uast.*
+@ApiStatus.Internal
class KotlinUReturnExpression(
override val sourcePsi: KtReturnExpression,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUSafeQualifiedExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUSafeQualifiedExpression.kt
index b3a6e67c2bd3..c10335d62be5 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUSafeQualifiedExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUSafeQualifiedExpression.kt
@@ -5,12 +5,14 @@ package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiNamedElement
import com.intellij.psi.ResolveResult
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtSafeQualifiedExpression
import org.jetbrains.uast.UElement
import org.jetbrains.uast.UMultiResolvable
import org.jetbrains.uast.UQualifiedReferenceExpression
import org.jetbrains.uast.kotlin.internal.getResolveResultVariants
+@ApiStatus.Internal
class KotlinUSafeQualifiedExpression(
override val sourcePsi: KtSafeQualifiedExpression,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUSimpleReferenceExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUSimpleReferenceExpression.kt
index 0fc76ff68940..da6c189c5513 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUSimpleReferenceExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUSimpleReferenceExpression.kt
@@ -7,7 +7,7 @@ package org.jetbrains.uast.kotlin
import com.intellij.openapi.util.Key
import com.intellij.psi.*
-import org.jetbrains.kotlin.idea.references.readWriteAccess
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.findAssignment
import org.jetbrains.uast.*
@@ -17,6 +17,7 @@ import org.jetbrains.uast.visitor.UastVisitor
var PsiElement.destructuringDeclarationInitializer: Boolean? by UserDataProperty(Key.create("kotlin.uast.destructuringDeclarationInitializer"))
+@ApiStatus.Internal
class KotlinUSimpleReferenceExpression(
override val sourcePsi: KtSimpleNameExpression,
givenParent: UElement?
@@ -49,7 +50,7 @@ class KotlinUSimpleReferenceExpression(
private fun visitAccessorCalls(visitor: UastVisitor) {
// Visit Kotlin get-set synthetic Java property calls as function calls
val resolvedMethod = baseResolveProviderService.resolveAccessorCall(sourcePsi) ?: return
- val access = sourcePsi.readWriteAccess(useResolveForReadWrite = false)
+ val access = sourcePsi.readWriteAccess()
val setterValue = if (access.isWrite) {
findAssignment(sourcePsi)?.right ?: run {
visitor.afterVisitSimpleNameReferenceExpression(this)
@@ -68,6 +69,7 @@ class KotlinUSimpleReferenceExpression(
}
}
+ @ApiStatus.Internal
class KotlinAccessorCallExpression(
override val sourcePsi: KtSimpleNameExpression,
givenParent: KotlinUSimpleReferenceExpression,
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUSuperExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUSuperExpression.kt
index 011ab457f9fb..d235b9d2293f 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUSuperExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUSuperExpression.kt
@@ -2,12 +2,14 @@
package org.jetbrains.uast.kotlin
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtSuperExpression
import org.jetbrains.uast.UElement
import org.jetbrains.uast.UIdentifier
import org.jetbrains.uast.USuperExpression
import org.jetbrains.uast.kotlin.internal.DelegatedMultiResolve
+@ApiStatus.Internal
class KotlinUSuperExpression(
override val sourcePsi: KtSuperExpression,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUThisExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUThisExpression.kt
index e4e5b91921cd..29561aa0a130 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUThisExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUThisExpression.kt
@@ -2,12 +2,14 @@
package org.jetbrains.uast.kotlin
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtThisExpression
import org.jetbrains.uast.UElement
import org.jetbrains.uast.UIdentifier
import org.jetbrains.uast.UThisExpression
import org.jetbrains.uast.kotlin.internal.DelegatedMultiResolve
+@ApiStatus.Internal
class KotlinUThisExpression(
override val sourcePsi: KtThisExpression,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUThrowExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUThrowExpression.kt
index a3c350102afa..cde8ae2fb5d2 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUThrowExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUThrowExpression.kt
@@ -2,10 +2,12 @@
package org.jetbrains.uast.kotlin
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtThrowExpression
import org.jetbrains.uast.UElement
import org.jetbrains.uast.UThrowExpression
+@ApiStatus.Internal
class KotlinUThrowExpression(
override val sourcePsi: KtThrowExpression,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUTypeCheckExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUTypeCheckExpression.kt
index 16af8bb80d55..9ceb289cebca 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUTypeCheckExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUTypeCheckExpression.kt
@@ -2,12 +2,14 @@
package org.jetbrains.uast.kotlin
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtIsExpression
import org.jetbrains.uast.UBinaryExpressionWithType
import org.jetbrains.uast.UElement
import org.jetbrains.uast.UastBinaryExpressionWithTypeKind
import org.jetbrains.uast.UastErrorType
+@ApiStatus.Internal
class KotlinUTypeCheckExpression(
override val sourcePsi: KtIsExpression,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUTypeReferenceExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUTypeReferenceExpression.kt
index 85ed54e0ba7b..2d85c49def49 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUTypeReferenceExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUTypeReferenceExpression.kt
@@ -3,11 +3,13 @@
package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiType
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtTypeReference
import org.jetbrains.uast.UElement
import org.jetbrains.uast.UTypeReferenceExpression
import org.jetbrains.uast.UastErrorType
+@ApiStatus.Internal
class KotlinUTypeReferenceExpression(
override val sourcePsi: KtTypeReference?,
givenParent: UElement?,
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUVarargExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUVarargExpression.kt
index 804506514c29..3c4514cdad23 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUVarargExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/KotlinUVarargExpression.kt
@@ -4,10 +4,12 @@ package org.jetbrains.uast.kotlin
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiType
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.ValueArgument
import org.jetbrains.uast.*
import org.jetbrains.uast.kotlin.internal.DelegatedMultiResolve
+@ApiStatus.Internal
class KotlinUVarargExpression(
private val valueArgs: List<ValueArgument>,
uastParent: UElement?,
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/UnknownKotlinExpression.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/UnknownKotlinExpression.kt
index afe77c7ca448..7beb9f623230 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/UnknownKotlinExpression.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/expressions/UnknownKotlinExpression.kt
@@ -2,10 +2,12 @@
package org.jetbrains.uast.kotlin
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.psi.KtExpression
import org.jetbrains.uast.UElement
import org.jetbrains.uast.UExpression
+@ApiStatus.Internal
class UnknownKotlinExpression(
override val sourcePsi: KtExpression,
givenParent: UElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/internal/DelegatedMultiResolve.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/internal/DelegatedMultiResolve.kt
index cb61b7fffdc1..ef689aff6332 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/internal/DelegatedMultiResolve.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/internal/DelegatedMultiResolve.kt
@@ -5,9 +5,11 @@ package org.jetbrains.uast.kotlin.internal
import com.intellij.psi.PsiSubstitutor
import com.intellij.psi.ResolveResult
import com.intellij.psi.infos.CandidateInfo
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.uast.UMultiResolvable
import org.jetbrains.uast.UResolvable
+@ApiStatus.Internal
interface DelegatedMultiResolve : UMultiResolvable, UResolvable {
override fun multiResolve(): Iterable<ResolveResult> = listOfNotNull(resolve()?.let { CandidateInfo(it, PsiSubstitutor.EMPTY) })
}
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/internal/KotlinFakeUElement.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/internal/KotlinFakeUElement.kt
index af6cfc81d63c..7e3f8debd824 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/internal/KotlinFakeUElement.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/internal/KotlinFakeUElement.kt
@@ -3,7 +3,9 @@
package org.jetbrains.uast.kotlin.internal
import com.intellij.psi.PsiElement
+import org.jetbrains.annotations.ApiStatus
+@ApiStatus.Internal
interface KotlinFakeUElement {
fun unwrapToSourcePsi(): List<PsiElement>
}
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/internal/KotlinUElementWithComments.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/internal/KotlinUElementWithComments.kt
index ce8f6e91c8c4..9940568dfc27 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/internal/KotlinUElementWithComments.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/internal/KotlinUElementWithComments.kt
@@ -5,19 +5,41 @@ package org.jetbrains.uast.kotlin.internal
import com.intellij.psi.PsiComment
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiWhiteSpace
+import org.jetbrains.annotations.ApiStatus
+import org.jetbrains.kotlin.psi.KtProperty
+import org.jetbrains.kotlin.psi.KtPropertyAccessor
import org.jetbrains.kotlin.psi.KtValueArgument
import org.jetbrains.kotlin.psi.psiUtil.allChildren
-import org.jetbrains.uast.UComment
-import org.jetbrains.uast.UElement
-import org.jetbrains.uast.UExpression
-import org.jetbrains.uast.UParameter
+import org.jetbrains.uast.*
+@ApiStatus.Internal
interface KotlinUElementWithComments : UElement {
override val comments: List<UComment>
get() {
val psi = sourcePsi ?: return emptyList()
- val childrenComments = psi.allChildren.filterIsInstance<PsiComment>().map { UComment(it, this) }.toList()
+ val childrenComments = commentsOnPsiElement(psi)
+ // Default property accessors
+ if (this is UMethod && psi is KtProperty) {
+ // Don't regard property's comments as accessor's comments,
+ // unless that property won't be materialized (e.g., property in interface)
+ val backingField = (uastParent as? UClass)?.fields?.find { it.sourcePsi == psi }
+ return if (backingField != null)
+ emptyList()
+ else
+ childrenComments
+ }
+ // Property accessor w/o its own comments
+ if (psi is KtPropertyAccessor && childrenComments.isEmpty()) {
+ // If the containing property does not have a backing field,
+ // comments on the property won't appear on any elements, so we should keep them here.
+ val propertyPsi = psi.parent as? KtProperty ?: return childrenComments
+ val backingField = (uastParent as? UClass)?.fields?.find { it.sourcePsi == propertyPsi }
+ return if (backingField != null)
+ childrenComments
+ else
+ commentsOnPsiElement(propertyPsi)
+ } // Property accessor w/ its own comments fall through and return those comments.
if (this !is UExpression &&
this !is UParameter // fun (/* prior */ a: Int) <-- /* prior */ is on the level of VALUE_PARAM_LIST
)
@@ -32,6 +54,10 @@ interface KotlinUElementWithComments : UElement {
parent.nearestCommentSibling(forward = false)?.let { listOf(UComment(it, this)) }.orEmpty()
}
+ private fun commentsOnPsiElement(psi: PsiElement): List<UComment> {
+ return psi.allChildren.filterIsInstance<PsiComment>().map { UComment(it, this) }.toList()
+ }
+
private fun PsiElement.nearestCommentSibling(forward: Boolean): PsiComment? {
var sibling = if (forward) nextSibling else prevSibling
while (sibling is PsiWhiteSpace && !sibling.text.contains('\n')) {
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/internal/baseKotlinInternalUastUtils.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/internal/baseKotlinInternalUastUtils.kt
index 34c0563b2e6c..c4e1ce667639 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/internal/baseKotlinInternalUastUtils.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/internal/baseKotlinInternalUastUtils.kt
@@ -2,6 +2,7 @@
package org.jetbrains.uast.kotlin
+import com.intellij.lang.Language
import com.intellij.psi.*
import com.intellij.psi.util.PsiTypesUtil
import org.jetbrains.kotlin.asJava.classes.KtLightClass
@@ -12,13 +13,14 @@ import org.jetbrains.kotlin.asJava.findFacadeClass
import org.jetbrains.kotlin.asJava.getAccessorLightMethods
import org.jetbrains.kotlin.asJava.toLightClass
import org.jetbrains.kotlin.asJava.toLightElements
-import org.jetbrains.kotlin.idea.references.readWriteAccess
+import org.jetbrains.kotlin.idea.KotlinLanguage
+import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.*
-import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
-import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
-import org.jetbrains.kotlin.psi.psiUtil.parents
+import org.jetbrains.kotlin.psi.psiUtil.*
import org.jetbrains.kotlin.resolve.ArrayFqNames
+import org.jetbrains.kotlin.resolve.references.ReferenceAccess
+import org.jetbrains.kotlin.utils.addToStdlib.constant
import org.jetbrains.uast.*
@Suppress("NOTHING_TO_INLINE")
@@ -35,7 +37,7 @@ inline fun <reified T : UDeclaration, reified P : PsiElement> unwrap(element: P)
fun unwrapFakeFileForLightClass(file: PsiFile): PsiFile = (file as? FakeFileForLightClass)?.ktFile ?: file
-internal fun getContainingLightClass(original: KtDeclaration): KtLightClass? =
+fun getContainingLightClass(original: KtDeclaration): KtLightClass? =
(original.containingClassOrObject?.toLightClass() ?: original.containingKtFile.findFacadeClass())
fun getKotlinMemberOrigin(element: PsiElement?): KtDeclaration? {
@@ -53,6 +55,30 @@ fun KtExpression.unwrapBlockOrParenthesis(): KtExpression {
return innerExpression
}
+fun KtExpression.readWriteAccess(): ReferenceAccess {
+ var expression = getQualifiedExpressionForSelectorOrThis()
+ loop@ while (true) {
+ val parent = expression.parent
+ when (parent) {
+ is KtParenthesizedExpression, is KtAnnotatedExpression, is KtLabeledExpression -> expression = parent as KtExpression
+ else -> break@loop
+ }
+ }
+
+ val assignment = expression.getAssignmentByLHS()
+ if (assignment != null) {
+ return when (assignment.operationToken) {
+ KtTokens.EQ -> ReferenceAccess.WRITE
+ else -> ReferenceAccess.READ_WRITE
+ }
+ }
+
+ return if ((expression.parent as? KtUnaryExpression)?.operationToken in constant { setOf(KtTokens.PLUSPLUS, KtTokens.MINUSMINUS) })
+ ReferenceAccess.READ_WRITE
+ else
+ ReferenceAccess.READ
+}
+
fun KtElement.canAnalyze(): Boolean {
if (!isValid) return false
val containingFile = containingFile as? KtFile ?: return false // EA-114080, EA-113475, EA-134193
@@ -68,16 +94,13 @@ val KtTypeReference.nameElement: PsiElement?
(it as? KtUserType)?.referenceExpression?.getReferencedNameElement() ?: it.navigationElement
}
-fun KtClassOrObject.toPsiType(): PsiType {
+internal fun KtClassOrObject.toPsiType(): PsiType {
val lightClass = toLightClass() ?: return UastErrorType
- return if (lightClass is PsiAnonymousClass)
- lightClass.baseClassType
- else
- PsiTypesUtil.getClassType(lightClass)
+ return PsiTypesUtil.getClassType(lightClass)
}
fun PsiElement.getMaybeLightElement(sourcePsi: KtExpression? = null): PsiElement? {
- if (this is KtProperty && sourcePsi?.readWriteAccess(useResolveForReadWrite = false)?.isWrite == true) {
+ if (this is KtProperty && sourcePsi?.readWriteAccess()?.isWrite == true) {
with(getAccessorLightMethods()) {
(setter ?: backingField)?.let { return it } // backingField is for val property assignments in init blocks
}
@@ -137,3 +160,13 @@ val KtElement.typeOwnerKind: TypeOwnerKind
is KtExpression -> TypeOwnerKind.EXPRESSION
else -> TypeOwnerKind.UNKNOWN
}
+
+/** Returns true if the given element is written in Kotlin. */
+fun isKotlin(element: PsiElement?): Boolean {
+ return element != null && isKotlin(element.language)
+}
+
+/** Returns true if the given language is Kotlin. */
+fun isKotlin(language: Language?): Boolean {
+ return language == KotlinLanguage.INSTANCE
+}
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/kinds/KotlinBinaryExpressionWithTypeKinds.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/kinds/KotlinBinaryExpressionWithTypeKinds.kt
index a9642f0b05c4..65c23a26c034 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/kinds/KotlinBinaryExpressionWithTypeKinds.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/kinds/KotlinBinaryExpressionWithTypeKinds.kt
@@ -2,12 +2,14 @@
package org.jetbrains.uast.kotlin
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.uast.UastBinaryExpressionWithTypeKind
+@ApiStatus.Internal
object KotlinBinaryExpressionWithTypeKinds {
@JvmField
val NEGATED_INSTANCE_CHECK = UastBinaryExpressionWithTypeKind.InstanceCheck("!is")
@JvmField
val SAFE_TYPE_CAST = UastBinaryExpressionWithTypeKind.TypeCast("as?")
-} \ No newline at end of file
+}
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/kinds/KotlinBinaryOperators.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/kinds/KotlinBinaryOperators.kt
index 57f53757ef8c..6061f76cb7b9 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/kinds/KotlinBinaryOperators.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/kinds/KotlinBinaryOperators.kt
@@ -2,8 +2,10 @@
package org.jetbrains.uast.kotlin
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.uast.UastBinaryOperator
+@ApiStatus.Internal
object KotlinBinaryOperators {
@JvmField
val IN = UastBinaryOperator("in")
@@ -13,4 +15,4 @@ object KotlinBinaryOperators {
@JvmField
val RANGE_TO = UastBinaryOperator("..")
-} \ No newline at end of file
+}
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/kinds/KotlinPostfixOperators.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/kinds/KotlinPostfixOperators.kt
index 7c3361d9829d..87cc7e6fe6a3 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/kinds/KotlinPostfixOperators.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/kinds/KotlinPostfixOperators.kt
@@ -2,9 +2,11 @@
package org.jetbrains.uast.kotlin
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.uast.UastPostfixOperator
+@ApiStatus.Internal
object KotlinPostfixOperators {
@JvmField
val EXCLEXCL = UastPostfixOperator("!!")
-} \ No newline at end of file
+}
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/kinds/KotlinQualifiedExpressionAccessTypes.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/kinds/KotlinQualifiedExpressionAccessTypes.kt
index 562476ea4214..b1826641242f 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/kinds/KotlinQualifiedExpressionAccessTypes.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/kinds/KotlinQualifiedExpressionAccessTypes.kt
@@ -2,9 +2,11 @@
package org.jetbrains.uast.kotlin
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.uast.UastQualifiedExpressionAccessType
+@ApiStatus.Internal
object KotlinQualifiedExpressionAccessTypes {
@JvmField
val SAFE = UastQualifiedExpressionAccessType("?.")
-} \ No newline at end of file
+}
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/kinds/KotlinSpecialExpressionKinds.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/kinds/KotlinSpecialExpressionKinds.kt
index 1bcaf0b89400..9ea4c4df704a 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/kinds/KotlinSpecialExpressionKinds.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/kinds/KotlinSpecialExpressionKinds.kt
@@ -2,8 +2,10 @@
package org.jetbrains.uast.kotlin.kinds
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.uast.UastSpecialExpressionKind
+@ApiStatus.Internal
object KotlinSpecialExpressionKinds {
@JvmField
val WHEN = UastSpecialExpressionKind("when")
@@ -19,4 +21,4 @@ object KotlinSpecialExpressionKinds {
@JvmField
val SUPER_DELEGATION = UastSpecialExpressionKind("super_delegation")
-} \ No newline at end of file
+}
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/kotlinConvertParentUtils.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/kotlinConvertParentUtils.kt
index eaa86200530f..4bb81ad0e048 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/kotlinConvertParentUtils.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/kotlinConvertParentUtils.kt
@@ -21,7 +21,7 @@ import org.jetbrains.uast.*
import org.jetbrains.uast.kotlin.psi.UastKotlinPsiParameter
import org.jetbrains.uast.kotlin.psi.UastKotlinPsiVariable
-fun convertParentImpl(
+internal fun convertParentImpl(
service: BaseKotlinUastResolveProviderService,
uElement: UElement
): UElement? {
@@ -122,7 +122,7 @@ fun convertParentImpl(
return result
}
-fun convertParentImpl(
+internal fun convertParentImpl(
service: BaseKotlinUastResolveProviderService,
element: UElement,
parent: PsiElement?
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/psi/UastFakeLightMethod.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/psi/UastFakeLightMethod.kt
index 7491bdce0a96..d1bab0e898ca 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/psi/UastFakeLightMethod.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/psi/UastFakeLightMethod.kt
@@ -5,6 +5,7 @@ package org.jetbrains.uast.kotlin.psi
import com.intellij.openapi.components.ServiceManager
import com.intellij.psi.*
import com.intellij.psi.impl.light.*
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.asJava.elements.KotlinLightTypeParameterBuilder
import org.jetbrains.kotlin.asJava.elements.KotlinLightTypeParameterListBuilder
import org.jetbrains.kotlin.asJava.elements.KtLightAnnotationForSourceEntry
@@ -16,6 +17,7 @@ import org.jetbrains.uast.UastErrorType
import org.jetbrains.uast.kotlin.BaseKotlinUastResolveProviderService
import org.jetbrains.uast.kotlin.lz
+@ApiStatus.Internal
class UastFakeLightMethod(
original: KtFunction,
containingClass: PsiClass,
@@ -92,6 +94,7 @@ class UastFakeLightMethod(
override fun getParameterList(): PsiParameterList = _parameterList
}
+@ApiStatus.Internal
class UastFakeLightPrimaryConstructor(
original: KtClassOrObject,
lightClass: PsiClass,
@@ -99,6 +102,7 @@ class UastFakeLightPrimaryConstructor(
override fun isConstructor(): Boolean = true
}
+@ApiStatus.Internal
abstract class UastFakeLightMethodBase<T: KtDeclaration>(
val original: T,
containingClass: PsiClass,
@@ -167,6 +171,10 @@ abstract class UastFakeLightMethodBase<T: KtDeclaration>(
super.isDeprecated()
}
+ override fun isConstructor(): Boolean {
+ return original is KtConstructor<*>
+ }
+
override fun getReturnType(): PsiType? {
return baseResolveProviderService.getType(original, this)
}
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/psi/UastKotlinPsiParameter.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/psi/UastKotlinPsiParameter.kt
index 1be69135dc71..a5c73afc99f5 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/psi/UastKotlinPsiParameter.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/psi/UastKotlinPsiParameter.kt
@@ -8,6 +8,7 @@ import com.intellij.psi.PsiFile
import com.intellij.psi.PsiParameter
import com.intellij.psi.PsiType
import com.intellij.psi.impl.light.LightParameter
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.idea.KotlinLanguage
import org.jetbrains.kotlin.psi.KtElement
import org.jetbrains.kotlin.psi.KtExpression
@@ -18,6 +19,7 @@ import org.jetbrains.uast.UastErrorType
import org.jetbrains.uast.getParentOfType
import org.jetbrains.uast.kotlin.BaseKotlinUastResolveProviderService
+@ApiStatus.Internal
class UastKotlinPsiParameter(
name: String,
type: PsiType,
@@ -52,6 +54,7 @@ class UastKotlinPsiParameter(
}
+@ApiStatus.Internal
open class UastKotlinPsiParameterBase<T : KtElement>(
name: String,
type: PsiType,
diff --git a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/psi/UastKotlinPsiVariable.kt b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/psi/UastKotlinPsiVariable.kt
index d52555215da6..b1c2e414ee71 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/psi/UastKotlinPsiVariable.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/src/org/jetbrains/uast/kotlin/psi/UastKotlinPsiVariable.kt
@@ -4,6 +4,7 @@ package org.jetbrains.uast.kotlin.psi
import com.intellij.openapi.components.ServiceManager
import com.intellij.psi.*
import com.intellij.psi.impl.light.LightTypeElement
+import org.jetbrains.annotations.ApiStatus
import org.jetbrains.kotlin.asJava.elements.LightVariableBuilder
import org.jetbrains.kotlin.idea.KotlinLanguage
import org.jetbrains.kotlin.psi.*
@@ -12,6 +13,7 @@ import org.jetbrains.kotlin.psi.psiUtil.startOffset
import org.jetbrains.uast.*
import org.jetbrains.uast.kotlin.*
+@ApiStatus.Internal
class UastKotlinPsiVariable private constructor(
manager: PsiManager,
name: String,
diff --git a/plugins/kotlin/uast/uast-kotlin-base/test/org/jetbrains/uast/test/common/kotlin/UastCommentLogTestBase.kt b/plugins/kotlin/uast/uast-kotlin-base/test/org/jetbrains/uast/test/common/kotlin/UastCommentLogTestBase.kt
index 48c442ba5215..b36c70478dd6 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/test/org/jetbrains/uast/test/common/kotlin/UastCommentLogTestBase.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/test/org/jetbrains/uast/test/common/kotlin/UastCommentLogTestBase.kt
@@ -2,6 +2,7 @@
package org.jetbrains.uast.test.common.kotlin
+import com.intellij.psi.PsiNamedElement
import org.jetbrains.kotlin.idea.test.KotlinTestUtils
import org.jetbrains.uast.*
import org.jetbrains.uast.test.common.kotlin.UastTestSuffix.TXT
@@ -54,11 +55,13 @@ interface UastCommentLogTestBase : UastPluginSelection, UastFileComparisonTestBa
}
}
+ private val UElement.nameIfAvailable: String
+ get() = (javaPsi as? PsiNamedElement)?.name?.takeIf { it.isNotBlank() } ?: "<no name provided>"
override fun visitElement(node: UElement): Boolean {
if (node is UDeclaration || node is UFile) {
printIndent()
- appendLine("${node::class.java.simpleName}(")
+ appendLine("${node::class.java.simpleName}:${node.nameIfAvailable}(")
level++
if (node is KotlinUElementWithComments) renderComments(node.comments)
}
diff --git a/plugins/kotlin/uast/uast-kotlin-base/test/org/jetbrains/uast/test/common/kotlin/UastResolveApiFixtureTestBase.kt b/plugins/kotlin/uast/uast-kotlin-base/test/org/jetbrains/uast/test/common/kotlin/UastResolveApiFixtureTestBase.kt
index 4ef4f54f83c6..a142741d10f8 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/test/org/jetbrains/uast/test/common/kotlin/UastResolveApiFixtureTestBase.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/test/org/jetbrains/uast/test/common/kotlin/UastResolveApiFixtureTestBase.kt
@@ -5,9 +5,12 @@ import com.intellij.openapi.project.Project
import com.intellij.psi.*
import com.intellij.testFramework.fixtures.JavaCodeInsightTestFixture
import junit.framework.TestCase
+import org.jetbrains.kotlin.builtins.StandardNames.ENUM_VALUES
+import org.jetbrains.kotlin.builtins.StandardNames.ENUM_VALUE_OF
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCaseBase
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCaseBase.assertContainsElements
import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCaseBase.assertDoesntContain
+import org.jetbrains.kotlin.psi.KtConstructor
import org.jetbrains.kotlin.utils.addToStdlib.cast
import org.jetbrains.uast.*
import org.jetbrains.uast.kotlin.KotlinUFunctionCallExpression
@@ -344,6 +347,24 @@ interface UastResolveApiFixtureTestBase : UastPluginSelection {
TestCase.assertEquals("bar", resolved.name)
}
+ fun checkResolveLocalDefaultConstructor(myFixture: JavaCodeInsightTestFixture) {
+ myFixture.configureByText(
+ "MyClass.kt", """
+ fun foo() {
+ class LocalClass
+
+ val lc = Local<caret>Class()
+ }
+ """
+ )
+
+ val uCallExpression = myFixture.file.findElementAt(myFixture.caretOffset).toUElement().getUCallExpression()
+ .orFail("cant convert to UCallExpression")
+ val resolved = uCallExpression.resolve()
+ .orFail("cant resolve from $uCallExpression")
+ TestCase.assertTrue("Not resolved to local class default constructor", resolved.isConstructor)
+ TestCase.assertEquals("LocalClass", resolved.name)
+ }
fun checkResolveCompiledAnnotation(myFixture: JavaCodeInsightTestFixture) {
myFixture.configureByText(
@@ -359,6 +380,27 @@ interface UastResolveApiFixtureTestBase : UastPluginSelection {
TestCase.assertEquals("message", resolved.name)
}
+ fun checkResolveSyntheticMethod(myFixture: JavaCodeInsightTestFixture) {
+ myFixture.configureByText(
+ "MyClass.kt", """
+ class Foo {
+ @JvmSynthetic
+ fun bar() {}
+ }
+
+ fun test() {
+ Foo().ba<caret>r()
+ }
+ """
+ )
+
+ val uCallExpression = myFixture.file.findElementAt(myFixture.caretOffset).toUElement().getUCallExpression()
+ .orFail("cant convert to UCallExpression")
+ val resolved = uCallExpression.resolve()
+ .orFail("cant resolve from $uCallExpression")
+ TestCase.assertEquals("bar", resolved.name)
+ }
+
fun checkAssigningArrayElementType(myFixture: JavaCodeInsightTestFixture) {
myFixture.configureByText(
"MyClass.kt", """
@@ -405,6 +447,11 @@ interface UastResolveApiFixtureTestBase : UastPluginSelection {
fun test1() { }
@Deprecated(level = DeprecationLevel.HIDDEN, message="no longer supported")
fun test2() { }
+
+ class Test(private val parameter: Int) {
+ @Deprecated(message = "Binary compatibility", level = DeprecationLevel.HIDDEN)
+ constructor() : this(42)
+ }
"""
)
@@ -421,6 +468,85 @@ interface UastResolveApiFixtureTestBase : UastPluginSelection {
TestCase.assertTrue("Hidden level, hasAnnotation", test2.javaPsi.hasAnnotation("kotlin.Deprecated"))
TestCase.assertTrue("Hidden level, isDeprecated", test2.javaPsi.isDeprecated)
TestCase.assertTrue("Hidden level, public", test2.javaPsi.hasModifierProperty(PsiModifier.PUBLIC))
+
+ val testClass = uFile.findElementByTextFromPsi<UClass>("Test", strict = false)
+ TestCase.assertNotNull("can't convert class Test", testClass)
+ testClass.methods.forEach { mtd ->
+ if (mtd.sourcePsi is KtConstructor<*>) {
+ TestCase.assertTrue("$mtd should be marked as a constructor", mtd.isConstructor)
+ }
+ }
+ }
+
+ fun checkSyntheticEnumMethods(myFixture: JavaCodeInsightTestFixture) {
+ myFixture.configureByText(
+ "MyClass.kt", """
+ enum class MyEnum {
+ FOO,
+ BAR;
+ }
+
+ fun testValueOf() {
+ MyEnum.valueOf("FOO")
+ }
+
+ fun testValues() {
+ MyEnum.values()
+ }
+ """
+ )
+
+ val uFile = myFixture.file.toUElement()!!
+ val myEnum = uFile.findElementByTextFromPsi<UClass>("MyEnum", strict = false)
+ TestCase.assertNotNull("can't convert enum class MyEnum", myEnum)
+
+ val syntheticMethods = setOf(ENUM_VALUES.identifier, ENUM_VALUE_OF.identifier)
+ var metValues = false
+ var metValueOf = false
+ myEnum.methods.forEach { mtd ->
+ if (!mtd.isConstructor) {
+ TestCase.assertNotNull("Null return type of $mtd", mtd.returnType)
+ }
+ if (mtd.name in syntheticMethods) {
+ when (mtd.name) {
+ ENUM_VALUES.identifier -> metValues = true
+ ENUM_VALUE_OF.identifier -> metValueOf = true
+ }
+ TestCase.assertTrue(
+ "Missing nullness annotations on $mtd",
+ mtd.javaPsi.modifierList.annotations.any { it.isNullnessAnnotation }
+ )
+ }
+ }
+ TestCase.assertTrue("Expect to meet synthetic values() methods in an enum class", metValues)
+ TestCase.assertTrue("Expect to meet synthetic valueOf(String) methods in an enum class", metValueOf)
+
+ val testValueOf = uFile.findElementByTextFromPsi<UMethod>("testValueOf", strict = false)
+ TestCase.assertNotNull("testValueOf should be successfully converted", testValueOf)
+ val valueOfCall = testValueOf.findElementByText<UElement>("valueOf").uastParent as KotlinUFunctionCallExpression
+ val resolvedValueOfCall = valueOfCall.resolve()
+ TestCase.assertNotNull("Unresolved MyEnum.valueOf(String)", resolvedValueOfCall)
+ TestCase.assertNotNull("Null return type of $resolvedValueOfCall", resolvedValueOfCall?.returnType)
+ TestCase.assertTrue(
+ "Missing nullness annotations on $resolvedValueOfCall",
+ resolvedValueOfCall!!.annotations.any { it.isNullnessAnnotation }
+ )
+
+ val testValues = uFile.findElementByTextFromPsi<UMethod>("testValues", strict = false)
+ TestCase.assertNotNull("testValues should be successfully converted", testValues)
+ val valuesCall = testValues.findElementByText<UElement>("values").uastParent as KotlinUFunctionCallExpression
+ val resolvedValuesCall = valuesCall.resolve()
+ TestCase.assertNotNull("Unresolved MyEnum.values()", resolvedValuesCall)
+ TestCase.assertNotNull("Null return type of $resolvedValuesCall", resolvedValuesCall?.returnType)
+ TestCase.assertTrue(
+ "Missing nullness annotations on $resolvedValuesCall",
+ resolvedValuesCall!!.annotations.any { it.isNullnessAnnotation }
+ )
}
+ private val PsiAnnotation.isNullnessAnnotation: Boolean
+ get() {
+ return qualifiedName?.endsWith("NotNull") == true || qualifiedName?.endsWith("Nullable") == true
+ }
+
} \ No newline at end of file
diff --git a/plugins/kotlin/uast/uast-kotlin-base/test/org/jetbrains/uast/test/common/kotlin/UastResolveApiTestBase.kt b/plugins/kotlin/uast/uast-kotlin-base/test/org/jetbrains/uast/test/common/kotlin/UastResolveApiTestBase.kt
index 3245418f400c..76f23c465017 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/test/org/jetbrains/uast/test/common/kotlin/UastResolveApiTestBase.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/test/org/jetbrains/uast/test/common/kotlin/UastResolveApiTestBase.kt
@@ -197,4 +197,13 @@ interface UastResolveApiTestBase : UastPluginSelection {
checkRetentionAndResolve(rebuiltAnnotation)
}
}
+
+ fun checkThreadSafe(uFilePath: String, uFile: UFile) {
+ val safeClass = uFile.classes.find { it.name == "SafeClass" }
+ ?: throw IllegalStateException("Target class not found at ${uFile.asRefNames()}")
+ val k_delegate = safeClass.fields.find { it.name == "k\$delegate" }
+ ?: throw IllegalStateException("Target field not found at ${safeClass.name}")
+ // Without retrieving delegate expression type, it would be just "Lazy" (w/o type argument).
+ TestCase.assertEquals("PsiType:Lazy<? extends SimpleSafeClass>", k_delegate.type.toString())
+ }
}
diff --git a/plugins/kotlin/uast/uast-kotlin-base/test/org/jetbrains/uast/test/common/kotlin/UastResolveEverythingTestBase.kt b/plugins/kotlin/uast/uast-kotlin-base/test/org/jetbrains/uast/test/common/kotlin/UastResolveEverythingTestBase.kt
index 53a772904c50..93c695b45d3c 100644
--- a/plugins/kotlin/uast/uast-kotlin-base/test/org/jetbrains/uast/test/common/kotlin/UastResolveEverythingTestBase.kt
+++ b/plugins/kotlin/uast/uast-kotlin-base/test/org/jetbrains/uast/test/common/kotlin/UastResolveEverythingTestBase.kt
@@ -4,7 +4,10 @@
*/
package org.jetbrains.uast.test.common.kotlin
+import com.intellij.psi.PsiClass
import com.intellij.psi.PsiElement
+import com.intellij.psi.PsiField
+import com.intellij.psi.PsiMethod
import com.intellij.psi.impl.light.LightMethodBuilder
import com.intellij.psi.impl.light.LightParameter
import com.intellij.psi.impl.light.LightTypeParameterBuilder
@@ -51,14 +54,20 @@ interface UastResolveEverythingTestBase : UastPluginSelection, UastFileCompariso
companion object {
private val PsiElement?.needsDifferentRender: Boolean
get() = this is KtLightElement<*, *> ||
+ this is PsiClass ||
+ this is PsiMethod ||
+ this is PsiField ||
this is LightMethodBuilder ||
this is LightVariableBuilder ||
this is LightParameter ||
this is LightTypeParameterBuilder
private const val TAG_CLASS = "Kotlin_Light_Class"
+ private const val TAG_CLASS_DECOMPILED = "Decompiled_Class"
private const val TAG_METHOD = "Kotlin_Light_Method"
+ private const val TAG_METHOD_DECOMPILED = "Decompiled_Method"
private const val TAG_VARIABLE = "Kotlin_Light_Variable"
+ private const val TAG_VARIABLE_DECOMPILED = "Decompiled_Variable"
private const val TAG_VALUE_PARAMETER = "Kotlin_Light_Value_Parameter"
private const val TAG_TYPE_PARAMETER = "Kotlin_Light_Type_Parameter"
@@ -74,18 +83,34 @@ interface UastResolveEverythingTestBase : UastPluginSelection, UastFileCompariso
private val REGEXES: Map<Regex, String> = mapOf(
Regex("^FirLight.*Class.*Symbol:") to "$TAG_CLASS:",
+ Regex("^PsiClass:.+$") to TAG_CLASS_DECOMPILED,
+
Regex("^FirLightConstructorForSymbol:.+$") to TAG_METHOD,
Regex("^FirLight.*Method.*Symbol:.+$") to TAG_METHOD,
+
Regex("^KtUltraLightMethodForSourceDeclaration:.+$") to TAG_METHOD,
Regex("^LightMethodBuilder:.+$") to TAG_METHOD,
+ Regex("^KtLightMethodForDecompiledDeclaration of .+:.+$") to TAG_METHOD_DECOMPILED,
+ Regex("^PsiMethod:.+$") to TAG_METHOD_DECOMPILED,
+
Regex("^KtLightField:.+$") to TAG_VARIABLE,
Regex("^LightVariableBuilder:.+$") to TAG_VARIABLE,
+ Regex("^KtLightFieldForDecompiledDeclaration of .+:.+$") to TAG_VARIABLE_DECOMPILED,
+ Regex("^KtLightEnumEntryForDecompiledDeclaration.+:.+$") to TAG_VARIABLE_DECOMPILED,
+ Regex("^PsiField:.+$") to TAG_VARIABLE_DECOMPILED,
+
Regex("^Fir Light Parameter .+$") to TAG_VALUE_PARAMETER,
Regex("^FirLightTypeParameter:.+$") to TAG_TYPE_PARAMETER,
Regex("^Light PSI class: .+$") to TAG_TYPE_PARAMETER,
+
+ // NB: tags are recursively built, e.g., KtLightMethodForDecompiled... of KtLightClassForDecompiled... of ...
+ // Therefore, we should try regex patterns for member names before class names.
+ Regex("^KtLight.*ClassForDecompiled.+ of .+:.+$") to TAG_CLASS_DECOMPILED,
+ Regex("^KtLightClassForDecompiledFacade:.+$") to TAG_CLASS_DECOMPILED,
)
+
}
}