FIR IDE/UAST: add KtCompileTimeConstantProvider with evaluate API

This commit is contained in:
Jinseong Jeon
2021-06-11 11:10:13 -07:00
parent 7d157f006b
commit 833761ac3c
60 changed files with 202 additions and 149 deletions
@@ -15,7 +15,6 @@ import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
import org.jetbrains.kotlin.fir.types.*
import org.jetbrains.kotlin.fir.types.impl.FirImplicitBuiltinTypeRef
import org.jetbrains.kotlin.fir.types.impl.FirImplicitIntTypeRef
import org.jetbrains.kotlin.resolve.constants.ConstantValue
import org.jetbrains.kotlin.types.ConstantValueKind
/**
@@ -25,10 +24,10 @@ import org.jetbrains.kotlin.types.ConstantValueKind
class FirCompileTimeConstantEvaluator {
// TODO: Handle boolean operators, const property loading, class reference, array, annotation values, etc.
fun evaluate(expression: FirExpression): ConstantValue<*>? =
fun evaluate(expression: FirExpression): FirConstExpression<*>? =
when (expression) {
is FirConstExpression<*> -> expression.value as? ConstantValue<*>
is FirFunctionCall -> evaluate(expression)?.value as? ConstantValue<*>
is FirConstExpression<*> -> expression
is FirFunctionCall -> evaluate(expression)
else -> null
}
@@ -38,6 +38,7 @@ abstract class KtAnalysisSession(final override val token: ValidityToken) : Vali
KtSymbolContainingDeclarationProviderMixIn,
KtSubtypingComponentMixIn,
KtExpressionInfoProviderMixIn,
KtCompileTimeConstantProviderMixIn,
KtSymbolsMixIn,
KtReferenceResolveMixIn,
KtReferenceShortenerMixIn,
@@ -99,6 +100,9 @@ abstract class KtAnalysisSession(final override val token: ValidityToken) : Vali
internal val expressionInfoProvider: KtExpressionInfoProvider get() = expressionInfoProviderImpl
protected abstract val expressionInfoProviderImpl: KtExpressionInfoProvider
internal val compileTimeConstantProvider: KtCompileTimeConstantProvider get() = compileTimeConstantProviderImpl
protected abstract val compileTimeConstantProviderImpl: KtCompileTimeConstantProvider
internal val visibilityChecker: KtVisibilityChecker get() = visibilityCheckerImpl
protected abstract val visibilityCheckerImpl: KtVisibilityChecker
@@ -0,0 +1,18 @@
/*
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.idea.frontend.api.components
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSimpleConstantValue
import org.jetbrains.kotlin.psi.KtExpression
abstract class KtCompileTimeConstantProvider : KtAnalysisSessionComponent() {
abstract fun evaluate(expression: KtExpression): KtSimpleConstantValue<*>?
}
interface KtCompileTimeConstantProviderMixIn : KtAnalysisSessionMixIn {
fun KtExpression.evaluate(): KtSimpleConstantValue<*>? =
analysisSession.compileTimeConstantProvider.evaluate(this)
}
+1
View File
@@ -13,6 +13,7 @@ dependencies {
compile(project(":compiler:fir:fir2ir"))
compile(project(":compiler:ir.tree"))
compile(project(":compiler:fir:resolve"))
compile(project(":compiler:fir:evaluate"))
compile(project(":compiler:fir:checkers"))
compile(project(":compiler:fir:checkers:checkers.jvm"))
compile(project(":compiler:fir:java"))
@@ -14,10 +14,7 @@ import org.jetbrains.kotlin.fir.resolve.symbolProvider
import org.jetbrains.kotlin.idea.fir.low.level.api.api.*
import org.jetbrains.kotlin.idea.frontend.api.InvalidWayOfUsingAnalysisSession
import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSession
import org.jetbrains.kotlin.idea.frontend.api.components.KtInheritorsProvider
import org.jetbrains.kotlin.idea.frontend.api.components.KtVisibilityChecker
import org.jetbrains.kotlin.idea.frontend.api.components.KtSymbolDeclarationRendererProvider
import org.jetbrains.kotlin.idea.frontend.api.components.KtTypeCreator
import org.jetbrains.kotlin.idea.frontend.api.components.*
import org.jetbrains.kotlin.idea.frontend.api.fir.components.*
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirOverrideInfoProvider
import org.jetbrains.kotlin.idea.frontend.api.fir.symbols.KtFirSymbolProvider
@@ -70,6 +67,8 @@ private constructor(
override val expressionInfoProviderImpl = KtFirExpressionInfoProvider(this, token)
override val compileTimeConstantProviderImpl: KtCompileTimeConstantProvider = KtFirCompileTimeConstantProvider(this, token)
override val overrideInfoProviderImpl = KtFirOverrideInfoProvider(this, token)
override val visibilityCheckerImpl: KtVisibilityChecker = KtFirVisibilityChecker(this, token)
@@ -0,0 +1,30 @@
/*
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.idea.frontend.api.fir.components
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.evaluate.FirCompileTimeConstantEvaluator
import org.jetbrains.kotlin.idea.fir.low.level.api.api.getOrBuildFir
import org.jetbrains.kotlin.idea.frontend.api.components.KtCompileTimeConstantProvider
import org.jetbrains.kotlin.idea.frontend.api.fir.KtFirAnalysisSession
import org.jetbrains.kotlin.idea.frontend.api.fir.utils.convertConstantExpression
import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtSimpleConstantValue
import org.jetbrains.kotlin.idea.frontend.api.tokens.ValidityToken
import org.jetbrains.kotlin.idea.frontend.api.withValidityAssertion
import org.jetbrains.kotlin.psi.KtExpression
internal class KtFirCompileTimeConstantProvider(
override val analysisSession: KtFirAnalysisSession,
override val token: ValidityToken,
) : KtCompileTimeConstantProvider(), KtFirAnalysisSessionComponent {
override fun evaluate(expression: KtExpression): KtSimpleConstantValue<*>? = withValidityAssertion {
when (val fir = expression.getOrBuildFir(firResolveState)) {
is FirExpression -> FirCompileTimeConstantEvaluator().evaluate(fir)?.convertConstantExpression()
else -> error("Unexpected ${fir::class}")
}
}
}
@@ -50,7 +50,9 @@ interface FirKotlinUastResolveProviderService : BaseKotlinUastResolveProviderSer
}
override fun evaluate(uExpression: UExpression): Any? {
// TODO("Not yet implemented")
return "not-yet-compile-time-constant"
val ktExpression = uExpression.sourcePsi as? KtExpression ?: return null
analyseForUast(ktExpression) {
return ktExpression.evaluate()?.value
}
}
}
@@ -12,7 +12,7 @@ UFile (package = )
[!] UnknownKotlinExpression (PROPERTY)
ULabeledExpression (label = Outer)
UWhileExpression
ULiteralExpression (value = "not-yet-compile-time-constant")
ULiteralExpression (value = true)
UBlockExpression
[!] UnknownKotlinExpression (PREFIX_EXPRESSION)
[!] UnknownKotlinExpression (PROPERTY)
@@ -20,7 +20,7 @@ UFile (package = )
UDoWhileExpression
UIfExpression
[!] UnknownKotlinExpression (BINARY_EXPRESSION)
ULiteralExpression (value = "not-yet-compile-time-constant")
ULiteralExpression (value = false)
UBreakExpression (label = null)
UBlockExpression
[!] UnknownKotlinExpression (PREFIX_EXPRESSION)
@@ -8,12 +8,12 @@ public final class DoWhileKt {
}
public static final fun kt44412() : void {
[!] UnknownKotlinExpression (PROPERTY)
Outer@ while ("not-yet-compile-time-constant") {
Outer@ while (true) {
[!] UnknownKotlinExpression (PREFIX_EXPRESSION)
[!] UnknownKotlinExpression (PROPERTY)
Inner@ do {
[!] UnknownKotlinExpression (PREFIX_EXPRESSION)
}while (if ([!] UnknownKotlinExpression (BINARY_EXPRESSION)) "not-yet-compile-time-constant" else break)
}while (if ([!] UnknownKotlinExpression (BINARY_EXPRESSION)) false else break)
if ([!] UnknownKotlinExpression (BINARY_EXPRESSION)) break
}
@@ -3,7 +3,7 @@ UFile (package = declaration)
UMethod (name = foo)
UBlockExpression
UReturnExpression
ULiteralExpression (value = "not-yet-compile-time-constant")
ULiteralExpression (value = 42)
UMethod (name = buzz)
UParameter (name = $this$buzz)
UBlockExpression
@@ -2,7 +2,7 @@ package declaration
public final class Utils {
public static final fun foo() : int {
return "not-yet-compile-time-constant"
return 42
}
public static final fun buzz($this$buzz: java.lang.String) : java.lang.String {
return [!] UnknownKotlinExpression (THIS_EXPRESSION) + "... zzz..."
@@ -3,7 +3,7 @@ UFile (package = )
UMethod (name = foo)
UBlockExpression
UReturnExpression
ULiteralExpression (value = "not-yet-compile-time-constant")
ULiteralExpression (value = 5)
UMethod (name = bar)
UBlockExpression
UReturnExpression
@@ -11,11 +11,11 @@ UFile (package = )
UMethod (name = fooWithArrLiteral)
UBlockExpression
UReturnExpression
ULiteralExpression (value = "not-yet-compile-time-constant")
ULiteralExpression (value = 5)
UMethod (name = fooWithStrArrLiteral)
UBlockExpression
UReturnExpression
ULiteralExpression (value = "not-yet-compile-time-constant")
ULiteralExpression (value = 3)
UClass (name = IntRange)
UAnnotationMethod (name = from)
UAnnotationMethod (name = to)
@@ -25,6 +25,6 @@ UFile (package = )
UAnnotationMethod (name = strs)
UClass (name = WithDefaultValue)
UAnnotationMethod (name = value)
ULiteralExpression (value = "not-yet-compile-time-constant")
ULiteralExpression (value = 42)
UClass (name = SuppressLint)
UAnnotationMethod (name = value)
@@ -1,15 +1,15 @@
public final class AnnotationParametersKt {
public static final fun foo() : int {
return "not-yet-compile-time-constant"
return 5
}
public static final fun bar() : void {
return [!] UnknownKotlinExpression (REFERENCE_EXPRESSION)
}
public static final fun fooWithArrLiteral() : int {
return "not-yet-compile-time-constant"
return 5
}
public static final fun fooWithStrArrLiteral() : int {
return "not-yet-compile-time-constant"
return 3
}
}
@@ -2,7 +2,7 @@ UFile (package = )
UClass (name = CycleInTypeParametersKt)
UField (name = a)
UBinaryExpressionWithType
ULiteralExpression (value = "not-yet-compile-time-constant")
ULiteralExpression (value = null)
UTypeReferenceExpression (name = Device<?>)
UMethod (name = getA)
UClass (name = Device)
@@ -1,5 +1,5 @@
public final class CycleInTypeParametersKt {
private static final var a: Device<?> = "not-yet-compile-time-constant" as? Device<?>
private static final var a: Device<?> = null as? Device<?>
public static final fun getA() : Device<?> = UastEmptyExpression
}
@@ -2,7 +2,7 @@ UFile (package = )
UClass (name = DefaultParameterValuesKt)
UMethod (name = foo)
UParameter (name = a)
ULiteralExpression (value = "not-yet-compile-time-constant")
ULiteralExpression (value = 1)
UParameter (name = foo)
ULiteralExpression (value = "not-yet-compile-time-constant")
ULiteralExpression (value = null)
UBlockExpression
@@ -4,11 +4,11 @@ UFile (package = )
UParameter (name = bar)
UBlockExpression
UReturnExpression
ULiteralExpression (value = "not-yet-compile-time-constant")
ULiteralExpression (value = null)
UMethod (name = bar)
UBlockExpression
UReturnExpression
ULiteralExpression (value = "not-yet-compile-time-constant")
ULiteralExpression (value = 42)
UMethod (name = baz)
UBlockExpression
UReturnExpression
@@ -1,9 +1,9 @@
public final class ElvisKt {
public static final fun foo(bar: java.lang.String) : java.lang.String {
return "not-yet-compile-time-constant"
return null
}
public static final fun bar() : int {
return "not-yet-compile-time-constant"
return 42
}
public static final fun baz() : java.lang.String {
return [!] UnknownKotlinExpression (BINARY_EXPRESSION)
@@ -2,7 +2,7 @@ UFile (package = )
UClass (name = ClassA)
UField (name = paramAndProp)
UField (name = writebleProp)
ULiteralExpression (value = "not-yet-compile-time-constant")
ULiteralExpression (value = 0)
UMethod (name = ClassA)
UParameter (name = justParam)
UParameter (name = paramAndProp)
@@ -1,6 +1,6 @@
public final class ClassA {
private final var paramAndProp: java.lang.String
private var writebleProp: int = "not-yet-compile-time-constant"
private var writebleProp: int = 0
public fun ClassA(justParam: int, paramAndProp: java.lang.String) = UastEmptyExpression
public final fun getParamAndProp() : java.lang.String = UastEmptyExpression
public final fun getWritebleProp() : int = UastEmptyExpression
@@ -1,7 +1,7 @@
UFile (package = )
UClass (name = NameContainingFileKt)
UField (name = xyzzy)
ULiteralExpression (value = "not-yet-compile-time-constant")
ULiteralExpression (value = 0)
UMethod (name = bar)
UBlockExpression
UMethod (name = getXyzzy)
@@ -1,5 +1,5 @@
public final class NameContainingFileKt {
private static final var xyzzy: int = "not-yet-compile-time-constant"
private static final var xyzzy: int = 0
public static final fun bar() : void {
}
public static final fun getXyzzy() : int = UastEmptyExpression
@@ -6,7 +6,7 @@ UFile (package = )
UBlockExpression
UMethod (name = withDefault)
UParameter (name = c)
ULiteralExpression (value = "not-yet-compile-time-constant")
ULiteralExpression (value = 1)
UParameter (name = d)
ULiteralExpression (value = "aaa")
UBlockExpression
@@ -4,7 +4,7 @@ UFile (package = )
UParameter (name = a)
UParameter (name = b)
UParameter (name = c)
ULiteralExpression (value = "not-yet-compile-time-constant")
ULiteralExpression (value = 0)
UParameter (name = flag)
ULiteralExpression (value = "not-yet-compile-time-constant")
ULiteralExpression (value = false)
UBlockExpression
@@ -18,7 +18,7 @@ UFile (package = )
[!] UnknownKotlinExpression (POSTFIX_EXPRESSION)
UClass (name = A)
UField (name = privateProp)
ULiteralExpression (value = "not-yet-compile-time-constant")
ULiteralExpression (value = 0)
UField (name = mutableProp)
UMethod (name = A)
UParameter (name = init)
@@ -17,7 +17,7 @@ public final class PropertyReferencesKt {
}
public final class A {
private var privateProp: int = "not-yet-compile-time-constant"
private var privateProp: int = 0
private var mutableProp: int
public fun A(init: int) {
{
@@ -1,16 +1,16 @@
UFile (package = )
UClass (name = PropertyWithAnnotationKt)
UField (name = prop1)
ULiteralExpression (value = "not-yet-compile-time-constant")
ULiteralExpression (value = 0)
UMethod (name = getProp1)
UMethod (name = getProp2)
UBlockExpression
UReturnExpression
ULiteralExpression (value = "not-yet-compile-time-constant")
ULiteralExpression (value = 0)
UMethod (name = getProp3)
UBlockExpression
UReturnExpression
ULiteralExpression (value = "not-yet-compile-time-constant")
ULiteralExpression (value = 0)
UMethod (name = setProp3)
UParameter (name = value)
UBlockExpression
@@ -1,11 +1,11 @@
public final class PropertyWithAnnotationKt {
private static final var prop1: int = "not-yet-compile-time-constant"
private static final var prop1: int = 0
public static final fun getProp1() : int = UastEmptyExpression
public static final fun getProp2() : int {
return "not-yet-compile-time-constant"
return 0
}
public static final fun getProp3() : int {
return "not-yet-compile-time-constant"
return 0
}
public static final fun setProp3(value: int) : void {
[!] UnknownKotlinExpression (BINARY_EXPRESSION)
@@ -36,7 +36,7 @@ UFile (package = )
UMethod (name = getEmpty)
UMethod (name = simpleForTemplate)
UParameter (name = i)
ULiteralExpression (value = "not-yet-compile-time-constant")
ULiteralExpression (value = 0)
UBlockExpression
UReturnExpression
[!] UnknownKotlinExpression (REFERENCE_EXPRESSION)
@@ -36,7 +36,7 @@ UFile (package = )
UMethod (name = getEmpty)
UMethod (name = simpleForTemplate)
UParameter (name = i)
ULiteralExpression (value = "not-yet-compile-time-constant")
ULiteralExpression (value = 0)
UBlockExpression
UReturnExpression
[!] UnknownKotlinExpression (REFERENCE_EXPRESSION)
@@ -5,10 +5,10 @@ UFile (package = )
UParameter (name = x)
UBlockExpression
UReturnExpression
ULiteralExpression (value = "not-yet-compile-time-constant")
ULiteralExpression (value = null)
UMethod (name = bar)
UParameter (name = $this$bar)
UParameter (name = x)
UBlockExpression
UReturnExpression
ULiteralExpression (value = "not-yet-compile-time-constant")
ULiteralExpression (value = null)
@@ -1,8 +1,8 @@
public final class TypeAliasExpansionWithOtherAliasInArgumentKt {
public static final fun foo($this$foo: kotlin.jvm.functions.Function1, x: kotlin.jvm.functions.Function1) : kotlin.jvm.functions.Function1 {
return "not-yet-compile-time-constant"
return null
}
public static final fun bar($this$bar: java.util.Map<java.lang.String,? extends java.lang.Integer>, x: java.util.Map<java.lang.String,? extends java.lang.Integer>) : java.util.Map<java.lang.String,? extends java.lang.Integer> {
return "not-yet-compile-time-constant"
return null
}
}
@@ -2,20 +2,20 @@ UFile (package = ) [public final class AnnotationParametersKt {...]
UClass (name = AnnotationParametersKt) [public final class AnnotationParametersKt {...}]
UMethod (name = foo) [public static final fun foo() : int {...}]
UBlockExpression [{...}]
UReturnExpression [return "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] : PsiType:int
UReturnExpression [return 5]
ULiteralExpression (value = 5) [5] : PsiType:int
UMethod (name = bar) [public static final fun bar() : void {...}]
UBlockExpression [{...}]
UReturnExpression [return [!] UnknownKotlinExpression (REFERENCE_EXPRESSION)]
[!] UnknownKotlinExpression (REFERENCE_EXPRESSION) [[!] UnknownKotlinExpression (REFERENCE_EXPRESSION)]
UMethod (name = fooWithArrLiteral) [public static final fun fooWithArrLiteral() : int {...}]
UBlockExpression [{...}]
UReturnExpression [return "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] : PsiType:int
UReturnExpression [return 5]
ULiteralExpression (value = 5) [5] : PsiType:int
UMethod (name = fooWithStrArrLiteral) [public static final fun fooWithStrArrLiteral() : int {...}]
UBlockExpression [{...}]
UReturnExpression [return "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] : PsiType:int
UReturnExpression [return 3]
ULiteralExpression (value = 3) [3] : PsiType:int
UClass (name = IntRange) [public abstract annotation IntRange {...}]
UAnnotationMethod (name = from) [public abstract fun from() : long = UastEmptyExpression]
UAnnotationMethod (name = to) [public abstract fun to() : long = UastEmptyExpression]
@@ -25,6 +25,6 @@ UFile (package = ) [public final class AnnotationParametersKt {...]
UAnnotationMethod (name = strs) [public abstract fun strs() : java.lang.String[] = UastEmptyExpression]
UClass (name = WithDefaultValue) [public abstract annotation WithDefaultValue {...}]
UAnnotationMethod (name = value) [public abstract fun value() : int = UastEmptyExpression]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] : PsiType:int
ULiteralExpression (value = 42) [42] : PsiType:int
UClass (name = SuppressLint) [public abstract annotation SuppressLint {...}]
UAnnotationMethod (name = value) [public abstract fun value() : java.lang.String[] = UastEmptyExpression]
@@ -1,8 +1,8 @@
UFile (package = ) [public final class CycleInTypeParametersKt {...]
UClass (name = CycleInTypeParametersKt) [public final class CycleInTypeParametersKt {...}]
UField (name = a) [private static final var a: Device<?> = "not-yet-compile-time-constant" as? Device<?>]
UBinaryExpressionWithType ["not-yet-compile-time-constant" as? Device<?>] : PsiType:Device<?>
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] : PsiType:Void
UField (name = a) [private static final var a: Device<?> = null as? Device<?>]
UBinaryExpressionWithType [null as? Device<?>] : PsiType:Device<?>
ULiteralExpression (value = null) [null] : PsiType:Void
UTypeReferenceExpression (name = Device<?>) [Device<?>]
UMethod (name = getA) [public static final fun getA() : Device<?> = UastEmptyExpression]
UClass (name = Device) [public final class Device {...}]
@@ -1,8 +1,8 @@
UFile (package = ) [public final class DefaultParameterValuesKt {...]
UClass (name = DefaultParameterValuesKt) [public final class DefaultParameterValuesKt {...}]
UMethod (name = foo) [public static final fun foo(a: int, foo: java.lang.String) : void {...}]
UParameter (name = a) [var a: int = "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] : PsiType:int
UParameter (name = foo) [var foo: java.lang.String = "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] : PsiType:Void
UParameter (name = a) [var a: int = 1]
ULiteralExpression (value = 1) [1] : PsiType:int
UParameter (name = foo) [var foo: java.lang.String = null]
ULiteralExpression (value = null) [null] : PsiType:Void
UBlockExpression [{...}] : PsiType:Unit
@@ -3,12 +3,12 @@ UFile (package = ) [public final class ElvisKt {...]
UMethod (name = foo) [public static final fun foo(bar: java.lang.String) : java.lang.String {...}]
UParameter (name = bar) [var bar: java.lang.String]
UBlockExpression [{...}]
UReturnExpression [return "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] : PsiType:Void
UReturnExpression [return null]
ULiteralExpression (value = null) [null] : PsiType:Void
UMethod (name = bar) [public static final fun bar() : int {...}]
UBlockExpression [{...}]
UReturnExpression [return "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] : PsiType:int
UReturnExpression [return 42]
ULiteralExpression (value = 42) [42] : PsiType:int
UMethod (name = baz) [public static final fun baz() : java.lang.String {...}]
UBlockExpression [{...}] : PsiType:Void
UReturnExpression [return [!] UnknownKotlinExpression (BINARY_EXPRESSION)] : PsiType:Void
@@ -1,8 +1,8 @@
UFile (package = ) [public final class ClassA {...]
UClass (name = ClassA) [public final class ClassA {...}]
UField (name = paramAndProp) [private final var paramAndProp: java.lang.String]
UField (name = writebleProp) [private var writebleProp: int = "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] : PsiType:int
UField (name = writebleProp) [private var writebleProp: int = 0]
ULiteralExpression (value = 0) [0] : PsiType:int
UMethod (name = ClassA) [public fun ClassA(justParam: int, paramAndProp: java.lang.String) = UastEmptyExpression]
UParameter (name = justParam) [var justParam: int]
UParameter (name = paramAndProp) [var paramAndProp: java.lang.String]
@@ -1,7 +1,7 @@
UFile (package = ) [public final class NameContainingFileKt {...]
UClass (name = NameContainingFileKt) [public final class NameContainingFileKt {...}]
UField (name = xyzzy) [private static final var xyzzy: int = "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] : PsiType:int
UField (name = xyzzy) [private static final var xyzzy: int = 0]
ULiteralExpression (value = 0) [0] : PsiType:int
UMethod (name = bar) [public static final fun bar() : void {...}]
UBlockExpression [{...}] : PsiType:Unit
UMethod (name = getXyzzy) [public static final fun getXyzzy() : int = UastEmptyExpression]
@@ -5,8 +5,8 @@ UFile (package = ) [public final class ParametersDisorderKt {...]
UParameter (name = b) [var b: float]
UBlockExpression [{...}] : PsiType:Unit
UMethod (name = withDefault) [public static final fun withDefault(c: int, d: java.lang.String) : void {...}]
UParameter (name = c) [var c: int = "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] : PsiType:int
UParameter (name = c) [var c: int = 1]
ULiteralExpression (value = 1) [1] : PsiType:int
UParameter (name = d) [var d: java.lang.String = "aaa"]
ULiteralExpression (value = "aaa") ["aaa"] : PsiType:String
UBlockExpression [{...}] : PsiType:Unit
@@ -3,8 +3,8 @@ UFile (package = ) [public final class ParametersWithDefaultValuesKt {...]
UMethod (name = foo) [public static final fun foo(a: int, b: java.lang.String, c: int, flag: boolean) : void {...}]
UParameter (name = a) [var a: int]
UParameter (name = b) [var b: java.lang.String]
UParameter (name = c) [var c: int = "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] : PsiType:int
UParameter (name = flag) [var flag: boolean = "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] : PsiType:boolean
UParameter (name = c) [var c: int = 0]
ULiteralExpression (value = 0) [0] : PsiType:int
UParameter (name = flag) [var flag: boolean = false]
ULiteralExpression (value = false) [false] : PsiType:boolean
UBlockExpression [{...}] : PsiType:Unit
@@ -17,8 +17,8 @@ UFile (package = ) [public final class PropertyReferencesKt {...]
[!] UnknownKotlinExpression (PREFIX_EXPRESSION) [[!] UnknownKotlinExpression (PREFIX_EXPRESSION)]
[!] UnknownKotlinExpression (POSTFIX_EXPRESSION) [[!] UnknownKotlinExpression (POSTFIX_EXPRESSION)]
UClass (name = A) [public final class A {...}]
UField (name = privateProp) [private var privateProp: int = "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] : PsiType:int
UField (name = privateProp) [private var privateProp: int = 0]
ULiteralExpression (value = 0) [0] : PsiType:int
UField (name = mutableProp) [private var mutableProp: int]
UMethod (name = A) [public fun A(init: int) {...}]
UParameter (name = init) [var init: int]
@@ -1,16 +1,16 @@
UFile (package = ) [public final class PropertyWithAnnotationKt {...]
UClass (name = PropertyWithAnnotationKt) [public final class PropertyWithAnnotationKt {...}]
UField (name = prop1) [private static final var prop1: int = "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] : PsiType:int
UField (name = prop1) [private static final var prop1: int = 0]
ULiteralExpression (value = 0) [0] : PsiType:int
UMethod (name = getProp1) [public static final fun getProp1() : int = UastEmptyExpression]
UMethod (name = getProp2) [public static final fun getProp2() : int {...}]
UBlockExpression [{...}]
UReturnExpression [return "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] : PsiType:int
UReturnExpression [return 0]
ULiteralExpression (value = 0) [0] : PsiType:int
UMethod (name = getProp3) [public static final fun getProp3() : int {...}]
UBlockExpression [{...}]
UReturnExpression [return "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] : PsiType:int
UReturnExpression [return 0]
ULiteralExpression (value = 0) [0] : PsiType:int
UMethod (name = setProp3) [public static final fun setProp3(value: int) : void {...}]
UParameter (name = value) [var value: int]
UBlockExpression [{...}] : PsiType:Unit
@@ -35,8 +35,8 @@ UFile (package = ) [public final class StringTemplateComplexKt {...]
UMethod (name = getLiteralInLiteral2) [public static final fun getLiteralInLiteral2() : java.lang.String = UastEmptyExpression]
UMethod (name = getEmpty) [public static final fun getEmpty() : java.lang.String = UastEmptyExpression]
UMethod (name = simpleForTemplate) [public static final fun simpleForTemplate(i: int) : java.lang.String {...}]
UParameter (name = i) [var i: int = "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] : PsiType:int
UParameter (name = i) [var i: int = 0]
ULiteralExpression (value = 0) [0] : PsiType:int
UBlockExpression [{...}]
UReturnExpression [return [!] UnknownKotlinExpression (REFERENCE_EXPRESSION)]
[!] UnknownKotlinExpression (REFERENCE_EXPRESSION) [[!] UnknownKotlinExpression (REFERENCE_EXPRESSION)]
@@ -35,8 +35,8 @@ UFile (package = ) [public final class StringTemplateComplexForUInjectionHostKt
UMethod (name = getLiteralInLiteral2) [public static final fun getLiteralInLiteral2() : java.lang.String = UastEmptyExpression]
UMethod (name = getEmpty) [public static final fun getEmpty() : java.lang.String = UastEmptyExpression]
UMethod (name = simpleForTemplate) [public static final fun simpleForTemplate(i: int) : java.lang.String {...}]
UParameter (name = i) [var i: int = "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] : PsiType:int
UParameter (name = i) [var i: int = 0]
ULiteralExpression (value = 0) [0] : PsiType:int
UBlockExpression [{...}]
UReturnExpression [return [!] UnknownKotlinExpression (REFERENCE_EXPRESSION)]
[!] UnknownKotlinExpression (REFERENCE_EXPRESSION) [[!] UnknownKotlinExpression (REFERENCE_EXPRESSION)]
@@ -4,11 +4,11 @@ UFile (package = ) [public final class TypeAliasExpansionWithOtherAliasInArgumen
UParameter (name = $this$foo) [var $this$foo: kotlin.jvm.functions.Function1]
UParameter (name = x) [var x: kotlin.jvm.functions.Function1]
UBlockExpression [{...}]
UReturnExpression [return "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] : PsiType:Void
UReturnExpression [return null]
ULiteralExpression (value = null) [null] : PsiType:Void
UMethod (name = bar) [public static final fun bar($this$bar: java.util.Map<java.lang.String,? extends java.lang.Integer>, x: java.util.Map<java.lang.String,? extends java.lang.Integer>) : java.util.Map<java.lang.String,? extends java.lang.Integer> {...}]
UParameter (name = $this$bar) [var $this$bar: java.util.Map<java.lang.String,? extends java.lang.Integer>]
UParameter (name = x) [var x: java.util.Map<java.lang.String,? extends java.lang.Integer>]
UBlockExpression [{...}]
UReturnExpression [return "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] : PsiType:Void
UReturnExpression [return null]
ULiteralExpression (value = null) [null] : PsiType:Void
@@ -2,20 +2,20 @@ UFile (package = ) [public final class AnnotationParametersKt {...]
UClass (name = AnnotationParametersKt) [public final class AnnotationParametersKt {...}]
UMethod (name = foo) [public static final fun foo() : int {...}]
UBlockExpression [{...}] = Nothing
UReturnExpression [return "not-yet-compile-time-constant"] = Nothing
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] = "not-yet-compile-time-constant"
UReturnExpression [return 5] = Nothing
ULiteralExpression (value = 5) [5] = (long)5
UMethod (name = bar) [public static final fun bar() : void {...}]
UBlockExpression [{...}] = Nothing
UReturnExpression [return [!] UnknownKotlinExpression (REFERENCE_EXPRESSION)] = Nothing
[!] UnknownKotlinExpression (REFERENCE_EXPRESSION) [[!] UnknownKotlinExpression (REFERENCE_EXPRESSION)] = Undetermined
UMethod (name = fooWithArrLiteral) [public static final fun fooWithArrLiteral() : int {...}]
UBlockExpression [{...}] = Nothing
UReturnExpression [return "not-yet-compile-time-constant"] = Nothing
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] = "not-yet-compile-time-constant"
UReturnExpression [return 5] = Nothing
ULiteralExpression (value = 5) [5] = (long)5
UMethod (name = fooWithStrArrLiteral) [public static final fun fooWithStrArrLiteral() : int {...}]
UBlockExpression [{...}] = Nothing
UReturnExpression [return "not-yet-compile-time-constant"] = Nothing
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] = "not-yet-compile-time-constant"
UReturnExpression [return 3] = Nothing
ULiteralExpression (value = 3) [3] = (long)3
UClass (name = IntRange) [public abstract annotation IntRange {...}]
UAnnotationMethod (name = from) [public abstract fun from() : long = UastEmptyExpression]
UAnnotationMethod (name = to) [public abstract fun to() : long = UastEmptyExpression]
@@ -25,6 +25,6 @@ UFile (package = ) [public final class AnnotationParametersKt {...]
UAnnotationMethod (name = strs) [public abstract fun strs() : java.lang.String[] = UastEmptyExpression]
UClass (name = WithDefaultValue) [public abstract annotation WithDefaultValue {...}]
UAnnotationMethod (name = value) [public abstract fun value() : int = UastEmptyExpression]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] = "not-yet-compile-time-constant"
ULiteralExpression (value = 42) [42] = (long)42
UClass (name = SuppressLint) [public abstract annotation SuppressLint {...}]
UAnnotationMethod (name = value) [public abstract fun value() : java.lang.String[] = UastEmptyExpression]
@@ -1,8 +1,8 @@
UFile (package = ) [public final class CycleInTypeParametersKt {...]
UClass (name = CycleInTypeParametersKt) [public final class CycleInTypeParametersKt {...}]
UField (name = a) [private static final var a: Device<?> = "not-yet-compile-time-constant" as? Device<?>]
UBinaryExpressionWithType ["not-yet-compile-time-constant" as? Device<?>] = Undetermined
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] = "not-yet-compile-time-constant"
UField (name = a) [private static final var a: Device<?> = null as? Device<?>]
UBinaryExpressionWithType [null as? Device<?>] = Undetermined
ULiteralExpression (value = null) [null] = null
UTypeReferenceExpression (name = Device<?>) [Device<?>] = Undetermined
UMethod (name = getA) [public static final fun getA() : Device<?> = UastEmptyExpression]
UClass (name = Device) [public final class Device {...}]
@@ -1,8 +1,8 @@
UFile (package = ) [public final class DefaultParameterValuesKt {...]
UClass (name = DefaultParameterValuesKt) [public final class DefaultParameterValuesKt {...}]
UMethod (name = foo) [public static final fun foo(a: int, foo: java.lang.String) : void {...}]
UParameter (name = a) [var a: int = "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] = "not-yet-compile-time-constant"
UParameter (name = foo) [var foo: java.lang.String = "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] = "not-yet-compile-time-constant"
UParameter (name = a) [var a: int = 1]
ULiteralExpression (value = 1) [1] = (long)1
UParameter (name = foo) [var foo: java.lang.String = null]
ULiteralExpression (value = null) [null] = null
UBlockExpression [{...}] = Undetermined
@@ -3,12 +3,12 @@ UFile (package = ) [public final class ElvisKt {...]
UMethod (name = foo) [public static final fun foo(bar: java.lang.String) : java.lang.String {...}]
UParameter (name = bar) [var bar: java.lang.String]
UBlockExpression [{...}] = Nothing
UReturnExpression [return "not-yet-compile-time-constant"] = Nothing
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] = "not-yet-compile-time-constant"
UReturnExpression [return null] = Nothing
ULiteralExpression (value = null) [null] = null
UMethod (name = bar) [public static final fun bar() : int {...}]
UBlockExpression [{...}] = Nothing
UReturnExpression [return "not-yet-compile-time-constant"] = Nothing
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] = "not-yet-compile-time-constant"
UReturnExpression [return 42] = Nothing
ULiteralExpression (value = 42) [42] = (long)42
UMethod (name = baz) [public static final fun baz() : java.lang.String {...}]
UBlockExpression [{...}] = Nothing
UReturnExpression [return [!] UnknownKotlinExpression (BINARY_EXPRESSION)] = Nothing
@@ -1,8 +1,8 @@
UFile (package = ) [public final class ClassA {...]
UClass (name = ClassA) [public final class ClassA {...}]
UField (name = paramAndProp) [private final var paramAndProp: java.lang.String]
UField (name = writebleProp) [private var writebleProp: int = "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] = "not-yet-compile-time-constant"
UField (name = writebleProp) [private var writebleProp: int = 0]
ULiteralExpression (value = 0) [0] = (long)0
UMethod (name = ClassA) [public fun ClassA(justParam: int, paramAndProp: java.lang.String) = UastEmptyExpression]
UParameter (name = justParam) [var justParam: int]
UParameter (name = paramAndProp) [var paramAndProp: java.lang.String]
@@ -1,7 +1,7 @@
UFile (package = ) [public final class NameContainingFileKt {...]
UClass (name = NameContainingFileKt) [public final class NameContainingFileKt {...}]
UField (name = xyzzy) [private static final var xyzzy: int = "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] = "not-yet-compile-time-constant"
UField (name = xyzzy) [private static final var xyzzy: int = 0]
ULiteralExpression (value = 0) [0] = (long)0
UMethod (name = bar) [public static final fun bar() : void {...}]
UBlockExpression [{...}] = Undetermined
UMethod (name = getXyzzy) [public static final fun getXyzzy() : int = UastEmptyExpression]
@@ -5,8 +5,8 @@ UFile (package = ) [public final class ParametersDisorderKt {...]
UParameter (name = b) [var b: float]
UBlockExpression [{...}] = Undetermined
UMethod (name = withDefault) [public static final fun withDefault(c: int, d: java.lang.String) : void {...}]
UParameter (name = c) [var c: int = "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] = "not-yet-compile-time-constant"
UParameter (name = c) [var c: int = 1]
ULiteralExpression (value = 1) [1] = (long)1
UParameter (name = d) [var d: java.lang.String = "aaa"]
ULiteralExpression (value = "aaa") ["aaa"] = "aaa"
UBlockExpression [{...}] = Undetermined
@@ -3,8 +3,8 @@ UFile (package = ) [public final class ParametersWithDefaultValuesKt {...]
UMethod (name = foo) [public static final fun foo(a: int, b: java.lang.String, c: int, flag: boolean) : void {...}]
UParameter (name = a) [var a: int]
UParameter (name = b) [var b: java.lang.String]
UParameter (name = c) [var c: int = "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] = "not-yet-compile-time-constant"
UParameter (name = flag) [var flag: boolean = "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] = "not-yet-compile-time-constant"
UParameter (name = c) [var c: int = 0]
ULiteralExpression (value = 0) [0] = (long)0
UParameter (name = flag) [var flag: boolean = false]
ULiteralExpression (value = false) [false] = false
UBlockExpression [{...}] = Undetermined
@@ -17,8 +17,8 @@ UFile (package = ) [public final class PropertyReferencesKt {...]
[!] UnknownKotlinExpression (PREFIX_EXPRESSION) [[!] UnknownKotlinExpression (PREFIX_EXPRESSION)] = Undetermined
[!] UnknownKotlinExpression (POSTFIX_EXPRESSION) [[!] UnknownKotlinExpression (POSTFIX_EXPRESSION)] = Undetermined
UClass (name = A) [public final class A {...}]
UField (name = privateProp) [private var privateProp: int = "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] = "not-yet-compile-time-constant"
UField (name = privateProp) [private var privateProp: int = 0]
ULiteralExpression (value = 0) [0] = (long)0
UField (name = mutableProp) [private var mutableProp: int]
UMethod (name = A) [public fun A(init: int) {...}]
UParameter (name = init) [var init: int]
@@ -1,16 +1,16 @@
UFile (package = ) [public final class PropertyWithAnnotationKt {...]
UClass (name = PropertyWithAnnotationKt) [public final class PropertyWithAnnotationKt {...}]
UField (name = prop1) [private static final var prop1: int = "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] = "not-yet-compile-time-constant"
UField (name = prop1) [private static final var prop1: int = 0]
ULiteralExpression (value = 0) [0] = (long)0
UMethod (name = getProp1) [public static final fun getProp1() : int = UastEmptyExpression]
UMethod (name = getProp2) [public static final fun getProp2() : int {...}]
UBlockExpression [{...}] = Nothing
UReturnExpression [return "not-yet-compile-time-constant"] = Nothing
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] = "not-yet-compile-time-constant"
UReturnExpression [return 0] = Nothing
ULiteralExpression (value = 0) [0] = (long)0
UMethod (name = getProp3) [public static final fun getProp3() : int {...}]
UBlockExpression [{...}] = Nothing
UReturnExpression [return "not-yet-compile-time-constant"] = Nothing
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] = "not-yet-compile-time-constant"
UReturnExpression [return 0] = Nothing
ULiteralExpression (value = 0) [0] = (long)0
UMethod (name = setProp3) [public static final fun setProp3(value: int) : void {...}]
UParameter (name = value) [var value: int]
UBlockExpression [{...}] = Undetermined
@@ -35,8 +35,8 @@ UFile (package = ) [public final class StringTemplateComplexKt {...]
UMethod (name = getLiteralInLiteral2) [public static final fun getLiteralInLiteral2() : java.lang.String = UastEmptyExpression]
UMethod (name = getEmpty) [public static final fun getEmpty() : java.lang.String = UastEmptyExpression]
UMethod (name = simpleForTemplate) [public static final fun simpleForTemplate(i: int) : java.lang.String {...}]
UParameter (name = i) [var i: int = "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] = "not-yet-compile-time-constant"
UParameter (name = i) [var i: int = 0]
ULiteralExpression (value = 0) [0] = (long)0
UBlockExpression [{...}] = Nothing
UReturnExpression [return [!] UnknownKotlinExpression (REFERENCE_EXPRESSION)] = Nothing
[!] UnknownKotlinExpression (REFERENCE_EXPRESSION) [[!] UnknownKotlinExpression (REFERENCE_EXPRESSION)] = Undetermined
@@ -35,8 +35,8 @@ UFile (package = ) [public final class StringTemplateComplexForUInjectionHostKt
UMethod (name = getLiteralInLiteral2) [public static final fun getLiteralInLiteral2() : java.lang.String = UastEmptyExpression]
UMethod (name = getEmpty) [public static final fun getEmpty() : java.lang.String = UastEmptyExpression]
UMethod (name = simpleForTemplate) [public static final fun simpleForTemplate(i: int) : java.lang.String {...}]
UParameter (name = i) [var i: int = "not-yet-compile-time-constant"]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] = "not-yet-compile-time-constant"
UParameter (name = i) [var i: int = 0]
ULiteralExpression (value = 0) [0] = (long)0
UBlockExpression [{...}] = Nothing
UReturnExpression [return [!] UnknownKotlinExpression (REFERENCE_EXPRESSION)] = Nothing
[!] UnknownKotlinExpression (REFERENCE_EXPRESSION) [[!] UnknownKotlinExpression (REFERENCE_EXPRESSION)] = Undetermined
@@ -4,11 +4,11 @@ UFile (package = ) [public final class TypeAliasExpansionWithOtherAliasInArgumen
UParameter (name = $this$foo) [var $this$foo: kotlin.jvm.functions.Function1]
UParameter (name = x) [var x: kotlin.jvm.functions.Function1]
UBlockExpression [{...}] = Nothing
UReturnExpression [return "not-yet-compile-time-constant"] = Nothing
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] = "not-yet-compile-time-constant"
UReturnExpression [return null] = Nothing
ULiteralExpression (value = null) [null] = null
UMethod (name = bar) [public static final fun bar($this$bar: java.util.Map<java.lang.String,? extends java.lang.Integer>, x: java.util.Map<java.lang.String,? extends java.lang.Integer>) : java.util.Map<java.lang.String,? extends java.lang.Integer> {...}]
UParameter (name = $this$bar) [var $this$bar: java.util.Map<java.lang.String,? extends java.lang.Integer>]
UParameter (name = x) [var x: java.util.Map<java.lang.String,? extends java.lang.Integer>]
UBlockExpression [{...}] = Nothing
UReturnExpression [return "not-yet-compile-time-constant"] = Nothing
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] = "not-yet-compile-time-constant"
UReturnExpression [return null] = Nothing
ULiteralExpression (value = null) [null] = null
@@ -21,8 +21,8 @@ UFile (package = ) [public final class ArrayGetAssignMultiIndexKt {...]
[!] UnknownKotlinExpression (PROPERTY) [[!] UnknownKotlinExpression (PROPERTY)]
[!] UnknownKotlinExpression (BINARY_EXPRESSION) [[!] UnknownKotlinExpression (BINARY_EXPRESSION)]
[!] UnknownKotlinExpression (BINARY_EXPRESSION) [[!] UnknownKotlinExpression (BINARY_EXPRESSION)]
UReturnExpression [return [!] UnknownKotlinExpression (REFERENCE_EXPRESSION)[[!] UnknownKotlinExpression (PREFIX_EXPRESSION), "not-yet-compile-time-constant"]] : PsiType:Void
UArrayAccessExpression [[!] UnknownKotlinExpression (REFERENCE_EXPRESSION)[[!] UnknownKotlinExpression (PREFIX_EXPRESSION), "not-yet-compile-time-constant"]] : PsiType:String
UReturnExpression [return [!] UnknownKotlinExpression (REFERENCE_EXPRESSION)[[!] UnknownKotlinExpression (PREFIX_EXPRESSION), 3]] : PsiType:Void
UArrayAccessExpression [[!] UnknownKotlinExpression (REFERENCE_EXPRESSION)[[!] UnknownKotlinExpression (PREFIX_EXPRESSION), 3]] : PsiType:String
[!] UnknownKotlinExpression (REFERENCE_EXPRESSION) [[!] UnknownKotlinExpression (REFERENCE_EXPRESSION)]
[!] UnknownKotlinExpression (PREFIX_EXPRESSION) [[!] UnknownKotlinExpression (PREFIX_EXPRESSION)]
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] : PsiType:int
ULiteralExpression (value = 3) [3] : PsiType:int
@@ -2,9 +2,9 @@ UFile (package = ) [public final class WithGenericKt {...]
UClass (name = WithGenericKt) [public final class WithGenericKt {...}]
UMethod (name = test1) [public static final fun test1() : T {...}]
UBlockExpression [{...}]
UReturnExpression [return "not-yet-compile-time-constant" as T]
UBinaryExpressionWithType ["not-yet-compile-time-constant" as T] : PsiType:T
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] : PsiType:Void
UReturnExpression [return null as T]
UBinaryExpressionWithType [null as T] : PsiType:T
ULiteralExpression (value = null) [null] : PsiType:Void
UTypeReferenceExpression (name = T) [T]
UMethod (name = test2) [public static final fun test2() : T {...}]
UBlockExpression [{...}] : PsiType:Void
@@ -15,9 +15,9 @@ UFile (package = ) [public final class WithGenericKt {...]
UTypeReferenceExpression (name = T) [T]
UMethod (name = test3) [public static final fun test3() : T {...}]
UBlockExpression [{...}]
UReturnExpression [return "not-yet-compile-time-constant" as T]
UBinaryExpressionWithType ["not-yet-compile-time-constant" as T] : PsiType:T
ULiteralExpression (value = "not-yet-compile-time-constant") ["not-yet-compile-time-constant"] : PsiType:Void
UReturnExpression [return null as T]
UBinaryExpressionWithType [null as T] : PsiType:T
ULiteralExpression (value = null) [null] : PsiType:Void
UTypeReferenceExpression (name = T) [T]
UMethod (name = castToString) [public static final fun castToString(t: T) : void {...}]
UParameter (name = t) [var t: T]