From 4334ae9da996d4d2c08a85e8a2b5e86a8fb820aa Mon Sep 17 00:00:00 2001 From: Ivan Kylchik Date: Thu, 7 Sep 2023 17:36:23 +0200 Subject: [PATCH] [FIR] Add `JvmName` to the list of `REQUIRED_ANNOTATIONS` We need to resolve `JvmName` as soon as possible because it can be analyzed in `FirJavaElementFinder` to create the correct class stub. #KT-57802 --- .../FirJvmAnnotationsPlatformSpecificSupportComponent.kt | 6 ++---- .../accessTopLevelConstWithCustomFileName.kt | 7 +++++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/FirJvmAnnotationsPlatformSpecificSupportComponent.kt b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/FirJvmAnnotationsPlatformSpecificSupportComponent.kt index 06b20110103..2ceb9493e4d 100644 --- a/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/FirJvmAnnotationsPlatformSpecificSupportComponent.kt +++ b/compiler/fir/checkers/checkers.jvm/src/org/jetbrains/kotlin/fir/analysis/jvm/checkers/FirJvmAnnotationsPlatformSpecificSupportComponent.kt @@ -7,12 +7,9 @@ package org.jetbrains.kotlin.fir.analysis.jvm.checkers import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.fir.FirSession -import org.jetbrains.kotlin.fir.declarations.getAnnotationRetention import org.jetbrains.kotlin.fir.declarations.* -import org.jetbrains.kotlin.fir.declarations.AnnotationsPosition -import org.jetbrains.kotlin.fir.languageVersionSettings -import org.jetbrains.kotlin.fir.declarations.FirAnnotationsPlatformSpecificSupportComponent import org.jetbrains.kotlin.fir.expressions.FirAnnotation +import org.jetbrains.kotlin.fir.languageVersionSettings import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.JvmStandardClassIds @@ -23,6 +20,7 @@ object FirJvmAnnotationsPlatformSpecificSupportComponent : FirAnnotationsPlatfor StandardClassIds.Annotations.Deprecated, StandardClassIds.Annotations.Target, JvmStandardClassIds.Annotations.Java.Target, + JvmStandardClassIds.Annotations.JvmName, ) override val requiredAnnotations: Set = requiredAnnotationsWithArguments + setOf( diff --git a/compiler/testData/codegen/box/involvesIrInterpreter/constEvaluationFromJavaWorld/accessTopLevelConstWithCustomFileName.kt b/compiler/testData/codegen/box/involvesIrInterpreter/constEvaluationFromJavaWorld/accessTopLevelConstWithCustomFileName.kt index 15125a5a8de..e9786ed55a6 100644 --- a/compiler/testData/codegen/box/involvesIrInterpreter/constEvaluationFromJavaWorld/accessTopLevelConstWithCustomFileName.kt +++ b/compiler/testData/codegen/box/involvesIrInterpreter/constEvaluationFromJavaWorld/accessTopLevelConstWithCustomFileName.kt @@ -6,6 +6,10 @@ package one.two; public class Bar { public static final int BAR = OtherKt.FOO + 1; + + public Child getChild() { + return new Child(); + } } // FILE: Main.kt @@ -16,6 +20,9 @@ const val FOO = 1 const val BAZ = Bar.BAR + 1 +// This class is presented here to check that on super type resolve phase we have resolved `JvmName` annotation +class Child : Bar() + fun box(): String { return "OK" }