From c4f89ab32e4bffb88f1aae12aba2fa1f79b36a13 Mon Sep 17 00:00:00 2001 From: Roman Efremov Date: Tue, 12 Mar 2024 10:18:44 +0100 Subject: [PATCH] [Test] Add test reproducing incorrect error in K2 about super qualifier ...with type arguments. Also, add lazy resolve test to check the subsequent changes are correct. ^KT-66150 --- ...ypeArgsInDelegatedConstructorInnerClass.kt | 14 + ...peArgsInDelegatedConstructorInnerClass.txt | 395 ++++++++++++++++++ ...ypeArgsInDelegatedConstructorLocalClass.kt | 15 + ...peArgsInDelegatedConstructorLocalClass.txt | 371 ++++++++++++++++ ...otLazyDeclarationResolveTestGenerated.java | 12 + ...ceLazyDeclarationResolveTestGenerated.java | 12 + ...CompilerTestFE10TestdataTestGenerated.java | 6 + ...sticCompilerFE10TestDataTestGenerated.java | 6 + ...eeOldFrontendDiagnosticsTestGenerated.java | 6 + ...siOldFrontendDiagnosticsTestGenerated.java | 6 + ...rTypeArgsInDelegatedConstructorCall.fir.kt | 15 + ...ifierTypeArgsInDelegatedConstructorCall.kt | 15 + ...erTypeArgsInDelegatedConstructorCall.ll.kt | 18 + .../test/runners/DiagnosticTestGenerated.java | 6 + 14 files changed, 897 insertions(+) create mode 100644 analysis/low-level-api-fir/testData/lazyResolve/superQualifierTypeArgsInDelegatedConstructorInnerClass.kt create mode 100644 analysis/low-level-api-fir/testData/lazyResolve/superQualifierTypeArgsInDelegatedConstructorInnerClass.txt create mode 100644 analysis/low-level-api-fir/testData/lazyResolve/superQualifierTypeArgsInDelegatedConstructorLocalClass.kt create mode 100644 analysis/low-level-api-fir/testData/lazyResolve/superQualifierTypeArgsInDelegatedConstructorLocalClass.txt create mode 100644 compiler/testData/diagnostics/tests/superQualifierTypeArgsInDelegatedConstructorCall.fir.kt create mode 100644 compiler/testData/diagnostics/tests/superQualifierTypeArgsInDelegatedConstructorCall.kt create mode 100644 compiler/testData/diagnostics/tests/superQualifierTypeArgsInDelegatedConstructorCall.ll.kt diff --git a/analysis/low-level-api-fir/testData/lazyResolve/superQualifierTypeArgsInDelegatedConstructorInnerClass.kt b/analysis/low-level-api-fir/testData/lazyResolve/superQualifierTypeArgsInDelegatedConstructorInnerClass.kt new file mode 100644 index 00000000000..52aea7d50ce --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolve/superQualifierTypeArgsInDelegatedConstructorInnerClass.kt @@ -0,0 +1,14 @@ +// MEMBER_CLASS_FILTER: org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol +package one + +interface B { + fun f() = true +} + +open class A(b: Boolean) + +interface D + +class C : B { + inner class Inner : A(super.f()) +} diff --git a/analysis/low-level-api-fir/testData/lazyResolve/superQualifierTypeArgsInDelegatedConstructorInnerClass.txt b/analysis/low-level-api-fir/testData/lazyResolve/superQualifierTypeArgsInDelegatedConstructorInnerClass.txt new file mode 100644 index 00000000000..e6dc7c0ccf1 --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolve/superQualifierTypeArgsInDelegatedConstructorInnerClass.txt @@ -0,0 +1,395 @@ +RAW_FIR: +FILE: [ResolvedTo(RAW_FIR)] superQualifierTypeArgsInDelegatedConstructorInnerClass.kt + public final? [ResolvedTo(RAW_FIR)] interface B<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? final? [ResolvedTo(RAW_FIR)] fun f(): { LAZY_BLOCK } + + } + public open [ResolvedTo(RAW_FIR)] class A<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor<[ResolvedTo(RAW_FIR)] T>([ResolvedTo(RAW_FIR)] b: Boolean): R|one/A| { + LAZY_super + } + + } + public final? [ResolvedTo(RAW_FIR)] interface D : R|kotlin/Any| { + } + public final? [ResolvedTo(RAW_FIR)] class C : B { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=C] constructor(): R|one/C| { + LAZY_super<> + } + + public final? inner [ResolvedTo(RAW_FIR)] class Inner : A { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Inner] one/C.constructor(): R|one/C.Inner| { + LAZY_super> + } + + } + + } + +IMPORTS: +FILE: [ResolvedTo(IMPORTS)] superQualifierTypeArgsInDelegatedConstructorInnerClass.kt + public final? [ResolvedTo(RAW_FIR)] interface B<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? final? [ResolvedTo(RAW_FIR)] fun f(): { LAZY_BLOCK } + + } + public open [ResolvedTo(RAW_FIR)] class A<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor<[ResolvedTo(RAW_FIR)] T>([ResolvedTo(RAW_FIR)] b: Boolean): R|one/A| { + LAZY_super + } + + } + public final? [ResolvedTo(RAW_FIR)] interface D : R|kotlin/Any| { + } + public final? [ResolvedTo(RAW_FIR)] class C : B { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=C] constructor(): R|one/C| { + LAZY_super<> + } + + public final? inner [ResolvedTo(RAW_FIR)] class Inner : A { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Inner] one/C.constructor(): R|one/C.Inner| { + LAZY_super> + } + + } + + } + +COMPILER_REQUIRED_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] superQualifierTypeArgsInDelegatedConstructorInnerClass.kt + public final? [ResolvedTo(RAW_FIR)] interface B<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? final? [ResolvedTo(RAW_FIR)] fun f(): { LAZY_BLOCK } + + } + public open [ResolvedTo(RAW_FIR)] class A<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor<[ResolvedTo(RAW_FIR)] T>([ResolvedTo(RAW_FIR)] b: Boolean): R|one/A| { + LAZY_super + } + + } + public final? [ResolvedTo(RAW_FIR)] interface D : R|kotlin/Any| { + } + public final? [ResolvedTo(RAW_FIR)] class C : B { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=C] constructor(): R|one/C| { + LAZY_super<> + } + + public final? inner [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] class Inner : A { + public? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] [ContainingClassKey=Inner] one/C.constructor(): R|one/C.Inner| { + LAZY_super> + } + + } + + } + +COMPANION_GENERATION: +FILE: [ResolvedTo(IMPORTS)] superQualifierTypeArgsInDelegatedConstructorInnerClass.kt + public final? [ResolvedTo(RAW_FIR)] interface B<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? final? [ResolvedTo(RAW_FIR)] fun f(): { LAZY_BLOCK } + + } + public open [ResolvedTo(RAW_FIR)] class A<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor<[ResolvedTo(RAW_FIR)] T>([ResolvedTo(RAW_FIR)] b: Boolean): R|one/A| { + LAZY_super + } + + } + public final? [ResolvedTo(RAW_FIR)] interface D : R|kotlin/Any| { + } + public final? [ResolvedTo(RAW_FIR)] class C : B { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=C] constructor(): R|one/C| { + LAZY_super<> + } + + public final? inner [ResolvedTo(COMPANION_GENERATION)] class Inner : A { + public? [ResolvedTo(COMPANION_GENERATION)] [ContainingClassKey=Inner] one/C.constructor(): R|one/C.Inner| { + LAZY_super> + } + + } + + } + +SUPER_TYPES: +FILE: [ResolvedTo(IMPORTS)] superQualifierTypeArgsInDelegatedConstructorInnerClass.kt + public final? [ResolvedTo(SUPER_TYPES)] interface B<[ResolvedTo(SUPER_TYPES)] T> : R|kotlin/Any| { + public? final? [ResolvedTo(RAW_FIR)] fun f(): { LAZY_BLOCK } + + } + public open [ResolvedTo(SUPER_TYPES)] class A<[ResolvedTo(SUPER_TYPES)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor<[ResolvedTo(SUPER_TYPES)] T>([ResolvedTo(RAW_FIR)] b: Boolean): R|one/A| { + LAZY_super + } + + } + public final? [ResolvedTo(SUPER_TYPES)] interface D : R|kotlin/Any| { + } + public final? [ResolvedTo(SUPER_TYPES)] class C : R|one/B| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=C] constructor(): R|one/C| { + LAZY_super<> + } + + public final? inner [ResolvedTo(SUPER_TYPES)] class Inner : R|one/A| { + public? [ResolvedTo(SUPER_TYPES)] [ContainingClassKey=Inner] one/C.constructor(): R|one/C.Inner| { + LAZY_super> + } + + } + + } + +TYPES: +FILE: [ResolvedTo(IMPORTS)] superQualifierTypeArgsInDelegatedConstructorInnerClass.kt + public final? [ResolvedTo(SUPER_TYPES)] interface B<[ResolvedTo(SUPER_TYPES)] T> : R|kotlin/Any| { + public? final? [ResolvedTo(RAW_FIR)] fun f(): { LAZY_BLOCK } + + } + public open [ResolvedTo(SUPER_TYPES)] class A<[ResolvedTo(SUPER_TYPES)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor<[ResolvedTo(SUPER_TYPES)] T>([ResolvedTo(RAW_FIR)] b: Boolean): R|one/A| { + LAZY_super + } + + } + public final? [ResolvedTo(SUPER_TYPES)] interface D : R|kotlin/Any| { + } + public final? [ResolvedTo(TYPES)] class C : R|one/B| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=C] constructor(): R|one/C| { + LAZY_super<> + } + + public final? inner [ResolvedTo(TYPES)] class Inner : R|one/A| { + public? [ResolvedTo(TYPES)] [ContainingClassKey=Inner] one/C.constructor(): R|one/C.Inner| { + LAZY_super|> + } + + } + + } + +STATUS: +FILE: [ResolvedTo(IMPORTS)] superQualifierTypeArgsInDelegatedConstructorInnerClass.kt + public abstract [ResolvedTo(STATUS)] interface B<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public open [ResolvedTo(STATUS)] fun f(): { LAZY_BLOCK } + + } + public open [ResolvedTo(STATUS)] class A<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=A] constructor<[ResolvedTo(STATUS)] T>([ResolvedTo(STATUS)] b: R|kotlin/Boolean|): R|one/A| { + LAZY_super + } + + } + public final? [ResolvedTo(SUPER_TYPES)] interface D : R|kotlin/Any| { + } + public final [ResolvedTo(STATUS)] class C : R|one/B| { + public [ResolvedTo(STATUS)] [ContainingClassKey=C] constructor(): R|one/C| { + LAZY_super<> + } + + public final inner [ResolvedTo(STATUS)] class Inner : R|one/A| { + public [ResolvedTo(STATUS)] [ContainingClassKey=Inner] one/C.constructor(): R|one/C.Inner| { + LAZY_super|> + } + + } + + } + +EXPECT_ACTUAL_MATCHING: +FILE: [ResolvedTo(IMPORTS)] superQualifierTypeArgsInDelegatedConstructorInnerClass.kt + public abstract [ResolvedTo(STATUS)] interface B<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public open [ResolvedTo(STATUS)] fun f(): { LAZY_BLOCK } + + } + public open [ResolvedTo(STATUS)] class A<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=A] constructor<[ResolvedTo(STATUS)] T>([ResolvedTo(STATUS)] b: R|kotlin/Boolean|): R|one/A| { + LAZY_super + } + + } + public final? [ResolvedTo(SUPER_TYPES)] interface D : R|kotlin/Any| { + } + public final [ResolvedTo(STATUS)] class C : R|one/B| { + public [ResolvedTo(STATUS)] [ContainingClassKey=C] constructor(): R|one/C| { + LAZY_super<> + } + + public final inner [ResolvedTo(EXPECT_ACTUAL_MATCHING)] class Inner : R|one/A| { + public [ResolvedTo(EXPECT_ACTUAL_MATCHING)] [ContainingClassKey=Inner] one/C.constructor(): R|one/C.Inner| { + LAZY_super|> + } + + } + + } + +CONTRACTS: +FILE: [ResolvedTo(IMPORTS)] superQualifierTypeArgsInDelegatedConstructorInnerClass.kt + public abstract [ResolvedTo(STATUS)] interface B<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public open [ResolvedTo(STATUS)] fun f(): { LAZY_BLOCK } + + } + public open [ResolvedTo(STATUS)] class A<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=A] constructor<[ResolvedTo(STATUS)] T>([ResolvedTo(STATUS)] b: R|kotlin/Boolean|): R|one/A| { + LAZY_super + } + + } + public final? [ResolvedTo(SUPER_TYPES)] interface D : R|kotlin/Any| { + } + public final [ResolvedTo(STATUS)] class C : R|one/B| { + public [ResolvedTo(STATUS)] [ContainingClassKey=C] constructor(): R|one/C| { + LAZY_super<> + } + + public final inner [ResolvedTo(CONTRACTS)] class Inner : R|one/A| { + public [ResolvedTo(CONTRACTS)] [ContainingClassKey=Inner] one/C.constructor(): R|one/C.Inner| { + LAZY_super|> + } + + } + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] superQualifierTypeArgsInDelegatedConstructorInnerClass.kt + public abstract [ResolvedTo(STATUS)] interface B<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public open [ResolvedTo(STATUS)] fun f(): { LAZY_BLOCK } + + } + public open [ResolvedTo(STATUS)] class A<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=A] constructor<[ResolvedTo(STATUS)] T>([ResolvedTo(STATUS)] b: R|kotlin/Boolean|): R|one/A| { + LAZY_super + } + + } + public final? [ResolvedTo(SUPER_TYPES)] interface D : R|kotlin/Any| { + } + public final [ResolvedTo(STATUS)] class C : R|one/B| { + public [ResolvedTo(STATUS)] [ContainingClassKey=C] constructor(): R|one/C| { + LAZY_super<> + } + + public final inner [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] class Inner : R|one/A| { + public [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [ContainingClassKey=Inner] one/C.constructor(): R|one/C.Inner| { + LAZY_super|> + } + + } + + } + +CONSTANT_EVALUATION: +FILE: [ResolvedTo(IMPORTS)] superQualifierTypeArgsInDelegatedConstructorInnerClass.kt + public abstract [ResolvedTo(STATUS)] interface B<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public open [ResolvedTo(STATUS)] fun f(): { LAZY_BLOCK } + + } + public open [ResolvedTo(STATUS)] class A<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=A] constructor<[ResolvedTo(STATUS)] T>([ResolvedTo(STATUS)] b: R|kotlin/Boolean|): R|one/A| { + LAZY_super + } + + } + public final? [ResolvedTo(SUPER_TYPES)] interface D : R|kotlin/Any| { + } + public final [ResolvedTo(STATUS)] class C : R|one/B| { + public [ResolvedTo(STATUS)] [ContainingClassKey=C] constructor(): R|one/C| { + LAZY_super<> + } + + public final inner [ResolvedTo(CONSTANT_EVALUATION)] class Inner : R|one/A| { + public [ResolvedTo(CONSTANT_EVALUATION)] [ContainingClassKey=Inner] one/C.constructor(): R|one/C.Inner| { + LAZY_super|> + } + + } + + } + +ANNOTATION_ARGUMENTS: +FILE: [ResolvedTo(IMPORTS)] superQualifierTypeArgsInDelegatedConstructorInnerClass.kt + public abstract [ResolvedTo(STATUS)] interface B<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public open [ResolvedTo(STATUS)] fun f(): { LAZY_BLOCK } + + } + public open [ResolvedTo(STATUS)] class A<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=A] constructor<[ResolvedTo(STATUS)] T>([ResolvedTo(STATUS)] b: R|kotlin/Boolean|): R|one/A| { + LAZY_super + } + + } + public final? [ResolvedTo(SUPER_TYPES)] interface D : R|kotlin/Any| { + } + public final [ResolvedTo(STATUS)] class C : R|one/B| { + public [ResolvedTo(STATUS)] [ContainingClassKey=C] constructor(): R|one/C| { + LAZY_super<> + } + + public final inner [ResolvedTo(ANNOTATION_ARGUMENTS)] class Inner : R|one/A| { + public [ResolvedTo(ANNOTATION_ARGUMENTS)] [ContainingClassKey=Inner] one/C.constructor(): R|one/C.Inner| { + LAZY_super|> + } + + } + + } + +BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] superQualifierTypeArgsInDelegatedConstructorInnerClass.kt + public abstract [ResolvedTo(STATUS)] interface B<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public open [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun f(): R|kotlin/Boolean| { + ^f Boolean(true) + } + + } + public open [ResolvedTo(STATUS)] class A<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=A] constructor<[ResolvedTo(STATUS)] T>([ResolvedTo(STATUS)] b: R|kotlin/Boolean|): R|one/A| { + LAZY_super + } + + } + public final? [ResolvedTo(SUPER_TYPES)] interface D : R|kotlin/Any| { + } + public final [ResolvedTo(STATUS)] class C : R|one/B| { + public [ResolvedTo(STATUS)] [ContainingClassKey=C] constructor(): R|one/C| { + LAZY_super<> + } + + public final inner [ResolvedTo(ANNOTATION_ARGUMENTS)] class Inner : R|one/A| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Inner] one/C.constructor(): R|one/C.Inner| { + super|>(this@R|one/C|.super|>.R|SubstitutionOverride|()) + } + + } + + } + +FILE RAW TO BODY: +FILE: [ResolvedTo(BODY_RESOLVE)] superQualifierTypeArgsInDelegatedConstructorInnerClass.kt + public abstract [ResolvedTo(BODY_RESOLVE)] interface B<[ResolvedTo(BODY_RESOLVE)] T> : R|kotlin/Any| { + public open [ResolvedTo(BODY_RESOLVE)] fun f(): R|kotlin/Boolean| { + ^f Boolean(true) + } + + } + public open [ResolvedTo(BODY_RESOLVE)] class A<[ResolvedTo(BODY_RESOLVE)] T> : R|kotlin/Any| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=A] constructor<[ResolvedTo(BODY_RESOLVE)] T>([ResolvedTo(BODY_RESOLVE)] b: R|kotlin/Boolean|): R|one/A| { + super() + } + + } + public abstract [ResolvedTo(BODY_RESOLVE)] interface D : R|kotlin/Any| { + } + public final [ResolvedTo(BODY_RESOLVE)] class C : R|one/B| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=C] constructor(): R|one/C| { + super() + } + + public final inner [ResolvedTo(BODY_RESOLVE)] class Inner : R|one/A| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Inner] one/C.constructor(): R|one/C.Inner| { + super|>(this@R|one/C|.super|>.R|SubstitutionOverride|()) + } + + } + + } diff --git a/analysis/low-level-api-fir/testData/lazyResolve/superQualifierTypeArgsInDelegatedConstructorLocalClass.kt b/analysis/low-level-api-fir/testData/lazyResolve/superQualifierTypeArgsInDelegatedConstructorLocalClass.kt new file mode 100644 index 00000000000..a3cac2569eb --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolve/superQualifierTypeArgsInDelegatedConstructorLocalClass.kt @@ -0,0 +1,15 @@ +package one + +interface B { + fun f() = true +} + +open class A(b: Boolean) + +interface D + +class C : B { + fun test() { + class LocalClass : A(super.f()) + } +} diff --git a/analysis/low-level-api-fir/testData/lazyResolve/superQualifierTypeArgsInDelegatedConstructorLocalClass.txt b/analysis/low-level-api-fir/testData/lazyResolve/superQualifierTypeArgsInDelegatedConstructorLocalClass.txt new file mode 100644 index 00000000000..bbad64816cc --- /dev/null +++ b/analysis/low-level-api-fir/testData/lazyResolve/superQualifierTypeArgsInDelegatedConstructorLocalClass.txt @@ -0,0 +1,371 @@ +RAW_FIR: +FILE: [ResolvedTo(RAW_FIR)] superQualifierTypeArgsInDelegatedConstructorLocalClass.kt + public final? [ResolvedTo(RAW_FIR)] interface B<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? final? [ResolvedTo(RAW_FIR)] fun f(): { LAZY_BLOCK } + + } + public open [ResolvedTo(RAW_FIR)] class A<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor<[ResolvedTo(RAW_FIR)] T>([ResolvedTo(RAW_FIR)] b: Boolean): R|one/A| { + LAZY_super + } + + } + public final? [ResolvedTo(RAW_FIR)] interface D : R|kotlin/Any| { + } + public final? [ResolvedTo(RAW_FIR)] class C : B { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=C] constructor(): R|one/C| { + LAZY_super<> + } + + public? final? [ResolvedTo(RAW_FIR)] fun test(): R|kotlin/Unit| { LAZY_BLOCK } + + } + +IMPORTS: +FILE: [ResolvedTo(IMPORTS)] superQualifierTypeArgsInDelegatedConstructorLocalClass.kt + public final? [ResolvedTo(RAW_FIR)] interface B<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? final? [ResolvedTo(RAW_FIR)] fun f(): { LAZY_BLOCK } + + } + public open [ResolvedTo(RAW_FIR)] class A<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor<[ResolvedTo(RAW_FIR)] T>([ResolvedTo(RAW_FIR)] b: Boolean): R|one/A| { + LAZY_super + } + + } + public final? [ResolvedTo(RAW_FIR)] interface D : R|kotlin/Any| { + } + public final? [ResolvedTo(RAW_FIR)] class C : B { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=C] constructor(): R|one/C| { + LAZY_super<> + } + + public? final? [ResolvedTo(RAW_FIR)] fun test(): R|kotlin/Unit| { LAZY_BLOCK } + + } + +COMPILER_REQUIRED_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] superQualifierTypeArgsInDelegatedConstructorLocalClass.kt + public final? [ResolvedTo(RAW_FIR)] interface B<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? final? [ResolvedTo(RAW_FIR)] fun f(): { LAZY_BLOCK } + + } + public open [ResolvedTo(RAW_FIR)] class A<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor<[ResolvedTo(RAW_FIR)] T>([ResolvedTo(RAW_FIR)] b: Boolean): R|one/A| { + LAZY_super + } + + } + public final? [ResolvedTo(RAW_FIR)] interface D : R|kotlin/Any| { + } + public final? [ResolvedTo(RAW_FIR)] class C : B { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=C] constructor(): R|one/C| { + LAZY_super<> + } + + public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] fun test(): R|kotlin/Unit| { LAZY_BLOCK } + + } + +COMPANION_GENERATION: +FILE: [ResolvedTo(IMPORTS)] superQualifierTypeArgsInDelegatedConstructorLocalClass.kt + public final? [ResolvedTo(RAW_FIR)] interface B<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? final? [ResolvedTo(RAW_FIR)] fun f(): { LAZY_BLOCK } + + } + public open [ResolvedTo(RAW_FIR)] class A<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor<[ResolvedTo(RAW_FIR)] T>([ResolvedTo(RAW_FIR)] b: Boolean): R|one/A| { + LAZY_super + } + + } + public final? [ResolvedTo(RAW_FIR)] interface D : R|kotlin/Any| { + } + public final? [ResolvedTo(RAW_FIR)] class C : B { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=C] constructor(): R|one/C| { + LAZY_super<> + } + + public? final? [ResolvedTo(COMPANION_GENERATION)] fun test(): R|kotlin/Unit| { LAZY_BLOCK } + + } + +SUPER_TYPES: +FILE: [ResolvedTo(IMPORTS)] superQualifierTypeArgsInDelegatedConstructorLocalClass.kt + public final? [ResolvedTo(SUPER_TYPES)] interface B<[ResolvedTo(SUPER_TYPES)] T> : R|kotlin/Any| { + public? final? [ResolvedTo(RAW_FIR)] fun f(): { LAZY_BLOCK } + + } + public open [ResolvedTo(RAW_FIR)] class A<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor<[ResolvedTo(RAW_FIR)] T>([ResolvedTo(RAW_FIR)] b: Boolean): R|one/A| { + LAZY_super + } + + } + public final? [ResolvedTo(RAW_FIR)] interface D : R|kotlin/Any| { + } + public final? [ResolvedTo(SUPER_TYPES)] class C : R|one/B| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=C] constructor(): R|one/C| { + LAZY_super<> + } + + public? final? [ResolvedTo(SUPER_TYPES)] fun test(): R|kotlin/Unit| { LAZY_BLOCK } + + } + +TYPES: +FILE: [ResolvedTo(IMPORTS)] superQualifierTypeArgsInDelegatedConstructorLocalClass.kt + public final? [ResolvedTo(SUPER_TYPES)] interface B<[ResolvedTo(SUPER_TYPES)] T> : R|kotlin/Any| { + public? final? [ResolvedTo(RAW_FIR)] fun f(): { LAZY_BLOCK } + + } + public open [ResolvedTo(RAW_FIR)] class A<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor<[ResolvedTo(RAW_FIR)] T>([ResolvedTo(RAW_FIR)] b: Boolean): R|one/A| { + LAZY_super + } + + } + public final? [ResolvedTo(RAW_FIR)] interface D : R|kotlin/Any| { + } + public final? [ResolvedTo(TYPES)] class C : R|one/B| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=C] constructor(): R|one/C| { + LAZY_super<> + } + + public? final? [ResolvedTo(TYPES)] fun test(): R|kotlin/Unit| { LAZY_BLOCK } + + } + +STATUS: +FILE: [ResolvedTo(IMPORTS)] superQualifierTypeArgsInDelegatedConstructorLocalClass.kt + public abstract [ResolvedTo(STATUS)] interface B<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public open [ResolvedTo(STATUS)] fun f(): { LAZY_BLOCK } + + } + public open [ResolvedTo(RAW_FIR)] class A<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor<[ResolvedTo(RAW_FIR)] T>([ResolvedTo(RAW_FIR)] b: Boolean): R|one/A| { + LAZY_super + } + + } + public final? [ResolvedTo(RAW_FIR)] interface D : R|kotlin/Any| { + } + public final [ResolvedTo(STATUS)] class C : R|one/B| { + public [ResolvedTo(STATUS)] [ContainingClassKey=C] constructor(): R|one/C| { + LAZY_super<> + } + + public final [ResolvedTo(STATUS)] fun test(): R|kotlin/Unit| { LAZY_BLOCK } + + } + +EXPECT_ACTUAL_MATCHING: +FILE: [ResolvedTo(IMPORTS)] superQualifierTypeArgsInDelegatedConstructorLocalClass.kt + public abstract [ResolvedTo(STATUS)] interface B<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public open [ResolvedTo(STATUS)] fun f(): { LAZY_BLOCK } + + } + public open [ResolvedTo(RAW_FIR)] class A<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor<[ResolvedTo(RAW_FIR)] T>([ResolvedTo(RAW_FIR)] b: Boolean): R|one/A| { + LAZY_super + } + + } + public final? [ResolvedTo(RAW_FIR)] interface D : R|kotlin/Any| { + } + public final [ResolvedTo(STATUS)] class C : R|one/B| { + public [ResolvedTo(STATUS)] [ContainingClassKey=C] constructor(): R|one/C| { + LAZY_super<> + } + + public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] fun test(): R|kotlin/Unit| { LAZY_BLOCK } + + } + +CONTRACTS: +FILE: [ResolvedTo(IMPORTS)] superQualifierTypeArgsInDelegatedConstructorLocalClass.kt + public abstract [ResolvedTo(STATUS)] interface B<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public open [ResolvedTo(STATUS)] fun f(): { LAZY_BLOCK } + + } + public open [ResolvedTo(RAW_FIR)] class A<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor<[ResolvedTo(RAW_FIR)] T>([ResolvedTo(RAW_FIR)] b: Boolean): R|one/A| { + LAZY_super + } + + } + public final? [ResolvedTo(RAW_FIR)] interface D : R|kotlin/Any| { + } + public final [ResolvedTo(STATUS)] class C : R|one/B| { + public [ResolvedTo(STATUS)] [ContainingClassKey=C] constructor(): R|one/C| { + LAZY_super<> + } + + public final [ResolvedTo(CONTRACTS)] fun test(): R|kotlin/Unit| { + local final? [ResolvedTo(RAW_FIR)] class LocalClass : A { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=LocalClass] constructor(): R|/LocalClass| { + super>(super.f#()) + } + + } + + } + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] superQualifierTypeArgsInDelegatedConstructorLocalClass.kt + public abstract [ResolvedTo(STATUS)] interface B<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public open [ResolvedTo(STATUS)] fun f(): { LAZY_BLOCK } + + } + public open [ResolvedTo(RAW_FIR)] class A<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor<[ResolvedTo(RAW_FIR)] T>([ResolvedTo(RAW_FIR)] b: Boolean): R|one/A| { + LAZY_super + } + + } + public final? [ResolvedTo(RAW_FIR)] interface D : R|kotlin/Any| { + } + public final [ResolvedTo(STATUS)] class C : R|one/B| { + public [ResolvedTo(STATUS)] [ContainingClassKey=C] constructor(): R|one/C| { + LAZY_super<> + } + + public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun test(): R|kotlin/Unit| { + local final? [ResolvedTo(RAW_FIR)] class LocalClass : A { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=LocalClass] constructor(): R|/LocalClass| { + super>(super.f#()) + } + + } + + } + + } + +CONSTANT_EVALUATION: +FILE: [ResolvedTo(IMPORTS)] superQualifierTypeArgsInDelegatedConstructorLocalClass.kt + public abstract [ResolvedTo(STATUS)] interface B<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public open [ResolvedTo(STATUS)] fun f(): { LAZY_BLOCK } + + } + public open [ResolvedTo(RAW_FIR)] class A<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor<[ResolvedTo(RAW_FIR)] T>([ResolvedTo(RAW_FIR)] b: Boolean): R|one/A| { + LAZY_super + } + + } + public final? [ResolvedTo(RAW_FIR)] interface D : R|kotlin/Any| { + } + public final [ResolvedTo(STATUS)] class C : R|one/B| { + public [ResolvedTo(STATUS)] [ContainingClassKey=C] constructor(): R|one/C| { + LAZY_super<> + } + + public final [ResolvedTo(CONSTANT_EVALUATION)] fun test(): R|kotlin/Unit| { + local final? [ResolvedTo(RAW_FIR)] class LocalClass : A { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=LocalClass] constructor(): R|/LocalClass| { + super>(super.f#()) + } + + } + + } + + } + +ANNOTATION_ARGUMENTS: +FILE: [ResolvedTo(IMPORTS)] superQualifierTypeArgsInDelegatedConstructorLocalClass.kt + public abstract [ResolvedTo(STATUS)] interface B<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public open [ResolvedTo(STATUS)] fun f(): { LAZY_BLOCK } + + } + public open [ResolvedTo(RAW_FIR)] class A<[ResolvedTo(RAW_FIR)] T> : R|kotlin/Any| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=A] constructor<[ResolvedTo(RAW_FIR)] T>([ResolvedTo(RAW_FIR)] b: Boolean): R|one/A| { + LAZY_super + } + + } + public final? [ResolvedTo(RAW_FIR)] interface D : R|kotlin/Any| { + } + public final [ResolvedTo(STATUS)] class C : R|one/B| { + public [ResolvedTo(STATUS)] [ContainingClassKey=C] constructor(): R|one/C| { + LAZY_super<> + } + + public final [ResolvedTo(ANNOTATION_ARGUMENTS)] fun test(): R|kotlin/Unit| { + local final? [ResolvedTo(RAW_FIR)] class LocalClass : A { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=LocalClass] constructor(): R|/LocalClass| { + super>(super.f#()) + } + + } + + } + + } + +BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] superQualifierTypeArgsInDelegatedConstructorLocalClass.kt + public abstract [ResolvedTo(STATUS)] interface B<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public open [ResolvedTo(STATUS)] fun f(): { LAZY_BLOCK } + + } + public open [ResolvedTo(STATUS)] class A<[ResolvedTo(STATUS)] T> : R|kotlin/Any| { + public [ResolvedTo(STATUS)] [ContainingClassKey=A] constructor<[ResolvedTo(STATUS)] T>([ResolvedTo(STATUS)] b: R|kotlin/Boolean|): R|one/A| { + LAZY_super + } + + } + public final? [ResolvedTo(RAW_FIR)] interface D : R|kotlin/Any| { + } + public final [ResolvedTo(STATUS)] class C : R|one/B| { + public [ResolvedTo(STATUS)] [ContainingClassKey=C] constructor(): R|one/C| { + LAZY_super<> + } + + public final [ResolvedTo(BODY_RESOLVE)] fun test(): R|kotlin/Unit| { + local final [ResolvedTo(BODY_RESOLVE)] class LocalClass : R|one/A| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=LocalClass] constructor(): R|/LocalClass| { + super|>(this@R|one/C|.super<>.#()) + } + + } + + } + + } + +FILE RAW TO BODY: +FILE: [ResolvedTo(BODY_RESOLVE)] superQualifierTypeArgsInDelegatedConstructorLocalClass.kt + public abstract [ResolvedTo(BODY_RESOLVE)] interface B<[ResolvedTo(BODY_RESOLVE)] T> : R|kotlin/Any| { + public open [ResolvedTo(BODY_RESOLVE)] fun f(): R|kotlin/Boolean| { + ^f Boolean(true) + } + + } + public open [ResolvedTo(BODY_RESOLVE)] class A<[ResolvedTo(BODY_RESOLVE)] T> : R|kotlin/Any| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=A] constructor<[ResolvedTo(BODY_RESOLVE)] T>([ResolvedTo(BODY_RESOLVE)] b: R|kotlin/Boolean|): R|one/A| { + super() + } + + } + public abstract [ResolvedTo(BODY_RESOLVE)] interface D : R|kotlin/Any| { + } + public final [ResolvedTo(BODY_RESOLVE)] class C : R|one/B| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=C] constructor(): R|one/C| { + super() + } + + public final [ResolvedTo(BODY_RESOLVE)] fun test(): R|kotlin/Unit| { + local final [ResolvedTo(BODY_RESOLVE)] class LocalClass : R|one/A| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=LocalClass] constructor(): R|/LocalClass| { + super|>(this@R|one/C|.super<>.#()) + } + + } + + } + + } diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirOutOfContentRootLazyDeclarationResolveTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirOutOfContentRootLazyDeclarationResolveTestGenerated.java index 61c08a46d0d..34f80c3d7ff 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirOutOfContentRootLazyDeclarationResolveTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirOutOfContentRootLazyDeclarationResolveTestGenerated.java @@ -600,6 +600,18 @@ public class FirOutOfContentRootLazyDeclarationResolveTestGenerated extends Abst runTest("analysis/low-level-api-fir/testData/lazyResolve/substitutionFakeOverrideWithImplicitTypeAndReceiver.kt"); } + @Test + @TestMetadata("superQualifierTypeArgsInDelegatedConstructorInnerClass.kt") + public void testSuperQualifierTypeArgsInDelegatedConstructorInnerClass() { + runTest("analysis/low-level-api-fir/testData/lazyResolve/superQualifierTypeArgsInDelegatedConstructorInnerClass.kt"); + } + + @Test + @TestMetadata("superQualifierTypeArgsInDelegatedConstructorLocalClass.kt") + public void testSuperQualifierTypeArgsInDelegatedConstructorLocalClass() { + runTest("analysis/low-level-api-fir/testData/lazyResolve/superQualifierTypeArgsInDelegatedConstructorLocalClass.kt"); + } + @Test @TestMetadata("superTypes.kt") public void testSuperTypes() { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirSourceLazyDeclarationResolveTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirSourceLazyDeclarationResolveTestGenerated.java index 598e7228a85..e37694d14d0 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirSourceLazyDeclarationResolveTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirSourceLazyDeclarationResolveTestGenerated.java @@ -600,6 +600,18 @@ public class FirSourceLazyDeclarationResolveTestGenerated extends AbstractFirSou runTest("analysis/low-level-api-fir/testData/lazyResolve/substitutionFakeOverrideWithImplicitTypeAndReceiver.kt"); } + @Test + @TestMetadata("superQualifierTypeArgsInDelegatedConstructorInnerClass.kt") + public void testSuperQualifierTypeArgsInDelegatedConstructorInnerClass() { + runTest("analysis/low-level-api-fir/testData/lazyResolve/superQualifierTypeArgsInDelegatedConstructorInnerClass.kt"); + } + + @Test + @TestMetadata("superQualifierTypeArgsInDelegatedConstructorLocalClass.kt") + public void testSuperQualifierTypeArgsInDelegatedConstructorLocalClass() { + runTest("analysis/low-level-api-fir/testData/lazyResolve/superQualifierTypeArgsInDelegatedConstructorLocalClass.kt"); + } + @Test @TestMetadata("superTypes.kt") public void testSuperTypes() { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java index a24d060aeb0..dd88833ada2 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java @@ -1401,6 +1401,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia runTest("compiler/testData/diagnostics/tests/StringTemplates.kt"); } + @Test + @TestMetadata("superQualifierTypeArgsInDelegatedConstructorCall.kt") + public void testSuperQualifierTypeArgsInDelegatedConstructorCall() { + runTest("compiler/testData/diagnostics/tests/superQualifierTypeArgsInDelegatedConstructorCall.kt"); + } + @Test @TestMetadata("SupertypeListChecks.kt") public void testSupertypeListChecks() { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java index fcec7d59276..2ca95bad6a7 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java @@ -1401,6 +1401,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated runTest("compiler/testData/diagnostics/tests/StringTemplates.kt"); } + @Test + @TestMetadata("superQualifierTypeArgsInDelegatedConstructorCall.kt") + public void testSuperQualifierTypeArgsInDelegatedConstructorCall() { + runTest("compiler/testData/diagnostics/tests/superQualifierTypeArgsInDelegatedConstructorCall.kt"); + } + @Test @TestMetadata("SupertypeListChecks.kt") public void testSupertypeListChecks() { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java index d795d7b19e2..73d4bf91f06 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java @@ -1401,6 +1401,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir runTest("compiler/testData/diagnostics/tests/StringTemplates.kt"); } + @Test + @TestMetadata("superQualifierTypeArgsInDelegatedConstructorCall.kt") + public void testSuperQualifierTypeArgsInDelegatedConstructorCall() { + runTest("compiler/testData/diagnostics/tests/superQualifierTypeArgsInDelegatedConstructorCall.kt"); + } + @Test @TestMetadata("SupertypeListChecks.kt") public void testSupertypeListChecks() { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java index 84ccaeccdcb..de4b5d6d866 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java @@ -1401,6 +1401,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia runTest("compiler/testData/diagnostics/tests/StringTemplates.kt"); } + @Test + @TestMetadata("superQualifierTypeArgsInDelegatedConstructorCall.kt") + public void testSuperQualifierTypeArgsInDelegatedConstructorCall() { + runTest("compiler/testData/diagnostics/tests/superQualifierTypeArgsInDelegatedConstructorCall.kt"); + } + @Test @TestMetadata("SupertypeListChecks.kt") public void testSupertypeListChecks() { diff --git a/compiler/testData/diagnostics/tests/superQualifierTypeArgsInDelegatedConstructorCall.fir.kt b/compiler/testData/diagnostics/tests/superQualifierTypeArgsInDelegatedConstructorCall.fir.kt new file mode 100644 index 00000000000..e72c7aef7e4 --- /dev/null +++ b/compiler/testData/diagnostics/tests/superQualifierTypeArgsInDelegatedConstructorCall.fir.kt @@ -0,0 +1,15 @@ +interface B { + fun f() = true +} + +open class A(b: Boolean) + +class C : B { + inner class Inner : A(super<B>.f()) + inner class Inner2 : A(super>.f()) + + fun test() { + class LocalClass : A(super<B>.f()) + class LocalClass2 : A(super>.f()) + } +} diff --git a/compiler/testData/diagnostics/tests/superQualifierTypeArgsInDelegatedConstructorCall.kt b/compiler/testData/diagnostics/tests/superQualifierTypeArgsInDelegatedConstructorCall.kt new file mode 100644 index 00000000000..77df453f144 --- /dev/null +++ b/compiler/testData/diagnostics/tests/superQualifierTypeArgsInDelegatedConstructorCall.kt @@ -0,0 +1,15 @@ +interface B { + fun f() = true +} + +open class A(b: Boolean) + +class C : B { + inner class Inner : A(super.f()) + inner class Inner2 : A(super>.f()) + + fun test() { + class LocalClass : A(super.f()) + class LocalClass2 : A(super>.f()) + } +} diff --git a/compiler/testData/diagnostics/tests/superQualifierTypeArgsInDelegatedConstructorCall.ll.kt b/compiler/testData/diagnostics/tests/superQualifierTypeArgsInDelegatedConstructorCall.ll.kt new file mode 100644 index 00000000000..59ee93817ee --- /dev/null +++ b/compiler/testData/diagnostics/tests/superQualifierTypeArgsInDelegatedConstructorCall.ll.kt @@ -0,0 +1,18 @@ +// LL_FIR_DIVERGENCE +// WRONG_NUMBER_OF_TYPE_ARGUMENTS not reported in Inner class because of BodyBuildingMode.LAZY_BODIES +// LL_FIR_DIVERGENCE +interface B { + fun f() = true +} + +open class A(b: Boolean) + +class C : B { + inner class Inner : A(super.f()) + inner class Inner2 : A(super>.f()) + + fun test() { + class LocalClass : A(super<B>.f()) + class LocalClass2 : A(super>.f()) + } +} diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java index 9b0ef8dec68..6046bc00eaf 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java @@ -1401,6 +1401,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/StringTemplates.kt"); } + @Test + @TestMetadata("superQualifierTypeArgsInDelegatedConstructorCall.kt") + public void testSuperQualifierTypeArgsInDelegatedConstructorCall() { + runTest("compiler/testData/diagnostics/tests/superQualifierTypeArgsInDelegatedConstructorCall.kt"); + } + @Test @TestMetadata("SupertypeListChecks.kt") public void testSupertypeListChecks() {