LL API: remove unused resolve api

This commit is contained in:
Ilya Kirillov
2022-01-20 18:59:09 +01:00
parent 7a0d1ce0d1
commit 75ae37fcbf
15 changed files with 13 additions and 1472 deletions
@@ -66,7 +66,7 @@ internal class KtFirExpressionTypeProvider(
}
}
is FirExpression -> fir.typeRef.coneType.asKtType()
is FirNamedReference -> fir.getReferencedElementType(firResolveState).asKtType()
is FirNamedReference -> fir.getReferencedElementType().asKtType()
is FirStatement -> with(analysisSession) { builtinTypes.UNIT }
is FirTypeRef, is FirImport, is FirPackageDirective, is FirLabel -> null
// For invalid code like the following,
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.analysis.api.fir.getCandidateSymbols
import org.jetbrains.kotlin.analysis.api.types.KtTypeNullability
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.FirModuleResolveState
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.withFirDeclaration
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.ResolveType
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.analysis.checkers.classKind
@@ -52,7 +51,7 @@ internal fun KtExpression.unwrap(): KtExpression {
} ?: this
}
internal fun FirNamedReference.getReferencedElementType(resolveState: FirModuleResolveState): ConeKotlinType {
internal fun FirNamedReference.getReferencedElementType(): ConeKotlinType {
val symbols = when (this) {
is FirResolvedNamedReference -> listOf(resolvedSymbol)
is FirErrorNamedReference -> getCandidateSymbols()
@@ -61,9 +60,7 @@ internal fun FirNamedReference.getReferencedElementType(resolveState: FirModuleR
val firCallableDeclaration = symbols.singleOrNull()?.fir as? FirCallableDeclaration
?: return ConeClassErrorType(ConeUnresolvedNameError(name))
return firCallableDeclaration.withFirDeclaration(ResolveType.CallableReturnType, resolveState) {
it.returnTypeRef.coneType
}
return firCallableDeclaration.symbol.resolvedReturnType
}
internal fun KtTypeNullability.toConeNullability() = when (this) {
@@ -8,7 +8,6 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.api
import com.intellij.openapi.project.Project
import org.jetbrains.kotlin.analysis.api.impl.barebone.annotations.InternalForInline
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.ModuleFileCache
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.ResolveType
import org.jetbrains.kotlin.analysis.project.structure.KtModule
import org.jetbrains.kotlin.diagnostics.KtPsiDiagnostic
import org.jetbrains.kotlin.fir.FirElement
@@ -72,7 +71,5 @@ abstract class FirModuleResolveState {
): FirDeclaration
internal abstract fun <D : FirDeclaration> resolveFirToPhase(declaration: D, toPhase: FirResolvePhase): D
internal abstract fun <D : FirDeclaration> resolveFirToResolveType(declaration: D, type: ResolveType): D
internal abstract fun resolveFirToPhase(declaration: FirDeclaration, toPhase: FirResolvePhase)
}
@@ -8,12 +8,11 @@ package org.jetbrains.kotlin.analysis.low.level.api.fir.api
import com.intellij.openapi.project.Project
import org.jetbrains.kotlin.analysis.api.impl.barebone.annotations.InternalForInline
import org.jetbrains.kotlin.analysis.low.level.api.fir.FirIdeResolveStateService
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.ResolveType
import org.jetbrains.kotlin.analysis.project.structure.KtModule
import org.jetbrains.kotlin.analysis.project.structure.KtSourceModule
import org.jetbrains.kotlin.analysis.project.structure.getKtModule
import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.diagnostics.KtPsiDiagnostic
import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
import org.jetbrains.kotlin.psi.KtDeclaration
@@ -55,31 +54,11 @@ inline fun <R> KtDeclaration.withFirSymbol(
resolveState.findSourceFirDeclaration(this)
}
val resolvedDeclaration = if (firDeclaration.resolvePhase < phase) {
if (firDeclaration.resolvePhase < phase) {
firDeclaration.resolvedFirToPhase(phase, resolveState)
} else {
firDeclaration
}
return action(resolvedDeclaration.symbol)
}
/**
* Creates [FirDeclaration] by [KtDeclaration] and executes an [action] on it
* [FirDeclaration] passed to [action] will be resolved at least to [resolveType] when executing [action] on it
*
* [FirDeclaration] passed to [action] should not be leaked outside [action] lambda
* Otherwise, some threading problems may arise,
*/
@OptIn(InternalForInline::class)
inline fun <R> KtDeclaration.withFirSymbolDeclaration(
resolveState: FirModuleResolveState,
resolveType: ResolveType = ResolveType.NoResolve,
action: (FirBasedSymbol<*>) -> R
): R {
val firDeclaration = resolveState.findSourceFirDeclaration(this)
val resolvedDeclaration = firDeclaration.resolvedFirToType(resolveType, resolveState)
return action(resolvedDeclaration.symbol)
return action(firDeclaration.symbol)
}
/**
@@ -128,22 +107,10 @@ fun <D : FirDeclaration, R> D.withFirDeclaration(
phase: FirResolvePhase = FirResolvePhase.RAW_FIR,
action: (D) -> R,
): R {
val resolvedDeclaration = resolvedFirToPhase(phase, resolveState)
return action(resolvedDeclaration)
resolvedFirToPhase(phase, resolveState)
return action(this)
}
/**
* Executes [action] with given [FirDeclaration] under read action, so resolve **is not possible** inside [action]
* [FirDeclaration] passed to [action] will be resolved at least to [phase] when executing [action] on it
*/
fun <D : FirDeclaration, R> D.withFirDeclaration(
type: ResolveType,
resolveState: FirModuleResolveState,
action: (D) -> R,
): R {
val resolvedDeclaration = resolvedFirToType(type, resolveState)
return action(resolvedDeclaration)
}
/**
* Returns a list of Diagnostics compiler finds for given [KtElement]
@@ -167,22 +134,12 @@ fun KtFile.collectDiagnosticsForFile(
*
* Should not be called form [withFirSymbol], [withFirDeclarationOfType] functions, as it it may cause deadlock
*/
fun <D : FirDeclaration> D.resolvedFirToPhase(
fun FirDeclaration.resolvedFirToPhase(
phase: FirResolvePhase,
resolveState: FirModuleResolveState
): D =
) {
resolveState.resolveFirToPhase(this, phase)
/**
* Resolves a given [FirDeclaration] to [phase] and returns resolved declaration
*
* Should not be called form [withFirSymbol], [withFirDeclarationOfType] functions, as it it may cause deadlock
*/
fun <D : FirDeclaration> D.resolvedFirToType(
type: ResolveType,
resolveState: FirModuleResolveState
): D =
resolveState.resolveFirToResolveType(this, type)
}
/**
@@ -1,151 +0,0 @@
/*
* 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.analysis.low.level.api.fir.lazy.resolve
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.resolve.ScopeSession
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
import org.jetbrains.kotlin.analysis.low.level.api.fir.file.builder.ModuleFileCache
enum class ResolveType {
NoResolve,
BodyResolveWithChildren,
CallableBodyResolve,
CallableReturnType,
AnnotationType,
AnnotationsArguments,
ClassSuperTypes,
CallableContracts,
DeclarationStatus,
ValueParametersTypes,
TypeParametersTypes,
// ResolveForMemberScope,
// ResolveForSuperMembers,
}
internal fun <D : FirDeclaration> FirLazyDeclarationResolver.lazyResolveDeclaration(
firDeclaration: D,
moduleFileCache: ModuleFileCache,
toResolveType: ResolveType,
scopeSession: ScopeSession,
checkPCE: Boolean = false,
): D {
return when (toResolveType) {
ResolveType.NoResolve -> return firDeclaration
ResolveType.CallableReturnType -> {
require(firDeclaration is FirCallableDeclaration) {
"CallableReturnType type cannot be applied to ${firDeclaration::class.qualifiedName}"
}
var currentDeclaration = firDeclaration as FirCallableDeclaration
if (currentDeclaration.resolvePhase < FirResolvePhase.TYPES) {
if (currentDeclaration.returnTypeRef !is FirResolvedTypeRef) {
currentDeclaration = lazyResolveDeclaration(
firDeclarationToResolve = currentDeclaration,
moduleFileCache = moduleFileCache,
toPhase = FirResolvePhase.TYPES,
scopeSession = scopeSession,
checkPCE = checkPCE,
)
}
}
if (currentDeclaration.returnTypeRef !is FirResolvedTypeRef) {
currentDeclaration = lazyResolveDeclaration(
firDeclarationToResolve = currentDeclaration,
moduleFileCache = moduleFileCache,
toPhase = FirResolvePhase.IMPLICIT_TYPES_BODY_RESOLVE,
scopeSession = scopeSession,
checkPCE = checkPCE,
)
}
check(currentDeclaration.returnTypeRef is FirResolvedTypeRef)
@Suppress("UNCHECKED_CAST")
currentDeclaration as D
}
ResolveType.BodyResolveWithChildren, ResolveType.CallableBodyResolve -> {
require(firDeclaration is FirCallableDeclaration || toResolveType != ResolveType.CallableBodyResolve) {
"BodyResolveWithChildren and CallableBodyResolve types cannot be applied to ${firDeclaration::class.qualifiedName}"
}
lazyResolveDeclaration(
firDeclarationToResolve = firDeclaration,
moduleFileCache = moduleFileCache,
toPhase = FirResolvePhase.BODY_RESOLVE,
scopeSession = scopeSession,
checkPCE = checkPCE,
)
}
ResolveType.AnnotationType, ResolveType.AnnotationsArguments -> {
if (firDeclaration is FirFile) {
resolveFileAnnotations(
firFile = firDeclaration,
annotations = firDeclaration.annotations,
moduleFileCache = moduleFileCache,
scopeSession = scopeSession,
checkPCE = checkPCE
)
firDeclaration
} else {
val toPhase =
if (toResolveType == ResolveType.AnnotationType) FirResolvePhase.TYPES else FirResolvePhase.ARGUMENTS_OF_ANNOTATIONS
lazyResolveDeclaration(
firDeclarationToResolve = firDeclaration,
moduleFileCache = moduleFileCache,
toPhase = toPhase,
scopeSession = scopeSession,
checkPCE = checkPCE,
)
}
}
ResolveType.ClassSuperTypes -> {
require(firDeclaration is FirClassLikeDeclaration) {
"ClassSuperTypes type cannot be applied to ${firDeclaration::class.qualifiedName}"
}
lazyResolveDeclaration(
firDeclarationToResolve = firDeclaration,
moduleFileCache = moduleFileCache,
toPhase = FirResolvePhase.SUPER_TYPES,
scopeSession = scopeSession,
checkPCE = checkPCE,
)
}
ResolveType.CallableContracts -> {
require(firDeclaration is FirCallableDeclaration) {
"CallableContracts type cannot be applied to ${firDeclaration::class.qualifiedName}"
}
lazyResolveDeclaration(
firDeclarationToResolve = firDeclaration,
moduleFileCache = moduleFileCache,
toPhase = FirResolvePhase.CONTRACTS,
scopeSession = scopeSession,
checkPCE = checkPCE,
)
}
ResolveType.DeclarationStatus -> {
require(firDeclaration !is FirFile) {
"DeclarationStatus type cannot be applied to ${firDeclaration::class.qualifiedName}"
}
lazyResolveDeclaration(
firDeclarationToResolve = firDeclaration,
moduleFileCache = moduleFileCache,
toPhase = FirResolvePhase.STATUS,
scopeSession = scopeSession,
checkPCE = checkPCE,
)
}
ResolveType.ValueParametersTypes, ResolveType.TypeParametersTypes -> {
require(firDeclaration !is FirFile) {
"ValueParametersTypes and TypeParametersTypes types cannot be applied to ${firDeclaration::class.qualifiedName}"
}
lazyResolveDeclaration(
firDeclarationToResolve = firDeclaration,
moduleFileCache = moduleFileCache,
toPhase = FirResolvePhase.TYPES,
scopeSession = scopeSession,
checkPCE = checkPCE,
)
}
}
}
@@ -1,7 +0,0 @@
class A {
fun x() {
class resolveMe() {
val e = 2
}
}
}
@@ -1,395 +0,0 @@
RAW_FIR:
FILE: localDeclaration.kt
public? final? [RAW_FIR] class A : R|kotlin/Any| {
public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public? final? [RAW_FIR] fun x(): R|kotlin/Unit| {
local final? [RAW_FIR] [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public? [RAW_FIR] [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
super<R|kotlin/Any|>()
}
public? final? [RAW_FIR] val e: <implicit> = IntegerLiteral(2)
[TYPES] [ContainingClassKey=resolveMe] public? get(): <implicit>
}
}
}
IMPORTS:
FILE: localDeclaration.kt
public? final? [RAW_FIR] class A : R|kotlin/Any| {
public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public? final? [RAW_FIR] fun x(): R|kotlin/Unit| {
local final? [RAW_FIR] [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public? [RAW_FIR] [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
super<R|kotlin/Any|>()
}
public? final? [RAW_FIR] val e: <implicit> = IntegerLiteral(2)
[TYPES] [ContainingClassKey=resolveMe] public? get(): <implicit>
}
}
}
SUPER_TYPES:
FILE: localDeclaration.kt
public final [STATUS] class A : R|kotlin/Any| {
public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] val e: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=resolveMe] public get(): R|kotlin/Int|
}
}
}
TYPES:
FILE: localDeclaration.kt
public final [STATUS] class A : R|kotlin/Any| {
public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] val e: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=resolveMe] public get(): R|kotlin/Int|
}
}
}
STATUS:
FILE: localDeclaration.kt
public final [STATUS] class A : R|kotlin/Any| {
public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] val e: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=resolveMe] public get(): R|kotlin/Int|
}
}
}
ARGUMENTS_OF_ANNOTATIONS:
FILE: localDeclaration.kt
public final [STATUS] class A : R|kotlin/Any| {
public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] val e: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=resolveMe] public get(): R|kotlin/Int|
}
}
}
CONTRACTS:
FILE: localDeclaration.kt
public final [STATUS] class A : R|kotlin/Any| {
public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] val e: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=resolveMe] public get(): R|kotlin/Int|
}
}
}
IMPLICIT_TYPES_BODY_RESOLVE:
FILE: localDeclaration.kt
public final [STATUS] class A : R|kotlin/Any| {
public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] val e: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=resolveMe] public get(): R|kotlin/Int|
}
}
}
BODY_RESOLVE:
FILE: localDeclaration.kt
public final [STATUS] class A : R|kotlin/Any| {
public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] val e: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=resolveMe] public get(): R|kotlin/Int|
}
}
}
NoResolve:
FILE: localDeclaration.kt
public? final? [RAW_FIR] class A : R|kotlin/Any| {
public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public? final? [RAW_FIR] fun x(): R|kotlin/Unit| {
local final? [RAW_FIR] [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public? [RAW_FIR] [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
super<R|kotlin/Any|>()
}
public? final? [RAW_FIR] val e: <implicit> = IntegerLiteral(2)
[TYPES] [ContainingClassKey=resolveMe] public? get(): <implicit>
}
}
}
BodyResolveWithChildren:
FILE: localDeclaration.kt
public final [STATUS] class A : R|kotlin/Any| {
public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] val e: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=resolveMe] public get(): R|kotlin/Int|
}
}
}
AnnotationType:
FILE: localDeclaration.kt
public final [STATUS] class A : R|kotlin/Any| {
public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] val e: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=resolveMe] public get(): R|kotlin/Int|
}
}
}
AnnotationsArguments:
FILE: localDeclaration.kt
public final [STATUS] class A : R|kotlin/Any| {
public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] val e: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=resolveMe] public get(): R|kotlin/Int|
}
}
}
ClassSuperTypes:
FILE: localDeclaration.kt
public final [STATUS] class A : R|kotlin/Any| {
public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] val e: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=resolveMe] public get(): R|kotlin/Int|
}
}
}
DeclarationStatus:
FILE: localDeclaration.kt
public final [STATUS] class A : R|kotlin/Any| {
public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] val e: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=resolveMe] public get(): R|kotlin/Int|
}
}
}
ValueParametersTypes:
FILE: localDeclaration.kt
public final [STATUS] class A : R|kotlin/Any| {
public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] val e: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=resolveMe] public get(): R|kotlin/Int|
}
}
}
TypeParametersTypes:
FILE: localDeclaration.kt
public final [STATUS] class A : R|kotlin/Any| {
public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] val e: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=resolveMe] public get(): R|kotlin/Int|
}
}
}
FILE RAW TO BODY:
FILE: localDeclaration.kt
public final [BODY_RESOLVE] class A : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] [ContainingClassKey=A] class resolveMe : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=resolveMe] constructor(): R|A.resolveMe| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] val e: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=resolveMe] public get(): R|kotlin/Int|
}
}
}
@@ -1,7 +0,0 @@
class A {
fun x() {
fun resolveMe() {
}
}
}
@@ -1,299 +0,0 @@
RAW_FIR:
FILE: localFunction.kt
public? final? [RAW_FIR] class A : R|kotlin/Any| {
public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public? final? [RAW_FIR] fun x(): R|kotlin/Unit| {
local final? [RAW_FIR] fun resolveMe(): R|kotlin/Unit| {
}
}
}
IMPORTS:
FILE: localFunction.kt
public? final? [RAW_FIR] class A : R|kotlin/Any| {
public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public? final? [RAW_FIR] fun x(): R|kotlin/Unit| {
local final? [RAW_FIR] fun resolveMe(): R|kotlin/Unit| {
}
}
}
SUPER_TYPES:
FILE: localFunction.kt
public final [STATUS] class A : R|kotlin/Any| {
public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| {
}
}
}
TYPES:
FILE: localFunction.kt
public final [STATUS] class A : R|kotlin/Any| {
public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| {
}
}
}
STATUS:
FILE: localFunction.kt
public final [STATUS] class A : R|kotlin/Any| {
public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| {
}
}
}
ARGUMENTS_OF_ANNOTATIONS:
FILE: localFunction.kt
public final [STATUS] class A : R|kotlin/Any| {
public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| {
}
}
}
CONTRACTS:
FILE: localFunction.kt
public final [STATUS] class A : R|kotlin/Any| {
public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| {
}
}
}
IMPLICIT_TYPES_BODY_RESOLVE:
FILE: localFunction.kt
public final [STATUS] class A : R|kotlin/Any| {
public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| {
}
}
}
BODY_RESOLVE:
FILE: localFunction.kt
public final [STATUS] class A : R|kotlin/Any| {
public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| {
}
}
}
NoResolve:
FILE: localFunction.kt
public? final? [RAW_FIR] class A : R|kotlin/Any| {
public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public? final? [RAW_FIR] fun x(): R|kotlin/Unit| {
local final? [RAW_FIR] fun resolveMe(): R|kotlin/Unit| {
}
}
}
BodyResolveWithChildren:
FILE: localFunction.kt
public final [STATUS] class A : R|kotlin/Any| {
public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| {
}
}
}
CallableBodyResolve:
FILE: localFunction.kt
public final [STATUS] class A : R|kotlin/Any| {
public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| {
}
}
}
CallableReturnType:
FILE: localFunction.kt
public? final? [RAW_FIR] class A : R|kotlin/Any| {
public? [RAW_FIR] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public? final? [RAW_FIR] fun x(): R|kotlin/Unit| {
local final? [RAW_FIR] fun resolveMe(): R|kotlin/Unit| {
}
}
}
AnnotationType:
FILE: localFunction.kt
public final [STATUS] class A : R|kotlin/Any| {
public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| {
}
}
}
AnnotationsArguments:
FILE: localFunction.kt
public final [STATUS] class A : R|kotlin/Any| {
public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| {
}
}
}
CallableContracts:
FILE: localFunction.kt
public final [STATUS] class A : R|kotlin/Any| {
public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| {
}
}
}
DeclarationStatus:
FILE: localFunction.kt
public final [STATUS] class A : R|kotlin/Any| {
public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| {
}
}
}
ValueParametersTypes:
FILE: localFunction.kt
public final [STATUS] class A : R|kotlin/Any| {
public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| {
}
}
}
TypeParametersTypes:
FILE: localFunction.kt
public final [STATUS] class A : R|kotlin/Any| {
public [STATUS] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| {
}
}
}
FILE RAW TO BODY:
FILE: localFunction.kt
public final [BODY_RESOLVE] class A : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=A] constructor(): R|A| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] fun x(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun resolveMe(): R|kotlin/Unit| {
}
}
}
@@ -1,6 +0,0 @@
fun ddd() {
class XX {
var x: Int = 2
set(resolveMe) = Unit
}
}
@@ -1,359 +0,0 @@
RAW_FIR:
FILE: parameterOfLocalSetter.kt
public? final? [RAW_FIR] fun ddd(): R|kotlin/Unit| {
local final? [RAW_FIR] class XX : R|kotlin/Any| {
public? [RAW_FIR] [ContainingClassKey=XX] constructor(): R|XX| {
super<R|kotlin/Any|>()
}
public? final? [RAW_FIR] var x: Int = IntegerLiteral(2)
[TYPES] [ContainingClassKey=XX] public? get(): Int
[RAW_FIR] [ContainingClassKey=XX] public? set([RAW_FIR] resolveMe: Int): R|kotlin/Unit| {
^ Unit#
}
}
}
IMPORTS:
FILE: parameterOfLocalSetter.kt
public? final? [RAW_FIR] fun ddd(): R|kotlin/Unit| {
local final? [RAW_FIR] class XX : R|kotlin/Any| {
public? [RAW_FIR] [ContainingClassKey=XX] constructor(): R|XX| {
super<R|kotlin/Any|>()
}
public? final? [RAW_FIR] var x: Int = IntegerLiteral(2)
[TYPES] [ContainingClassKey=XX] public? get(): Int
[RAW_FIR] [ContainingClassKey=XX] public? set([RAW_FIR] resolveMe: Int): R|kotlin/Unit| {
^ Unit#
}
}
}
SUPER_TYPES:
FILE: parameterOfLocalSetter.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] class XX : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=XX] constructor(): R|XX| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] var x: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=XX] public get(): R|kotlin/Int|
[BODY_RESOLVE] [ContainingClassKey=XX] public set([BODY_RESOLVE] resolveMe: R|kotlin/Int|): R|kotlin/Unit| {
^ Q|kotlin/Unit|
}
}
}
TYPES:
FILE: parameterOfLocalSetter.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] class XX : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=XX] constructor(): R|XX| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] var x: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=XX] public get(): R|kotlin/Int|
[BODY_RESOLVE] [ContainingClassKey=XX] public set([BODY_RESOLVE] resolveMe: R|kotlin/Int|): R|kotlin/Unit| {
^ Q|kotlin/Unit|
}
}
}
STATUS:
FILE: parameterOfLocalSetter.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] class XX : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=XX] constructor(): R|XX| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] var x: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=XX] public get(): R|kotlin/Int|
[BODY_RESOLVE] [ContainingClassKey=XX] public set([BODY_RESOLVE] resolveMe: R|kotlin/Int|): R|kotlin/Unit| {
^ Q|kotlin/Unit|
}
}
}
ARGUMENTS_OF_ANNOTATIONS:
FILE: parameterOfLocalSetter.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] class XX : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=XX] constructor(): R|XX| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] var x: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=XX] public get(): R|kotlin/Int|
[BODY_RESOLVE] [ContainingClassKey=XX] public set([BODY_RESOLVE] resolveMe: R|kotlin/Int|): R|kotlin/Unit| {
^ Q|kotlin/Unit|
}
}
}
CONTRACTS:
FILE: parameterOfLocalSetter.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] class XX : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=XX] constructor(): R|XX| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] var x: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=XX] public get(): R|kotlin/Int|
[BODY_RESOLVE] [ContainingClassKey=XX] public set([BODY_RESOLVE] resolveMe: R|kotlin/Int|): R|kotlin/Unit| {
^ Q|kotlin/Unit|
}
}
}
IMPLICIT_TYPES_BODY_RESOLVE:
FILE: parameterOfLocalSetter.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] class XX : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=XX] constructor(): R|XX| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] var x: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=XX] public get(): R|kotlin/Int|
[BODY_RESOLVE] [ContainingClassKey=XX] public set([BODY_RESOLVE] resolveMe: R|kotlin/Int|): R|kotlin/Unit| {
^ Q|kotlin/Unit|
}
}
}
BODY_RESOLVE:
FILE: parameterOfLocalSetter.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] class XX : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=XX] constructor(): R|XX| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] var x: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=XX] public get(): R|kotlin/Int|
[BODY_RESOLVE] [ContainingClassKey=XX] public set([BODY_RESOLVE] resolveMe: R|kotlin/Int|): R|kotlin/Unit| {
^ Q|kotlin/Unit|
}
}
}
NoResolve:
FILE: parameterOfLocalSetter.kt
public? final? [RAW_FIR] fun ddd(): R|kotlin/Unit| {
local final? [RAW_FIR] class XX : R|kotlin/Any| {
public? [RAW_FIR] [ContainingClassKey=XX] constructor(): R|XX| {
super<R|kotlin/Any|>()
}
public? final? [RAW_FIR] var x: Int = IntegerLiteral(2)
[TYPES] [ContainingClassKey=XX] public? get(): Int
[RAW_FIR] [ContainingClassKey=XX] public? set([RAW_FIR] resolveMe: Int): R|kotlin/Unit| {
^ Unit#
}
}
}
BodyResolveWithChildren:
FILE: parameterOfLocalSetter.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] class XX : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=XX] constructor(): R|XX| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] var x: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=XX] public get(): R|kotlin/Int|
[BODY_RESOLVE] [ContainingClassKey=XX] public set([BODY_RESOLVE] resolveMe: R|kotlin/Int|): R|kotlin/Unit| {
^ Q|kotlin/Unit|
}
}
}
CallableBodyResolve:
FILE: parameterOfLocalSetter.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] class XX : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=XX] constructor(): R|XX| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] var x: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=XX] public get(): R|kotlin/Int|
[BODY_RESOLVE] [ContainingClassKey=XX] public set([BODY_RESOLVE] resolveMe: R|kotlin/Int|): R|kotlin/Unit| {
^ Q|kotlin/Unit|
}
}
}
CallableReturnType:
FILE: parameterOfLocalSetter.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] class XX : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=XX] constructor(): R|XX| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] var x: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=XX] public get(): R|kotlin/Int|
[BODY_RESOLVE] [ContainingClassKey=XX] public set([BODY_RESOLVE] resolveMe: R|kotlin/Int|): R|kotlin/Unit| {
^ Q|kotlin/Unit|
}
}
}
AnnotationType:
FILE: parameterOfLocalSetter.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] class XX : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=XX] constructor(): R|XX| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] var x: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=XX] public get(): R|kotlin/Int|
[BODY_RESOLVE] [ContainingClassKey=XX] public set([BODY_RESOLVE] resolveMe: R|kotlin/Int|): R|kotlin/Unit| {
^ Q|kotlin/Unit|
}
}
}
AnnotationsArguments:
FILE: parameterOfLocalSetter.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] class XX : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=XX] constructor(): R|XX| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] var x: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=XX] public get(): R|kotlin/Int|
[BODY_RESOLVE] [ContainingClassKey=XX] public set([BODY_RESOLVE] resolveMe: R|kotlin/Int|): R|kotlin/Unit| {
^ Q|kotlin/Unit|
}
}
}
CallableContracts:
FILE: parameterOfLocalSetter.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] class XX : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=XX] constructor(): R|XX| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] var x: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=XX] public get(): R|kotlin/Int|
[BODY_RESOLVE] [ContainingClassKey=XX] public set([BODY_RESOLVE] resolveMe: R|kotlin/Int|): R|kotlin/Unit| {
^ Q|kotlin/Unit|
}
}
}
DeclarationStatus:
FILE: parameterOfLocalSetter.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] class XX : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=XX] constructor(): R|XX| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] var x: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=XX] public get(): R|kotlin/Int|
[BODY_RESOLVE] [ContainingClassKey=XX] public set([BODY_RESOLVE] resolveMe: R|kotlin/Int|): R|kotlin/Unit| {
^ Q|kotlin/Unit|
}
}
}
ValueParametersTypes:
FILE: parameterOfLocalSetter.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] class XX : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=XX] constructor(): R|XX| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] var x: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=XX] public get(): R|kotlin/Int|
[BODY_RESOLVE] [ContainingClassKey=XX] public set([BODY_RESOLVE] resolveMe: R|kotlin/Int|): R|kotlin/Unit| {
^ Q|kotlin/Unit|
}
}
}
TypeParametersTypes:
FILE: parameterOfLocalSetter.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] class XX : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=XX] constructor(): R|XX| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] var x: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=XX] public get(): R|kotlin/Int|
[BODY_RESOLVE] [ContainingClassKey=XX] public set([BODY_RESOLVE] resolveMe: R|kotlin/Int|): R|kotlin/Unit| {
^ Q|kotlin/Unit|
}
}
}
FILE RAW TO BODY:
FILE: parameterOfLocalSetter.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] class XX : R|kotlin/Any| {
public [BODY_RESOLVE] [ContainingClassKey=XX] constructor(): R|XX| {
super<R|kotlin/Any|>()
}
public final [BODY_RESOLVE] var x: R|kotlin/Int| = Int(2)
[BODY_RESOLVE] [ContainingClassKey=XX] public get(): R|kotlin/Int|
[BODY_RESOLVE] [ContainingClassKey=XX] public set([BODY_RESOLVE] resolveMe: R|kotlin/Int|): R|kotlin/Unit| {
^ Q|kotlin/Unit|
}
}
}
@@ -1,3 +0,0 @@
fun ddd() {
fun kkk<resolveMe>() {}
}
@@ -1,135 +0,0 @@
RAW_FIR:
FILE: typeParameterOfLocalFunction.kt
public? final? [RAW_FIR] fun ddd(): R|kotlin/Unit| {
local final? [RAW_FIR] fun <resolveMe> kkk(): R|kotlin/Unit| {
}
}
IMPORTS:
FILE: typeParameterOfLocalFunction.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun <resolveMe> kkk(): R|kotlin/Unit| {
}
}
SUPER_TYPES:
FILE: typeParameterOfLocalFunction.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun <resolveMe> kkk(): R|kotlin/Unit| {
}
}
TYPES:
FILE: typeParameterOfLocalFunction.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun <resolveMe> kkk(): R|kotlin/Unit| {
}
}
STATUS:
FILE: typeParameterOfLocalFunction.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun <resolveMe> kkk(): R|kotlin/Unit| {
}
}
ARGUMENTS_OF_ANNOTATIONS:
FILE: typeParameterOfLocalFunction.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun <resolveMe> kkk(): R|kotlin/Unit| {
}
}
CONTRACTS:
FILE: typeParameterOfLocalFunction.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun <resolveMe> kkk(): R|kotlin/Unit| {
}
}
IMPLICIT_TYPES_BODY_RESOLVE:
FILE: typeParameterOfLocalFunction.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun <resolveMe> kkk(): R|kotlin/Unit| {
}
}
BODY_RESOLVE:
FILE: typeParameterOfLocalFunction.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun <resolveMe> kkk(): R|kotlin/Unit| {
}
}
NoResolve:
FILE: typeParameterOfLocalFunction.kt
public? final? [RAW_FIR] fun ddd(): R|kotlin/Unit| {
local final? [RAW_FIR] fun <resolveMe> kkk(): R|kotlin/Unit| {
}
}
BodyResolveWithChildren:
FILE: typeParameterOfLocalFunction.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun <resolveMe> kkk(): R|kotlin/Unit| {
}
}
AnnotationType:
FILE: typeParameterOfLocalFunction.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun <resolveMe> kkk(): R|kotlin/Unit| {
}
}
AnnotationsArguments:
FILE: typeParameterOfLocalFunction.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun <resolveMe> kkk(): R|kotlin/Unit| {
}
}
DeclarationStatus:
FILE: typeParameterOfLocalFunction.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun <resolveMe> kkk(): R|kotlin/Unit| {
}
}
ValueParametersTypes:
FILE: typeParameterOfLocalFunction.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun <resolveMe> kkk(): R|kotlin/Unit| {
}
}
TypeParametersTypes:
FILE: typeParameterOfLocalFunction.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun <resolveMe> kkk(): R|kotlin/Unit| {
}
}
FILE RAW TO BODY:
FILE: typeParameterOfLocalFunction.kt
public final [BODY_RESOLVE] fun ddd(): R|kotlin/Unit| {
local final [BODY_RESOLVE] fun <resolveMe> kkk(): R|kotlin/Unit| {
}
}
@@ -6,7 +6,6 @@
package org.jetbrains.kotlin.analysis.low.level.api.fir
import org.jetbrains.kotlin.analysis.low.level.api.fir.api.withFirDeclaration
import org.jetbrains.kotlin.analysis.low.level.api.fir.lazy.resolve.ResolveType
import org.jetbrains.kotlin.analysis.low.level.api.fir.test.base.AbstractLowLevelApiSingleFileTest
import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.FirRenderer
@@ -16,6 +15,7 @@ import org.jetbrains.kotlin.fir.render
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
import org.jetbrains.kotlin.psi.KtDeclaration
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtVisitorVoid
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.ConfigurationDirectives
import org.jetbrains.kotlin.test.services.TestModuleStructure
@@ -66,30 +66,6 @@ abstract class AbstractFirLazyDeclarationResolveTest : AbstractLowLevelApiSingle
}
}
for (resolveType in ResolveType.values()) {
resolveWithClearCaches(ktFile) { firModuleResolveState ->
check(firModuleResolveState is FirModuleResolveStateImpl)
val declarationToResolve = firModuleResolveState
.getOrBuildFirFile(ktFile)
.findResolveMe()
when (resolveType) {
ResolveType.CallableReturnType,
ResolveType.CallableBodyResolve,
ResolveType.CallableContracts -> if (declarationToResolve !is FirCallableDeclaration) return@resolveWithClearCaches
ResolveType.ClassSuperTypes -> if (declarationToResolve !is FirClassLikeDeclaration) return@resolveWithClearCaches
else -> {
}
}
declarationToResolve.withFirDeclaration(resolveType, firModuleResolveState) {
val firFile = firModuleResolveState.getOrBuildFirFile(ktFile)
resultBuilder.append("\n${resolveType.name}:\n")
resultBuilder.append(firFile.render(rendererOption))
}
}
}
resolveWithClearCaches(ktFile) { firModuleResolveState ->
check(firModuleResolveState is FirModuleResolveStateImpl)
val firFile = firModuleResolveState.getOrBuildFirFile(ktFile)
@@ -54,24 +54,6 @@ public class FirLazyDeclarationResolveTestGenerated extends AbstractFirLazyDecla
runTest("analysis/low-level-api-fir/testdata/lazyResolve/functionWithParameter.kt");
}
@Test
@TestMetadata("localDeclaration.kt")
public void testLocalDeclaration() throws Exception {
runTest("analysis/low-level-api-fir/testdata/lazyResolve/localDeclaration.kt");
}
@Test
@TestMetadata("localFunction.kt")
public void testLocalFunction() throws Exception {
runTest("analysis/low-level-api-fir/testdata/lazyResolve/localFunction.kt");
}
@Test
@TestMetadata("parameterOfLocalSetter.kt")
public void testParameterOfLocalSetter() throws Exception {
runTest("analysis/low-level-api-fir/testdata/lazyResolve/parameterOfLocalSetter.kt");
}
@Test
@TestMetadata("parameterOfNonLocalSetter.kt")
public void testParameterOfNonLocalSetter() throws Exception {
@@ -132,12 +114,6 @@ public class FirLazyDeclarationResolveTestGenerated extends AbstractFirLazyDecla
runTest("analysis/low-level-api-fir/testdata/lazyResolve/topLevelFunctionsWithImplicitType.kt");
}
@Test
@TestMetadata("typeParameterOfLocalFunction.kt")
public void testTypeParameterOfLocalFunction() throws Exception {
runTest("analysis/low-level-api-fir/testdata/lazyResolve/typeParameterOfLocalFunction.kt");
}
@Test
@TestMetadata("typeParameterOfNonLocalFunction.kt")
public void testTypeParameterOfNonLocalFunction() throws Exception {