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 fb595b791bd..d8190bee13d 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 @@ -1746,6 +1746,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia runTest("compiler/testData/diagnostics/tests/annotations/classAnnotationsInLocalClass.kt"); } + @Test + @TestMetadata("companionAnnotations.kt") + public void testCompanionAnnotations() throws Exception { + runTest("compiler/testData/diagnostics/tests/annotations/companionAnnotations.kt"); + } + @Test @TestMetadata("constantFromOuterScopeAsAnnotaionParameter.kt") public void testConstantFromOuterScopeAsAnnotaionParameter() throws Exception { 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 3d8a71c4421..d3747129849 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 @@ -1746,6 +1746,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated runTest("compiler/testData/diagnostics/tests/annotations/classAnnotationsInLocalClass.kt"); } + @Test + @TestMetadata("companionAnnotations.kt") + public void testCompanionAnnotations() throws Exception { + runTest("compiler/testData/diagnostics/tests/annotations/companionAnnotations.kt"); + } + @Test @TestMetadata("constantFromOuterScopeAsAnnotaionParameter.kt") public void testConstantFromOuterScopeAsAnnotaionParameter() throws Exception { 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 e195866b846..f11e23df79f 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 @@ -1746,6 +1746,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir runTest("compiler/testData/diagnostics/tests/annotations/classAnnotationsInLocalClass.kt"); } + @Test + @TestMetadata("companionAnnotations.kt") + public void testCompanionAnnotations() throws Exception { + runTest("compiler/testData/diagnostics/tests/annotations/companionAnnotations.kt"); + } + @Test @TestMetadata("constantFromOuterScopeAsAnnotaionParameter.kt") public void testConstantFromOuterScopeAsAnnotaionParameter() throws Exception { 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 1f282271bbf..781a5f4f94b 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 @@ -1746,6 +1746,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia runTest("compiler/testData/diagnostics/tests/annotations/classAnnotationsInLocalClass.kt"); } + @Test + @TestMetadata("companionAnnotations.kt") + public void testCompanionAnnotations() throws Exception { + runTest("compiler/testData/diagnostics/tests/annotations/companionAnnotations.kt"); + } + @Test @TestMetadata("constantFromOuterScopeAsAnnotaionParameter.kt") public void testConstantFromOuterScopeAsAnnotaionParameter() throws Exception { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt index f007af49db2..d2fd5844fc2 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirTypeResolveTransformer.kt @@ -491,16 +491,21 @@ open class FirTypeResolveTransformer( } } - session.nestedClassifierScope(firClass)?.let(scopesToAdd::add) if (firClass is FirRegularClass) { - val companionObject = firClass.companionObjectSymbol?.fir - if (companionObject != null) { - session.nestedClassifierScope(companionObject)?.let(scopesToAdd::add) - } + // Companion scope is added before static scope, + // i.e., static scope is checked first during resolution (scopes are in reverse order). + // This is because we can qualify companion scope using `Companion.` if we want to explicitly refer to a declaration in the + // companion. + firClass.companionObjectSymbol?.fir + ?.let(session::nestedClassifierScope) + ?.let(scopesToAdd::add) + + session.nestedClassifierScope(firClass)?.let(scopesToAdd::add) addScopes(scopesToAdd) addTypeParametersScope(firClass) } else { + session.nestedClassifierScope(firClass)?.let(scopesToAdd::add) addScopes(scopesToAdd) } diff --git a/compiler/testData/diagnostics/tests/annotations/companionAnnotations.fir.kt b/compiler/testData/diagnostics/tests/annotations/companionAnnotations.fir.kt new file mode 100644 index 00000000000..78e9ccab43b --- /dev/null +++ b/compiler/testData/diagnostics/tests/annotations/companionAnnotations.fir.kt @@ -0,0 +1,74 @@ +// FIR_DUMP + +class CompanionOnly { + @Ann + companion object { + annotation class Ann + + @Ann + object Foo + } +} + +class Test { + annotation class Ann + + @Ann + companion object { + annotation class Ann + + @Ann + object Foo + } +} + +open class Super { + annotation class Ann +} + +class TestWithSuperAndOwn : Super() { + annotation class Ann + + @Ann + companion object { + annotation class Ann + + @Ann + object Foo + } +} + +class TestWithSuperOnly : Super() { + @Ann // Change in resolution from K1 to K2, see KT-64299 + companion object { + annotation class Ann + + @Ann + object Foo + } +} + +open class SuperWithCompanion { + companion object { + annotation class Ann + } +} + + +class TestWithSuperWithCompanionOnly : SuperWithCompanion() { + @Ann + companion object { + annotation class Ann + + @Ann + object Foo + } +} + +class TestWithSuperWithCompanionOnly2 : SuperWithCompanion() { + @Ann + companion object { + @Ann + object Foo + } +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/annotations/companionAnnotations.fir.txt b/compiler/testData/diagnostics/tests/annotations/companionAnnotations.fir.txt new file mode 100644 index 00000000000..5758ee2d598 --- /dev/null +++ b/compiler/testData/diagnostics/tests/annotations/companionAnnotations.fir.txt @@ -0,0 +1,203 @@ +FILE: companionAnnotations.fir.kt + public final class CompanionOnly : R|kotlin/Any| { + public constructor(): R|CompanionOnly| { + super() + } + + @R|CompanionOnly.Companion.Ann|() public final companion object Companion : R|kotlin/Any| { + private constructor(): R|CompanionOnly.Companion| { + super() + } + + public final annotation class Ann : R|kotlin/Annotation| { + public constructor(): R|CompanionOnly.Companion.Ann| { + super() + } + + } + + @R|CompanionOnly.Companion.Ann|() public final object Foo : R|kotlin/Any| { + private constructor(): R|CompanionOnly.Companion.Foo| { + super() + } + + } + + } + + } + public final class Test : R|kotlin/Any| { + public constructor(): R|Test| { + super() + } + + public final annotation class Ann : R|kotlin/Annotation| { + public constructor(): R|Test.Ann| { + super() + } + + } + + @R|Test.Ann|() public final companion object Companion : R|kotlin/Any| { + private constructor(): R|Test.Companion| { + super() + } + + public final annotation class Ann : R|kotlin/Annotation| { + public constructor(): R|Test.Companion.Ann| { + super() + } + + } + + @R|Test.Companion.Ann|() public final object Foo : R|kotlin/Any| { + private constructor(): R|Test.Companion.Foo| { + super() + } + + } + + } + + } + public open class Super : R|kotlin/Any| { + public constructor(): R|Super| { + super() + } + + public final annotation class Ann : R|kotlin/Annotation| { + public constructor(): R|Super.Ann| { + super() + } + + } + + } + public final class TestWithSuperAndOwn : R|Super| { + public constructor(): R|TestWithSuperAndOwn| { + super() + } + + public final annotation class Ann : R|kotlin/Annotation| { + public constructor(): R|TestWithSuperAndOwn.Ann| { + super() + } + + } + + @R|TestWithSuperAndOwn.Ann|() public final companion object Companion : R|kotlin/Any| { + private constructor(): R|TestWithSuperAndOwn.Companion| { + super() + } + + public final annotation class Ann : R|kotlin/Annotation| { + public constructor(): R|TestWithSuperAndOwn.Companion.Ann| { + super() + } + + } + + @R|TestWithSuperAndOwn.Companion.Ann|() public final object Foo : R|kotlin/Any| { + private constructor(): R|TestWithSuperAndOwn.Companion.Foo| { + super() + } + + } + + } + + } + public final class TestWithSuperOnly : R|Super| { + public constructor(): R|TestWithSuperOnly| { + super() + } + + @R|TestWithSuperOnly.Companion.Ann|() public final companion object Companion : R|kotlin/Any| { + private constructor(): R|TestWithSuperOnly.Companion| { + super() + } + + public final annotation class Ann : R|kotlin/Annotation| { + public constructor(): R|TestWithSuperOnly.Companion.Ann| { + super() + } + + } + + @R|TestWithSuperOnly.Companion.Ann|() public final object Foo : R|kotlin/Any| { + private constructor(): R|TestWithSuperOnly.Companion.Foo| { + super() + } + + } + + } + + } + public open class SuperWithCompanion : R|kotlin/Any| { + public constructor(): R|SuperWithCompanion| { + super() + } + + public final companion object Companion : R|kotlin/Any| { + private constructor(): R|SuperWithCompanion.Companion| { + super() + } + + public final annotation class Ann : R|kotlin/Annotation| { + public constructor(): R|SuperWithCompanion.Companion.Ann| { + super() + } + + } + + } + + } + public final class TestWithSuperWithCompanionOnly : R|SuperWithCompanion| { + public constructor(): R|TestWithSuperWithCompanionOnly| { + super() + } + + @R|TestWithSuperWithCompanionOnly.Companion.Ann|() public final companion object Companion : R|kotlin/Any| { + private constructor(): R|TestWithSuperWithCompanionOnly.Companion| { + super() + } + + public final annotation class Ann : R|kotlin/Annotation| { + public constructor(): R|TestWithSuperWithCompanionOnly.Companion.Ann| { + super() + } + + } + + @R|TestWithSuperWithCompanionOnly.Companion.Ann|() public final object Foo : R|kotlin/Any| { + private constructor(): R|TestWithSuperWithCompanionOnly.Companion.Foo| { + super() + } + + } + + } + + } + public final class TestWithSuperWithCompanionOnly2 : R|SuperWithCompanion| { + public constructor(): R|TestWithSuperWithCompanionOnly2| { + super() + } + + @() public final companion object Companion : R|kotlin/Any| { + private constructor(): R|TestWithSuperWithCompanionOnly2.Companion| { + super() + } + + @() public final object Foo : R|kotlin/Any| { + private constructor(): R|TestWithSuperWithCompanionOnly2.Companion.Foo| { + super() + } + + } + + } + + } diff --git a/compiler/testData/diagnostics/tests/annotations/companionAnnotations.kt b/compiler/testData/diagnostics/tests/annotations/companionAnnotations.kt new file mode 100644 index 00000000000..301863f9ee2 --- /dev/null +++ b/compiler/testData/diagnostics/tests/annotations/companionAnnotations.kt @@ -0,0 +1,74 @@ +// FIR_DUMP + +class CompanionOnly { + @Ann + companion object { + annotation class Ann + + @Ann + object Foo + } +} + +class Test { + annotation class Ann + + @Ann + companion object { + annotation class Ann + + @Ann + object Foo + } +} + +open class Super { + annotation class Ann +} + +class TestWithSuperAndOwn : Super() { + annotation class Ann + + @Ann + companion object { + annotation class Ann + + @Ann + object Foo + } +} + +class TestWithSuperOnly : Super() { + @Ann // Change in resolution from K1 to K2, see KT-64299 + companion object { + annotation class Ann + + @Ann + object Foo + } +} + +open class SuperWithCompanion { + companion object { + annotation class Ann + } +} + + +class TestWithSuperWithCompanionOnly : SuperWithCompanion() { + @Ann + companion object { + annotation class Ann + + @Ann + object Foo + } +} + +class TestWithSuperWithCompanionOnly2 : SuperWithCompanion() { + @Ann + companion object { + @Ann + object Foo + } +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/annotations/companionAnnotations.txt b/compiler/testData/diagnostics/tests/annotations/companionAnnotations.txt new file mode 100644 index 00000000000..2cf1e5ad90b --- /dev/null +++ b/compiler/testData/diagnostics/tests/annotations/companionAnnotations.txt @@ -0,0 +1,212 @@ +package + +public final class CompanionOnly { + public constructor CompanionOnly() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + @[Error type: Unresolved type for Ann] /* annotation class not found */ public companion object Companion { + private constructor Companion() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public final annotation class Ann : kotlin.Annotation { + public constructor Ann() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + @CompanionOnly.Companion.Ann public object Foo { + private constructor Foo() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + } +} + +public open class Super { + public constructor Super() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public final annotation class Ann : kotlin.Annotation { + public constructor Ann() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } +} + +public open class SuperWithCompanion { + public constructor SuperWithCompanion() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public companion object Companion { + private constructor Companion() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public final annotation class Ann : kotlin.Annotation { + public constructor Ann() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + } +} + +public final class Test { + public constructor Test() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public final annotation class Ann : kotlin.Annotation { + public constructor Ann() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + @Test.Ann public companion object Companion { + private constructor Companion() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public final annotation class Ann : kotlin.Annotation { + public constructor Ann() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + @Test.Companion.Ann public object Foo { + private constructor Foo() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + } +} + +public final class TestWithSuperAndOwn : Super { + public constructor TestWithSuperAndOwn() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public final annotation class Ann : kotlin.Annotation { + public constructor Ann() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + @TestWithSuperAndOwn.Ann public companion object Companion { + private constructor Companion() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public final annotation class Ann : kotlin.Annotation { + public constructor Ann() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + @TestWithSuperAndOwn.Companion.Ann public object Foo { + private constructor Foo() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + } +} + +public final class TestWithSuperOnly : Super { + public constructor TestWithSuperOnly() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + @Super.Ann public companion object Companion { + private constructor Companion() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public final annotation class Ann : kotlin.Annotation { + public constructor Ann() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + @TestWithSuperOnly.Companion.Ann public object Foo { + private constructor Foo() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + } +} + +public final class TestWithSuperWithCompanionOnly : SuperWithCompanion { + public constructor TestWithSuperWithCompanionOnly() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + @[Error type: Unresolved type for Ann] /* annotation class not found */ public companion object Companion { + private constructor Companion() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + public final annotation class Ann : kotlin.Annotation { + public constructor Ann() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + + @TestWithSuperWithCompanionOnly.Companion.Ann public object Foo { + private constructor Foo() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + } +} + +public final class TestWithSuperWithCompanionOnly2 : SuperWithCompanion { + public constructor TestWithSuperWithCompanionOnly2() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + @[Error type: Unresolved type for Ann] /* annotation class not found */ public companion object Companion { + private constructor Companion() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + + @[Error type: Unresolved type for Ann] /* annotation class not found */ public object Foo { + private constructor Foo() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String + } + } +} + 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 45a76c8f7b9..20cdb228230 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 @@ -1746,6 +1746,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/annotations/classAnnotationsInLocalClass.kt"); } + @Test + @TestMetadata("companionAnnotations.kt") + public void testCompanionAnnotations() throws Exception { + runTest("compiler/testData/diagnostics/tests/annotations/companionAnnotations.kt"); + } + @Test @TestMetadata("constantFromOuterScopeAsAnnotaionParameter.kt") public void testConstantFromOuterScopeAsAnnotaionParameter() throws Exception {