Skip to content

Commit d05ba36

Browse files
dimonchik0036Space Team
authored andcommitted
[LL] LLFirTypeLazyResolver: process classes correctly
Add missed `withClassDeclarationCleanup`, so classes would have themselves as a containing declaration ^KT-82085 Fixed
1 parent d53fe46 commit d05ba36

File tree

5 files changed

+22
-49
lines changed

5 files changed

+22
-49
lines changed

analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/transformers/LLFirTypeLazyResolver.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
2+
* Copyright 2010-2025 JetBrains s.r.o. and Kotlin Programming Language contributors.
33
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
44
*/
55

@@ -125,7 +125,7 @@ private class LLFirTypeTargetResolver(target: LLFirResolveTarget) : LLFirTargetR
125125
}
126126

127127
is FirFile -> transformer.withFileScope(target) { target.transformAnnotations(transformer, null) }
128-
is FirRegularClass -> resolveClassTypes(target)
128+
is FirRegularClass -> transformer.withClassDeclarationCleanup(target) { resolveClassTypes(target) }
129129
else -> errorWithAttachment("Unknown declaration ${target::class.simpleName}") {
130130
withFirEntry("declaration", target)
131131
}

analysis/low-level-api-fir/testData/lazyResolve/classes/outerTypeParameterDirectly.txt

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -163,8 +163,8 @@ FILE: [ResolvedTo(IMPORTS)] outerTypeParameterDirectly.kt
163163
LAZY_super<X<R|kotlin/String|>>
164164
}
165165

166-
public final? [ResolvedTo(TYPES)] class D<[ResolvedTo(TYPES)] U : R|X.Y<kotlin/String>|> : R|kotlin/Any| {
167-
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=D] constructor<[ResolvedTo(TYPES)] U : R|X.Y<kotlin/String>|>(): R|A.D<U>| {
166+
public final? [ResolvedTo(TYPES)] class D<[ResolvedTo(TYPES)] U : <ERROR TYPE REF: Type arguments should be specified for an outer class>> : R|kotlin/Any| {
167+
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=D] constructor<[ResolvedTo(TYPES)] U : <ERROR TYPE REF: Type arguments should be specified for an outer class>>(): R|A.D<U>| {
168168
LAZY_super<R|kotlin/Any|>
169169
}
170170

@@ -192,8 +192,8 @@ FILE: [ResolvedTo(IMPORTS)] outerTypeParameterDirectly.kt
192192
LAZY_super<X<R|kotlin/String|>>
193193
}
194194

195-
public final [ResolvedTo(STATUS)] class D<[ResolvedTo(STATUS)] U : R|X.Y<kotlin/String>|> : R|kotlin/Any| {
196-
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=D] constructor<[ResolvedTo(STATUS)] U : R|X.Y<kotlin/String>|>(): R|A.D<U>| {
195+
public final [ResolvedTo(STATUS)] class D<[ResolvedTo(STATUS)] U : <ERROR TYPE REF: Type arguments should be specified for an outer class>> : R|kotlin/Any| {
196+
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=D] constructor<[ResolvedTo(STATUS)] U : <ERROR TYPE REF: Type arguments should be specified for an outer class>>(): R|A.D<U>| {
197197
LAZY_super<R|kotlin/Any|>
198198
}
199199

@@ -221,8 +221,8 @@ FILE: [ResolvedTo(IMPORTS)] outerTypeParameterDirectly.kt
221221
LAZY_super<X<R|kotlin/String|>>
222222
}
223223

224-
public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] class D<[ResolvedTo(EXPECT_ACTUAL_MATCHING)] U : R|X.Y<kotlin/String>|> : R|kotlin/Any| {
225-
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=D] constructor<[ResolvedTo(EXPECT_ACTUAL_MATCHING)] U : R|X.Y<kotlin/String>|>(): R|A.D<U>| {
224+
public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] class D<[ResolvedTo(EXPECT_ACTUAL_MATCHING)] U : <ERROR TYPE REF: Type arguments should be specified for an outer class>> : R|kotlin/Any| {
225+
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=D] constructor<[ResolvedTo(EXPECT_ACTUAL_MATCHING)] U : <ERROR TYPE REF: Type arguments should be specified for an outer class>>(): R|A.D<U>| {
226226
LAZY_super<R|kotlin/Any|>
227227
}
228228

@@ -250,8 +250,8 @@ FILE: [ResolvedTo(IMPORTS)] outerTypeParameterDirectly.kt
250250
LAZY_super<X<R|kotlin/String|>>
251251
}
252252

253-
public final [ResolvedTo(CONTRACTS)] class D<[ResolvedTo(CONTRACTS)] U : R|X.Y<kotlin/String>|> : R|kotlin/Any| {
254-
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=D] constructor<[ResolvedTo(CONTRACTS)] U : R|X.Y<kotlin/String>|>(): R|A.D<U>| {
253+
public final [ResolvedTo(CONTRACTS)] class D<[ResolvedTo(CONTRACTS)] U : <ERROR TYPE REF: Type arguments should be specified for an outer class>> : R|kotlin/Any| {
254+
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=D] constructor<[ResolvedTo(CONTRACTS)] U : <ERROR TYPE REF: Type arguments should be specified for an outer class>>(): R|A.D<U>| {
255255
LAZY_super<R|kotlin/Any|>
256256
}
257257

@@ -279,8 +279,8 @@ FILE: [ResolvedTo(IMPORTS)] outerTypeParameterDirectly.kt
279279
LAZY_super<X<R|kotlin/String|>>
280280
}
281281

282-
public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] class D<[ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] U : R|X.Y<kotlin/String>|> : R|kotlin/Any| {
283-
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=D] constructor<[ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] U : R|X.Y<kotlin/String>|>(): R|A.D<U>| {
282+
public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] class D<[ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] U : <ERROR TYPE REF: Type arguments should be specified for an outer class>> : R|kotlin/Any| {
283+
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=D] constructor<[ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] U : <ERROR TYPE REF: Type arguments should be specified for an outer class>>(): R|A.D<U>| {
284284
LAZY_super<R|kotlin/Any|>
285285
}
286286

@@ -308,8 +308,8 @@ FILE: [ResolvedTo(IMPORTS)] outerTypeParameterDirectly.kt
308308
LAZY_super<X<R|kotlin/String|>>
309309
}
310310

311-
public final [ResolvedTo(CONSTANT_EVALUATION)] class D<[ResolvedTo(CONSTANT_EVALUATION)] U : R|X.Y<kotlin/String>|> : R|kotlin/Any| {
312-
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=D] constructor<[ResolvedTo(CONSTANT_EVALUATION)] U : R|X.Y<kotlin/String>|>(): R|A.D<U>| {
311+
public final [ResolvedTo(CONSTANT_EVALUATION)] class D<[ResolvedTo(CONSTANT_EVALUATION)] U : <ERROR TYPE REF: Type arguments should be specified for an outer class>> : R|kotlin/Any| {
312+
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=D] constructor<[ResolvedTo(CONSTANT_EVALUATION)] U : <ERROR TYPE REF: Type arguments should be specified for an outer class>>(): R|A.D<U>| {
313313
LAZY_super<R|kotlin/Any|>
314314
}
315315

@@ -337,8 +337,8 @@ FILE: [ResolvedTo(IMPORTS)] outerTypeParameterDirectly.kt
337337
LAZY_super<X<R|kotlin/String|>>
338338
}
339339

340-
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class D<[ResolvedTo(ANNOTATION_ARGUMENTS)] U : R|X.Y<kotlin/String>|> : R|kotlin/Any| {
341-
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=D] constructor<[ResolvedTo(ANNOTATION_ARGUMENTS)] U : R|X.Y<kotlin/String>|>(): R|A.D<U>| {
340+
public final [ResolvedTo(ANNOTATION_ARGUMENTS)] class D<[ResolvedTo(ANNOTATION_ARGUMENTS)] U : <ERROR TYPE REF: Type arguments should be specified for an outer class>> : R|kotlin/Any| {
341+
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=D] constructor<[ResolvedTo(ANNOTATION_ARGUMENTS)] U : <ERROR TYPE REF: Type arguments should be specified for an outer class>>(): R|A.D<U>| {
342342
LAZY_super<R|kotlin/Any|>
343343
}
344344

@@ -366,8 +366,8 @@ FILE: [ResolvedTo(IMPORTS)] outerTypeParameterDirectly.kt
366366
LAZY_super<R|X<kotlin/String>|>
367367
}
368368

369-
public final [ResolvedTo(BODY_RESOLVE)] class D<[ResolvedTo(BODY_RESOLVE)] U : R|X.Y<kotlin/String>|> : R|kotlin/Any| {
370-
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=D] constructor<[ResolvedTo(BODY_RESOLVE)] U : R|X.Y<kotlin/String>|>(): R|A.D<U>| {
369+
public final [ResolvedTo(BODY_RESOLVE)] class D<[ResolvedTo(BODY_RESOLVE)] U : <ERROR TYPE REF: Type arguments should be specified for an outer class>> : R|kotlin/Any| {
370+
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=D] constructor<[ResolvedTo(BODY_RESOLVE)] U : <ERROR TYPE REF: Type arguments should be specified for an outer class>>(): R|A.D<U>| {
371371
super<R|kotlin/Any|>()
372372
}
373373

@@ -395,8 +395,8 @@ FILE: [ResolvedTo(BODY_RESOLVE)] outerTypeParameterDirectly.kt
395395
super<R|X<kotlin/String>|>()
396396
}
397397

398-
public final [ResolvedTo(BODY_RESOLVE)] class D<[ResolvedTo(BODY_RESOLVE)] U : R|X.Y<kotlin/String>|> : R|kotlin/Any| {
399-
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=D] constructor<[ResolvedTo(BODY_RESOLVE)] U : R|X.Y<kotlin/String>|>(): R|A.D<U>| {
398+
public final [ResolvedTo(BODY_RESOLVE)] class D<[ResolvedTo(BODY_RESOLVE)] U : <ERROR TYPE REF: Type arguments should be specified for an outer class>> : R|kotlin/Any| {
399+
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=D] constructor<[ResolvedTo(BODY_RESOLVE)] U : <ERROR TYPE REF: Type arguments should be specified for an outer class>>(): R|A.D<U>| {
400400
super<R|kotlin/Any|>()
401401
}
402402

analysis/low-level-api-fir/testData/lazyResolve/classes/outerTypeParameterIndirectly.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -395,8 +395,8 @@ FILE: [ResolvedTo(BODY_RESOLVE)] outerTypeParameterIndirectly.kt
395395
super<R|X<kotlin/String>|>()
396396
}
397397

398-
public final [ResolvedTo(BODY_RESOLVE)] class D<[ResolvedTo(BODY_RESOLVE)] U : R|X.Y<kotlin/String>|> : R|kotlin/Any| {
399-
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=D] constructor<[ResolvedTo(BODY_RESOLVE)] U : R|X.Y<kotlin/String>|>(): R|A.D<U>| {
398+
public final [ResolvedTo(BODY_RESOLVE)] class D<[ResolvedTo(BODY_RESOLVE)] U : <ERROR TYPE REF: Type arguments should be specified for an outer class>> : R|kotlin/Any| {
399+
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=D] constructor<[ResolvedTo(BODY_RESOLVE)] U : <ERROR TYPE REF: Type arguments should be specified for an outer class>>(): R|A.D<U>| {
400400
super<R|kotlin/Any|>()
401401
}
402402

compiler/fir/analysis-tests/testData/resolve/diagnostics/outerClassArgumentsRequiredFromSuper.ll.kt

Lines changed: 0 additions & 15 deletions
This file was deleted.

compiler/fir/analysis-tests/testData/resolve/diagnostics/outerClassArgumentsRequiredFromSuper.reversed.kt

Lines changed: 0 additions & 12 deletions
This file was deleted.

0 commit comments

Comments
 (0)