From bc1fa8ed7f09c45e3fc98ffa85c8a50db62a3658 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Wed, 22 Jul 2020 16:07:43 +0300 Subject: [PATCH] [FIR] Add constructor for java annotations --- .../enhancement/jsr305/NonNullNever.fir.txt | 2 + .../FieldsAreNullable.fir.txt | 2 + .../ForceFlexibility.fir.txt | 8 +++ .../ForceFlexibleOverOverrides.fir.txt | 6 ++ .../NullabilityFromOverridden.fir.txt | 4 ++ .../OverridingDefaultQualifier.fir.txt | 6 ++ .../SpringNullable.fir.txt | 4 ++ .../SpringNullablePackage.fir.txt | 4 ++ .../kotlin/fir/java/JavaSymbolProvider.kt | 56 +++++++++++++++++-- .../declarations/FirJavaValueParameter.kt | 11 +--- .../AmbigiousAnnotationConstructor.fir.kt | 2 +- .../annotationAsArgument.fir.kt | 6 +- .../annotations/AnnotatedAnnotation.fir.txt | 2 + .../annotations/SimpleAnnotation.fir.txt | 2 + 14 files changed, 96 insertions(+), 19 deletions(-) diff --git a/compiler/fir/analysis-tests/testData/enhancement/jsr305/NonNullNever.fir.txt b/compiler/fir/analysis-tests/testData/enhancement/jsr305/NonNullNever.fir.txt index 9f0ad7d415d..8ce65f344fe 100644 --- a/compiler/fir/analysis-tests/testData/enhancement/jsr305/NonNullNever.fir.txt +++ b/compiler/fir/analysis-tests/testData/enhancement/jsr305/NonNullNever.fir.txt @@ -1,4 +1,6 @@ @R|java/lang/annotation/Documented|() @R|javax/annotation/meta/TypeQualifierNickname|() @R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.NEVER|()) @R|java/lang/annotation/Retention|(R|java/lang/annotation/RetentionPolicy.RUNTIME|()) public abstract annotation class MyNullable : R|kotlin/Annotation| { + public constructor(): R|MyNullable| + } public open class NonNullNever : R|kotlin/Any| { @R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.NEVER|()) public open field field: R|kotlin/String?| diff --git a/compiler/fir/analysis-tests/testData/enhancement/jsr305/typeQualifierDefault/FieldsAreNullable.fir.txt b/compiler/fir/analysis-tests/testData/enhancement/jsr305/typeQualifierDefault/FieldsAreNullable.fir.txt index e6b7b2d2710..9df2309bf85 100644 --- a/compiler/fir/analysis-tests/testData/enhancement/jsr305/typeQualifierDefault/FieldsAreNullable.fir.txt +++ b/compiler/fir/analysis-tests/testData/enhancement/jsr305/typeQualifierDefault/FieldsAreNullable.fir.txt @@ -11,4 +11,6 @@ } @R|java/lang/annotation/Retention|(R|java/lang/annotation/RetentionPolicy.RUNTIME|()) @R|java/lang/annotation/Documented|() @R|javax/annotation/CheckForNull|() @R|javax/annotation/meta/TypeQualifierDefault|((R|java/lang/annotation/ElementType.FIELD|())) public abstract annotation class FieldsAreNullable : R|kotlin/Annotation| { + public constructor(): R|FieldsAreNullable| + } diff --git a/compiler/fir/analysis-tests/testData/enhancement/jsr305/typeQualifierDefault/ForceFlexibility.fir.txt b/compiler/fir/analysis-tests/testData/enhancement/jsr305/typeQualifierDefault/ForceFlexibility.fir.txt index 4b2294d3afd..678b989dda3 100644 --- a/compiler/fir/analysis-tests/testData/enhancement/jsr305/typeQualifierDefault/ForceFlexibility.fir.txt +++ b/compiler/fir/analysis-tests/testData/enhancement/jsr305/typeQualifierDefault/ForceFlexibility.fir.txt @@ -7,10 +7,18 @@ } @R|java/lang/annotation/Retention|(R|java/lang/annotation/RetentionPolicy.RUNTIME|()) @R|java/lang/annotation/Documented|() @R|spr/UnknownNullability|() @R|javax/annotation/meta/TypeQualifierDefault|((R|java/lang/annotation/ElementType.METHOD|(), R|java/lang/annotation/ElementType.PARAMETER|())) public abstract annotation class ForceFlexibility : R|kotlin/Annotation| { + public constructor(): R|spr/ForceFlexibility| + } @R|java/lang/annotation/Target|(R|java/lang/annotation/ElementType.TYPE|()) @R|java/lang/annotation/Retention|(R|java/lang/annotation/RetentionPolicy.RUNTIME|()) @R|java/lang/annotation/Documented|() @R|javax/annotation/Nonnull|() @R|javax/annotation/meta/TypeQualifierDefault|((R|java/lang/annotation/ElementType.METHOD|(), R|java/lang/annotation/ElementType.PARAMETER|())) public abstract annotation class NonNullApi : R|kotlin/Annotation| { + public constructor(): R|spr/NonNullApi| + } @R|java/lang/annotation/Target|((R|java/lang/annotation/ElementType.METHOD|(), R|java/lang/annotation/ElementType.PARAMETER|())) @R|java/lang/annotation/Retention|(R|java/lang/annotation/RetentionPolicy.RUNTIME|()) @R|java/lang/annotation/Documented|() @R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.MAYBE|()) @R|javax/annotation/meta/TypeQualifierNickname|() public abstract annotation class Nullable : R|kotlin/Annotation| { + public constructor(): R|spr/Nullable| + } @R|java/lang/annotation/Documented|() @R|javax/annotation/meta/TypeQualifierNickname|() @R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.UNKNOWN|()) @R|java/lang/annotation/Retention|(R|java/lang/annotation/RetentionPolicy.RUNTIME|()) public abstract annotation class UnknownNullability : R|kotlin/Annotation| { + public constructor(): R|spr/UnknownNullability| + } diff --git a/compiler/fir/analysis-tests/testData/enhancement/jsr305/typeQualifierDefault/ForceFlexibleOverOverrides.fir.txt b/compiler/fir/analysis-tests/testData/enhancement/jsr305/typeQualifierDefault/ForceFlexibleOverOverrides.fir.txt index 8b1696a6b7b..d7cb91761aa 100644 --- a/compiler/fir/analysis-tests/testData/enhancement/jsr305/typeQualifierDefault/ForceFlexibleOverOverrides.fir.txt +++ b/compiler/fir/analysis-tests/testData/enhancement/jsr305/typeQualifierDefault/ForceFlexibleOverOverrides.fir.txt @@ -21,8 +21,14 @@ public abstract interface B : R|kotlin/Any| { } @R|java/lang/annotation/Retention|(R|java/lang/annotation/RetentionPolicy.RUNTIME|()) @R|java/lang/annotation/Documented|() @R|spr/UnknownNullability|() @R|javax/annotation/meta/TypeQualifierDefault|((R|java/lang/annotation/ElementType.METHOD|(), R|java/lang/annotation/ElementType.PARAMETER|())) public abstract annotation class ForceFlexibility : R|kotlin/Annotation| { + public constructor(): R|spr/ForceFlexibility| + } @R|java/lang/annotation/Target|(R|java/lang/annotation/ElementType.TYPE|()) @R|java/lang/annotation/Retention|(R|java/lang/annotation/RetentionPolicy.RUNTIME|()) @R|java/lang/annotation/Documented|() @R|javax/annotation/Nonnull|() @R|javax/annotation/meta/TypeQualifierDefault|((R|java/lang/annotation/ElementType.METHOD|(), R|java/lang/annotation/ElementType.PARAMETER|())) public abstract annotation class NonNullApi : R|kotlin/Annotation| { + public constructor(): R|spr/NonNullApi| + } @R|java/lang/annotation/Documented|() @R|javax/annotation/meta/TypeQualifierNickname|() @R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.UNKNOWN|()) @R|java/lang/annotation/Retention|(R|java/lang/annotation/RetentionPolicy.RUNTIME|()) public abstract annotation class UnknownNullability : R|kotlin/Annotation| { + public constructor(): R|spr/UnknownNullability| + } diff --git a/compiler/fir/analysis-tests/testData/enhancement/jsr305/typeQualifierDefault/NullabilityFromOverridden.fir.txt b/compiler/fir/analysis-tests/testData/enhancement/jsr305/typeQualifierDefault/NullabilityFromOverridden.fir.txt index 7328055612e..04d67d4e2f8 100644 --- a/compiler/fir/analysis-tests/testData/enhancement/jsr305/typeQualifierDefault/NullabilityFromOverridden.fir.txt +++ b/compiler/fir/analysis-tests/testData/enhancement/jsr305/typeQualifierDefault/NullabilityFromOverridden.fir.txt @@ -55,6 +55,10 @@ } @R|java/lang/annotation/Target|(R|java/lang/annotation/ElementType.TYPE|()) @R|java/lang/annotation/Retention|(R|java/lang/annotation/RetentionPolicy.RUNTIME|()) @R|java/lang/annotation/Documented|() @R|javax/annotation/Nonnull|() @R|javax/annotation/meta/TypeQualifierDefault|((R|java/lang/annotation/ElementType.METHOD|(), R|java/lang/annotation/ElementType.PARAMETER|(), R|java/lang/annotation/ElementType.FIELD|())) public abstract annotation class NonNullApi : R|kotlin/Annotation| { + public constructor(): R|NonNullApi| + } @R|java/lang/annotation/Target|(R|java/lang/annotation/ElementType.TYPE|()) @R|java/lang/annotation/Retention|(R|java/lang/annotation/RetentionPolicy.RUNTIME|()) @R|java/lang/annotation/Documented|() @R|javax/annotation/CheckForNull|() @R|javax/annotation/meta/TypeQualifierDefault|((R|java/lang/annotation/ElementType.METHOD|(), R|java/lang/annotation/ElementType.PARAMETER|(), R|java/lang/annotation/ElementType.FIELD|())) public abstract annotation class NullableApi : R|kotlin/Annotation| { + public constructor(): R|NullableApi| + } diff --git a/compiler/fir/analysis-tests/testData/enhancement/jsr305/typeQualifierDefault/OverridingDefaultQualifier.fir.txt b/compiler/fir/analysis-tests/testData/enhancement/jsr305/typeQualifierDefault/OverridingDefaultQualifier.fir.txt index c09146a27e7..82219eb5895 100644 --- a/compiler/fir/analysis-tests/testData/enhancement/jsr305/typeQualifierDefault/OverridingDefaultQualifier.fir.txt +++ b/compiler/fir/analysis-tests/testData/enhancement/jsr305/typeQualifierDefault/OverridingDefaultQualifier.fir.txt @@ -13,8 +13,14 @@ } @R|java/lang/annotation/Retention|(R|java/lang/annotation/RetentionPolicy.RUNTIME|()) @R|java/lang/annotation/Documented|() @R|javax/annotation/CheckForNull|() @R|javax/annotation/meta/TypeQualifierDefault|((R|java/lang/annotation/ElementType.FIELD|())) public abstract annotation class FieldsAreNullable : R|kotlin/Annotation| { + public constructor(): R|FieldsAreNullable| + } @R|java/lang/annotation/Retention|(R|java/lang/annotation/RetentionPolicy.RUNTIME|()) @R|java/lang/annotation/Documented|() @R|javax/annotation/Nonnull|() @R|javax/annotation/meta/TypeQualifierDefault|((R|java/lang/annotation/ElementType.METHOD|(), R|java/lang/annotation/ElementType.PARAMETER|(), R|java/lang/annotation/ElementType.FIELD|())) public abstract annotation class NonNullApi : R|kotlin/Annotation| { + public constructor(): R|NonNullApi| + } @R|java/lang/annotation/Retention|(R|java/lang/annotation/RetentionPolicy.RUNTIME|()) @R|java/lang/annotation/Documented|() @R|javax/annotation/CheckForNull|() @R|javax/annotation/meta/TypeQualifierDefault|((R|java/lang/annotation/ElementType.METHOD|(), R|java/lang/annotation/ElementType.PARAMETER|(), R|java/lang/annotation/ElementType.FIELD|())) public abstract annotation class NullableApi : R|kotlin/Annotation| { + public constructor(): R|NullableApi| + } diff --git a/compiler/fir/analysis-tests/testData/enhancement/jsr305/typeQualifierDefault/SpringNullable.fir.txt b/compiler/fir/analysis-tests/testData/enhancement/jsr305/typeQualifierDefault/SpringNullable.fir.txt index ef5979ee8bc..7b90385c6e7 100644 --- a/compiler/fir/analysis-tests/testData/enhancement/jsr305/typeQualifierDefault/SpringNullable.fir.txt +++ b/compiler/fir/analysis-tests/testData/enhancement/jsr305/typeQualifierDefault/SpringNullable.fir.txt @@ -11,6 +11,10 @@ } @R|java/lang/annotation/Target|(R|java/lang/annotation/ElementType.TYPE|()) @R|java/lang/annotation/Retention|(R|java/lang/annotation/RetentionPolicy.RUNTIME|()) @R|java/lang/annotation/Documented|() @R|javax/annotation/Nonnull|() @R|javax/annotation/meta/TypeQualifierDefault|((R|java/lang/annotation/ElementType.METHOD|(), R|java/lang/annotation/ElementType.PARAMETER|())) public abstract annotation class NonNullApi : R|kotlin/Annotation| { + public constructor(): R|spr/NonNullApi| + } @R|java/lang/annotation/Target|((R|java/lang/annotation/ElementType.METHOD|(), R|java/lang/annotation/ElementType.PARAMETER|())) @R|java/lang/annotation/Retention|(R|java/lang/annotation/RetentionPolicy.RUNTIME|()) @R|java/lang/annotation/Documented|() @R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.MAYBE|()) @R|javax/annotation/meta/TypeQualifierNickname|() public abstract annotation class Nullable : R|kotlin/Annotation| { + public constructor(): R|spr/Nullable| + } diff --git a/compiler/fir/analysis-tests/testData/enhancement/jsr305/typeQualifierDefault/SpringNullablePackage.fir.txt b/compiler/fir/analysis-tests/testData/enhancement/jsr305/typeQualifierDefault/SpringNullablePackage.fir.txt index 8c4945a227c..22dddd0a533 100644 --- a/compiler/fir/analysis-tests/testData/enhancement/jsr305/typeQualifierDefault/SpringNullablePackage.fir.txt +++ b/compiler/fir/analysis-tests/testData/enhancement/jsr305/typeQualifierDefault/SpringNullablePackage.fir.txt @@ -11,6 +11,10 @@ public open class A : R|kotlin/Any| { } @R|java/lang/annotation/Target|(R|java/lang/annotation/ElementType.PACKAGE|()) @R|java/lang/annotation/Retention|(R|java/lang/annotation/RetentionPolicy.RUNTIME|()) @R|java/lang/annotation/Documented|() @R|javax/annotation/Nonnull|() @R|javax/annotation/meta/TypeQualifierDefault|((R|java/lang/annotation/ElementType.METHOD|(), R|java/lang/annotation/ElementType.PARAMETER|())) public abstract annotation class NonNullApi : R|kotlin/Annotation| { + public constructor(): R|spr/NonNullApi| + } @R|java/lang/annotation/Target|((R|java/lang/annotation/ElementType.METHOD|(), R|java/lang/annotation/ElementType.PARAMETER|())) @R|java/lang/annotation/Retention|(R|java/lang/annotation/RetentionPolicy.RUNTIME|()) @R|java/lang/annotation/Documented|() @R|javax/annotation/Nonnull|(R|javax/annotation/meta/When.MAYBE|()) @R|javax/annotation/meta/TypeQualifierNickname|() public abstract annotation class Nullable : R|kotlin/Annotation| { + public constructor(): R|spr/Nullable| + } diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt index e5ef32551c4..b4a3aed1c86 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/JavaSymbolProvider.kt @@ -11,10 +11,13 @@ import com.intellij.psi.PsiElement import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.descriptors.ClassKind import org.jetbrains.kotlin.descriptors.Modality +import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.fir.* import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.builder.* +import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl +import org.jetbrains.kotlin.fir.expressions.builder.* import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl import org.jetbrains.kotlin.fir.java.declarations.* import org.jetbrains.kotlin.fir.resolve.constructType @@ -29,8 +32,7 @@ import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl import org.jetbrains.kotlin.load.java.JavaClassFinder import org.jetbrains.kotlin.load.java.JvmAnnotationNames -import org.jetbrains.kotlin.load.java.structure.JavaClass -import org.jetbrains.kotlin.load.java.structure.JavaTypeParameter +import org.jetbrains.kotlin.load.java.structure.* import org.jetbrains.kotlin.load.java.structure.impl.JavaElementImpl import org.jetbrains.kotlin.load.kotlin.KotlinClassFinder import org.jetbrains.kotlin.name.ClassId @@ -38,6 +40,7 @@ import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.jvm.KotlinJavaPsiFacade import org.jetbrains.kotlin.types.Variance.INVARIANT +import org.jetbrains.kotlin.utils.addIfNotNull import org.jetbrains.kotlin.util.OperatorNameConventions class JavaSymbolProvider( @@ -45,6 +48,9 @@ class JavaSymbolProvider( val project: Project, private val searchScope: GlobalSearchScope, ) : AbstractFirSymbolProvider() { + companion object { + private val VALUE_METHOD_NAME = Name.identifier("value") + } private val scopeProvider = JavaScopeProvider(::wrapScopeWithJvmMapped, this) @@ -241,6 +247,10 @@ class JavaSymbolProvider( } declarations += firJavaDeclaration } + val valueParametersForAnnotationConstructor = mutableListOf() + var valueParameterForValueInAnnotationConstructor: FirJavaValueParameter? = null + val classIsAnnotation = classKind == ClassKind.ANNOTATION_CLASS + for (javaMethod in javaClass.methods) { val methodName = javaMethod.name val methodId = CallableId(classId.packageFqName, classId.relativeClassName, methodName) @@ -280,11 +290,34 @@ class JavaSymbolProvider( isSuspend = false } } + if (classIsAnnotation) { + val parameterForAnnotationConstructor = buildJavaValueParameter { + session = this@JavaSymbolProvider.session + returnTypeRef = firJavaMethod.returnTypeRef + name = firJavaMethod.name + if (javaMethod.hasAnnotationParameterDefaultValue) { + defaultValue = buildExpressionStub() + } + isVararg = javaMethod.returnType is JavaArrayType + } + if (firJavaMethod.name == VALUE_METHOD_NAME) { + valueParameterForValueInAnnotationConstructor = parameterForAnnotationConstructor + } else { + valueParametersForAnnotationConstructor += parameterForAnnotationConstructor + } + } declarations += firJavaMethod } val javaClassDeclaredConstructors = javaClass.constructors val constructorId = CallableId(classId.packageFqName, classId.relativeClassName, classId.shortClassName) + fun buildSelfTypeRef() = firSymbol.constructType( + this@buildJavaClass.typeParameters.map { + ConeTypeParameterTypeImpl(it.symbol.toLookupTag(), false) + }.toTypedArray(), + false, + ) + fun prepareJavaConstructor( visibility: Visibility = this.visibility, psi: PsiElement? = null, @@ -309,10 +342,7 @@ class JavaSymbolProvider( this.visibility = visibility this.isPrimary = isPrimary returnTypeRef = buildResolvedTypeRef { - type = firSymbol.constructType( - this@buildJavaClass.typeParameters.map { ConeTypeParameterTypeImpl(it.symbol.toLookupTag(), false) }.toTypedArray(), - false, - ) + type = buildSelfTypeRef() } typeParameters += classTypeParameters.map { buildConstructedClassTypeParameterRef { symbol = it.symbol } } } @@ -342,6 +372,20 @@ class JavaSymbolProvider( generateValuesFunction(session, classId.packageFqName, classId.relativeClassName) generateValueOfFunction(session, classId.packageFqName, classId.relativeClassName) } + if (classIsAnnotation) { + declarations += buildJavaConstructor { + session = this@JavaSymbolProvider.session + symbol = FirConstructorSymbol(constructorId) + returnTypeRef = buildResolvedTypeRef { + type = buildSelfTypeRef() + } + valueParameters.addIfNotNull(valueParameterForValueInAnnotationConstructor) + valueParameters += valueParametersForAnnotationConstructor + visibility = Visibilities.PUBLIC + isInner = false + isPrimary = true + } + } parentClassTypeParameterStackCache.remove(firSymbol) } firJavaClass.replaceSuperTypeRefs( diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaValueParameter.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaValueParameter.kt index 8b678bfd4de..336aed32563 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaValueParameter.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/declarations/FirJavaValueParameter.kt @@ -60,7 +60,7 @@ class FirJavaValueParameterBuilder : FirValueParameterBuilder() { name, symbol = FirVariableSymbol(name), annotations, - defaultValue = null, + defaultValue, isCrossinline = false, isNoinline = false, isVararg, @@ -81,13 +81,6 @@ class FirJavaValueParameterBuilder : FirValueParameterBuilder() { throw IllegalStateException() } - @Deprecated("Modification of 'defaultValue' has no impact for FirJavaValueParameterBuilder", level = DeprecationLevel.HIDDEN) - override var defaultValue: FirExpression? - get() = throw IllegalStateException() - set(value) { - throw IllegalStateException() - } - @Deprecated("Modification of 'isCrossinline' has no impact for FirJavaValueParameterBuilder", level = DeprecationLevel.HIDDEN) override var isCrossinline: Boolean get() = throw IllegalStateException() @@ -112,4 +105,4 @@ class FirJavaValueParameterBuilder : FirValueParameterBuilder() { inline fun buildJavaValueParameter(init: FirJavaValueParameterBuilder.() -> Unit): FirJavaValueParameter { return FirJavaValueParameterBuilder().apply(init).build() -} \ No newline at end of file +} diff --git a/compiler/testData/diagnostics/tests/annotations/AmbigiousAnnotationConstructor.fir.kt b/compiler/testData/diagnostics/tests/annotations/AmbigiousAnnotationConstructor.fir.kt index 3877160fc10..89d4868b782 100644 --- a/compiler/testData/diagnostics/tests/annotations/AmbigiousAnnotationConstructor.fir.kt +++ b/compiler/testData/diagnostics/tests/annotations/AmbigiousAnnotationConstructor.fir.kt @@ -3,4 +3,4 @@ import java.util.ArrayList @ArrayList(1, 1) fun b() {} @Xoo(x) fun c() {} -@java.lang.Deprecated(x) fun a() {} \ No newline at end of file +@java.lang.Deprecated(x) fun a() {} \ No newline at end of file diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/javaAnnotationsWithKClassParameter/annotationAsArgument.fir.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/javaAnnotationsWithKClassParameter/annotationAsArgument.fir.kt index 68198f63586..cdfb16fc870 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/javaAnnotationsWithKClassParameter/annotationAsArgument.fir.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/javaAnnotationsWithKClassParameter/annotationAsArgument.fir.kt @@ -12,8 +12,8 @@ public @interface B { } // FILE: c.kt -@A(arg = String::class, b = B(y = 1)) class MyClass1 +@A(arg = String::class, b = B(y = 1)) class MyClass1 -@A(b = B(y = 3)) class MyClass2 +@A(b = B(y = 3)) class MyClass2 -@A(arg = String::class, b = B(arg = Boolean::class)) class MyClass3 +@A(arg = String::class, b = B(arg = Boolean::class)) class MyClass3 diff --git a/compiler/testData/loadJava/compiledJava/annotations/AnnotatedAnnotation.fir.txt b/compiler/testData/loadJava/compiledJava/annotations/AnnotatedAnnotation.fir.txt index 93a4b7e9df9..d6529c3c76b 100644 --- a/compiler/testData/loadJava/compiledJava/annotations/AnnotatedAnnotation.fir.txt +++ b/compiler/testData/loadJava/compiledJava/annotations/AnnotatedAnnotation.fir.txt @@ -1,2 +1,4 @@ @R|test/AnnotatedAnnotation|() public abstract annotation class AnnotatedAnnotation : R|kotlin/Annotation| { + public constructor(): R|test/AnnotatedAnnotation| + } diff --git a/compiler/testData/loadJava/compiledJava/annotations/SimpleAnnotation.fir.txt b/compiler/testData/loadJava/compiledJava/annotations/SimpleAnnotation.fir.txt index ac21c69f935..7f5982518bb 100644 --- a/compiler/testData/loadJava/compiledJava/annotations/SimpleAnnotation.fir.txt +++ b/compiler/testData/loadJava/compiledJava/annotations/SimpleAnnotation.fir.txt @@ -1,2 +1,4 @@ public abstract annotation class SimpleAnnotation : R|kotlin/Annotation| { + public constructor(): R|test/SimpleAnnotation| + }