Merge branch 'master' into rr/zofia.wiora/KTL-3009-full-position-in-compiler-logger
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/psiUtils.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/psiUtils.kt
index 32b1776..5bac8da 100644
--- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/psiUtils.kt
+++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/psiUtils.kt
@@ -166,10 +166,17 @@
else -> visibilityByModifiers
}
-internal val KtClassOrObject.visibility: Visibility?
- get() = when {
- isLocal -> Visibilities.Local
- else -> visibilityByModifiers
+/**
+ * The compiler forces the class-like declarations to have proper visibility right
+ * away during their constructions and forbids its changes later, so the visibility might be
+ * computed from the PSI directly
+ */
+internal val KtClassLikeDeclaration.visibility: Visibility
+ get() = when (this) {
+ // TODO: KT-80716 replaced with native isLocal check
+ is KtTypeAlias if getClassId() == null -> Visibilities.Local
+ is KtClassOrObject if isLocal -> Visibilities.Local
+ else -> visibilityByModifiers ?: Visibilities.Public
}
internal val KtProperty.visibility: Visibility?
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirNamedClassSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirNamedClassSymbol.kt
index bb57579..76420c3 100644
--- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirNamedClassSymbol.kt
+++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirNamedClassSymbol.kt
@@ -14,7 +14,6 @@
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
import org.jetbrains.kotlin.analysis.api.symbols.*
import org.jetbrains.kotlin.analysis.api.types.KaType
-import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.fir.declarations.utils.*
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
@@ -79,14 +78,6 @@
backingPsi?.kaSymbolModality ?: firSymbol.modality.asKaSymbolModality
}
- override val visibility: KaSymbolVisibility
- get() = withValidityAssertion {
- backingPsi?.visibility?.asKaSymbolVisibility ?: when (val visibility = firSymbol.possiblyRawVisibility) {
- Visibilities.Unknown -> if (firSymbol.fir.isLocal) KaSymbolVisibility.LOCAL else KaSymbolVisibility.PUBLIC
- else -> visibility.asKaSymbolVisibility
- }
- }
-
override val compilerVisibility: Visibility
get() = withValidityAssertion { backingPsi?.visibility ?: firSymbol.visibility }
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirTypeAliasSymbol.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirTypeAliasSymbol.kt
index 05e079f..a15c7e6 100644
--- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirTypeAliasSymbol.kt
+++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/KaFirTypeAliasSymbol.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Copyright 2010-2025 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
@@ -11,14 +11,15 @@
import org.jetbrains.kotlin.analysis.api.fir.findPsi
import org.jetbrains.kotlin.analysis.api.fir.location
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KaFirClassLikeSymbolPointer
-import org.jetbrains.kotlin.analysis.api.fir.visibilityByModifiers
+import org.jetbrains.kotlin.analysis.api.fir.visibility
import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaCannotCreateSymbolPointerForLocalLibraryDeclarationException
import org.jetbrains.kotlin.analysis.api.impl.base.symbols.pointers.KaUnsupportedSymbolLocation
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
-import org.jetbrains.kotlin.analysis.api.symbols.*
+import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolLocation
+import org.jetbrains.kotlin.analysis.api.symbols.KaTypeAliasSymbol
+import org.jetbrains.kotlin.analysis.api.symbols.KaTypeParameterSymbol
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KaSymbolPointer
import org.jetbrains.kotlin.analysis.api.types.KaType
-import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.descriptors.Visibility
import org.jetbrains.kotlin.fir.declarations.utils.isActual
import org.jetbrains.kotlin.fir.declarations.utils.isExpect
@@ -56,16 +57,8 @@
override val classId: ClassId?
get() = withValidityAssertion { backingPsi?.getClassId() ?: firSymbol.getClassId() }
- override val visibility: KaSymbolVisibility
- get() = withValidityAssertion {
- backingPsi?.visibilityByModifiers?.asKaSymbolVisibility ?: when (val visibility = firSymbol.possiblyRawVisibility) {
- Visibilities.Unknown -> KaSymbolVisibility.PUBLIC
- else -> visibility.asKaSymbolVisibility
- }
- }
-
override val compilerVisibility: Visibility
- get() = withValidityAssertion { backingPsi?.visibilityByModifiers ?: firSymbol.visibility }
+ get() = withValidityAssertion { backingPsi?.visibility ?: firSymbol.visibility }
override val typeParameters: List<KaTypeParameterSymbol>
get() = withValidityAssertion {
diff --git a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/firSymbolUtils.kt b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/firSymbolUtils.kt
index 3af71dd..717f214 100644
--- a/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/firSymbolUtils.kt
+++ b/analysis/analysis-api-fir/src/org/jetbrains/kotlin/analysis/api/fir/symbols/firSymbolUtils.kt
@@ -11,7 +11,6 @@
import org.jetbrains.kotlin.analysis.api.fir.utils.asKaInitializerValue
import org.jetbrains.kotlin.analysis.api.impl.base.KaBaseContextReceiver
import org.jetbrains.kotlin.analysis.api.impl.base.symbols.asKaSymbolModality
-import org.jetbrains.kotlin.analysis.api.platform.resolution.KaResolutionActivityTracker
import org.jetbrains.kotlin.analysis.api.symbols.KaContextParameterSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KaSymbolModality
import org.jetbrains.kotlin.analysis.api.symbols.KaTypeParameterSymbol
@@ -19,8 +18,10 @@
import org.jetbrains.kotlin.analysis.api.types.KaType
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.descriptors.Modality
-import org.jetbrains.kotlin.descriptors.Visibility
-import org.jetbrains.kotlin.fir.declarations.*
+import org.jetbrains.kotlin.fir.declarations.FirDeclaration
+import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
+import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
+import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner
import org.jetbrains.kotlin.fir.declarations.utils.modality
import org.jetbrains.kotlin.fir.expressions.FirPropertyAccessExpression
import org.jetbrains.kotlin.fir.references.impl.FirPropertyFromParameterResolvedNamedReference
@@ -135,21 +136,3 @@
is FirClassLikeSymbol<*> -> modality
else -> Modality.FINAL
}.asKaSymbolModality
-
-/**
- * Issue: KT-58572
- *
- * Visibility computation can be requested from Java resolution via light classes,
- * so [resolvedStatus][FirClassLikeSymbol.resolvedStatus] can be called only if there is no pending resolution
- * on the stack.
- * Otherwise, only [rawStatus][FirClassLikeSymbol.rawStatus] can be requested in this case to avoid
- * potential contract violation.
- * However, the status still might be already resolved at this moment,
- * so the resolved status still might be returned in this case.
- */
-internal val FirClassLikeSymbol<*>.possiblyRawVisibility: Visibility
- get() = if (KaResolutionActivityTracker.getInstance()?.isKotlinResolutionActive == true) {
- rawStatus
- } else {
- resolvedStatus
- }.visibility
diff --git a/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.capturing.txt b/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.capturing.txt
index 940f573..0599ff4 100644
--- a/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.capturing.txt
+++ b/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.capturing.txt
@@ -5,7 +5,14 @@
Local[name: $context-Ctx1; isMutated: false; displayText: $context-Ctx1]
<unused var>: R|Ctx1|
R|Ctx1|
+Local[name: $context-Ctx3; isMutated: false; displayText: $context-Ctx3]
+ <unused var>: R|Ctx3|
+ R|Ctx3|
+Local[name: $context-_anonymous_; isMutated: false; displayText: $context-_anonymous_]
+ <unused var>: R|<anonymous>|
+ R|<anonymous>|
Local[name: x; isMutated: false; displayText: x]
x: R|kotlin/Int|
R|kotlin/Int|
-No captured files
+Captured files:
+contextParameter.kt
\ No newline at end of file
diff --git a/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.ir.txt b/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.ir.txt
index 47e0af5..237b365 100644
--- a/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.ir.txt
+++ b/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.ir.txt
@@ -8,10 +8,14 @@
FUN name:run visibility:public modality:FINAL returnType:kotlin.Int
VALUE_PARAMETER kind:Regular name:p0 index:0 type:<root>.Ctx2
VALUE_PARAMETER kind:Regular name:p1 index:1 type:<root>.Ctx1
- VALUE_PARAMETER kind:Regular name:p2 index:2 type:kotlin.Int
+ VALUE_PARAMETER kind:Regular name:p2 index:2 type:<root>.Ctx3
+ VALUE_PARAMETER kind:Regular name:p3 index:3 type:<root>.ContextParameterKt.check.<no name provided>
+ VALUE_PARAMETER kind:Regular name:p4 index:4 type:kotlin.Int
EXPRESSION_BODY
BLOCK type=kotlin.Int origin=null
- CALL 'public final fun bar (ctx2: <root>.Ctx2, ctx1: <root>.Ctx1, x: kotlin.Int): kotlin.Int declared in <root>.ContextParameterKt' type=kotlin.Int origin=null
+ CALL 'public final fun bar (ctx2: <root>.Ctx2, ctx1: <root>.Ctx1, ctx3: <root>.Ctx3, ctx4: <root>.Ctx4, x: kotlin.Int): kotlin.Int declared in <root>.ContextParameterKt' type=kotlin.Int origin=null
ARG ctx2: GET_VAR 'p0: <root>.Ctx2 declared in <root>.CodeFragment.run' type=<root>.Ctx2 origin=null
ARG ctx1: GET_VAR 'p1: <root>.Ctx1 declared in <root>.CodeFragment.run' type=<root>.Ctx1 origin=null
- ARG x: GET_VAR 'p2: kotlin.Int declared in <root>.CodeFragment.run' type=kotlin.Int origin=null
+ ARG ctx3: GET_VAR 'p2: <root>.Ctx3 declared in <root>.CodeFragment.run' type=<root>.Ctx3 origin=null
+ ARG ctx4: GET_VAR 'p3: <root>.ContextParameterKt.check.<no name provided> declared in <root>.CodeFragment.run' type=<root>.ContextParameterKt.check.<no name provided> origin=null
+ ARG x: GET_VAR 'p4: kotlin.Int declared in <root>.CodeFragment.run' type=kotlin.Int origin=null
diff --git a/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.kt b/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.kt
index add1b15..30af8ab 100644
--- a/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.kt
+++ b/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.kt
@@ -11,13 +11,20 @@
fun boo(x: Int) = 10 + x
}
+class Ctx3 {
+ fun coo() = 100
+}
-context(ctx2: Ctx2, ctx1: Ctx1)
-fun bar(x: Int) = ctx2.boo(x) + ctx1.foo()
+interface Ctx4
+
+context(ctx2: Ctx2, ctx1: Ctx1, ctx3: Ctx3, ctx4: Ctx4)
+fun bar(x: Int) = ctx2.boo(x) + ctx1.foo() + ctx3.coo()
context(_: Ctx1, _: Ctx2)
fun check(x: Int) {
- <caret_context>bar(x)
+ context(Ctx3(), object: Ctx4 {}) {
+ <caret_context>bar(x)
+ }
}
fun main() {
diff --git a/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.txt b/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.txt
index 6744262..bb9de43 100644
--- a/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.txt
+++ b/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/capturing/unnamedContextParameter.txt
@@ -1,5 +1,6 @@
public final class CodeFragment {
// source: 'fragment.kt'
+ inner (anonymous) class ContextParameterKt$check$1
public method <init>(): void
- public final static method run(p0: Ctx2, p1: Ctx1, p2: int): int
-}
+ public final static method run(p0: Ctx2, p1: Ctx1, p2: Ctx3, p3: ContextParameterKt$check$1, p4: int): int
+}
\ No newline at end of file
diff --git a/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/contextualProperty.ir.txt b/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/contextualProperty.ir.txt
index 7e20e6f..8359911 100644
--- a/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/contextualProperty.ir.txt
+++ b/analysis/analysis-api/testData/components/compilerFacility/compilation/codeFragments/contextualProperty.ir.txt
@@ -9,5 +9,5 @@
VALUE_PARAMETER kind:Regular name:p0 index:0 type:kotlin.String
EXPRESSION_BODY
BLOCK type=kotlin.String origin=null
- CALL 'public final fun <get-hello> (<unused var>: kotlin.String): kotlin.String declared in <root>.ContextKt' type=kotlin.String origin=GET_PROPERTY
- ARG <unused var>: GET_VAR 'p0: kotlin.String declared in <root>.CodeFragment.run' type=kotlin.String origin=null
+ CALL 'public final fun <get-hello> ($context-String: kotlin.String): kotlin.String declared in <root>.ContextKt' type=kotlin.String origin=GET_PROPERTY
+ ARG $context-String: GET_VAR 'p0: kotlin.String declared in <root>.CodeFragment.run' type=kotlin.String origin=null
diff --git a/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightClassForDecompiledDeclaration.kt b/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightClassForDecompiledDeclaration.kt
index 4c9635d..7fed5a2 100644
--- a/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightClassForDecompiledDeclaration.kt
+++ b/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightClassForDecompiledDeclaration.kt
@@ -222,7 +222,6 @@
override fun hashCode(): Int = qualifiedName?.hashCode() ?: kotlinOrigin?.fqName?.hashCode() ?: 0
override fun copy(): PsiElement = this
override fun clone(): Any = this
- override fun toString(): String = "${this.javaClass.simpleName} of $parent"
override fun getName(): String? = clsDelegate.name
override fun isValid(): Boolean = file.isValid && clsDelegate.isValid && (kotlinOrigin?.isValid != false)
}
\ No newline at end of file
diff --git a/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightFieldForDecompiledDeclaration.kt b/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightFieldForDecompiledDeclaration.kt
index 806e6dd..1dfbf1b 100644
--- a/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightFieldForDecompiledDeclaration.kt
+++ b/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightFieldForDecompiledDeclaration.kt
@@ -70,8 +70,6 @@
override fun clone(): Any = this
- override fun toString(): String = "${this.javaClass.simpleName} of $fldParent"
-
override fun isValid(): Boolean = parent.isValid
override fun isEquivalentTo(another: PsiElement?): Boolean {
diff --git a/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightMethodForDecompiledDeclaration.kt b/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightMethodForDecompiledDeclaration.kt
index 03ec569..14da983 100644
--- a/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightMethodForDecompiledDeclaration.kt
+++ b/analysis/decompiled/light-classes-for-decompiled/src/org/jetbrains/kotlin/analysis/decompiled/light/classes/KtLightMethodForDecompiledDeclaration.kt
@@ -99,8 +99,6 @@
override fun clone(): Any = this
- override fun toString(): String = "${this.javaClass.simpleName} of $funParent"
-
override fun isValid(): Boolean = parent.isValid
override fun getOriginalElement() = funDelegate
diff --git a/analysis/light-classes-base/src/org/jetbrains/kotlin/asJava/elements/KtLightElementBase.kt b/analysis/light-classes-base/src/org/jetbrains/kotlin/asJava/elements/KtLightElementBase.kt
index 8f96993..6d52131 100644
--- a/analysis/light-classes-base/src/org/jetbrains/kotlin/asJava/elements/KtLightElementBase.kt
+++ b/analysis/light-classes-base/src/org/jetbrains/kotlin/asJava/elements/KtLightElementBase.kt
@@ -13,7 +13,7 @@
import org.jetbrains.kotlin.psi.KtElement
abstract class KtLightElementBase(private var parent: PsiElement) : LightElement(parent.manager, KotlinLanguage.INSTANCE) {
- override fun toString() = "${this.javaClass.simpleName} of $parent"
+ override fun toString() = "${this::class.simpleName.orEmpty()} of $parent"
override fun getParent(): PsiElement = parent
abstract val kotlinOrigin: KtElement?
diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/compile/CodeFragmentCapturedValueAnalyzer.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/compile/CodeFragmentCapturedValueAnalyzer.kt
index 2733db8..56b3d2c 100644
--- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/compile/CodeFragmentCapturedValueAnalyzer.kt
+++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/compile/CodeFragmentCapturedValueAnalyzer.kt
@@ -18,12 +18,12 @@
import org.jetbrains.kotlin.descriptors.ClassKind
import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.FirSession
-import org.jetbrains.kotlin.fir.anonymousContextParameterName
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.utils.isInline
import org.jetbrains.kotlin.fir.declarations.utils.isLocal
import org.jetbrains.kotlin.fir.expressions.*
import org.jetbrains.kotlin.fir.extensions.captureValueInAnalyze
+import org.jetbrains.kotlin.fir.generatedContextParameterName
import org.jetbrains.kotlin.fir.references.FirSuperReference
import org.jetbrains.kotlin.fir.references.FirThisReference
import org.jetbrains.kotlin.fir.references.toResolvedCallableSymbol
@@ -46,7 +46,6 @@
import org.jetbrains.kotlin.psi.KtCodeFragment
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.KtFunction
-import org.jetbrains.kotlin.resolve.jvm.JvmConstants
import java.util.*
@KaImplementationDetail
@@ -256,9 +255,7 @@
when (symbol) {
is FirValueParameterSymbol -> {
val isCrossingInlineBounds = isCrossingInlineBounds(element, symbol)
- val name = symbol.anonymousContextParameterName(session, JvmConstants.INVALID_CHARS)
- ?.let { Name.identifier(it) }
- ?: symbol.name
+ val name = symbol.generatedContextParameterName ?: symbol.name
val capturedValue = CodeFragmentCapturedValue.Local(name, isMutated, isCrossingInlineBounds, depth)
register(CodeFragmentCapturedSymbol(capturedValue, symbol, symbol.resolvedReturnTypeRef))
}
diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextParameterSubstitutionFunction.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextParameterSubstitutionFunction.txt
index 10d49ae..e1a2886 100644
--- a/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextParameterSubstitutionFunction.txt
+++ b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextParameterSubstitutionFunction.txt
@@ -15,7 +15,7 @@
}
}
- public final [ResolvedTo(BODY_RESOLVE)] val withContextProp: R|@ContextFunctionTypeParams(1) context(MyClass) () -> kotlin/Unit| = context([ResolvedTo(BODY_RESOLVE)] <unused var>: R|MyClass|) [ResolvedTo(BODY_RESOLVE)] [MatchingParameterFunctionTypeKey=@ContextFunctionTypeParams(1) kotlin/Function1<MyClass, kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=NoInline> {
+ public final [ResolvedTo(BODY_RESOLVE)] val withContextProp: R|@ContextFunctionTypeParams(1) context(MyClass) () -> kotlin/Unit| = context([ResolvedTo(BODY_RESOLVE)] [UnnamedContextParameterNameKey=$context-MyClass] <unused var>: R|MyClass|) [ResolvedTo(BODY_RESOLVE)] [MatchingParameterFunctionTypeKey=@ContextFunctionTypeParams(1) kotlin/Function1<MyClass, kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=NoInline> {
==(context(R|<local>/<unused var>|) R|/myContextOf|<R|MyClass|>(), R|/MyClass.MyClass|())
}
diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextParameterSubstitutionProperty.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextParameterSubstitutionProperty.txt
index 5135d67..eb53cbd 100644
--- a/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextParameterSubstitutionProperty.txt
+++ b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextParameterSubstitutionProperty.txt
@@ -15,7 +15,7 @@
}
}
- public final [ResolvedTo(BODY_RESOLVE)] val withContextProp: R|@ContextFunctionTypeParams(1) context(MyClass) () -> kotlin/Unit| = context([ResolvedTo(BODY_RESOLVE)] <unused var>: R|MyClass|) [ResolvedTo(BODY_RESOLVE)] [MatchingParameterFunctionTypeKey=@ContextFunctionTypeParams(1) kotlin/Function1<MyClass, kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=NoInline> {
+ public final [ResolvedTo(BODY_RESOLVE)] val withContextProp: R|@ContextFunctionTypeParams(1) context(MyClass) () -> kotlin/Unit| = context([ResolvedTo(BODY_RESOLVE)] [UnnamedContextParameterNameKey=$context-MyClass] <unused var>: R|MyClass|) [ResolvedTo(BODY_RESOLVE)] [MatchingParameterFunctionTypeKey=@ContextFunctionTypeParams(1) kotlin/Function1<MyClass, kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=NoInline> {
==(context(R|<local>/<unused var>|) R|/myContextOf|<R|MyClass|>, R|/MyClass.MyClass|())
}
diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextParameterTypeSubstitutionFunction.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextParameterTypeSubstitutionFunction.txt
index 8b1addf..6c832e5 100644
--- a/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextParameterTypeSubstitutionFunction.txt
+++ b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextParameterTypeSubstitutionFunction.txt
@@ -24,7 +24,7 @@
context([ResolvedTo(CONTRACTS)] a: R|A|)
public final [ResolvedTo(CONTRACTS)] fun usage1(): R|A| { LAZY_BLOCK }
public final [ResolvedTo(BODY_RESOLVE)] fun context1(): R|A| {
- ^context1 R|/myContext|<R|B|, R|A|>(R|/B.B|(), <L> = context([ResolvedTo(BODY_RESOLVE)] <unused var>: R|B|) [ResolvedTo(BODY_RESOLVE)] [MatchingParameterFunctionTypeKey=@ContextFunctionTypeParams(1) kotlin/Function1<TypeVariable(T), TypeVariable(R)>] myContext@fun <anonymous>(): R|A| <inline=Inline, kind=UNKNOWN> {
+ ^context1 R|/myContext|<R|B|, R|A|>(R|/B.B|(), <L> = context([ResolvedTo(BODY_RESOLVE)] [UnnamedContextParameterNameKey=$context-B] <unused var>: R|B|) [ResolvedTo(BODY_RESOLVE)] [MatchingParameterFunctionTypeKey=@ContextFunctionTypeParams(1) kotlin/Function1<TypeVariable(T), TypeVariable(R)>] myContext@fun <anonymous>(): R|A| <inline=Inline, kind=UNKNOWN> {
^ context(R|<local>/<unused var>|) R|/usage1|()
}
)
diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextReceiverSubstitutionFunction.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextReceiverSubstitutionFunction.txt
index 154bde5..5615196 100644
--- a/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextReceiverSubstitutionFunction.txt
+++ b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextReceiverSubstitutionFunction.txt
@@ -15,7 +15,7 @@
}
}
- public final [ResolvedTo(BODY_RESOLVE)] val withContextProp: R|@ContextFunctionTypeParams(1) context(MyClass) () -> kotlin/Unit| = context([ResolvedTo(BODY_RESOLVE)] <unused var>@R|MyClass|) [ResolvedTo(BODY_RESOLVE)] [MatchingParameterFunctionTypeKey=@ContextFunctionTypeParams(1) kotlin/Function1<MyClass, kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=NoInline> {
+ public final [ResolvedTo(BODY_RESOLVE)] val withContextProp: R|@ContextFunctionTypeParams(1) context(MyClass) () -> kotlin/Unit| = context([ResolvedTo(BODY_RESOLVE)] [UnnamedContextParameterNameKey=$context-MyClass] <unused var>@R|MyClass|) [ResolvedTo(BODY_RESOLVE)] [MatchingParameterFunctionTypeKey=@ContextFunctionTypeParams(1) kotlin/Function1<MyClass, kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=NoInline> {
==(context(this@R|context of special/anonymous|) R|/myContextOf|<R|MyClass|>(), R|/MyClass.MyClass|())
}
diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextReceiverSubstitutionProperty.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextReceiverSubstitutionProperty.txt
index 31d1e5f..d588673 100644
--- a/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextReceiverSubstitutionProperty.txt
+++ b/analysis/low-level-api-fir/testData/getOrBuildFir/calls/contextReceiverSubstitutionProperty.txt
@@ -15,7 +15,7 @@
}
}
- public final [ResolvedTo(BODY_RESOLVE)] val withContextProp: R|@ContextFunctionTypeParams(1) context(MyClass) () -> kotlin/Unit| = context([ResolvedTo(BODY_RESOLVE)] <unused var>@R|MyClass|) [ResolvedTo(BODY_RESOLVE)] [MatchingParameterFunctionTypeKey=@ContextFunctionTypeParams(1) kotlin/Function1<MyClass, kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=NoInline> {
+ public final [ResolvedTo(BODY_RESOLVE)] val withContextProp: R|@ContextFunctionTypeParams(1) context(MyClass) () -> kotlin/Unit| = context([ResolvedTo(BODY_RESOLVE)] [UnnamedContextParameterNameKey=$context-MyClass] <unused var>@R|MyClass|) [ResolvedTo(BODY_RESOLVE)] [MatchingParameterFunctionTypeKey=@ContextFunctionTypeParams(1) kotlin/Function1<MyClass, kotlin/Unit>] fun <anonymous>(): R|kotlin/Unit| <inline=NoInline> {
==(context(this@R|context of special/anonymous|) R|/myContextOf|<R|MyClass|>, R|/MyClass.MyClass|())
}
diff --git a/analysis/low-level-api-fir/testData/getOrBuildFir/declarations/contextParametersInTypes.txt b/analysis/low-level-api-fir/testData/getOrBuildFir/declarations/contextParametersInTypes.txt
index c9f6390..e2cbfb3 100644
--- a/analysis/low-level-api-fir/testData/getOrBuildFir/declarations/contextParametersInTypes.txt
+++ b/analysis/low-level-api-fir/testData/getOrBuildFir/declarations/contextParametersInTypes.txt
@@ -3,7 +3,7 @@
FIR source kind: KtRealSourceElementKind
FIR element rendered:
-context([ResolvedTo(BODY_RESOLVE)] <unused var>: R|T1|)
+context([ResolvedTo(BODY_RESOLVE)] [UnnamedContextParameterNameKey=$context-Any] <unused var>: R|T1|)
public final suspend [ResolvedTo(BODY_RESOLVE)] fun <[ResolvedTo(BODY_RESOLVE)] T1, [ResolvedTo(BODY_RESOLVE)] T2, [ResolvedTo(BODY_RESOLVE)] R> myContext([ResolvedTo(BODY_RESOLVE)] p1: R|@ContextFunctionTypeParams(2) context(lib/A, lib/B) kotlin/Int.(kotlin/Int) -> kotlin/Int|, [ResolvedTo(BODY_RESOLVE)] p2: R|@ContextFunctionTypeParams(2) @R|lib/MyAnnotation|() context(lib/A, lib/B) kotlin/Int.(kotlin/Int) -> kotlin/Int|, [ResolvedTo(BODY_RESOLVE)] p3: R|@ContextFunctionTypeParams(2) (context(lib/A, lib/B) kotlin/Int.(kotlin/Int) -> kotlin/Int)?|, [ResolvedTo(BODY_RESOLVE)] p4: R|@ContextFunctionTypeParams(2) suspend context(lib/A, lib/B) kotlin/Int.(kotlin/Int) -> kotlin/Int|, [ResolvedTo(BODY_RESOLVE)] block: R|@ContextFunctionTypeParams(1) context(T2) () -> R|): R|R| {
^myContext Null(null)!!
}
@@ -12,7 +12,7 @@
FILE: [ResolvedTo(IMPORTS)] contextParametersInTypes.kt
package lib
- context([ResolvedTo(BODY_RESOLVE)] <unused var>: R|T1|)
+ context([ResolvedTo(BODY_RESOLVE)] [UnnamedContextParameterNameKey=$context-Any] <unused var>: R|T1|)
public final suspend [ResolvedTo(BODY_RESOLVE)] fun <[ResolvedTo(BODY_RESOLVE)] T1, [ResolvedTo(BODY_RESOLVE)] T2, [ResolvedTo(BODY_RESOLVE)] R> myContext([ResolvedTo(BODY_RESOLVE)] p1: R|@ContextFunctionTypeParams(2) context(lib/A, lib/B) kotlin/Int.(kotlin/Int) -> kotlin/Int|, [ResolvedTo(BODY_RESOLVE)] p2: R|@ContextFunctionTypeParams(2) @R|lib/MyAnnotation|() context(lib/A, lib/B) kotlin/Int.(kotlin/Int) -> kotlin/Int|, [ResolvedTo(BODY_RESOLVE)] p3: R|@ContextFunctionTypeParams(2) (context(lib/A, lib/B) kotlin/Int.(kotlin/Int) -> kotlin/Int)?|, [ResolvedTo(BODY_RESOLVE)] p4: R|@ContextFunctionTypeParams(2) suspend context(lib/A, lib/B) kotlin/Int.(kotlin/Int) -> kotlin/Int|, [ResolvedTo(BODY_RESOLVE)] block: R|@ContextFunctionTypeParams(1) context(T2) () -> R|): R|R| {
^myContext Null(null)!!
}
diff --git a/analysis/low-level-api-fir/testData/lazyResolve/contextParameters.txt b/analysis/low-level-api-fir/testData/lazyResolve/contextParameters.txt
index cc44d7b..0ac3228 100644
--- a/analysis/low-level-api-fir/testData/lazyResolve/contextParameters.txt
+++ b/analysis/low-level-api-fir/testData/lazyResolve/contextParameters.txt
@@ -60,12 +60,12 @@
BODY_RESOLVE:
FILE: [ResolvedTo(IMPORTS)] contextParameters.kt
- context([ResolvedTo(BODY_RESOLVE)] <unused var>: R|kotlin/String|)
+ context([ResolvedTo(BODY_RESOLVE)] [UnnamedContextParameterNameKey=$context-String] <unused var>: R|kotlin/String|)
public final [ResolvedTo(BODY_RESOLVE)] fun foo(): R|kotlin/Unit| {
}
FILE RAW TO BODY:
FILE: [ResolvedTo(BODY_RESOLVE)] contextParameters.kt
- context([ResolvedTo(BODY_RESOLVE)] <unused var>: R|kotlin/String|)
+ context([ResolvedTo(BODY_RESOLVE)] [UnnamedContextParameterNameKey=$context-String] <unused var>: R|kotlin/String|)
public final [ResolvedTo(BODY_RESOLVE)] fun foo(): R|kotlin/Unit| {
}
diff --git a/analysis/low-level-api-fir/testData/lazyResolve/contextParametersProperty.txt b/analysis/low-level-api-fir/testData/lazyResolve/contextParametersProperty.txt
index 881001d..2353fad 100644
--- a/analysis/low-level-api-fir/testData/lazyResolve/contextParametersProperty.txt
+++ b/analysis/low-level-api-fir/testData/lazyResolve/contextParametersProperty.txt
@@ -72,7 +72,7 @@
BODY_RESOLVE:
FILE: [ResolvedTo(IMPORTS)] contextParametersProperty.kt
- context([ResolvedTo(BODY_RESOLVE)] <unused var>: R|kotlin/String|)
+ context([ResolvedTo(BODY_RESOLVE)] [UnnamedContextParameterNameKey=$context-String] <unused var>: R|kotlin/String|)
public final [ResolvedTo(BODY_RESOLVE)] val bar: R|kotlin/String|
public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/String| {
^ String()
@@ -80,7 +80,7 @@
FILE RAW TO BODY:
FILE: [ResolvedTo(BODY_RESOLVE)] contextParametersProperty.kt
- context([ResolvedTo(BODY_RESOLVE)] <unused var>: R|kotlin/String|)
+ context([ResolvedTo(BODY_RESOLVE)] [UnnamedContextParameterNameKey=$context-String] <unused var>: R|kotlin/String|)
public final [ResolvedTo(BODY_RESOLVE)] val bar: R|kotlin/String|
public [ResolvedTo(BODY_RESOLVE)] get(): R|kotlin/String| {
^ String()
diff --git a/analysis/low-level-api-fir/testData/lazyResolve/functions/javaFunctionWithImplicitTypeAndAnnotationsAndSubstitutedType.txt b/analysis/low-level-api-fir/testData/lazyResolve/functions/javaFunctionWithImplicitTypeAndAnnotationsAndSubstitutedType.txt
index 547b469..9c6fd61 100644
--- a/analysis/low-level-api-fir/testData/lazyResolve/functions/javaFunctionWithImplicitTypeAndAnnotationsAndSubstitutedType.txt
+++ b/analysis/low-level-api-fir/testData/lazyResolve/functions/javaFunctionWithImplicitTypeAndAnnotationsAndSubstitutedType.txt
@@ -2,7 +2,7 @@
TARGET: @R|java/lang/Override|() public open [ResolvedTo(CONTRACTS)] [DeferredCallableCopyReturnTypeKey=DelegatingDeferredReturnTypeWithSubstitution(deferredCalc=Deferred for Enhancement (Overriddens with Implicit Types), substitutor={T -> T})] fun <[ResolvedTo(BODY_RESOLVE)] T : R|ft<kotlin/collections/MutableList<@R|Anno|(value = Int(3)) kotlin/String!>, kotlin/collections/List<@R|Anno|(value = Int(3)) kotlin/String!>?>|> defaultMethod([ResolvedTo(BODY_RESOLVE)] p: R|@EnhancedNullability kotlin/collections/List<@EnhancedNullability @R|Anno|(value = Int(3)) kotlin/String>|): <implicit>
FILE: [ResolvedTo(IMPORTS)] main.kt
- @R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
+ @Target[Unresolved](LAZY_EXPRESSION) public final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.value] value: Int): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
@@ -30,7 +30,7 @@
TARGET: @R|java/lang/Override|() public open [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] fun <[ResolvedTo(BODY_RESOLVE)] T : R|ft<kotlin/collections/MutableList<@R|Anno|(value = Int(3)) kotlin/String!>, kotlin/collections/List<@R|Anno|(value = Int(3)) kotlin/String!>?>|> defaultMethod([ResolvedTo(BODY_RESOLVE)] p: R|@EnhancedNullability kotlin/collections/List<@EnhancedNullability @R|Anno|(value = Int(3)) kotlin/String>|): R|@EnhancedNullability kotlin/collections/List<@R|Anno|(value = Int(3)) kotlin/String!>|
FILE: [ResolvedTo(IMPORTS)] main.kt
- @R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
+ @Target[Unresolved](LAZY_EXPRESSION) public final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.value] value: Int): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
@@ -60,7 +60,7 @@
TARGET: @R|java/lang/Override|() public open [ResolvedTo(CONSTANT_EVALUATION)] fun <[ResolvedTo(BODY_RESOLVE)] T : R|ft<kotlin/collections/MutableList<@R|Anno|(value = Int(3)) kotlin/String!>, kotlin/collections/List<@R|Anno|(value = Int(3)) kotlin/String!>?>|> defaultMethod([ResolvedTo(BODY_RESOLVE)] p: R|@EnhancedNullability kotlin/collections/List<@EnhancedNullability @R|Anno|(value = Int(3)) kotlin/String>|): R|@EnhancedNullability kotlin/collections/List<@R|Anno|(value = Int(3)) kotlin/String!>|
FILE: [ResolvedTo(IMPORTS)] main.kt
- @R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
+ @Target[Unresolved](LAZY_EXPRESSION) public final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.value] value: Int): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
@@ -90,7 +90,7 @@
TARGET: @R|java/lang/Override|() public open [ResolvedTo(ANNOTATION_ARGUMENTS)] fun <[ResolvedTo(BODY_RESOLVE)] T : R|ft<kotlin/collections/MutableList<@R|Anno|(value = Int(3)) kotlin/String!>, kotlin/collections/List<@R|Anno|(value = Int(3)) kotlin/String!>?>|> defaultMethod([ResolvedTo(BODY_RESOLVE)] p: R|@EnhancedNullability kotlin/collections/List<@EnhancedNullability @R|Anno|(value = Int(3)) kotlin/String>|): R|@EnhancedNullability kotlin/collections/List<@R|Anno|(value = Int(3)) kotlin/String!>|
FILE: [ResolvedTo(IMPORTS)] main.kt
- @R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
+ @Target[Unresolved](LAZY_EXPRESSION) public final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.value] value: Int): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
@@ -120,7 +120,7 @@
TARGET: @R|java/lang/Override|() public open [ResolvedTo(BODY_RESOLVE)] fun <[ResolvedTo(BODY_RESOLVE)] T : R|ft<kotlin/collections/MutableList<@R|Anno|(value = Int(3)) kotlin/String!>, kotlin/collections/List<@R|Anno|(value = Int(3)) kotlin/String!>?>|> defaultMethod([ResolvedTo(BODY_RESOLVE)] p: R|@EnhancedNullability kotlin/collections/List<@EnhancedNullability @R|Anno|(value = Int(3)) kotlin/String>|): R|@EnhancedNullability kotlin/collections/List<@R|Anno|(value = Int(3)) kotlin/String!>|
FILE: [ResolvedTo(IMPORTS)] main.kt
- @R|kotlin/annotation/Target|[Types](Q|kotlin/annotation/AnnotationTarget|.R|kotlin/annotation/AnnotationTarget.TYPE|) public final [ResolvedTo(STATUS)] annotation class Anno : R|kotlin/Annotation| {
+ @Target[Unresolved](LAZY_EXPRESSION) public final? [ResolvedTo(RAW_FIR)] annotation class Anno : R|kotlin/Annotation| {
public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Anno] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Anno.value] value: Int): R|Anno| {
LAZY_super<R|kotlin/Any|>
}
diff --git a/analysis/low-level-api-fir/tests-gen/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLBlackBoxTestGenerated.java b/analysis/low-level-api-fir/tests-gen/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLBlackBoxTestGenerated.java
index 26b74a5..82349d5 100644
--- a/analysis/low-level-api-fir/tests-gen/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLBlackBoxTestGenerated.java
+++ b/analysis/low-level-api-fir/tests-gen/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLBlackBoxTestGenerated.java
@@ -545,6 +545,18 @@
}
@Test
+ @TestMetadata("annotationAnnotationParam.kt")
+ public void testAnnotationAnnotationParam() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+ }
+
+ @Test
+ @TestMetadata("annotationAnyDispatch.kt")
+ public void testAnnotationAnyDispatch() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+ }
+
+ @Test
@TestMetadata("annotationEnclosingName.kt")
public void testAnnotationEnclosingName() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -563,6 +575,12 @@
}
@Test
+ @TestMetadata("annotationInlineMultiModule.kt")
+ public void testAnnotationInlineMultiModule() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+ }
+
+ @Test
@TestMetadata("annotationInstances.kt")
public void testAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -599,6 +617,12 @@
}
@Test
+ @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+ public void testAnnotationToStringDefaultsAndEmptyArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+ }
+
+ @Test
@TestMetadata("annotationType.kt")
public void testAnnotationType() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -623,6 +647,42 @@
}
@Test
+ @TestMetadata("arrayContentEqAny.kt")
+ public void testArrayContentEqAny() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+ }
+
+ @Test
+ @TestMetadata("arraysAndKClass.kt")
+ public void testArraysAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("differentAnnotationTypes.kt")
+ public void testDifferentAnnotationTypes() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+ }
+
+ @Test
+ @TestMetadata("differentOrder.kt")
+ public void testDifferentOrder() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+ }
+
+ @Test
+ @TestMetadata("enumAndKClass.kt")
+ public void testEnumAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("enumArray.kt")
+ public void testEnumArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+ }
+
+ @Test
@TestMetadata("inInlineFunction.kt")
public void testInInlineFunction() {
runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -635,6 +695,12 @@
}
@Test
+ @TestMetadata("instanceEquality.kt")
+ public void testInstanceEquality() {
+ runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+ }
+
+ @Test
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() {
runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -659,6 +725,12 @@
}
@Test
+ @TestMetadata("mixedArray.kt")
+ public void testMixedArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+ }
+
+ @Test
@TestMetadata("multifileEqHc.kt")
public void testMultifileEqHc() {
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -689,22 +761,64 @@
}
@Test
+ @TestMetadata("naNAndZero.kt")
+ public void testNaNAndZero() {
+ runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+ }
+
+ @Test
+ @TestMetadata("nested.kt")
+ public void testNested() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+ }
+
+ @Test
@TestMetadata("nestedAnnotationInstances.kt")
public void testNestedAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
}
@Test
+ @TestMetadata("nestedDefaults.kt")
+ public void testNestedDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+ }
+
+ @Test
@TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
public void testRearrangedArgumentsInAnnotationCall() {
runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
}
@Test
+ @TestMetadata("repeatableInstantiation.kt")
+ public void testRepeatableInstantiation() {
+ runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+ }
+
+ @Test
+ @TestMetadata("typeAliasesAndGenericsInterop.kt")
+ public void testTypeAliasesAndGenericsInterop() {
+ runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+ }
+
+ @Test
+ @TestMetadata("unsignedAndBooleanArrays.kt")
+ public void testUnsignedAndBooleanArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+ }
+
+ @Test
@TestMetadata("varargInAnnotationParameterInstantiation.kt")
public void testVarargInAnnotationParameterInstantiation() {
runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
}
+
+ @Test
+ @TestMetadata("withDefaults.kt")
+ public void testWithDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+ }
}
@Nested
diff --git a/analysis/low-level-api-fir/tests-gen/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLReversedBlackBoxTestGenerated.java b/analysis/low-level-api-fir/tests-gen/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLReversedBlackBoxTestGenerated.java
index c5eb94f..5692a06 100644
--- a/analysis/low-level-api-fir/tests-gen/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLReversedBlackBoxTestGenerated.java
+++ b/analysis/low-level-api-fir/tests-gen/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLReversedBlackBoxTestGenerated.java
@@ -545,6 +545,18 @@
}
@Test
+ @TestMetadata("annotationAnnotationParam.kt")
+ public void testAnnotationAnnotationParam() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+ }
+
+ @Test
+ @TestMetadata("annotationAnyDispatch.kt")
+ public void testAnnotationAnyDispatch() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+ }
+
+ @Test
@TestMetadata("annotationEnclosingName.kt")
public void testAnnotationEnclosingName() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -563,6 +575,12 @@
}
@Test
+ @TestMetadata("annotationInlineMultiModule.kt")
+ public void testAnnotationInlineMultiModule() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+ }
+
+ @Test
@TestMetadata("annotationInstances.kt")
public void testAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -599,6 +617,12 @@
}
@Test
+ @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+ public void testAnnotationToStringDefaultsAndEmptyArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+ }
+
+ @Test
@TestMetadata("annotationType.kt")
public void testAnnotationType() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -623,6 +647,42 @@
}
@Test
+ @TestMetadata("arrayContentEqAny.kt")
+ public void testArrayContentEqAny() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+ }
+
+ @Test
+ @TestMetadata("arraysAndKClass.kt")
+ public void testArraysAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("differentAnnotationTypes.kt")
+ public void testDifferentAnnotationTypes() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+ }
+
+ @Test
+ @TestMetadata("differentOrder.kt")
+ public void testDifferentOrder() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+ }
+
+ @Test
+ @TestMetadata("enumAndKClass.kt")
+ public void testEnumAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("enumArray.kt")
+ public void testEnumArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+ }
+
+ @Test
@TestMetadata("inInlineFunction.kt")
public void testInInlineFunction() {
runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -635,6 +695,12 @@
}
@Test
+ @TestMetadata("instanceEquality.kt")
+ public void testInstanceEquality() {
+ runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+ }
+
+ @Test
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() {
runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -659,6 +725,12 @@
}
@Test
+ @TestMetadata("mixedArray.kt")
+ public void testMixedArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+ }
+
+ @Test
@TestMetadata("multifileEqHc.kt")
public void testMultifileEqHc() {
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -689,22 +761,64 @@
}
@Test
+ @TestMetadata("naNAndZero.kt")
+ public void testNaNAndZero() {
+ runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+ }
+
+ @Test
+ @TestMetadata("nested.kt")
+ public void testNested() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+ }
+
+ @Test
@TestMetadata("nestedAnnotationInstances.kt")
public void testNestedAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
}
@Test
+ @TestMetadata("nestedDefaults.kt")
+ public void testNestedDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+ }
+
+ @Test
@TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
public void testRearrangedArgumentsInAnnotationCall() {
runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
}
@Test
+ @TestMetadata("repeatableInstantiation.kt")
+ public void testRepeatableInstantiation() {
+ runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+ }
+
+ @Test
+ @TestMetadata("typeAliasesAndGenericsInterop.kt")
+ public void testTypeAliasesAndGenericsInterop() {
+ runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+ }
+
+ @Test
+ @TestMetadata("unsignedAndBooleanArrays.kt")
+ public void testUnsignedAndBooleanArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+ }
+
+ @Test
@TestMetadata("varargInAnnotationParameterInstantiation.kt")
public void testVarargInAnnotationParameterInstantiation() {
runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
}
+
+ @Test
+ @TestMetadata("withDefaults.kt")
+ public void testWithDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+ }
}
@Nested
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/SymbolLightMemberBase.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/SymbolLightMemberBase.kt
index 97882c6..77b2e73 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/SymbolLightMemberBase.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/SymbolLightMemberBase.kt
@@ -25,8 +25,6 @@
override fun hasModifierProperty(name: String): Boolean = modifierList?.hasModifierProperty(name) ?: false
- override fun toString(): String = "${this::class.java.simpleName}:$name"
-
override fun getContainingClass(): SymbolLightClassBase = containingClass
abstract override fun getNameIdentifier(): PsiIdentifier?
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassBase.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassBase.kt
index 533e245..3e16759 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassBase.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassBase.kt
@@ -144,6 +144,8 @@
abstract override fun hashCode(): Int
+ override fun toString(): String = this::class.simpleName.orEmpty()
+
override fun getContext(): PsiElement? = parent
override fun isEquivalentTo(another: PsiElement?): Boolean = PsiClassImplUtil.isClassEquivalentTo(this, another)
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassLike.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassLike.kt
index 614a972..92484dd 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassLike.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForClassLike.kt
@@ -27,7 +27,6 @@
import org.jetbrains.kotlin.load.java.structure.LightClassOriginKind
import org.jetbrains.kotlin.psi.KtClassOrObject
import org.jetbrains.kotlin.psi.KtScript
-import org.jetbrains.kotlin.psi.debugText.getDebugText
import org.jetbrains.kotlin.psi.stubs.KotlinClassOrObjectStub
import org.jetbrains.kotlin.utils.addToStdlib.ifTrue
@@ -38,6 +37,7 @@
manager: PsiManager,
) : SymbolLightClassBase(ktModule, manager),
StubBasedPsiElement<KotlinClassOrObjectStub<out KtClassOrObject>> {
+ @Suppress("RemoveRedundantQualifierName") // KTIJ-33595
constructor(
ktModule: KaModule,
classSymbol: SType,
@@ -62,7 +62,7 @@
classSymbolPointer.withSymbol(ktModule, action)
/**
- * Psi-based [org.jetbrains.kotlin.psi.KtClassOrObject.isTopLevel] is needed to properly handle classes inside scripts
+ * Psi-based [KtClassOrObject.isTopLevel] is needed to properly handle classes inside scripts
* as they are treated as nested.
*/
override val isTopLevel: Boolean
@@ -153,8 +153,6 @@
override fun isValid(): Boolean = classOrObjectDeclaration?.isValid ?: classSymbolPointer.isValid(ktModule)
- override fun toString() = "${this::class.java.simpleName}:${classOrObjectDeclaration?.getDebugText()}"
-
override fun getUseScope(): SearchScope = classOrObjectDeclaration?.useScope ?: GlobalSearchScope.projectScope(project)
override fun getElementType(): IStubElementType<out StubElement<*>, *>? = classOrObjectDeclaration?.elementType
override fun getStub(): KotlinClassOrObjectStub<out KtClassOrObject>? = classOrObjectDeclaration?.stub
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForEnumEntry.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForEnumEntry.kt
index 9c87812..47a131f 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForEnumEntry.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForEnumEntry.kt
@@ -50,8 +50,6 @@
override fun hashCode(): Int = enumConstant.hashCode()
- override fun toString(): String = "SymbolLightClassForEnumEntry:$name"
-
override fun isEquivalentTo(another: PsiElement?): Boolean {
return super.isEquivalentTo(another) || isOriginEquivalentTo(another)
}
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForFacade.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForFacade.kt
index 6071a43..5497988 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForFacade.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForFacade.kt
@@ -206,7 +206,7 @@
}
override fun hashCode() = facadeClassFqName.hashCode()
- override fun toString() = "${SymbolLightClassForFacade::class.java.simpleName}:$facadeClassFqName"
+ override fun toString(): String = "${this::class.simpleName.orEmpty()}:$facadeClassFqName"
override val originKind: LightClassOriginKind get() = LightClassOriginKind.SOURCE
override fun getText() = firstFileInFacade.text ?: ""
override fun getTextRange(): TextRange = firstFileInFacade.textRange ?: TextRange.EMPTY_RANGE
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForScript.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForScript.kt
index b5ec05f..f048699 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForScript.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForScript.kt
@@ -108,8 +108,6 @@
override fun hashCode(): Int = script.hashCode()
- override fun toString(): String = "${SymbolLightClassForScript::class.java.simpleName}:${script.fqName}"
-
override fun getNameIdentifier(): PsiIdentifier? = null
override fun getContainingClass(): PsiClass? = null
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightField.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightField.kt
index aae4a06..dbc2c0d 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightField.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/fields/SymbolLightField.kt
@@ -44,8 +44,6 @@
return this
}
- override fun toString(): String = "KtLightField:$name"
-
override fun getTypeElement(): PsiTypeElement? = null
@Throws(IncorrectOperationException::class)
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SymbolLightModifierList.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SymbolLightModifierList.kt
index 6738a1b..209bb7d 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SymbolLightModifierList.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/modifierLists/SymbolLightModifierList.kt
@@ -35,7 +35,6 @@
override fun getParent() = owner
override fun isEquivalentTo(another: PsiElement?) = another is SymbolLightModifierList<*> && owner == another.owner
override fun isWritable() = false
- override fun toString() = "Light modifier list of $owner"
override val givenAnnotations: List<KtLightAbstractAnnotation> get() = invalidAccess()
override fun equals(other: Any?): Boolean = this === other || other is SymbolLightModifierList<*> && other.kotlinOrigin == kotlinOrigin
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterBase.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterBase.kt
index ca4f4a8..fc29e52 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterBase.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightParameterBase.kt
@@ -56,7 +56,7 @@
}
}
- override fun toString(): String = "${this::class.simpleName}:$name"
+ override fun toString(): String = this::class.simpleName.orEmpty()
override fun isEquivalentTo(another: PsiElement?): Boolean =
basicIsEquivalentTo(this, another as? PsiParameter) || isOriginEquivalentTo(another)
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameter.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameter.kt
index 4bf5931..6734f6f 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameter.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameter.kt
@@ -183,7 +183,7 @@
override fun hasAnnotation(fqn: String): Boolean = annotationsBox.hasAnnotation(this, fqn)
override fun getApplicableAnnotations(): Array<PsiAnnotation> = annotations
- override fun toString(): String = "SymbolLightTypeParameter:$name"
+ override fun toString(): String = this::class.simpleName.orEmpty()
override fun getNavigationElement(): PsiElement = kotlinOrigin ?: parent.navigationElement
override fun getLanguage(): Language = KotlinLanguage.INSTANCE
diff --git a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameterList.kt b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameterList.kt
index 085be23..5c00ef1 100644
--- a/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameterList.kt
+++ b/analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/parameters/SymbolLightTypeParameterList.kt
@@ -62,7 +62,7 @@
override fun getTypeParameterIndex(typeParameter: PsiTypeParameter?): Int = _typeParameters.indexOf(typeParameter)
- override fun toString(): String = "SymbolLightTypeParameterList"
+ override fun toString(): String = this::class.simpleName.orEmpty()
override fun equals(other: Any?): Boolean {
if (this === other) return true
diff --git a/build-common/src/org/jetbrains/kotlin/compilerRunner/argumentsToStrings.kt b/build-common/src/org/jetbrains/kotlin/compilerRunner/argumentsToStrings.kt
index 9a43942..4dcb5d5 100644
--- a/build-common/src/org/jetbrains/kotlin/compilerRunner/argumentsToStrings.kt
+++ b/build-common/src/org/jetbrains/kotlin/compilerRunner/argumentsToStrings.kt
@@ -65,6 +65,10 @@
add(argumentName)
}
+ argumentAnnotation.value == "-XXLanguage" -> {
+ add("$argumentName:$argumentStringValue")
+ }
+
/* Advanced (e.g. -X arguments) or boolean properties need to be passed using the '=' */
argumentAnnotation.isAdvanced || property.returnType.classifier == Boolean::class -> {
add("$argumentName=$argumentStringValue")
@@ -93,4 +97,4 @@
"$qualifiedName has no empty constructor"
)
return argumentConstructor.call()
-}
\ No newline at end of file
+}
diff --git a/build-common/test/org/jetbrains/kotlin/compilerRunner/CompilerArgumentParsingTest.kt b/build-common/test/org/jetbrains/kotlin/compilerRunner/CompilerArgumentParsingTest.kt
index f89161d..9ca0cbf 100644
--- a/build-common/test/org/jetbrains/kotlin/compilerRunner/CompilerArgumentParsingTest.kt
+++ b/build-common/test/org/jetbrains/kotlin/compilerRunner/CompilerArgumentParsingTest.kt
@@ -134,7 +134,7 @@
type == typeOf<Boolean>() -> randomBoolean()
type == typeOf<Array<String>>() -> randomStringArray()
type.isSubtypeOf(typeOf<List<*>>()) -> randomList(type.arguments.first().type ?: error("Missing elementType on $type"))
- type == typeOf<InternalArgument>() -> return null
+ type == typeOf<ManualLanguageFeatureSetting>() -> return null
(type.classifier as? KClass<*>)?.isData == true -> null
else -> error("Unsupported type '$type'")
}
diff --git a/compiler/arguments/resources/kotlin-compiler-arguments.json b/compiler/arguments/resources/kotlin-compiler-arguments.json
index fec1461..b2e4a17 100644
--- a/compiler/arguments/resources/kotlin-compiler-arguments.json
+++ b/compiler/arguments/resources/kotlin-compiler-arguments.json
@@ -3780,6 +3780,37 @@
"deprecatedVersion": null,
"removedVersion": null
}
+ },
+ {
+ "name": "XXLanguage",
+ "shortName": null,
+ "deprecatedName": null,
+ "description": {
+ "current": "Enables/disables specified language feature.\nWarning: this flag is not intended for production use. If you want to configure the language behaviour use the\n-language-version or corresponding experimental feature flags.",
+ "valueInVersions": []
+ },
+ "delimiter": "None",
+ "valueType": {
+ "type": "org.jetbrains.kotlin.arguments.dsl.types.StringArrayType",
+ "defaultValue": {
+ "current": null,
+ "valueInVersions": []
+ },
+ "isNullable": {
+ "current": true,
+ "valueInVersions": []
+ }
+ },
+ "valueDescription": {
+ "current": "[+-]LanguageFeatureName",
+ "valueInVersions": []
+ },
+ "releaseVersionsMetadata": {
+ "introducedVersion": "1.0.0",
+ "stabilizedVersion": null,
+ "deprecatedVersion": null,
+ "removedVersion": null
+ }
}
],
"nestedLevels": [
diff --git a/compiler/arguments/src/org/jetbrains/kotlin/arguments/description/CommonCompilerArguments.kt b/compiler/arguments/src/org/jetbrains/kotlin/arguments/description/CommonCompilerArguments.kt
index 303a65f..e241bf2 100644
--- a/compiler/arguments/src/org/jetbrains/kotlin/arguments/description/CommonCompilerArguments.kt
+++ b/compiler/arguments/src/org/jetbrains/kotlin/arguments/description/CommonCompilerArguments.kt
@@ -1156,4 +1156,19 @@
introducedVersion = KotlinReleaseVersion.v2_3_0
)
}
+
+ compilerArgument {
+ name = "XXLanguage"
+ description = """Enables/disables specified language feature.
+Warning: this flag is not intended for production use. If you want to configure the language behaviour use the
+-language-version or corresponding experimental feature flags.
+ """.trimIndent().asReleaseDependent()
+ valueDescription = "[+-]LanguageFeatureName".asReleaseDependent()
+ compilerName = "manuallyConfiguredFeatures"
+ valueType = StringArrayType.defaultNull
+ delimiter = KotlinCompilerArgument.Delimiter.None
+ lifecycle(
+ introducedVersion = KotlinReleaseVersion.v1_0_0
+ )
+ }
}
diff --git a/compiler/build-tools/kotlin-build-tools-compat/gen/org/jetbrains/kotlin/buildtools/internal/compat/arguments/CommonCompilerArgumentsImpl.kt b/compiler/build-tools/kotlin-build-tools-compat/gen/org/jetbrains/kotlin/buildtools/internal/compat/arguments/CommonCompilerArgumentsImpl.kt
index c929c9c..6b52d20 100644
--- a/compiler/build-tools/kotlin-build-tools-compat/gen/org/jetbrains/kotlin/buildtools/internal/compat/arguments/CommonCompilerArgumentsImpl.kt
+++ b/compiler/build-tools/kotlin-build-tools-compat/gen/org/jetbrains/kotlin/buildtools/internal/compat/arguments/CommonCompilerArgumentsImpl.kt
@@ -25,6 +25,7 @@
import org.jetbrains.kotlin.buildtools.`internal`.compat.arguments.CommonCompilerArgumentsImpl.Companion.SCRIPT
import org.jetbrains.kotlin.buildtools.`internal`.compat.arguments.CommonCompilerArgumentsImpl.Companion.XX_DEBUG_LEVEL_COMPILER_CHECKS
import org.jetbrains.kotlin.buildtools.`internal`.compat.arguments.CommonCompilerArgumentsImpl.Companion.XX_EXPLICIT_RETURN_TYPES
+import org.jetbrains.kotlin.buildtools.`internal`.compat.arguments.CommonCompilerArgumentsImpl.Companion.XX_LANGUAGE
import org.jetbrains.kotlin.buildtools.`internal`.compat.arguments.CommonCompilerArgumentsImpl.Companion.XX_LENIENT_MODE
import org.jetbrains.kotlin.buildtools.`internal`.compat.arguments.CommonCompilerArgumentsImpl.Companion.X_ALLOW_ANY_SCRIPTS_IN_SOURCE_ROOTS
import org.jetbrains.kotlin.buildtools.`internal`.compat.arguments.CommonCompilerArgumentsImpl.Companion.X_ALLOW_CONDITION_IMPLIES_RETURNS_CONTRACTS
@@ -226,6 +227,7 @@
try { if (X_ALLOW_CONTRACTS_ON_MORE_FUNCTIONS in this) { arguments.allowContractsOnMoreFunctions = get(X_ALLOW_CONTRACTS_ON_MORE_FUNCTIONS)} } catch (e: NoSuchMethodError) { throw IllegalStateException("""Compiler parameter not recognized: X_ALLOW_CONTRACTS_ON_MORE_FUNCTIONS. Current compiler version is: $KC_VERSION}, but the argument was introduced in 2.2.20""").initCause(e) }
try { if (X_ALLOW_CONDITION_IMPLIES_RETURNS_CONTRACTS in this) { arguments.allowConditionImpliesReturnsContracts = get(X_ALLOW_CONDITION_IMPLIES_RETURNS_CONTRACTS)} } catch (e: NoSuchMethodError) { throw IllegalStateException("""Compiler parameter not recognized: X_ALLOW_CONDITION_IMPLIES_RETURNS_CONTRACTS. Current compiler version is: $KC_VERSION}, but the argument was introduced in 2.2.20""").initCause(e) }
try { if (X_ALLOW_HOLDSIN_CONTRACT in this) { arguments.allowHoldsinContract = get(X_ALLOW_HOLDSIN_CONTRACT)} } catch (e: NoSuchMethodError) { throw IllegalStateException("""Compiler parameter not recognized: X_ALLOW_HOLDSIN_CONTRACT. Current compiler version is: $KC_VERSION}, but the argument was introduced in 2.2.20""").initCause(e) }
+ if (XX_LANGUAGE in this) { arguments.manuallyConfiguredFeatures = get(XX_LANGUAGE)}
return arguments
}
@@ -316,6 +318,7 @@
try { this[X_ALLOW_CONTRACTS_ON_MORE_FUNCTIONS] = arguments.allowContractsOnMoreFunctions } catch (_: NoSuchMethodError) { }
try { this[X_ALLOW_CONDITION_IMPLIES_RETURNS_CONTRACTS] = arguments.allowConditionImpliesReturnsContracts } catch (_: NoSuchMethodError) { }
try { this[X_ALLOW_HOLDSIN_CONTRACT] = arguments.allowHoldsinContract } catch (_: NoSuchMethodError) { }
+ try { this[XX_LANGUAGE] = arguments.manuallyConfiguredFeatures } catch (_: NoSuchMethodError) { }
internalArguments.addAll(arguments.internalArguments.map { it.stringRepresentation })
}
@@ -570,5 +573,8 @@
public val X_ALLOW_HOLDSIN_CONTRACT: CommonCompilerArgument<Boolean> =
CommonCompilerArgument("X_ALLOW_HOLDSIN_CONTRACT")
+
+ public val XX_LANGUAGE: CommonCompilerArgument<Array<String>?> =
+ CommonCompilerArgument("XX_LANGUAGE")
}
}
diff --git a/compiler/build-tools/kotlin-build-tools-impl/gen/org/jetbrains/kotlin/buildtools/internal/arguments/CommonCompilerArgumentsImpl.kt b/compiler/build-tools/kotlin-build-tools-impl/gen/org/jetbrains/kotlin/buildtools/internal/arguments/CommonCompilerArgumentsImpl.kt
index b3852e3..25ae981 100644
--- a/compiler/build-tools/kotlin-build-tools-impl/gen/org/jetbrains/kotlin/buildtools/internal/arguments/CommonCompilerArgumentsImpl.kt
+++ b/compiler/build-tools/kotlin-build-tools-impl/gen/org/jetbrains/kotlin/buildtools/internal/arguments/CommonCompilerArgumentsImpl.kt
@@ -26,6 +26,7 @@
import org.jetbrains.kotlin.buildtools.`internal`.arguments.CommonCompilerArgumentsImpl.Companion.SCRIPT
import org.jetbrains.kotlin.buildtools.`internal`.arguments.CommonCompilerArgumentsImpl.Companion.XX_DEBUG_LEVEL_COMPILER_CHECKS
import org.jetbrains.kotlin.buildtools.`internal`.arguments.CommonCompilerArgumentsImpl.Companion.XX_EXPLICIT_RETURN_TYPES
+import org.jetbrains.kotlin.buildtools.`internal`.arguments.CommonCompilerArgumentsImpl.Companion.XX_LANGUAGE
import org.jetbrains.kotlin.buildtools.`internal`.arguments.CommonCompilerArgumentsImpl.Companion.XX_LENIENT_MODE
import org.jetbrains.kotlin.buildtools.`internal`.arguments.CommonCompilerArgumentsImpl.Companion.X_ALLOW_ANY_SCRIPTS_IN_SOURCE_ROOTS
import org.jetbrains.kotlin.buildtools.`internal`.arguments.CommonCompilerArgumentsImpl.Companion.X_ALLOW_CONDITION_IMPLIES_RETURNS_CONTRACTS
@@ -239,6 +240,7 @@
if (X_ALLOW_CONDITION_IMPLIES_RETURNS_CONTRACTS in this) { arguments.allowConditionImpliesReturnsContracts = get(X_ALLOW_CONDITION_IMPLIES_RETURNS_CONTRACTS)}
if (X_ALLOW_HOLDSIN_CONTRACT in this) { arguments.allowHoldsinContract = get(X_ALLOW_HOLDSIN_CONTRACT)}
if (X_NAME_BASED_DESTRUCTURING in this) { arguments.nameBasedDestructuring = get(X_NAME_BASED_DESTRUCTURING)}
+ if (XX_LANGUAGE in this) { arguments.manuallyConfiguredFeatures = get(XX_LANGUAGE)}
return arguments
}
@@ -334,6 +336,7 @@
try { this[X_ALLOW_CONDITION_IMPLIES_RETURNS_CONTRACTS] = arguments.allowConditionImpliesReturnsContracts } catch (_: NoSuchMethodError) { }
try { this[X_ALLOW_HOLDSIN_CONTRACT] = arguments.allowHoldsinContract } catch (_: NoSuchMethodError) { }
try { this[X_NAME_BASED_DESTRUCTURING] = arguments.nameBasedDestructuring } catch (_: NoSuchMethodError) { }
+ try { this[XX_LANGUAGE] = arguments.manuallyConfiguredFeatures } catch (_: NoSuchMethodError) { }
internalArguments.addAll(arguments.internalArguments.map { it.stringRepresentation })
}
@@ -603,5 +606,8 @@
public val X_NAME_BASED_DESTRUCTURING: CommonCompilerArgument<String?> =
CommonCompilerArgument("X_NAME_BASED_DESTRUCTURING")
+
+ public val XX_LANGUAGE: CommonCompilerArgument<Array<String>?> =
+ CommonCompilerArgument("XX_LANGUAGE")
}
}
diff --git a/compiler/build-tools/kotlin-build-tools-options-generator/src/org/jetbrains/kotlin/buildtools/options/generator/Main.kt b/compiler/build-tools/kotlin-build-tools-options-generator/src/org/jetbrains/kotlin/buildtools/options/generator/Main.kt
index 2cd2ed4..809942e 100644
--- a/compiler/build-tools/kotlin-build-tools-options-generator/src/org/jetbrains/kotlin/buildtools/options/generator/Main.kt
+++ b/compiler/build-tools/kotlin-build-tools-options-generator/src/org/jetbrains/kotlin/buildtools/options/generator/Main.kt
@@ -42,7 +42,7 @@
} catch (_: IllegalArgumentException) {
parseLastKotlinReleaseVersion(argVersionString)
}
- }.also { println("Generating BTA compiler arguments for Kotlin version $it") }
+ }
val apiArgsStart = args.indexOf("api").let { if (it == -1) null else it }
val implArgsStart = args.indexOf("impl").let { if (it == -1) null else it }
@@ -140,4 +140,4 @@
(releaseVersion.major == majorVersion && releaseVersion.minor < minorVersion) ||
(releaseVersion.major == majorVersion && releaseVersion.minor == minorVersion && releaseVersion.patch <= patchVersion)
}
-}
\ No newline at end of file
+}
diff --git a/compiler/cli/cli-arguments-generator/src/org/jetbrains/kotlin/cli/arguments/generator/Main.kt b/compiler/cli/cli-arguments-generator/src/org/jetbrains/kotlin/cli/arguments/generator/Main.kt
index e7f5562..b4146b4 100644
--- a/compiler/cli/cli-arguments-generator/src/org/jetbrains/kotlin/cli/arguments/generator/Main.kt
+++ b/compiler/cli/cli-arguments-generator/src/org/jetbrains/kotlin/cli/arguments/generator/Main.kt
@@ -411,8 +411,8 @@
println("var freeArgs: List<String> = emptyList()")
generateSetter("List<String>", argument = null)
println()
- println("var internalArguments: List<InternalArgument> = emptyList()")
- generateSetter("List<InternalArgument>", argument = null)
+ println("var internalArguments: List<ManualLanguageFeatureSetting> = emptyList()")
+ generateSetter("List<ManualLanguageFeatureSetting>", argument = null)
println()
println("@Transient")
println("var errors: ArgumentParseErrors? = null")
diff --git a/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.kt b/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.kt
index 247e488..329aabd 100644
--- a/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.kt
+++ b/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.kt
@@ -1020,6 +1020,20 @@
field = if (value.isNullOrEmpty()) null else value
}
+ @Argument(
+ value = "-XXLanguage",
+ valueDescription = "[+-]LanguageFeatureName",
+ description = """Enables/disables specified language feature.
+Warning: this flag is not intended for production use. If you want to configure the language behaviour use the
+-language-version or corresponding experimental feature flags.""",
+ delimiter = Argument.Delimiters.none,
+ )
+ var manuallyConfiguredFeatures: Array<String>? = null
+ set(value) {
+ checkFrozen()
+ field = value
+ }
+
@get:Transient
abstract val configurator: CommonCompilerArgumentsConfigurator
diff --git a/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArgumentsCopyGenerated.kt b/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArgumentsCopyGenerated.kt
index 41a4da2..7dfef8b 100644
--- a/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArgumentsCopyGenerated.kt
+++ b/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArgumentsCopyGenerated.kt
@@ -54,6 +54,7 @@
to.languageVersion = from.languageVersion
to.lenientMode = from.lenientMode
to.listPhases = from.listPhases
+ to.manuallyConfiguredFeatures = from.manuallyConfiguredFeatures?.copyOf()
to.metadataKlib = from.metadataKlib
to.metadataVersion = from.metadataVersion
to.multiDollarInterpolation = from.multiDollarInterpolation
diff --git a/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonToolArguments.kt b/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonToolArguments.kt
index 510042e..e0935f0 100644
--- a/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonToolArguments.kt
+++ b/compiler/cli/cli-common/gen/org/jetbrains/kotlin/cli/common/arguments/CommonToolArguments.kt
@@ -88,7 +88,7 @@
field = value
}
- var internalArguments: List<InternalArgument> = emptyList()
+ var internalArguments: List<ManualLanguageFeatureSetting> = emptyList()
set(value) {
checkFrozen()
field = value
diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArgumentsConfigurator.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArgumentsConfigurator.kt
index d5be7a4..f8f32b3 100644
--- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArgumentsConfigurator.kt
+++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArgumentsConfigurator.kt
@@ -97,7 +97,7 @@
var standaloneSamConversionFeaturePassedExplicitly = false
var functionReferenceWithDefaultValueFeaturePassedExplicitly = false
- for ((feature, state) in arguments.internalArguments.filterIsInstance<ManualLanguageFeatureSetting>()) {
+ for ((feature, state) in arguments.internalArguments) {
put(feature, state)
if (state == LanguageFeature.State.ENABLED && feature.forcesPreReleaseBinariesIfEnabled()) {
featuresThatForcePreReleaseBinaries += feature
diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/InternalCompilerArgument.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/InternalCompilerArgument.kt
deleted file mode 100644
index 769a00e..0000000
--- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/InternalCompilerArgument.kt
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.
- * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
- */
-
-package org.jetbrains.kotlin.cli.common.arguments
-
-import com.intellij.openapi.application.ApplicationManager
-import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
-import org.jetbrains.kotlin.config.LanguageFeature
-
-/**
- * Arguments that can drastically change compiler behavior,
- * breaking stability/compatibility.
- *
- * Internal arguments are split into 'families', each family
- * with its own set of arguments, settings and parsing rules
- *
- * Internal arguments start with '-XX' prefix, followed by
- * family name. Everything after that is handled by the corresponding
- * parser of that particular family.
- */
-interface InternalArgumentParser<A : InternalArgument> {
- // Should be fast
- fun canParse(arg: String): Boolean
-
- fun parseInternalArgument(arg: String, errors: ArgumentParseErrors): A?
-
- companion object {
- internal val PARSERS: List<InternalArgumentParser<*>> = listOf(
- LanguageSettingsParser()
- )
- }
-}
-
-abstract class AbstractInternalArgumentParser<A : InternalArgument>(familyName: String) : InternalArgumentParser<A> {
- private val wholePrefix: String = INTERNAL_ARGUMENT_PREFIX + familyName
-
- override fun canParse(arg: String): Boolean = arg.startsWith(wholePrefix)
-
- override fun parseInternalArgument(arg: String, errors: ArgumentParseErrors): A? {
- if (!arg.startsWith(wholePrefix)) return null
-
- return parseTail(arg.removePrefix(wholePrefix), arg, errors)
- }
-
- abstract fun parseTail(tail: String, wholeArgument: String, errors: ArgumentParseErrors): A?
-}
-
-
-// Arguments of form '-XXLanguage:+LanguageFeature' or '-XXLanguage:-LanguageFeature', which enable or disable corresponding LanguageFeature.
-class LanguageSettingsParser : AbstractInternalArgumentParser<ManualLanguageFeatureSetting>("Language") {
-
- // Expected tail form: ':(+|-)<language feature name>'
- override fun parseTail(tail: String, wholeArgument: String, errors: ArgumentParseErrors): ManualLanguageFeatureSetting? {
- fun reportAndReturnNull(message: String, severity: CompilerMessageSeverity = CompilerMessageSeverity.STRONG_WARNING): Nothing? {
- errors.internalArgumentsParsingProblems += severity to message
- return null
- }
-
- if (tail.getOrNull(0) != ':') return reportAndReturnNull("Incorrect internal argument syntax, missing colon: $wholeArgument")
-
- val modificator = tail.getOrNull(1)
- val languageFeatureState = when (modificator) {
- '+' -> LanguageFeature.State.ENABLED
-
- '-' -> LanguageFeature.State.DISABLED
-
- else -> return reportAndReturnNull("Incorrect internal argument syntax, missing modificator: $wholeArgument")
- }
-
- val languageFeatureName = tail.substring(2)
- if (languageFeatureName.isEmpty()) return reportAndReturnNull("Empty language feature name for internal argument '$wholeArgument'")
-
- val languageFeature = LanguageFeature.fromString(languageFeatureName)
- ?: return reportAndReturnNull("Unknown language feature '$languageFeatureName' in passed internal argument '$wholeArgument'")
-
- if (languageFeature.testOnly && !areTestOnlyLanguageFeaturesAllowed) {
- reportAndReturnNull(
- "Language feature '$languageFeatureName' is test-only and cannot be enabled from command line",
- severity = CompilerMessageSeverity.ERROR
- )
- }
-
- return ManualLanguageFeatureSetting(languageFeature, languageFeatureState, wholeArgument)
- }
-}
-
-fun allowTestsOnlyLanguageFeatures() {
- System.setProperty("kotlinc.test.allow.testonly.language.features", "true")
-}
-
-private val areTestOnlyLanguageFeaturesAllowed: Boolean by lazy {
- // Use system property because test infra in K/N uses an "isolated" classloader
- System.getProperty("kotlinc.test.allow.testonly.language.features")?.toBoolean() == true
-}
-
-interface InternalArgument {
- val stringRepresentation: String
-}
-
-data class ManualLanguageFeatureSetting(
- val languageFeature: LanguageFeature,
- val state: LanguageFeature.State,
- override val stringRepresentation: String
-) : InternalArgument
diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/LanguageSettingsParser.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/LanguageSettingsParser.kt
new file mode 100644
index 0000000..27a3cc6
--- /dev/null
+++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/LanguageSettingsParser.kt
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
+ */
+
+package org.jetbrains.kotlin.cli.common.arguments
+
+import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
+import org.jetbrains.kotlin.config.LanguageFeature
+
+// Arguments of form '-XXLanguage:+LanguageFeature' or '-XXLanguage:-LanguageFeature', which enable or disable corresponding LanguageFeature.
+object LanguageSettingsParser {
+
+ private val wholePrefix: String = "${INTERNAL_ARGUMENT_PREFIX}Language"
+
+ fun parseInternalArgument(arg: String, errors: ArgumentParseErrors): ManualLanguageFeatureSetting? {
+ if (!arg.startsWith(wholePrefix)) return null
+
+ val tail = arg.removePrefix(wholePrefix)
+ if (tail.getOrNull(0) != ':') {
+ return errors.reportAndReturnNull("Incorrect internal argument syntax, missing colon: $arg")
+ }
+ return parseLanguageFeature(tail.substring(1), arg, errors)
+ }
+
+ // Expected tail form: ':(+|-)<language feature name>'
+ fun parseLanguageFeature(tail: String, wholeArgument: String, errors: ArgumentParseErrors): ManualLanguageFeatureSetting? {
+ val modificator = tail.getOrNull(0)
+ val languageFeatureState = when (modificator) {
+ '+' -> LanguageFeature.State.ENABLED
+
+ '-' -> LanguageFeature.State.DISABLED
+
+ else -> return errors.reportAndReturnNull("Incorrect internal argument syntax, missing modificator: $wholeArgument")
+ }
+
+ val languageFeatureName = tail.substring(1)
+ if (languageFeatureName.isEmpty()) return errors.reportAndReturnNull("Empty language feature name for internal argument '$wholeArgument'")
+
+ val languageFeature = LanguageFeature.fromString(languageFeatureName)
+ ?: return errors.reportAndReturnNull("Unknown language feature '$languageFeatureName' in passed internal argument '$wholeArgument'")
+
+ if (languageFeature.testOnly && !areTestOnlyLanguageFeaturesAllowed) {
+ errors.reportAndReturnNull(
+ "Language feature '$languageFeatureName' is test-only and cannot be enabled from command line",
+ severity = CompilerMessageSeverity.ERROR
+ )
+ }
+
+ return ManualLanguageFeatureSetting(languageFeature, languageFeatureState, wholeArgument)
+ }
+
+ private fun ArgumentParseErrors.reportAndReturnNull(
+ message: String,
+ severity: CompilerMessageSeverity = CompilerMessageSeverity.STRONG_WARNING
+ ): Nothing? {
+ internalArgumentsParsingProblems += severity to message
+ return null
+ }
+}
+
+fun allowTestsOnlyLanguageFeatures() {
+ System.setProperty("kotlinc.test.allow.testonly.language.features", "true")
+}
+
+private val areTestOnlyLanguageFeaturesAllowed: Boolean by lazy {
+ // Use system property because test infra in K/N uses an "isolated" classloader
+ System.getProperty("kotlinc.test.allow.testonly.language.features")?.toBoolean() == true
+}
+
+data class ManualLanguageFeatureSetting(
+ val languageFeature: LanguageFeature,
+ val state: LanguageFeature.State,
+ val stringRepresentation: String
+)
diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/parseCommandLineArguments.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/parseCommandLineArguments.kt
index 1fa8131..4894351 100644
--- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/parseCommandLineArguments.kt
+++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/parseCommandLineArguments.kt
@@ -164,7 +164,6 @@
var freeArgsStarted = false
val freeArgs = ArrayList<String>()
- val internalArguments = ArrayList<InternalArgument>()
var i = 0
loop@ while (i < args.size) {
@@ -179,29 +178,15 @@
continue
}
- val key = arg.substringBefore('=')
+ // TODO(KT-80348): should be replaced with just '=' when `-XXLanguage` would be removed
+ val delimiter = when {
+ arg.startsWith("-XXLanguage") -> ':'
+ else -> '='
+ }
+ val key = arg.substringBefore(delimiter)
val argumentField = properties[key]
if (argumentField == null) {
when {
- // Unknown -XX argument
- arg.startsWith(INTERNAL_ARGUMENT_PREFIX) -> {
- val matchingParsers = InternalArgumentParser.PARSERS.filter { it.canParse(arg) }
- assert(matchingParsers.size <= 1) { "Internal error: internal argument $arg can be ambiguously parsed by parsers ${matchingParsers.joinToString()}" }
-
- val parser = matchingParsers.firstOrNull()
-
- if (parser == null) {
- errors.value.unknownExtraFlags += arg
- } else {
- val newInternalArgument = parser.parseInternalArgument(arg, errors.value) ?: continue
- // Manual language feature setting overrides the previous value of the same feature setting, if it exists.
- internalArguments.removeIf {
- (it as? ManualLanguageFeatureSetting)?.languageFeature ==
- (newInternalArgument as? ManualLanguageFeatureSetting)?.languageFeature
- }
- internalArguments.add(newInternalArgument)
- }
- }
// Unknown -X argument
arg.startsWith(ADVANCED_ARGUMENT_PREFIX) -> errors.value.unknownExtraFlags.add(arg)
arg.startsWith("-") -> errors.value.unknownArgs.add(arg)
@@ -236,7 +221,7 @@
val value: Any = when {
getter.returnType.kotlin == Boolean::class -> {
- if (arg.startsWith(argument.value + "=")) {
+ if (arg.startsWith(argument.value + delimiter)) {
// Can't use toBooleanStrict yet because this part of the compiler is used in Gradle and needs API version 1.4.
when (arg.substring(argument.value.length + 1)) {
"true" -> true
@@ -245,10 +230,10 @@
}
} else true
}
- arg.startsWith(argument.value + "=") -> {
+ arg.startsWith(argument.value + delimiter) -> {
arg.substring(argument.value.length + 1)
}
- arg.startsWith(argument.deprecatedName + "=") -> {
+ arg.startsWith(argument.deprecatedName + delimiter) -> {
arg.substring(argument.deprecatedName.length + 1)
}
i == args.size -> {
@@ -269,19 +254,26 @@
}
result.freeArgs += freeArgs
- result.updateInternalArguments(internalArguments, overrideArguments)
+ if (result is CommonCompilerArguments) {
+ val internalArguments = ArrayList<ManualLanguageFeatureSetting>()
+ for (arg in result.manuallyConfiguredFeatures.orEmpty()) {
+ val featureSetting = LanguageSettingsParser.parseLanguageFeature(arg, "-XXLanguage:$arg", errors.value) ?: continue
+ internalArguments.removeIf {
+ it.languageFeature == featureSetting.languageFeature
+ }
+ internalArguments.add(featureSetting)
+ }
+ result.updateInternalArguments(internalArguments, overrideArguments)
+ }
}
private fun <A : CommonToolArguments> A.updateInternalArguments(
- newInternalArguments: ArrayList<InternalArgument>,
+ newInternalArguments: ArrayList<ManualLanguageFeatureSetting>,
overrideArguments: Boolean
) {
val filteredExistingArguments = if (overrideArguments) {
internalArguments.filter { existingArgument ->
- existingArgument !is ManualLanguageFeatureSetting ||
- newInternalArguments.none {
- it is ManualLanguageFeatureSetting && it.languageFeature == existingArgument.languageFeature
- }
+ newInternalArguments.none { it.languageFeature == existingArgument.languageFeature }
}
} else internalArguments
diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/common/arguments.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/common/arguments.kt
index eee73ab..9c8443a 100644
--- a/compiler/cli/src/org/jetbrains/kotlin/cli/common/arguments.kt
+++ b/compiler/cli/src/org/jetbrains/kotlin/cli/common/arguments.kt
@@ -155,7 +155,7 @@
private fun MessageCollector.reportUnsafeInternalArgumentsIfAny(arguments: CommonToolArguments) {
val unsafeArguments = arguments.internalArguments.filterNot {
// -XXLanguage which turns on BUG_FIX considered safe
- it is ManualLanguageFeatureSetting && it.languageFeature.actuallyEnabledInProgressiveMode && it.state == LanguageFeature.State.ENABLED
+ it.languageFeature.actuallyEnabledInProgressiveMode && it.state == LanguageFeature.State.ENABLED
}
if (unsafeArguments.isNotEmpty()) {
diff --git a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/ComponentsContainers.kt b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/ComponentsContainers.kt
index 290a8f7..919e80e 100644
--- a/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/ComponentsContainers.kt
+++ b/compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/session/ComponentsContainers.kt
@@ -68,6 +68,7 @@
import org.jetbrains.kotlin.incremental.components.ImportTracker
import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.load.java.JavaTypeEnhancementState
+import org.jetbrains.kotlin.resolve.jvm.JvmConstants
import org.jetbrains.kotlin.resolve.jvm.JvmTypeSpecificityComparator
import org.jetbrains.kotlin.resolve.jvm.modules.JavaModuleResolver
@@ -184,6 +185,7 @@
register(FirDelegatedMembersFilter::class, FirJvmDelegatedMembersFilter(this))
register(FirPlatformUpperBoundsProvider::class, FirJavaNullabilityWarningUpperBoundsProvider(this))
register(FirDefaultImportProviderHolder::class, FirDefaultImportProviderHolder(FirJvmDefaultImportProvider))
+ register(FirDeclarationNameInvalidCharsProvider::class, FirDeclarationNameInvalidCharsProvider(JvmConstants.INVALID_CHARS))
}
/**
diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/Fir2IrCallableDeclarationsGenerator.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/Fir2IrCallableDeclarationsGenerator.kt
index bed5e31..0091e8d 100644
--- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/Fir2IrCallableDeclarationsGenerator.kt
+++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/generators/Fir2IrCallableDeclarationsGenerator.kt
@@ -20,8 +20,8 @@
import org.jetbrains.kotlin.fir.expressions.FirLiteralExpression
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccessExpression
import org.jetbrains.kotlin.fir.expressions.impl.FirExpressionStub
+import org.jetbrains.kotlin.fir.generatedContextParameterName
import org.jetbrains.kotlin.fir.java.declarations.FirJavaField
-import org.jetbrains.kotlin.fir.java.hasJvmFieldAnnotation
import org.jetbrains.kotlin.fir.lazy.Fir2IrLazyClass
import org.jetbrains.kotlin.fir.originalForSubstitutionOverride
import org.jetbrains.kotlin.fir.references.toResolvedBaseSymbol
@@ -751,7 +751,7 @@
startOffset = startOffset,
endOffset = endOffset,
origin = origin,
- name = valueParameter.name,
+ name = valueParameter.generatedContextParameterName ?: valueParameter.name,
type = type,
isAssignable = valueParameter.containingDeclarationSymbol.fir.let { it is FirCallableDeclaration && it.shouldParametersBeAssignable(c) },
symbol = IrValueParameterSymbolImpl(),
diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java
index 0065764..dfe58a9 100644
--- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java
+++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java
@@ -546,6 +546,18 @@
}
@Test
+ @TestMetadata("annotationAnnotationParam.kt")
+ public void testAnnotationAnnotationParam() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+ }
+
+ @Test
+ @TestMetadata("annotationAnyDispatch.kt")
+ public void testAnnotationAnyDispatch() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+ }
+
+ @Test
@TestMetadata("annotationEnclosingName.kt")
public void testAnnotationEnclosingName() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -564,6 +576,12 @@
}
@Test
+ @TestMetadata("annotationInlineMultiModule.kt")
+ public void testAnnotationInlineMultiModule() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+ }
+
+ @Test
@TestMetadata("annotationInstances.kt")
public void testAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -600,6 +618,12 @@
}
@Test
+ @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+ public void testAnnotationToStringDefaultsAndEmptyArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+ }
+
+ @Test
@TestMetadata("annotationType.kt")
public void testAnnotationType() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -624,6 +648,42 @@
}
@Test
+ @TestMetadata("arrayContentEqAny.kt")
+ public void testArrayContentEqAny() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+ }
+
+ @Test
+ @TestMetadata("arraysAndKClass.kt")
+ public void testArraysAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("differentAnnotationTypes.kt")
+ public void testDifferentAnnotationTypes() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+ }
+
+ @Test
+ @TestMetadata("differentOrder.kt")
+ public void testDifferentOrder() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+ }
+
+ @Test
+ @TestMetadata("enumAndKClass.kt")
+ public void testEnumAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("enumArray.kt")
+ public void testEnumArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+ }
+
+ @Test
@TestMetadata("inInlineFunction.kt")
public void testInInlineFunction() {
runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -636,6 +696,12 @@
}
@Test
+ @TestMetadata("instanceEquality.kt")
+ public void testInstanceEquality() {
+ runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+ }
+
+ @Test
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() {
runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -660,6 +726,12 @@
}
@Test
+ @TestMetadata("mixedArray.kt")
+ public void testMixedArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+ }
+
+ @Test
@TestMetadata("multifileEqHc.kt")
public void testMultifileEqHc() {
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -690,22 +762,64 @@
}
@Test
+ @TestMetadata("naNAndZero.kt")
+ public void testNaNAndZero() {
+ runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+ }
+
+ @Test
+ @TestMetadata("nested.kt")
+ public void testNested() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+ }
+
+ @Test
@TestMetadata("nestedAnnotationInstances.kt")
public void testNestedAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
}
@Test
+ @TestMetadata("nestedDefaults.kt")
+ public void testNestedDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+ }
+
+ @Test
@TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
public void testRearrangedArgumentsInAnnotationCall() {
runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
}
@Test
+ @TestMetadata("repeatableInstantiation.kt")
+ public void testRepeatableInstantiation() {
+ runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+ }
+
+ @Test
+ @TestMetadata("typeAliasesAndGenericsInterop.kt")
+ public void testTypeAliasesAndGenericsInterop() {
+ runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+ }
+
+ @Test
+ @TestMetadata("unsignedAndBooleanArrays.kt")
+ public void testUnsignedAndBooleanArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+ }
+
+ @Test
@TestMetadata("varargInAnnotationParameterInstantiation.kt")
public void testVarargInAnnotationParameterInstantiation() {
runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
}
+
+ @Test
+ @TestMetadata("withDefaults.kt")
+ public void testWithDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+ }
}
@Nested
diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java
index ea08860..b51575a 100644
--- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java
+++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java
@@ -548,6 +548,18 @@
}
@Test
+ @TestMetadata("annotationAnnotationParam.kt")
+ public void testAnnotationAnnotationParam() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+ }
+
+ @Test
+ @TestMetadata("annotationAnyDispatch.kt")
+ public void testAnnotationAnyDispatch() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+ }
+
+ @Test
@TestMetadata("annotationEnclosingName.kt")
public void testAnnotationEnclosingName() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -566,6 +578,12 @@
}
@Test
+ @TestMetadata("annotationInlineMultiModule.kt")
+ public void testAnnotationInlineMultiModule() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+ }
+
+ @Test
@TestMetadata("annotationInstances.kt")
public void testAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -602,6 +620,12 @@
}
@Test
+ @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+ public void testAnnotationToStringDefaultsAndEmptyArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+ }
+
+ @Test
@TestMetadata("annotationType.kt")
public void testAnnotationType() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -626,6 +650,42 @@
}
@Test
+ @TestMetadata("arrayContentEqAny.kt")
+ public void testArrayContentEqAny() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+ }
+
+ @Test
+ @TestMetadata("arraysAndKClass.kt")
+ public void testArraysAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("differentAnnotationTypes.kt")
+ public void testDifferentAnnotationTypes() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+ }
+
+ @Test
+ @TestMetadata("differentOrder.kt")
+ public void testDifferentOrder() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+ }
+
+ @Test
+ @TestMetadata("enumAndKClass.kt")
+ public void testEnumAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("enumArray.kt")
+ public void testEnumArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+ }
+
+ @Test
@TestMetadata("inInlineFunction.kt")
public void testInInlineFunction() {
runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -638,6 +698,12 @@
}
@Test
+ @TestMetadata("instanceEquality.kt")
+ public void testInstanceEquality() {
+ runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+ }
+
+ @Test
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() {
runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -662,6 +728,12 @@
}
@Test
+ @TestMetadata("mixedArray.kt")
+ public void testMixedArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+ }
+
+ @Test
@TestMetadata("multifileEqHc.kt")
public void testMultifileEqHc() {
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -692,22 +764,64 @@
}
@Test
+ @TestMetadata("naNAndZero.kt")
+ public void testNaNAndZero() {
+ runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+ }
+
+ @Test
+ @TestMetadata("nested.kt")
+ public void testNested() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+ }
+
+ @Test
@TestMetadata("nestedAnnotationInstances.kt")
public void testNestedAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
}
@Test
+ @TestMetadata("nestedDefaults.kt")
+ public void testNestedDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+ }
+
+ @Test
@TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
public void testRearrangedArgumentsInAnnotationCall() {
runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
}
@Test
+ @TestMetadata("repeatableInstantiation.kt")
+ public void testRepeatableInstantiation() {
+ runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+ }
+
+ @Test
+ @TestMetadata("typeAliasesAndGenericsInterop.kt")
+ public void testTypeAliasesAndGenericsInterop() {
+ runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+ }
+
+ @Test
+ @TestMetadata("unsignedAndBooleanArrays.kt")
+ public void testUnsignedAndBooleanArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+ }
+
+ @Test
@TestMetadata("varargInAnnotationParameterInstantiation.kt")
public void testVarargInAnnotationParameterInstantiation() {
runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
}
+
+ @Test
+ @TestMetadata("withDefaults.kt")
+ public void testWithDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+ }
}
@Nested
diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java
index 93175a1..68a2f05 100644
--- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java
+++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java
@@ -546,6 +546,18 @@
}
@Test
+ @TestMetadata("annotationAnnotationParam.kt")
+ public void testAnnotationAnnotationParam() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+ }
+
+ @Test
+ @TestMetadata("annotationAnyDispatch.kt")
+ public void testAnnotationAnyDispatch() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+ }
+
+ @Test
@TestMetadata("annotationEnclosingName.kt")
public void testAnnotationEnclosingName() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -564,6 +576,12 @@
}
@Test
+ @TestMetadata("annotationInlineMultiModule.kt")
+ public void testAnnotationInlineMultiModule() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+ }
+
+ @Test
@TestMetadata("annotationInstances.kt")
public void testAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -600,6 +618,12 @@
}
@Test
+ @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+ public void testAnnotationToStringDefaultsAndEmptyArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+ }
+
+ @Test
@TestMetadata("annotationType.kt")
public void testAnnotationType() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -624,6 +648,42 @@
}
@Test
+ @TestMetadata("arrayContentEqAny.kt")
+ public void testArrayContentEqAny() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+ }
+
+ @Test
+ @TestMetadata("arraysAndKClass.kt")
+ public void testArraysAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("differentAnnotationTypes.kt")
+ public void testDifferentAnnotationTypes() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+ }
+
+ @Test
+ @TestMetadata("differentOrder.kt")
+ public void testDifferentOrder() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+ }
+
+ @Test
+ @TestMetadata("enumAndKClass.kt")
+ public void testEnumAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("enumArray.kt")
+ public void testEnumArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+ }
+
+ @Test
@TestMetadata("inInlineFunction.kt")
public void testInInlineFunction() {
runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -636,6 +696,12 @@
}
@Test
+ @TestMetadata("instanceEquality.kt")
+ public void testInstanceEquality() {
+ runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+ }
+
+ @Test
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() {
runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -660,6 +726,12 @@
}
@Test
+ @TestMetadata("mixedArray.kt")
+ public void testMixedArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+ }
+
+ @Test
@TestMetadata("multifileEqHc.kt")
public void testMultifileEqHc() {
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -690,22 +762,64 @@
}
@Test
+ @TestMetadata("naNAndZero.kt")
+ public void testNaNAndZero() {
+ runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+ }
+
+ @Test
+ @TestMetadata("nested.kt")
+ public void testNested() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+ }
+
+ @Test
@TestMetadata("nestedAnnotationInstances.kt")
public void testNestedAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
}
@Test
+ @TestMetadata("nestedDefaults.kt")
+ public void testNestedDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+ }
+
+ @Test
@TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
public void testRearrangedArgumentsInAnnotationCall() {
runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
}
@Test
+ @TestMetadata("repeatableInstantiation.kt")
+ public void testRepeatableInstantiation() {
+ runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+ }
+
+ @Test
+ @TestMetadata("typeAliasesAndGenericsInterop.kt")
+ public void testTypeAliasesAndGenericsInterop() {
+ runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+ }
+
+ @Test
+ @TestMetadata("unsignedAndBooleanArrays.kt")
+ public void testUnsignedAndBooleanArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+ }
+
+ @Test
@TestMetadata("varargInAnnotationParameterInstantiation.kt")
public void testVarargInAnnotationParameterInstantiation() {
runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
}
+
+ @Test
+ @TestMetadata("withDefaults.kt")
+ public void testWithDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+ }
}
@Nested
diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java
index e0e6b0b..4d6fcde 100644
--- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java
+++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiSerializeCompileKotlinAgainstInlineKotlinTestGenerated.java
@@ -548,6 +548,18 @@
}
@Test
+ @TestMetadata("annotationAnnotationParam.kt")
+ public void testAnnotationAnnotationParam() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+ }
+
+ @Test
+ @TestMetadata("annotationAnyDispatch.kt")
+ public void testAnnotationAnyDispatch() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+ }
+
+ @Test
@TestMetadata("annotationEnclosingName.kt")
public void testAnnotationEnclosingName() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -566,6 +578,12 @@
}
@Test
+ @TestMetadata("annotationInlineMultiModule.kt")
+ public void testAnnotationInlineMultiModule() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+ }
+
+ @Test
@TestMetadata("annotationInstances.kt")
public void testAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -602,6 +620,12 @@
}
@Test
+ @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+ public void testAnnotationToStringDefaultsAndEmptyArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+ }
+
+ @Test
@TestMetadata("annotationType.kt")
public void testAnnotationType() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -626,6 +650,42 @@
}
@Test
+ @TestMetadata("arrayContentEqAny.kt")
+ public void testArrayContentEqAny() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+ }
+
+ @Test
+ @TestMetadata("arraysAndKClass.kt")
+ public void testArraysAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("differentAnnotationTypes.kt")
+ public void testDifferentAnnotationTypes() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+ }
+
+ @Test
+ @TestMetadata("differentOrder.kt")
+ public void testDifferentOrder() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+ }
+
+ @Test
+ @TestMetadata("enumAndKClass.kt")
+ public void testEnumAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("enumArray.kt")
+ public void testEnumArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+ }
+
+ @Test
@TestMetadata("inInlineFunction.kt")
public void testInInlineFunction() {
runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -638,6 +698,12 @@
}
@Test
+ @TestMetadata("instanceEquality.kt")
+ public void testInstanceEquality() {
+ runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+ }
+
+ @Test
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() {
runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -662,6 +728,12 @@
}
@Test
+ @TestMetadata("mixedArray.kt")
+ public void testMixedArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+ }
+
+ @Test
@TestMetadata("multifileEqHc.kt")
public void testMultifileEqHc() {
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -692,22 +764,64 @@
}
@Test
+ @TestMetadata("naNAndZero.kt")
+ public void testNaNAndZero() {
+ runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+ }
+
+ @Test
+ @TestMetadata("nested.kt")
+ public void testNested() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+ }
+
+ @Test
@TestMetadata("nestedAnnotationInstances.kt")
public void testNestedAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
}
@Test
+ @TestMetadata("nestedDefaults.kt")
+ public void testNestedDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+ }
+
+ @Test
@TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
public void testRearrangedArgumentsInAnnotationCall() {
runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
}
@Test
+ @TestMetadata("repeatableInstantiation.kt")
+ public void testRepeatableInstantiation() {
+ runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+ }
+
+ @Test
+ @TestMetadata("typeAliasesAndGenericsInterop.kt")
+ public void testTypeAliasesAndGenericsInterop() {
+ runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+ }
+
+ @Test
+ @TestMetadata("unsignedAndBooleanArrays.kt")
+ public void testUnsignedAndBooleanArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+ }
+
+ @Test
@TestMetadata("varargInAnnotationParameterInstantiation.kt")
public void testVarargInAnnotationParameterInstantiation() {
runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
}
+
+ @Test
+ @TestMetadata("withDefaults.kt")
+ public void testWithDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+ }
}
@Nested
diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolver.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolver.kt
index af8d368..5bf7dd9 100644
--- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolver.kt
+++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirStatusResolver.kt
@@ -23,6 +23,7 @@
import org.jetbrains.kotlin.resolve.DataClassResolver
import org.jetbrains.kotlin.resolve.ReturnValueStatus
import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
+import org.jetbrains.kotlin.utils.exceptions.requireWithAttachment
import java.util.*
class FirStatusResolver(
@@ -165,11 +166,8 @@
is FirRegularClass -> firClass.applyExtensionTransformers { transformStatus(it, firClass, containingClass?.symbol, isLocal) }
else -> firClass.status
}
- require(status.visibility == firClass.status.visibility) {
- "Attempt to change visibility of a class-like: ${firClass.symbol.classId}, " +
- "original visibility: ${firClass.status.visibility}, new visibility: ${status.visibility}"
- }
+ classLikeStatusValidation(newStatus = status, declaration = firClass)
return resolveStatus(firClass, status, containingClass, null, isLocal, emptyList())
}
@@ -181,9 +179,28 @@
val status = typeAlias.applyExtensionTransformers {
transformStatus(it, typeAlias, containingClass?.symbol, isLocal)
}
+
+ classLikeStatusValidation(newStatus = status, declaration = typeAlias)
return resolveStatus(typeAlias, status, containingClass, null, isLocal, emptyList())
}
+ private fun classLikeStatusValidation(newStatus: FirDeclarationStatus, declaration: FirClassLikeDeclaration) {
+ val originalVisibility = declaration.status.visibility
+ requireWithAttachment(
+ originalVisibility != Visibilities.Unknown,
+ { "Visibility has to be provided for a class-like declaration (${declaration::class.simpleName}) during its initialization" },
+ ) {
+ withFirEntry("declaration", declaration)
+ }
+
+ requireWithAttachment(
+ newStatus.visibility == originalVisibility,
+ { "Attempt to change visibility of a class-like declaration (${declaration::class.simpleName}), original visibility: $originalVisibility, new visibility: ${declaration.visibility}" },
+ ) {
+ withFirEntry("declaration", declaration)
+ }
+ }
+
fun resolveStatus(
propertyAccessor: FirPropertyAccessor,
containingClass: FirClass?,
diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt
index d5fe3e5..8d8cde6 100644
--- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt
+++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt
@@ -195,6 +195,8 @@
property.transformReceiverParameter(transformer, ResolutionMode.ContextIndependent)
property.transformContextParameters(transformer, ResolutionMode.ContextIndependent)
doTransformTypeParameters(property)
+
+ property.setUnnamedContextParameterNames()
}
// TODO: the [skipCleanup] hack should be reverted on fixing KT-79107
@@ -1063,6 +1065,8 @@
.transformContextParameters(this, ResolutionMode.ContextIndependent)
.transformValueParameters(this, ResolutionMode.ContextIndependent)
.transformAnnotations(this, ResolutionMode.ContextIndependent)
+
+ function.setUnnamedContextParameterNames()
}
if (!bodyResolved) {
@@ -1311,6 +1315,7 @@
lambda = lambda.transformValueParameters(ImplicitToErrorTypeTransformer, null)
lambda = lambda.transformContextParameters(ImplicitToErrorTypeTransformer, null)
+ lambda.setUnnamedContextParameterNames()
val initialReturnTypeRef = lambda.returnTypeRef as? FirResolvedTypeRef
val expectedReturnTypeRef = initialReturnTypeRef
diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/setUnnamedContextParameterNames.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/setUnnamedContextParameterNames.kt
new file mode 100644
index 0000000..4782524
--- /dev/null
+++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/setUnnamedContextParameterNames.kt
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2010-2025 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
+ */
+
+package org.jetbrains.kotlin.fir.resolve.transformers.body.resolve
+
+import org.jetbrains.kotlin.descriptors.ClassKind
+import org.jetbrains.kotlin.fir.SessionHolder
+import org.jetbrains.kotlin.fir.declarationNameInvalidChars
+import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
+import org.jetbrains.kotlin.fir.generatedContextParameterName
+import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
+import org.jetbrains.kotlin.fir.resolve.toClassSymbol
+import org.jetbrains.kotlin.fir.types.*
+import org.jetbrains.kotlin.fir.utils.exceptions.withFirEntry
+import org.jetbrains.kotlin.name.Name
+import org.jetbrains.kotlin.types.TypeApproximatorConfiguration
+import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
+import kotlin.collections.iterator
+
+context(sessionHolder: SessionHolder)
+internal fun FirCallableDeclaration.setUnnamedContextParameterNames() {
+ if (contextParameters.isEmpty()) return
+
+ val contextParameterNames = contextParameters
+ .filter { it.name.isSpecial && !it.returnTypeRef.coneType.hasError() }
+ .ifEmpty { return }
+ .associateWith {
+ it.returnTypeRef.coneType
+ .erasedUpperBoundName(tryApproximation = true)
+ ?.toString()
+ ?.replaceInvalidChars(sessionHolder.session.declarationNameInvalidChars)
+ ?: errorWithAttachment("Cannot compute generated name for context parameter") {
+ withFirEntry("contextParameter", it)
+ withFirEntry("containingDeclaration", this@setUnnamedContextParameterNames)
+ }
+ }
+
+ val nameGroups = contextParameterNames.entries.groupBy({ it.value }, { it.key })
+
+ for ((contextParameter, baseName) in contextParameterNames) {
+ val currentNameGroup = nameGroups[baseName]!!
+ val suffix = if (currentNameGroup.size == 1) "" else "#" + (currentNameGroup.indexOf(contextParameter) + 1)
+ contextParameter.generatedContextParameterName = Name.identifier($$"$context-$$baseName$$suffix")
+ }
+}
+
+context(sessionHolder: SessionHolder)
+private fun ConeKotlinType.erasedUpperBoundName(tryApproximation: Boolean): Name? {
+ return when (this) {
+ is ConeTypeParameterType -> {
+ val bounds = lookupTag.symbol.resolvedBounds
+ for (bound in bounds) {
+ val type = bound.coneType.fullyExpandedType()
+ val classSymbol = type.toClassSymbol() ?: continue
+ if (classSymbol.classKind != ClassKind.ANNOTATION_CLASS && classSymbol.classKind != ClassKind.INTERFACE) {
+ return classSymbol.name
+ }
+ }
+ bounds.first().coneType.erasedUpperBoundName(tryApproximation)
+ }
+ is ConeLookupTagBasedType -> fullyExpandedType().lookupTagIfAny?.name
+ is ConeDefinitelyNotNullType -> original.erasedUpperBoundName(tryApproximation)
+ is ConeFlexibleType -> upperBound.erasedUpperBoundName(tryApproximation)
+ else if tryApproximation -> {
+ sessionHolder.session.typeApproximator
+ .approximateToSuperType(this, TypeApproximatorConfiguration.FrontendToBackendTypesApproximation)
+ ?.erasedUpperBoundName(tryApproximation = false)
+ }
+ else -> null
+ }
+}
+
+private fun String.replaceInvalidChars(invalidChars: Set<Char>) =
+ invalidChars.fold(this) { acc, ch -> if (ch in acc) acc.replace(ch, '_') else acc }
\ No newline at end of file
diff --git a/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/firContextParameterUtils.kt b/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/firContextParameterUtils.kt
deleted file mode 100644
index 098819d..0000000
--- a/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/firContextParameterUtils.kt
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright 2010-2025 JetBrains s.r.o. and Kotlin Programming Language contributors.
- * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
- */
-
-package org.jetbrains.kotlin.fir
-
-import org.jetbrains.kotlin.descriptors.ClassKind
-import org.jetbrains.kotlin.fir.declarations.FirValueParameterKind
-import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
-import org.jetbrains.kotlin.fir.resolve.toClassSymbol
-import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
-import org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol
-import org.jetbrains.kotlin.fir.types.ConeKotlinType
-import org.jetbrains.kotlin.fir.types.ConeLookupTagBasedType
-import org.jetbrains.kotlin.fir.types.ConeTypeParameterType
-import org.jetbrains.kotlin.fir.types.lookupTagIfAny
-import org.jetbrains.kotlin.name.Name
-import org.jetbrains.kotlin.name.SpecialNames
-import org.jetbrains.kotlin.util.anonymousContextParameterName
-
-fun FirValueParameterSymbol.anonymousContextParameterName(session: FirSession, invalidChars: Set<Char>): String? {
- if (fir.valueParameterKind != FirValueParameterKind.ContextParameter || name != SpecialNames.UNDERSCORE_FOR_UNUSED_VAR) return null
- return anonymousContextParameterName(
- (containingDeclarationSymbol as FirCallableSymbol).contextParameterSymbols,
- invalidChars,
- erasedUpperBoundName = {
- it.resolvedReturnType.erasedUpperBoundName(session)?.identifierOrNullIfSpecial ?: "???"
- }
- )
-}
-
-private fun ConeKotlinType.erasedUpperBoundName(session: FirSession): Name? {
- return when (this) {
- is ConeTypeParameterType -> {
- val bounds = lookupTag.symbol.resolvedBounds
- for (bound in bounds) {
- val type = bound.coneType.fullyExpandedType(session)
- val classSymbol = type.toClassSymbol(session) ?: continue
- if (classSymbol.classKind != ClassKind.ANNOTATION_CLASS && classSymbol.classKind != ClassKind.INTERFACE) {
- return classSymbol.name
- }
- }
- bounds.first().coneType.erasedUpperBoundName(session)
- }
- is ConeLookupTagBasedType -> fullyExpandedType(session).lookupTagIfAny?.name
- else -> null
- }
-}
\ No newline at end of file
diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/ClassMembers.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/ClassMembers.kt
index 0da65f0..17d04ab 100644
--- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/ClassMembers.kt
+++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/ClassMembers.kt
@@ -10,6 +10,7 @@
import org.jetbrains.kotlin.fir.declarations.utils.isSynthetic
import org.jetbrains.kotlin.fir.symbols.impl.*
import org.jetbrains.kotlin.fir.types.*
+import org.jetbrains.kotlin.name.Name
fun FirCallableSymbol<*>.dispatchReceiverClassTypeOrNull(): ConeClassLikeType? =
fir.dispatchReceiverClassTypeOrNull()
@@ -255,3 +256,15 @@
val <D : FirCallableDeclaration> FirCallableSymbol<D>.delegatedWrapperData: DelegatedWrapperData<D>?
get() = fir.delegatedWrapperData
+
+private object UnnamedContextParameterNameKey : FirDeclarationDataKey()
+
+var FirValueParameter.generatedContextParameterName: Name? by FirDeclarationDataRegistry.data(UnnamedContextParameterNameKey)
+
+val FirValueParameterSymbol.generatedContextParameterName: Name? get() = fir.generatedContextParameterName
+
+class FirDeclarationNameInvalidCharsProvider(val invalidChars: Set<Char>) : FirSessionComponent
+
+private val FirSession.declarationNameInvalidCharsProvider: FirDeclarationNameInvalidCharsProvider? by FirSession.nullableSessionComponentAccessor()
+
+val FirSession.declarationNameInvalidChars: Set<Char> get() = declarationNameInvalidCharsProvider?.invalidChars ?: emptySet()
\ No newline at end of file
diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/utils/FirSymbolStatusUtils.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/utils/FirSymbolStatusUtils.kt
index c7f6bdd..e3cba0d2 100644
--- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/utils/FirSymbolStatusUtils.kt
+++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/utils/FirSymbolStatusUtils.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Copyright 2010-2025 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
@@ -7,7 +7,10 @@
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
-import org.jetbrains.kotlin.fir.symbols.impl.*
+import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
+import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
+import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
+import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
// ---------------------- callables with status ----------------------
@@ -42,7 +45,7 @@
inline val FirClassLikeSymbol<*>.isAbstract: Boolean get() = resolvedStatus.modality == Modality.ABSTRACT
inline val FirClassLikeSymbol<*>.isFinal: Boolean get() = resolvedStatus.modality == Modality.FINAL
-inline val FirClassLikeSymbol<*>.visibility: Visibility get() = resolvedStatus.visibility
+inline val FirClassLikeSymbol<*>.visibility: Visibility get() = rawStatus.visibility
inline val FirClassLikeSymbol<*>.effectiveVisibility: EffectiveVisibility get() = resolvedStatus.effectiveVisibility
inline val FirClassLikeSymbol<*>.isActual: Boolean get() = rawStatus.isActual
diff --git a/compiler/frontend.common/src/org/jetbrains/kotlin/util/contextParameterUtils.kt b/compiler/frontend.common/src/org/jetbrains/kotlin/util/contextParameterUtils.kt
deleted file mode 100644
index 851ccd0..0000000
--- a/compiler/frontend.common/src/org/jetbrains/kotlin/util/contextParameterUtils.kt
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * Copyright 2010-2025 JetBrains s.r.o. and Kotlin Programming Language contributors.
- * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
- */
-
-package org.jetbrains.kotlin.util
-
-import kotlin.collections.get
-
-fun <T> T.anonymousContextParameterName(
- allUnnamedContextParameters: List<T>,
- invalidChars: Set<Char>,
- erasedUpperBoundName: (T) -> String,
-): String? {
- val contextParameterNames = allUnnamedContextParameters
- .associateWith { erasedUpperBoundName(it).replaceInvalidChars(invalidChars) }
- val nameGroups = contextParameterNames.entries.groupBy({ it.value }, { it.key })
- val baseName = contextParameterNames[this]
- val currentNameGroup = nameGroups[baseName]!!
- return if (currentNameGroup.size == 1) $$"$context-$$baseName" else $$"$context-$$baseName#$${currentNameGroup.indexOf(this) + 1}"
-}
-
-private fun String.replaceInvalidChars(invalidChars: Set<Char>) =
- invalidChars.fold(this) { acc, ch -> if (ch in acc) acc.replace(ch, '_') else acc }
\ No newline at end of file
diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt
index 801f39b..a80988a 100644
--- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt
+++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/lower/LocalDeclarationsLowering.kt
@@ -128,9 +128,6 @@
) : BodyLoweringPass {
private val declarationScopesWithCounter: MutableMap<IrClass, MutableMap<DeclarationKeyForScope, Scope>> = mutableMapOf()
- open val invalidChars: Set<Char>
- get() = emptySet()
-
override fun lower(irFile: IrFile) {
runOnFilePostfix(irFile)
}
@@ -1054,10 +1051,7 @@
}
}
- val baseAsContextParameter = (declaration as? IrValueParameter)?.let {
- (declaration.parent as IrFunction).anonymousContextParameterName(declaration, invalidChars)
- }
- val base = baseAsContextParameter ?: if (declaration.name.isSpecial) {
+ val base = if (declaration.name.isSpecial) {
declaration.name.asStringStripSpecialMarkers()
} else {
declaration.name.asString()
diff --git a/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt b/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt
index b854595..319421e 100644
--- a/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt
+++ b/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/ExpressionCodegen.kt
@@ -391,8 +391,6 @@
// then generate name accordingly.
val name = if (param.origin == BOUND_RECEIVER_PARAMETER || useReceiverNaming) {
getNameForReceiverParameter(irFunction.toIrBasedDescriptor(), context.config.languageVersionSettings)
- } else if (param.kind == IrParameterKind.Context) {
- irFunction.anonymousContextParameterName(param) ?: param.name.asString()
} else {
param.name.asString()
}
diff --git a/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/FunctionCodegen.kt b/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/FunctionCodegen.kt
index 100e587..eee1d57 100644
--- a/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/FunctionCodegen.kt
+++ b/compiler/ir/backend.jvm/codegen/src/org/jetbrains/kotlin/backend/jvm/codegen/FunctionCodegen.kt
@@ -376,8 +376,7 @@
parameter.name.asString()
} else when (parameter.kind) {
IrParameterKind.DispatchReceiver -> continue
- IrParameterKind.Regular -> parameter.name.asString()
- IrParameterKind.Context -> irFunction.anonymousContextParameterName(parameter) ?: parameter.name.asString()
+ IrParameterKind.Regular, IrParameterKind.Context -> parameter.name.asString()
IrParameterKind.ExtensionReceiver -> irFunction.extensionReceiverName(config)
}
val origin = parameter.origin
diff --git a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmLocalDeclarationsLowering.kt b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmLocalDeclarationsLowering.kt
index fa43baa..49d9b76 100644
--- a/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmLocalDeclarationsLowering.kt
+++ b/compiler/ir/backend.jvm/lower/src/org/jetbrains/kotlin/backend/jvm/lower/JvmLocalDeclarationsLowering.kt
@@ -24,8 +24,6 @@
import org.jetbrains.kotlin.ir.util.parentDeclarationsWithSelf
import org.jetbrains.kotlin.load.java.JavaDescriptorVisibilities
import org.jetbrains.kotlin.name.NameUtils
-import org.jetbrains.kotlin.name.NameUtils.sanitizeAsJavaIdentifier
-import org.jetbrains.kotlin.resolve.jvm.JvmConstants
import org.jetbrains.kotlin.utils.filterIsInstanceAnd
/**
@@ -47,8 +45,6 @@
newParameterToOld = context.evaluatorData?.localDeclarationsData?.newParameterToOld ?: mutableMapOf(),
oldParameterToNew = context.evaluatorData?.localDeclarationsData?.oldParameterToNew ?: mutableMapOf(),
) {
- override val invalidChars: Set<Char>
- get() = JvmConstants.INVALID_CHARS
override fun getReplacementSymbolForCaptured(container: IrDeclaration, symbol: IrValueSymbol): IrValueSymbol {
if (context.evaluatorData?.evaluatorGeneratedFunction == container && !symbol.owner.parentDeclarationsWithSelf.contains(container)) {
diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/MemoizedInlineClassReplacements.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/MemoizedInlineClassReplacements.kt
index 9b492bf..c23c838 100644
--- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/MemoizedInlineClassReplacements.kt
+++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/MemoizedInlineClassReplacements.kt
@@ -168,9 +168,6 @@
// The function's name will be mangled, so preserve the old receiver name.
function.extensionReceiverName(context.config).let(Name::identifier)
}
- IrParameterKind.Context -> {
- function.anonymousContextParameterName(parameter)?.let(Name::identifier) ?: parameter.name
- }
else -> parameter.name
},
origin = when (parameter.kind) {
@@ -207,7 +204,7 @@
IrParameterKind.Context -> {
parameter.copyTo(
this,
- name = function.anonymousContextParameterName(parameter)?.let(Name::identifier) ?: parameter.name,
+ name = parameter.name,
origin = IrDeclarationOrigin.MOVED_CONTEXT_RECEIVER,
kind = IrParameterKind.Regular,
)
diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/MemoizedMultiFieldValueClassReplacements.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/MemoizedMultiFieldValueClassReplacements.kt
index 293ad1a..bb1aa45 100644
--- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/MemoizedMultiFieldValueClassReplacements.kt
+++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/MemoizedMultiFieldValueClassReplacements.kt
@@ -147,8 +147,7 @@
val name = when (param.kind) {
IrParameterKind.DispatchReceiver -> AsmUtil.THIS
IrParameterKind.ExtensionReceiver -> sourceFunction.extensionReceiverName(context.config)
- IrParameterKind.Context -> sourceFunction.anonymousContextParameterName(param)
- IrParameterKind.Regular -> null
+ IrParameterKind.Regular, IrParameterKind.Context -> null
}
val originWhenNotFlattened = when (param.kind) {
IrParameterKind.DispatchReceiver -> IrDeclarationOrigin.MOVED_DISPATCH_RECEIVER
diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/ir/JvmIrUtils.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/ir/JvmIrUtils.kt
index 1f29373..b7e1f7bd 100644
--- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/ir/JvmIrUtils.kt
+++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/ir/JvmIrUtils.kt
@@ -33,7 +33,6 @@
import org.jetbrains.kotlin.ir.builders.irExprBody
import org.jetbrains.kotlin.ir.builders.irGet
import org.jetbrains.kotlin.ir.declarations.*
-import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin.Companion.UNDERSCORE_PARAMETER
import org.jetbrains.kotlin.ir.expressions.*
import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl
import org.jetbrains.kotlin.ir.expressions.impl.IrClassReferenceImpl
@@ -44,7 +43,6 @@
import org.jetbrains.kotlin.ir.symbols.IrVariableSymbol
import org.jetbrains.kotlin.ir.types.*
import org.jetbrains.kotlin.ir.util.*
-import org.jetbrains.kotlin.ir.util.erasedUpperBound
import org.jetbrains.kotlin.ir.util.getArrayElementType
import org.jetbrains.kotlin.ir.util.isBoxedArray
import org.jetbrains.kotlin.ir.util.isSubtypeOf
@@ -63,7 +61,6 @@
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.resolve.jvm.AsmTypes
-import org.jetbrains.kotlin.resolve.jvm.JvmConstants
import org.jetbrains.kotlin.resolve.multiplatform.OptionalAnnotationUtil
import org.jetbrains.kotlin.resolve.source.PsiSourceElement
import org.jetbrains.kotlin.utils.DFS
@@ -511,8 +508,6 @@
AsmUtil.LABELED_THIS_PARAMETER + mangleNameIfNeeded(callableName.asString())
}
-fun IrFunction.anonymousContextParameterName(parameter: IrValueParameter): String? = anonymousContextParameterName(parameter, JvmConstants.INVALID_CHARS)
-
fun IrFunction.isBridge(): Boolean =
origin == IrDeclarationOrigin.BRIDGE || origin == IrDeclarationOrigin.BRIDGE_SPECIAL
diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt
index 75b1c35..d9082b0 100644
--- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt
+++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IrUtils.kt
@@ -19,7 +19,6 @@
import org.jetbrains.kotlin.ir.builders.declarations.*
import org.jetbrains.kotlin.ir.builders.irImplicitCast
import org.jetbrains.kotlin.ir.declarations.*
-import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin.Companion.UNDERSCORE_PARAMETER
import org.jetbrains.kotlin.ir.expressions.*
import org.jetbrains.kotlin.ir.expressions.impl.*
import org.jetbrains.kotlin.ir.overrides.FakeOverrideBuilderStrategy
@@ -34,7 +33,6 @@
import org.jetbrains.kotlin.ir.visitors.acceptVoid
import org.jetbrains.kotlin.name.*
import org.jetbrains.kotlin.util.OperatorNameConventions
-import org.jetbrains.kotlin.util.anonymousContextParameterName
import org.jetbrains.kotlin.utils.*
import org.jetbrains.kotlin.utils.addToStdlib.assignFrom
import java.io.StringWriter
@@ -1635,12 +1633,3 @@
}
-fun IrFunction.anonymousContextParameterName(parameter: IrValueParameter, invalidChars: Set<Char>): String? {
- if (parameter.kind != IrParameterKind.Context || parameter.origin != UNDERSCORE_PARAMETER) return null
- val allUnnamedContextParameters = parameters.filter { it.kind == IrParameterKind.Context && it.origin == UNDERSCORE_PARAMETER }
- return parameter.anonymousContextParameterName(
- allUnnamedContextParameters,
- invalidChars
- ) { t -> t.type.erasedUpperBound.name.asString() }
-}
-
diff --git a/compiler/testData/codegen/box/annotations/instances/AnnotationInstantiationWithArray.kt b/compiler/testData/codegen/box/annotations/instances/AnnotationInstantiationWithArray.kt
index 7fdea27..0248f87 100644
--- a/compiler/testData/codegen/box/annotations/instances/AnnotationInstantiationWithArray.kt
+++ b/compiler/testData/codegen/box/annotations/instances/AnnotationInstantiationWithArray.kt
@@ -1,4 +1,4 @@
-// TARGET_BACKEND: JVM_IR
+// TARGET_BACKEND: JVM_IR, JS_IR, JS_IR_ES6, WASM
// FIR_IDENTICAL
// DUMP_IR
// WITH_STDLIB
diff --git a/compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt b/compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt
new file mode 100644
index 0000000..3e44d72f
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt
@@ -0,0 +1,24 @@
+// WITH_STDLIB
+// TARGET_BACKEND: JVM_IR, WASM
+
+annotation class A(val t: String)
+annotation class WithAnn(val a: A, val xs: Array<A>)
+
+fun box(): String {
+ val a1 = A("a")
+ val a2 = A("a")
+ val a3 = A("b")
+
+ if (a1 != a2) return "Fail1"
+ if (a1 == a3) return "Fail2"
+
+ val w1 = WithAnn(a1, arrayOf(A("x"), A("y")))
+ val w2 = WithAnn(a2, arrayOf(A("x"), A("y")))
+ val w3 = WithAnn(a3, arrayOf(A("y"), A("x")))
+
+ if (w1 != w2) return "Fail3"
+ if (w1.hashCode() != w2.hashCode()) return "Fail4"
+ if (w1 == w3) return "Fail5"
+
+ return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.jvm_abi.txt b/compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.jvm_abi.txt
new file mode 100644
index 0000000..b9ab524
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.jvm_abi.txt
@@ -0,0 +1,9 @@
+MODULE main
+ CLASS Ann.class
+ CLASS METADATA
+ CONSTRUCTOR <init>(ILjava/lang/String;)V
+ Property: class.metadata.constructor.valueParameters
+ K1
+ (x: kotlin/Int /* = ... */, s: kotlin/String /* = ... */)
+ K2
+ (x: kotlin/Int = 1, s: kotlin/String = "k")
diff --git a/compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt b/compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt
new file mode 100644
index 0000000..0a57051
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt
@@ -0,0 +1,35 @@
+// WITH_STDLIB
+// TARGET_BACKEND: JVM_IR, WASM
+// JVM_ABI_K1_K2_DIFF: K2 serializes annotation parameter default values (KT-59526).
+
+annotation class Ann(val x: Int = 1, val s: String = "k")
+
+fun box(): String {
+ val a1 = Ann(7, "ok")
+ val a2 = Ann(7, "ok")
+ val a3 = Ann(8, "ok")
+
+ val any1: Any = a1
+ val any2: Any = a2
+ val any3: Any = a3
+
+ if (!any1.equals(any2)) return "Fail1"
+ if (any1.hashCode() != any2.hashCode()) return "Fail2"
+ if (any1.equals(any3)) return "Fail3"
+
+ val eq: (Any, Any?) -> Boolean = Any::equals
+ val hc: (Any) -> Int = Any::hashCode
+ val ts: (Any) -> String = Any::toString
+
+ if (!eq(any1, any2)) return "Fail4"
+ if (hc(any1) != hc(any2)) return "Fail5"
+
+ val t = ts(any1)
+ if (t.isEmpty() || !t.startsWith("@") || !t.contains("Ann")) return "Fail6"
+
+ val boundTs = any1::toString
+ val bt = boundTs()
+ if (bt.isEmpty() || !bt.contains("Ann")) return "Fail7"
+
+ return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/annotationEqHc.kt b/compiler/testData/codegen/box/annotations/instances/annotationEqHc.kt
index f49d9bd..6a25409 100644
--- a/compiler/testData/codegen/box/annotations/instances/annotationEqHc.kt
+++ b/compiler/testData/codegen/box/annotations/instances/annotationEqHc.kt
@@ -3,7 +3,7 @@
import kotlin.reflect.KClass
-annotation class Bar(val i:Int, val s: String, val f: Float)
+annotation class Bar(val i:Int, val s: String, val f: Float, val d: Double)
annotation class Foo(
val int: Int,
@@ -17,10 +17,10 @@
fun makeHC(name: String, value: Any) = (127 * name.hashCode()) xor value.hashCode()
fun box(): String {
- val foo1 = Foo(42, "foo", arrayOf("a", "b"), intArrayOf(1,2), Bar::class, Bar(10, "bar", Float.NaN))
- val foo2 = Foo(42, "foo", arrayOf("a", "b"), intArrayOf(1,2), Bar::class, Bar(10, "bar", Float.NaN))
+ val foo1 = Foo(42, "foo", arrayOf("a", "b"), intArrayOf(1,2), Bar::class, Bar(10, "bar", Float.NaN, Double.NaN))
+ val foo2 = Foo(42, "foo", arrayOf("a", "b"), intArrayOf(1,2), Bar::class, Bar(10, "bar", Float.NaN, Double.NaN))
if (foo1 != foo2) return "Failed equals ${foo1.toString()} ${foo2.toString()}"
- val barlike = makeHC("i", 10) + makeHC("s", "bar") + makeHC("f", Float.NaN)
+ val barlike = makeHC("i", 10) + makeHC("s", "bar") + makeHC("f", Float.NaN) + makeHC("d", Double.NaN)
if (barlike != foo1.bar.hashCode()) return "Failed HC1"
if (barlike != foo2.bar.hashCode()) return "Failed HC2"
return "OK"
diff --git a/compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt b/compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt
new file mode 100644
index 0000000..cbf6e73
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt
@@ -0,0 +1,26 @@
+// WITH_STDLIB
+// TARGET_BACKEND: JVM_IR, WASM
+
+// MODULE: lib
+annotation class LibAnn(val i: Int)
+
+inline fun make(i: Int) = LibAnn(i)
+inline fun eqViaAny(a: Any, b: Any) = a.equals(b)
+inline fun hcViaAny(a: Any) = a.hashCode()
+inline fun tsViaAny(a: Any) = a.toString()
+
+// MODULE: main(lib)
+fun box(): String {
+ val a1 = make(1)
+ val a2 = make(1)
+ val a3 = make(2)
+
+ if (!eqViaAny(a1, a2)) return "Fail1"
+ if (hcViaAny(a1) != hcViaAny(a2)) return "Fail2"
+ if (eqViaAny(a1, a3)) return "Fail3"
+
+ val ts = tsViaAny(a1)
+ if (ts.isEmpty() || !ts.contains("LibAnn")) return "Fail4"
+
+ return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/annotationToString.kt b/compiler/testData/codegen/box/annotations/instances/annotationToString.kt
index 2c8a55e..82b102a 100644
--- a/compiler/testData/codegen/box/annotations/instances/annotationToString.kt
+++ b/compiler/testData/codegen/box/annotations/instances/annotationToString.kt
@@ -2,6 +2,7 @@
// because the latter doesn't yet handle annotation toString implementations properly.
// Disable test grouping as a workaround:
// NATIVE_STANDALONE
+// WASM_ALLOW_FQNAME_IN_KCLASS
// WITH_STDLIB
// LANGUAGE: +InstantiationOfAnnotationClasses
@@ -51,5 +52,15 @@
val targetNative = targetJVM
.replace(" (Kotlin reflection is not available)", "")
.replace("interface", "class")
- return if (s == targetJS || s == targetJVM || s == targetNative) "OK" else "FAILED, got string $s"
+ val targetWasm = "@test.Anno(s=OK, i=42, f=2.718281828, u=43, e=E0, a=@test.A(b=1, s=1, i=1, f=1.0, d=1.0, l=1, c=c, bool=true), " +
+ "k=class test.A, arr=[], intArr=[1, 2], arrOfE=[E0], arrOfA=[@test.Empty()])"
+
+ val okTargets = setOf(
+ targetJVM,
+ targetJS,
+ targetNative,
+ targetWasm
+ )
+
+ return if (s in okTargets) "OK" else "FAILED, got string $s"
}
diff --git a/compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.jvm_abi.txt b/compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.jvm_abi.txt
new file mode 100644
index 0000000..994b0bb
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.jvm_abi.txt
@@ -0,0 +1,17 @@
+MODULE main
+ CLASS A.class
+ CLASS METADATA
+ CONSTRUCTOR <init>(Ljava/lang/String;)V
+ Property: class.metadata.constructor.valueParameters
+ K1
+ (t: kotlin/String /* = ... */)
+ K2
+ (t: kotlin/String = "d")
+ CLASS B.class
+ CLASS METADATA
+ CONSTRUCTOR <init>(LA;Lkotlin/Array;)V
+ Property: class.metadata.constructor.valueParameters
+ K1
+ (a: A /* = ... */, arr: kotlin/Array<A> /* = ... */)
+ K2
+ (a: A = A(), arr: kotlin/Array<A> = [])
diff --git a/compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt b/compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt
new file mode 100644
index 0000000..a6d1ff4
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt
@@ -0,0 +1,20 @@
+// WITH_STDLIB
+// TARGET_BACKEND: JVM_IR, WASM
+// IGNORE_BACKEND: ANDROID
+// JVM_ABI_K1_K2_DIFF: K2 serializes annotation parameter default values (KT-59526).
+
+annotation class A(val t: String = "d")
+annotation class B(
+ val a: A = A(),
+ val arr: Array<A> = emptyArray()
+)
+
+fun box(): String {
+ val s = B().toString()
+
+ if (!(s.contains("@B("))) return "Fail1"
+ if (!(s.contains("a=@A(t=d)"))) return "Fail2"
+ if (!s.contains("arr=[]")) return "Fail3"
+
+ return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt b/compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt
new file mode 100644
index 0000000..2f59ec4
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt
@@ -0,0 +1,20 @@
+// WITH_STDLIB
+// TARGET_BACKEND: JVM_IR, WASM
+
+annotation class A(val ints: IntArray)
+
+fun box(): String {
+ val x1 = A(intArrayOf(1, 2, 3))
+ val x2 = A(intArrayOf(1, 2, 3))
+ val y = A(intArrayOf(1, 3, 2))
+
+ val ax1: Any = x1
+ val ax2: Any = x2
+ val ay: Any = y
+
+ if (!ax1.equals(ax2)) return "Fail1"
+ if (ax1.hashCode() != ax2.hashCode()) return "Fail2"
+ if (ax1.equals(ay)) return "Fail3"
+
+ return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt b/compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt
new file mode 100644
index 0000000..517e0de
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt
@@ -0,0 +1,25 @@
+// WITH_STDLIB
+// TARGET_BACKEND: JVM_IR, WASM
+
+import kotlin.reflect.KClass
+
+class C
+annotation class KCls(
+ val k1: KClass<*>,
+ val k2: KClass<*>,
+ val ks: Array<KClass<*>>
+)
+
+fun box(): String {
+ val x = KCls(Int::class, IntArray::class, arrayOf(String::class, C::class))
+ val y = KCls(Int::class, IntArray::class, arrayOf(String::class, C::class))
+ val z = KCls(Int::class, IntArray::class, arrayOf(C::class, String::class))
+
+ if (x != y) return "Fail1"
+
+ if (x.hashCode() != y.hashCode()) return "Fail3"
+
+ if (x == z) return "Fail2"
+
+ return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt b/compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt
new file mode 100644
index 0000000..56890dd
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt
@@ -0,0 +1,11 @@
+// IGNORE_BACKEND_K1: ANY
+
+annotation class A(val i: Int)
+annotation class B(val i: Int)
+
+fun box(): String {
+ val a = A(1)
+ val b = B(1)
+ if (a == b) return "Fail"
+ return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/differentOrder.kt b/compiler/testData/codegen/box/annotations/instances/differentOrder.kt
new file mode 100644
index 0000000..a406a2e
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/differentOrder.kt
@@ -0,0 +1,10 @@
+// TARGET_BACKEND: JVM_IR, WASM
+
+annotation class C(val i: Int, val s: String, val arr: IntArray)
+
+fun box(): String {
+ val a = C(1, "x", intArrayOf(1,2,3))
+ val b = C(i = 1, arr = intArrayOf(1,2,3), s = "x")
+ if (a != b) return "Fail"
+ return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt b/compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt
new file mode 100644
index 0000000..639109b
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt
@@ -0,0 +1,23 @@
+// WITH_STDLIB
+// TARGET_BACKEND: JVM_IR, WASM
+
+enum class E { A, B }
+
+annotation class AClass(val k: kotlin.reflect.KClass<*>, val e: E)
+
+fun box(): String {
+ val a1 = AClass(String::class, E.B)
+ val a2 = AClass(String::class, E.B)
+ val a3 = AClass(Int::class, E.B)
+ val a4 = AClass(String::class, E.A)
+
+ if (a1 != a2) return "Fail1"
+ if (a1.hashCode() != a2.hashCode()) return "Fail2"
+ if (a1 == a3) return "Fail3"
+ if (a1 == a4) return "Fail4"
+
+ val ts = a1.toString()
+ if (ts.isEmpty() || !ts.contains("AClass(")) return "Fail5"
+
+ return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/enumArray.kt b/compiler/testData/codegen/box/annotations/instances/enumArray.kt
new file mode 100644
index 0000000..0be8d63
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/enumArray.kt
@@ -0,0 +1,21 @@
+// WITH_STDLIB
+// TARGET_BACKEND: JVM_IR, WASM
+
+enum class E { A, B, C }
+
+annotation class WithEnum(
+ val e: E,
+ val es: Array<E>
+)
+
+fun box(): String {
+ val x = WithEnum(E.B, arrayOf(E.A, E.C))
+ val y = WithEnum(E.B, arrayOf(E.A, E.C))
+ val z = WithEnum(E.B, arrayOf(E.C, E.A))
+
+ if (x != y) return "Fail1"
+ if (x == z) return "Fail2"
+ if (x.hashCode() != y.hashCode()) return "Fail3"
+
+ return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/innerAnnotationInstantiation.kt b/compiler/testData/codegen/box/annotations/instances/innerAnnotationInstantiation.kt
index f3f0c12..4d750c1 100644
--- a/compiler/testData/codegen/box/annotations/instances/innerAnnotationInstantiation.kt
+++ b/compiler/testData/codegen/box/annotations/instances/innerAnnotationInstantiation.kt
@@ -1,5 +1,5 @@
-// TARGET_BACKEND: JVM_IR
-// IGNORE_BACKEND_K1: JVM_IR
+// TARGET_BACKEND: JVM_IR, WASM
+// IGNORE_BACKEND_K1: JVM_IR, WASM
// ISSUE: KT-54931
class Container {
diff --git a/compiler/testData/codegen/box/annotations/instances/instanceEquality.kt b/compiler/testData/codegen/box/annotations/instances/instanceEquality.kt
new file mode 100644
index 0000000..6677599
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/instanceEquality.kt
@@ -0,0 +1,58 @@
+// WITH_STDLIB
+// TARGET_BACKEND: JVM_IR, WASM
+// IGNORE_BACKEND_K1: ANY
+
+annotation class A1
+annotation class A2
+
+fun interface I {
+ fun run(): A1
+}
+
+class E {
+ fun insideClass(): A1 = A1()
+ fun insideLambda(): A1 = run { A1() }
+ fun insideSAM(): A1 = I { A1() }.run()
+}
+
+class G {
+ fun insideClassAgain(): A1 = A1()
+}
+
+fun outsideClass(): A2 = A2()
+
+fun box(): String {
+ val e = E()
+
+ val aFromClass = e.insideClass()
+ val aFromLambda = e.insideLambda()
+ val aFromSam = e.insideSAM()
+ val aFromAnother = G().insideClassAgain()
+ val all = listOf(aFromClass, aFromLambda, aFromSam, aFromAnother)
+
+
+ for (x in all) for (y in all) {
+ if (x != y) return "Fail1"
+ }
+
+ val h = all.first().hashCode()
+ if (all.any { it.hashCode() != h }) return "Fail2"
+
+ val b = outsideClass()
+ if (all.first() == b) return "Fail3"
+
+ val set: MutableSet<Any> = hashSetOf(all.first() as Any)
+ if (set.contains(b as Any)) return "Fail4"
+ set.add(b)
+ if (set.size != 2) return "Fail5"
+
+ val map: MutableMap<Any, String> = hashMapOf(all.first() as Any to "ok")
+ if (map[b] != null) return "Fail6"
+
+ val ts = all.first().toString()
+ if (ts.isEmpty() || !ts.contains("A1")) {
+ return "Fail7"
+ }
+
+ return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/mixedArray.kt b/compiler/testData/codegen/box/annotations/instances/mixedArray.kt
new file mode 100644
index 0000000..e9e1bc3
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/mixedArray.kt
@@ -0,0 +1,47 @@
+// TARGET_BACKEND: JVM_IR, WASM
+
+import kotlin.reflect.KClass
+
+enum class E { X, Y }
+
+annotation class C(val id: Int)
+
+annotation class Big(
+ val ss: Array<String>,
+ val ia: IntArray,
+ val es: Array<E>,
+ val ks: Array<KClass<*>>,
+ val asA: Array<C>
+)
+
+class D
+
+fun box(): String {
+ val b1 = Big(
+ ss = arrayOf("a","b"),
+ ia = intArrayOf(1,2),
+ es = arrayOf(E.X, E.Y),
+ ks = arrayOf(String::class, D::class),
+ asA = arrayOf(C(1), C(2))
+ )
+ val b2 = Big(
+ ss = arrayOf("a","b"),
+ ia = intArrayOf(1,2),
+ es = arrayOf(E.X, E.Y),
+ ks = arrayOf(String::class, D::class),
+ asA = arrayOf(C(1), C(2))
+ )
+
+ val b3 = Big(
+ ss = arrayOf("a","b"),
+ ia = intArrayOf(1,2),
+ es = arrayOf(E.Y, E.X),
+ ks = arrayOf(String::class, D::class),
+ asA = arrayOf(C(1), C(2))
+ )
+
+ if (b1 != b2) return "Failed"
+ if (b1 == b3) return "Failed"
+
+ return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/naNAndZero.kt b/compiler/testData/codegen/box/annotations/instances/naNAndZero.kt
new file mode 100644
index 0000000..cb5c054
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/naNAndZero.kt
@@ -0,0 +1,33 @@
+// TARGET_BACKEND: JVM_IR, WASM
+
+annotation class A(
+ val f: Float,
+ val d: Double,
+ val fa: FloatArray,
+ val da: DoubleArray
+)
+
+fun box(): String {
+ val a = A(
+ Float.NaN, Double.NaN,
+ floatArrayOf(Float.NaN, -0.0f, 0.0f),
+ doubleArrayOf(Double.NaN, -0.0, 0.0)
+ )
+ val b = A(
+ Float.NaN, Double.NaN,
+ floatArrayOf(Float.NaN, -0.0f, 0.0f),
+ doubleArrayOf(Double.NaN, -0.0, 0.0)
+ )
+ if (a != b) return "Fail1"
+
+ val c = A(
+ Float.NaN, Double.NaN,
+ floatArrayOf(Float.NaN, 0.0f, -0.0f),
+ doubleArrayOf(Double.NaN, 0.0, -0.0)
+ )
+ if (a == c) return "Fail2"
+
+ if (a.hashCode() != b.hashCode()) return "Fail3"
+
+ return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/nested.jvm_abi.txt b/compiler/testData/codegen/box/annotations/instances/nested.jvm_abi.txt
new file mode 100644
index 0000000..30ac99e
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/nested.jvm_abi.txt
@@ -0,0 +1,9 @@
+MODULE main
+ CLASS AnnArrays.class
+ CLASS METADATA
+ CONSTRUCTOR <init>([ILkotlin/Array;LInner;)V
+ Property: class.metadata.constructor.valueParameters
+ K1
+ (ints: kotlin/IntArray /* = ... */, strs: kotlin/Array<kotlin/String> /* = ... */, inn: Inner /* = ... */)
+ K2
+ (ints: kotlin/IntArray = [], strs: kotlin/Array<kotlin/String> = [], inn: Inner = Inner(v = "x"))
diff --git a/compiler/testData/codegen/box/annotations/instances/nested.kt b/compiler/testData/codegen/box/annotations/instances/nested.kt
new file mode 100644
index 0000000..5928ac0
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/nested.kt
@@ -0,0 +1,26 @@
+// WITH_STDLIB
+// TARGET_BACKEND: JVM_IR, WASM
+// JVM_ABI_K1_K2_DIFF: K2 serializes annotation parameter default values (KT-59526).
+
+annotation class Inner(val v: String)
+
+annotation class AnnArrays(
+ val ints: IntArray = intArrayOf(),
+ val strs: Array<String> = [],
+ val inn: Inner = Inner("x")
+)
+
+fun box(): String {
+ val a1 = AnnArrays(ints = intArrayOf(1, 2, 3), strs = arrayOf("a", "b"), inn = Inner("qq"))
+ val a2 = AnnArrays(ints = intArrayOf(1, 2, 3), strs = arrayOf("a", "b"), inn = Inner("qq"))
+ val a3 = AnnArrays(ints = intArrayOf(3, 2, 1), strs = arrayOf("a", "b"), inn = Inner("qq"))
+
+ if (a1 != a2) return "Fail1"
+ if (a1.hashCode() != a2.hashCode()) return "Fail2"
+ if (a1 == a3) return "Fail3"
+
+ val ts = a1.toString()
+ if (ts.isEmpty() || !ts.contains("AnnArrays(")) return "Fail4"
+
+ return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/nestedDefaults.jvm_abi.txt b/compiler/testData/codegen/box/annotations/instances/nestedDefaults.jvm_abi.txt
new file mode 100644
index 0000000..cfe49cf
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/nestedDefaults.jvm_abi.txt
@@ -0,0 +1,9 @@
+MODULE main
+ CLASS Inner.class
+ CLASS METADATA
+ CONSTRUCTOR <init>(ILjava/lang/String;)V
+ Property: class.metadata.constructor.valueParameters
+ K1
+ (i: kotlin/Int /* = ... */, s: kotlin/String /* = ... */)
+ K2
+ (i: kotlin/Int = 1, s: kotlin/String = "")
diff --git a/compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt b/compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt
new file mode 100644
index 0000000..97fbe34
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt
@@ -0,0 +1,44 @@
+// TARGET_BACKEND: JVM_IR, WASM
+// WITH_STDLIB
+// JVM_ABI_K1_K2_DIFF: K2 serializes annotation parameter default values (KT-59526).
+
+
+annotation class Inner(val i: Int = 1, val s: String = "")
+annotation class Outer(
+ val one: Inner,
+ val many: Array<Inner>
+)
+
+private fun valueHash(v: Any): Int = when (v) {
+ is BooleanArray -> v.contentHashCode()
+ is ByteArray -> v.contentHashCode()
+ is CharArray -> v.contentHashCode()
+ is ShortArray -> v.contentHashCode()
+ is IntArray -> v.contentHashCode()
+ is LongArray -> v.contentHashCode()
+ is FloatArray -> v.contentHashCode()
+ is DoubleArray -> v.contentHashCode()
+ is Array<*> -> v.contentHashCode()
+ else -> v.hashCode()
+}
+
+private fun contrib(name: String, v: Any): Int =
+ (127 * name.hashCode()) xor valueHash(v)
+
+fun box(): String {
+ val a1 = Outer(Inner(), arrayOf(Inner(1,"x"), Inner(2,"y")))
+ val a2 = Outer(Inner(i = 1), arrayOf(Inner(1,"x"), Inner(2,"y")))
+ val a3 = Outer(Inner(s = ""), arrayOf(Inner(1,"x"), Inner(2,"y")))
+ val b = Outer(Inner(i = 8), arrayOf(Inner(1,"x"), Inner(2,"y")))
+
+ if (a1 != a2 || a1 != a3) return "Failed1"
+ if (a1 == b) return "Failed2"
+
+ val expected =
+ contrib("one", a1.one) +
+ contrib("many", a1.many)
+
+ if (a1.hashCode() != expected) return "Failed3"
+
+ return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt b/compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt
new file mode 100644
index 0000000..0d52dee
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt
@@ -0,0 +1,27 @@
+// WITH_STDLIB
+// TARGET_BACKEND: JVM_IR, WASM
+
+@kotlin.annotation.Repeatable
+annotation class Rep(val v: Int)
+
+annotation class Holder(val reps: Array<Rep>)
+
+fun box(): String {
+ val r1 = Rep(1)
+ val r2 = Rep(1)
+ val r3 = Rep(2)
+
+ if (r1 != r2) return "Fail1"
+ if (r1.hashCode() != r2.hashCode()) return "Fail2"
+ if (r1 == r3) return "Fail3"
+
+ val h1 = Holder(arrayOf(Rep(1), Rep(2)))
+ val h2 = Holder(arrayOf(Rep(1), Rep(2)))
+ val h3 = Holder(arrayOf(Rep(2), Rep(1)))
+
+ if (h1 != h2) return "Fail4"
+ if (h1.hashCode() != h2.hashCode()) return "Fail5"
+ if (h1 == h3) return "Fail6"
+
+ return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.jvm_abi.txt b/compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.jvm_abi.txt
new file mode 100644
index 0000000..2f032d0
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.jvm_abi.txt
@@ -0,0 +1,9 @@
+MODULE main
+ CLASS AnnAlias.class
+ CLASS METADATA
+ CONSTRUCTOR <init>(Lkotlin/Array;Lkotlin/reflect/KClass;)V
+ Property: class.metadata.constructor.valueParameters
+ K1
+ (s: kotlin/Array<kotlin/String /* = Str^ */> /* = StrArr^ */, k: kotlin/reflect/KClass<*> /* = ... */)
+ K2
+ (s: kotlin/Array<kotlin/String /* = Str^ */> /* = StrArr^ */, k: kotlin/reflect/KClass<*> = kotlin/Any::class)
diff --git a/compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt b/compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt
new file mode 100644
index 0000000..5329e68
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt
@@ -0,0 +1,23 @@
+// WITH_STDLIB
+// TARGET_BACKEND: JVM_IR, WASM
+// JVM_ABI_K1_K2_DIFF: K2 serializes annotation parameter default values (KT-59526).
+
+typealias Str = String
+typealias StrArr = Array<Str>
+
+annotation class AnnAlias(val s: StrArr, val k: kotlin.reflect.KClass<*> = Any::class)
+
+fun box(): String {
+ val a1 = AnnAlias(arrayOf("a", "b"), String::class)
+ val a2 = AnnAlias(arrayOf("a", "b"), String::class)
+ val a3 = AnnAlias(arrayOf("a", "b"), Int::class)
+
+ if (a1 != a2) return "Fail1"
+ if (a1.hashCode() != a2.hashCode()) return "Fail2"
+ if (a1 == a3) return "Fail3"
+
+ val ts = a1.toString()
+ if (ts.isEmpty() || !ts.contains("AnnAlias(")) return "Fail4"
+
+ return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt b/compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt
new file mode 100644
index 0000000..c3bb459
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt
@@ -0,0 +1,44 @@
+// WITH_STDLIB
+// TARGET_BACKEND: JVM_IR, WASM
+
+annotation class AnnBool(val xs: BooleanArray)
+annotation class AnnUnsigned(
+ val ub: UByteArray,
+ val us: UShortArray,
+ val ui: UIntArray,
+ val ul: ULongArray
+)
+
+fun box(): String {
+ val b1 = AnnBool(booleanArrayOf(true, false, true))
+ val b2 = AnnBool(booleanArrayOf(true, false, true))
+ val b3 = AnnBool(booleanArrayOf(true, true, false))
+ if (b1 != b2) return "Fail1"
+ if (b1.hashCode() != b2.hashCode()) return "Fail2"
+ if (b1 == b3) return "Fail3"
+
+ val u1 = AnnUnsigned(
+ ub = ubyteArrayOf(1u, 2u),
+ us = ushortArrayOf(1u, 2u),
+ ui = uintArrayOf(1u, 2u),
+ ul = ulongArrayOf(1u, 2u)
+ )
+ val u2 = AnnUnsigned(
+ ub = ubyteArrayOf(1u, 2u),
+ us = ushortArrayOf(1u, 2u),
+ ui = uintArrayOf(1u, 2u),
+ ul = ulongArrayOf(1u, 2u)
+ )
+ val u3 = AnnUnsigned(
+ ub = ubyteArrayOf(2u, 1u),
+ us = ushortArrayOf(2u, 1u),
+ ui = uintArrayOf(2u, 1u),
+ ul = ulongArrayOf(2u, 1u)
+ )
+
+ if (u1 != u2) return "Fail4"
+ if (u1.hashCode() != u2.hashCode()) return "Fail5"
+ if (u1 == u3) return "Fail6"
+
+ return "OK"
+}
\ No newline at end of file
diff --git a/compiler/testData/codegen/box/annotations/instances/withDefaults.jvm_abi.txt b/compiler/testData/codegen/box/annotations/instances/withDefaults.jvm_abi.txt
new file mode 100644
index 0000000..48d2ad8
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/withDefaults.jvm_abi.txt
@@ -0,0 +1,9 @@
+MODULE main
+ CLASS C.class
+ CLASS METADATA
+ CONSTRUCTOR <init>(ILjava/lang/String;[ILE;)V
+ Property: class.metadata.constructor.valueParameters
+ K1
+ (i: kotlin/Int /* = ... */, s: kotlin/String /* = ... */, a: kotlin/IntArray /* = ... */, e: E /* = ... */)
+ K2
+ (i: kotlin/Int = 1, s: kotlin/String = "", a: kotlin/IntArray = [], e: E = E.A)
diff --git a/compiler/testData/codegen/box/annotations/instances/withDefaults.kt b/compiler/testData/codegen/box/annotations/instances/withDefaults.kt
new file mode 100644
index 0000000..ca6a48e
--- /dev/null
+++ b/compiler/testData/codegen/box/annotations/instances/withDefaults.kt
@@ -0,0 +1,19 @@
+// TARGET_BACKEND: JVM_IR, WASM
+// JVM_ABI_K1_K2_DIFF: K2 serializes annotation parameter default values (KT-59526).
+
+enum class E { A, B, C }
+
+annotation class C(
+ val i: Int = 1,
+ val s: String = "",
+ val a: IntArray = intArrayOf(),
+ val e: E = E.A
+)
+
+fun box(): String {
+ val a = C()
+ val b = C(i = 1, s = "", a = intArrayOf(), e = E.A)
+ if (a != b) return "Fail1"
+ if (a.hashCode() != b.hashCode()) return "Fail2"
+ return "OK"
+}
\ No newline at end of file
diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/JvmAbiConsistencyTestBoxGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/JvmAbiConsistencyTestBoxGenerated.java
index b05ad50..9795174 100644
--- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/JvmAbiConsistencyTestBoxGenerated.java
+++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/JvmAbiConsistencyTestBoxGenerated.java
@@ -546,6 +546,18 @@
}
@Test
+ @TestMetadata("annotationAnnotationParam.kt")
+ public void testAnnotationAnnotationParam() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+ }
+
+ @Test
+ @TestMetadata("annotationAnyDispatch.kt")
+ public void testAnnotationAnyDispatch() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+ }
+
+ @Test
@TestMetadata("annotationEnclosingName.kt")
public void testAnnotationEnclosingName() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -564,6 +576,12 @@
}
@Test
+ @TestMetadata("annotationInlineMultiModule.kt")
+ public void testAnnotationInlineMultiModule() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+ }
+
+ @Test
@TestMetadata("annotationInstances.kt")
public void testAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -600,6 +618,12 @@
}
@Test
+ @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+ public void testAnnotationToStringDefaultsAndEmptyArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+ }
+
+ @Test
@TestMetadata("annotationType.kt")
public void testAnnotationType() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -624,6 +648,42 @@
}
@Test
+ @TestMetadata("arrayContentEqAny.kt")
+ public void testArrayContentEqAny() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+ }
+
+ @Test
+ @TestMetadata("arraysAndKClass.kt")
+ public void testArraysAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("differentAnnotationTypes.kt")
+ public void testDifferentAnnotationTypes() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+ }
+
+ @Test
+ @TestMetadata("differentOrder.kt")
+ public void testDifferentOrder() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+ }
+
+ @Test
+ @TestMetadata("enumAndKClass.kt")
+ public void testEnumAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("enumArray.kt")
+ public void testEnumArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+ }
+
+ @Test
@TestMetadata("inInlineFunction.kt")
public void testInInlineFunction() {
runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -636,6 +696,12 @@
}
@Test
+ @TestMetadata("instanceEquality.kt")
+ public void testInstanceEquality() {
+ runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+ }
+
+ @Test
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() {
runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -660,6 +726,12 @@
}
@Test
+ @TestMetadata("mixedArray.kt")
+ public void testMixedArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+ }
+
+ @Test
@TestMetadata("multifileEqHc.kt")
public void testMultifileEqHc() {
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -690,22 +762,64 @@
}
@Test
+ @TestMetadata("naNAndZero.kt")
+ public void testNaNAndZero() {
+ runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+ }
+
+ @Test
+ @TestMetadata("nested.kt")
+ public void testNested() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+ }
+
+ @Test
@TestMetadata("nestedAnnotationInstances.kt")
public void testNestedAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
}
@Test
+ @TestMetadata("nestedDefaults.kt")
+ public void testNestedDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+ }
+
+ @Test
@TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
public void testRearrangedArgumentsInAnnotationCall() {
runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
}
@Test
+ @TestMetadata("repeatableInstantiation.kt")
+ public void testRepeatableInstantiation() {
+ runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+ }
+
+ @Test
+ @TestMetadata("typeAliasesAndGenericsInterop.kt")
+ public void testTypeAliasesAndGenericsInterop() {
+ runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+ }
+
+ @Test
+ @TestMetadata("unsignedAndBooleanArrays.kt")
+ public void testUnsignedAndBooleanArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+ }
+
+ @Test
@TestMetadata("varargInAnnotationParameterInstantiation.kt")
public void testVarargInAnnotationParameterInstantiation() {
runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
}
+
+ @Test
+ @TestMetadata("withDefaults.kt")
+ public void testWithDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+ }
}
@Nested
diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java
index 74e4113..dd6b77b 100644
--- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java
+++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java
@@ -546,6 +546,18 @@
}
@Test
+ @TestMetadata("annotationAnnotationParam.kt")
+ public void testAnnotationAnnotationParam() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+ }
+
+ @Test
+ @TestMetadata("annotationAnyDispatch.kt")
+ public void testAnnotationAnyDispatch() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+ }
+
+ @Test
@TestMetadata("annotationEnclosingName.kt")
public void testAnnotationEnclosingName() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -564,6 +576,12 @@
}
@Test
+ @TestMetadata("annotationInlineMultiModule.kt")
+ public void testAnnotationInlineMultiModule() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+ }
+
+ @Test
@TestMetadata("annotationInstances.kt")
public void testAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -600,6 +618,12 @@
}
@Test
+ @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+ public void testAnnotationToStringDefaultsAndEmptyArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+ }
+
+ @Test
@TestMetadata("annotationType.kt")
public void testAnnotationType() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -624,6 +648,42 @@
}
@Test
+ @TestMetadata("arrayContentEqAny.kt")
+ public void testArrayContentEqAny() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+ }
+
+ @Test
+ @TestMetadata("arraysAndKClass.kt")
+ public void testArraysAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("differentAnnotationTypes.kt")
+ public void testDifferentAnnotationTypes() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+ }
+
+ @Test
+ @TestMetadata("differentOrder.kt")
+ public void testDifferentOrder() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+ }
+
+ @Test
+ @TestMetadata("enumAndKClass.kt")
+ public void testEnumAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("enumArray.kt")
+ public void testEnumArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+ }
+
+ @Test
@TestMetadata("inInlineFunction.kt")
public void testInInlineFunction() {
runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -636,6 +696,12 @@
}
@Test
+ @TestMetadata("instanceEquality.kt")
+ public void testInstanceEquality() {
+ runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+ }
+
+ @Test
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() {
runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -660,6 +726,12 @@
}
@Test
+ @TestMetadata("mixedArray.kt")
+ public void testMixedArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+ }
+
+ @Test
@TestMetadata("multifileEqHc.kt")
public void testMultifileEqHc() {
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -690,22 +762,64 @@
}
@Test
+ @TestMetadata("naNAndZero.kt")
+ public void testNaNAndZero() {
+ runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+ }
+
+ @Test
+ @TestMetadata("nested.kt")
+ public void testNested() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+ }
+
+ @Test
@TestMetadata("nestedAnnotationInstances.kt")
public void testNestedAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
}
@Test
+ @TestMetadata("nestedDefaults.kt")
+ public void testNestedDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+ }
+
+ @Test
@TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
public void testRearrangedArgumentsInAnnotationCall() {
runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
}
@Test
+ @TestMetadata("repeatableInstantiation.kt")
+ public void testRepeatableInstantiation() {
+ runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+ }
+
+ @Test
+ @TestMetadata("typeAliasesAndGenericsInterop.kt")
+ public void testTypeAliasesAndGenericsInterop() {
+ runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+ }
+
+ @Test
+ @TestMetadata("unsignedAndBooleanArrays.kt")
+ public void testUnsignedAndBooleanArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+ }
+
+ @Test
@TestMetadata("varargInAnnotationParameterInstantiation.kt")
public void testVarargInAnnotationParameterInstantiation() {
runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
}
+
+ @Test
+ @TestMetadata("withDefaults.kt")
+ public void testWithDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+ }
}
@Nested
diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/inlineScopes/FirBlackBoxCodegenTestWithInlineScopesGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/inlineScopes/FirBlackBoxCodegenTestWithInlineScopesGenerated.java
index e545b5d..a4a329e 100644
--- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/inlineScopes/FirBlackBoxCodegenTestWithInlineScopesGenerated.java
+++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/inlineScopes/FirBlackBoxCodegenTestWithInlineScopesGenerated.java
@@ -546,6 +546,18 @@
}
@Test
+ @TestMetadata("annotationAnnotationParam.kt")
+ public void testAnnotationAnnotationParam() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+ }
+
+ @Test
+ @TestMetadata("annotationAnyDispatch.kt")
+ public void testAnnotationAnyDispatch() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+ }
+
+ @Test
@TestMetadata("annotationEnclosingName.kt")
public void testAnnotationEnclosingName() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -564,6 +576,12 @@
}
@Test
+ @TestMetadata("annotationInlineMultiModule.kt")
+ public void testAnnotationInlineMultiModule() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+ }
+
+ @Test
@TestMetadata("annotationInstances.kt")
public void testAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -600,6 +618,12 @@
}
@Test
+ @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+ public void testAnnotationToStringDefaultsAndEmptyArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+ }
+
+ @Test
@TestMetadata("annotationType.kt")
public void testAnnotationType() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -624,6 +648,42 @@
}
@Test
+ @TestMetadata("arrayContentEqAny.kt")
+ public void testArrayContentEqAny() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+ }
+
+ @Test
+ @TestMetadata("arraysAndKClass.kt")
+ public void testArraysAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("differentAnnotationTypes.kt")
+ public void testDifferentAnnotationTypes() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+ }
+
+ @Test
+ @TestMetadata("differentOrder.kt")
+ public void testDifferentOrder() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+ }
+
+ @Test
+ @TestMetadata("enumAndKClass.kt")
+ public void testEnumAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("enumArray.kt")
+ public void testEnumArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+ }
+
+ @Test
@TestMetadata("inInlineFunction.kt")
public void testInInlineFunction() {
runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -636,6 +696,12 @@
}
@Test
+ @TestMetadata("instanceEquality.kt")
+ public void testInstanceEquality() {
+ runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+ }
+
+ @Test
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() {
runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -660,6 +726,12 @@
}
@Test
+ @TestMetadata("mixedArray.kt")
+ public void testMixedArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+ }
+
+ @Test
@TestMetadata("multifileEqHc.kt")
public void testMultifileEqHc() {
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -690,22 +762,64 @@
}
@Test
+ @TestMetadata("naNAndZero.kt")
+ public void testNaNAndZero() {
+ runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+ }
+
+ @Test
+ @TestMetadata("nested.kt")
+ public void testNested() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+ }
+
+ @Test
@TestMetadata("nestedAnnotationInstances.kt")
public void testNestedAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
}
@Test
+ @TestMetadata("nestedDefaults.kt")
+ public void testNestedDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+ }
+
+ @Test
@TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
public void testRearrangedArgumentsInAnnotationCall() {
runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
}
@Test
+ @TestMetadata("repeatableInstantiation.kt")
+ public void testRepeatableInstantiation() {
+ runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+ }
+
+ @Test
+ @TestMetadata("typeAliasesAndGenericsInterop.kt")
+ public void testTypeAliasesAndGenericsInterop() {
+ runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+ }
+
+ @Test
+ @TestMetadata("unsignedAndBooleanArrays.kt")
+ public void testUnsignedAndBooleanArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+ }
+
+ @Test
@TestMetadata("varargInAnnotationParameterInstantiation.kt")
public void testVarargInAnnotationParameterInstantiation() {
runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
}
+
+ @Test
+ @TestMetadata("withDefaults.kt")
+ public void testWithDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+ }
}
@Nested
diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/inlineScopes/FirSerializeCompileKotlinAgainstInlineKotlinTestWithInlineScopesGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/inlineScopes/FirSerializeCompileKotlinAgainstInlineKotlinTestWithInlineScopesGenerated.java
index 66e09d4..8636f34 100644
--- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/inlineScopes/FirSerializeCompileKotlinAgainstInlineKotlinTestWithInlineScopesGenerated.java
+++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/inlineScopes/FirSerializeCompileKotlinAgainstInlineKotlinTestWithInlineScopesGenerated.java
@@ -548,6 +548,18 @@
}
@Test
+ @TestMetadata("annotationAnnotationParam.kt")
+ public void testAnnotationAnnotationParam() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+ }
+
+ @Test
+ @TestMetadata("annotationAnyDispatch.kt")
+ public void testAnnotationAnyDispatch() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+ }
+
+ @Test
@TestMetadata("annotationEnclosingName.kt")
public void testAnnotationEnclosingName() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -566,6 +578,12 @@
}
@Test
+ @TestMetadata("annotationInlineMultiModule.kt")
+ public void testAnnotationInlineMultiModule() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+ }
+
+ @Test
@TestMetadata("annotationInstances.kt")
public void testAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -602,6 +620,12 @@
}
@Test
+ @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+ public void testAnnotationToStringDefaultsAndEmptyArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+ }
+
+ @Test
@TestMetadata("annotationType.kt")
public void testAnnotationType() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -626,6 +650,42 @@
}
@Test
+ @TestMetadata("arrayContentEqAny.kt")
+ public void testArrayContentEqAny() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+ }
+
+ @Test
+ @TestMetadata("arraysAndKClass.kt")
+ public void testArraysAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("differentAnnotationTypes.kt")
+ public void testDifferentAnnotationTypes() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+ }
+
+ @Test
+ @TestMetadata("differentOrder.kt")
+ public void testDifferentOrder() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+ }
+
+ @Test
+ @TestMetadata("enumAndKClass.kt")
+ public void testEnumAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("enumArray.kt")
+ public void testEnumArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+ }
+
+ @Test
@TestMetadata("inInlineFunction.kt")
public void testInInlineFunction() {
runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -638,6 +698,12 @@
}
@Test
+ @TestMetadata("instanceEquality.kt")
+ public void testInstanceEquality() {
+ runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+ }
+
+ @Test
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() {
runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -662,6 +728,12 @@
}
@Test
+ @TestMetadata("mixedArray.kt")
+ public void testMixedArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+ }
+
+ @Test
@TestMetadata("multifileEqHc.kt")
public void testMultifileEqHc() {
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -692,22 +764,64 @@
}
@Test
+ @TestMetadata("naNAndZero.kt")
+ public void testNaNAndZero() {
+ runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+ }
+
+ @Test
+ @TestMetadata("nested.kt")
+ public void testNested() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+ }
+
+ @Test
@TestMetadata("nestedAnnotationInstances.kt")
public void testNestedAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
}
@Test
+ @TestMetadata("nestedDefaults.kt")
+ public void testNestedDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+ }
+
+ @Test
@TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
public void testRearrangedArgumentsInAnnotationCall() {
runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
}
@Test
+ @TestMetadata("repeatableInstantiation.kt")
+ public void testRepeatableInstantiation() {
+ runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+ }
+
+ @Test
+ @TestMetadata("typeAliasesAndGenericsInterop.kt")
+ public void testTypeAliasesAndGenericsInterop() {
+ runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+ }
+
+ @Test
+ @TestMetadata("unsignedAndBooleanArrays.kt")
+ public void testUnsignedAndBooleanArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+ }
+
+ @Test
@TestMetadata("varargInAnnotationParameterInstantiation.kt")
public void testVarargInAnnotationParameterInstantiation() {
runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
}
+
+ @Test
+ @TestMetadata("withDefaults.kt")
+ public void testWithDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+ }
}
@Nested
diff --git a/generators/tests/org/jetbrains/kotlin/generators/arguments/GenerateCompilerArgumentsCopy.kt b/generators/tests/org/jetbrains/kotlin/generators/arguments/GenerateCompilerArgumentsCopy.kt
index f107076..44a7133 100644
--- a/generators/tests/org/jetbrains/kotlin/generators/arguments/GenerateCompilerArgumentsCopy.kt
+++ b/generators/tests/org/jetbrains/kotlin/generators/arguments/GenerateCompilerArgumentsCopy.kt
@@ -68,7 +68,7 @@
val classifier: KClassifier = type.classifier!!
return when {
classifier is KClass<*> && classifier == List::class -> isSupportedImmutable(type.arguments.single().type!!)
- classifier == InternalArgument::class -> true
+ classifier == ManualLanguageFeatureSetting::class -> true
classifier == Boolean::class -> true
classifier == Int::class -> true
classifier == String::class -> true
@@ -212,4 +212,4 @@
fun main() {
generateCompilerArgumentsCopy(::getPrinterToFile)
generateConfigureLanguageFeatures(::getPrinterToFile)
-}
\ No newline at end of file
+}
diff --git a/jps/jps-common/src/org/jetbrains/kotlin/arguments/CompilerArgumentsContentProspector.kt b/jps/jps-common/src/org/jetbrains/kotlin/arguments/CompilerArgumentsContentProspector.kt
index 7896944..9114cf3 100644
--- a/jps/jps-common/src/org/jetbrains/kotlin/arguments/CompilerArgumentsContentProspector.kt
+++ b/jps/jps-common/src/org/jetbrains/kotlin/arguments/CompilerArgumentsContentProspector.kt
@@ -3,7 +3,7 @@
import org.jetbrains.kotlin.cli.common.arguments.Argument
import org.jetbrains.kotlin.cli.common.arguments.CommonToolArguments
-import org.jetbrains.kotlin.cli.common.arguments.InternalArgument
+import org.jetbrains.kotlin.cli.common.arguments.ManualLanguageFeatureSetting
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
import kotlin.reflect.KClass
import kotlin.reflect.KProperty1
@@ -42,6 +42,6 @@
val freeArgsProperty: KProperty1<in CommonToolArguments, List<String>>
get() = CommonToolArguments::freeArgs
- val internalArgumentsProperty: KProperty1<in CommonToolArguments, List<InternalArgument>>
+ val internalArgumentsProperty: KProperty1<in CommonToolArguments, List<ManualLanguageFeatureSetting>>
get() = CommonToolArguments::internalArguments
-}
\ No newline at end of file
+}
diff --git a/jps/jps-common/src/org/jetbrains/kotlin/arguments/CompilerArgumentsDeserializer.kt b/jps/jps-common/src/org/jetbrains/kotlin/arguments/CompilerArgumentsDeserializer.kt
index ad7f48c..995bea9 100644
--- a/jps/jps-common/src/org/jetbrains/kotlin/arguments/CompilerArgumentsDeserializer.kt
+++ b/jps/jps-common/src/org/jetbrains/kotlin/arguments/CompilerArgumentsDeserializer.kt
@@ -5,8 +5,8 @@
import org.jdom.Text
import org.jetbrains.kotlin.cli.common.arguments.ArgumentParseErrors
import org.jetbrains.kotlin.cli.common.arguments.CommonToolArguments
-import org.jetbrains.kotlin.cli.common.arguments.InternalArgument
import org.jetbrains.kotlin.cli.common.arguments.LanguageSettingsParser
+import org.jetbrains.kotlin.cli.common.arguments.ManualLanguageFeatureSetting
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
import java.io.File
import kotlin.reflect.KMutableProperty1
@@ -48,7 +48,7 @@
val internalArguments = readElementsList(element, INTERNAL_ARGS_ROOT_ELEMENTS_NAME, INTERNAL_ARGS_ELEMENT_NAME)
.mapNotNull { parseInternalArgument(it) }
- CompilerArgumentsContentProspector.internalArgumentsProperty.safeAs<KMutableProperty1<T, List<InternalArgument>>>()
+ CompilerArgumentsContentProspector.internalArgumentsProperty.safeAs<KMutableProperty1<T, List<ManualLanguageFeatureSetting>>>()
?.set(compilerArguments, internalArguments)
}
@@ -101,9 +101,9 @@
}
}
- private fun parseInternalArgument(argument: String): InternalArgument? {
- val parser = LanguageSettingsParser()
+ private fun parseInternalArgument(argument: String): ManualLanguageFeatureSetting? {
+ val parser = LanguageSettingsParser
return parser.parseInternalArgument(argument, ArgumentParseErrors())
}
}
-}
\ No newline at end of file
+}
diff --git a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/AbstractIncrementalJpsTest.kt b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/AbstractIncrementalJpsTest.kt
index e1b1776..24d7426 100644
--- a/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/AbstractIncrementalJpsTest.kt
+++ b/jps/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/build/AbstractIncrementalJpsTest.kt
@@ -159,7 +159,8 @@
private fun build(
name: String?,
- scope: CompileScopeTestBuilder = CompileScopeTestBuilder.make().allModules()
+ needUpdateArguments: Boolean,
+ scope: CompileScopeTestBuilder = CompileScopeTestBuilder.make().allModules(),
): MakeResult {
val workDirPath = FileUtil.toSystemIndependentName(workDir.absolutePath)
@@ -181,8 +182,10 @@
val buildResult = BuildResult()
builder.addMessageHandler(buildResult)
val finalScope = scope.build()
- projectDescriptor.project.kotlinCommonCompilerArguments = projectDescriptor.project.kotlinCommonCompilerArguments.apply {
- updateCommandLineArguments(this)
+ if (needUpdateArguments) {
+ projectDescriptor.project.kotlinCommonCompilerArguments = projectDescriptor.project.kotlinCommonCompilerArguments.apply {
+ updateCommandLineArguments(this)
+ }
}
builder.build(finalScope, false)
@@ -220,7 +223,7 @@
}
private fun initialMake(): MakeResult {
- val makeResult = build(null)
+ val makeResult = build(null, needUpdateArguments = true)
val initBuildLogFile = File(testDataDir, "init-build.log")
if (initBuildLogFile.exists()) {
@@ -232,12 +235,12 @@
return makeResult
}
- private fun make(name: String?): MakeResult {
- return build(name)
+ private fun incrementallyMake(name: String?): MakeResult {
+ return build(name, needUpdateArguments = false)
}
private fun rebuild(): MakeResult {
- return build(null, CompileScopeTestBuilder.rebuild().allModules())
+ return build(null, needUpdateArguments = true, CompileScopeTestBuilder.rebuild().allModules())
}
protected open fun updateCommandLineArguments(arguments: CommonCompilerArguments) {
@@ -394,7 +397,7 @@
}
val name = modificationNames?.getOrNull(index)
- val makeResult = make(name)
+ val makeResult = incrementallyMake(name)
results.add(makeResult)
}
return results
diff --git a/js/js.tests/klib-compatibility/tests-gen/org/jetbrains/kotlin/js/test/klib/CustomJsCompilerFirstPhaseTestGenerated.java b/js/js.tests/klib-compatibility/tests-gen/org/jetbrains/kotlin/js/test/klib/CustomJsCompilerFirstPhaseTestGenerated.java
index 8428b52..8a76045 100644
--- a/js/js.tests/klib-compatibility/tests-gen/org/jetbrains/kotlin/js/test/klib/CustomJsCompilerFirstPhaseTestGenerated.java
+++ b/js/js.tests/klib-compatibility/tests-gen/org/jetbrains/kotlin/js/test/klib/CustomJsCompilerFirstPhaseTestGenerated.java
@@ -554,6 +554,18 @@
}
@Test
+ @TestMetadata("annotationAnnotationParam.kt")
+ public void testAnnotationAnnotationParam() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+ }
+
+ @Test
+ @TestMetadata("annotationAnyDispatch.kt")
+ public void testAnnotationAnyDispatch() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+ }
+
+ @Test
@TestMetadata("annotationEnclosingName.kt")
public void testAnnotationEnclosingName() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -572,6 +584,12 @@
}
@Test
+ @TestMetadata("annotationInlineMultiModule.kt")
+ public void testAnnotationInlineMultiModule() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+ }
+
+ @Test
@TestMetadata("annotationInstances.kt")
public void testAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -608,6 +626,12 @@
}
@Test
+ @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+ public void testAnnotationToStringDefaultsAndEmptyArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+ }
+
+ @Test
@TestMetadata("annotationType.kt")
public void testAnnotationType() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -632,6 +656,42 @@
}
@Test
+ @TestMetadata("arrayContentEqAny.kt")
+ public void testArrayContentEqAny() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+ }
+
+ @Test
+ @TestMetadata("arraysAndKClass.kt")
+ public void testArraysAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("differentAnnotationTypes.kt")
+ public void testDifferentAnnotationTypes() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+ }
+
+ @Test
+ @TestMetadata("differentOrder.kt")
+ public void testDifferentOrder() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+ }
+
+ @Test
+ @TestMetadata("enumAndKClass.kt")
+ public void testEnumAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("enumArray.kt")
+ public void testEnumArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+ }
+
+ @Test
@TestMetadata("inInlineFunction.kt")
public void testInInlineFunction() {
runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -644,6 +704,12 @@
}
@Test
+ @TestMetadata("instanceEquality.kt")
+ public void testInstanceEquality() {
+ runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+ }
+
+ @Test
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() {
runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -668,6 +734,12 @@
}
@Test
+ @TestMetadata("mixedArray.kt")
+ public void testMixedArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+ }
+
+ @Test
@TestMetadata("multifileEqHc.kt")
public void testMultifileEqHc() {
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -698,22 +770,64 @@
}
@Test
+ @TestMetadata("naNAndZero.kt")
+ public void testNaNAndZero() {
+ runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+ }
+
+ @Test
+ @TestMetadata("nested.kt")
+ public void testNested() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+ }
+
+ @Test
@TestMetadata("nestedAnnotationInstances.kt")
public void testNestedAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
}
@Test
+ @TestMetadata("nestedDefaults.kt")
+ public void testNestedDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+ }
+
+ @Test
@TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
public void testRearrangedArgumentsInAnnotationCall() {
runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
}
@Test
+ @TestMetadata("repeatableInstantiation.kt")
+ public void testRepeatableInstantiation() {
+ runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+ }
+
+ @Test
+ @TestMetadata("typeAliasesAndGenericsInterop.kt")
+ public void testTypeAliasesAndGenericsInterop() {
+ runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+ }
+
+ @Test
+ @TestMetadata("unsignedAndBooleanArrays.kt")
+ public void testUnsignedAndBooleanArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+ }
+
+ @Test
@TestMetadata("varargInAnnotationParameterInstantiation.kt")
public void testVarargInAnnotationParameterInstantiation() {
runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
}
+
+ @Test
+ @TestMetadata("withDefaults.kt")
+ public void testWithDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+ }
}
@Nested
diff --git a/js/js.tests/klib-compatibility/tests-gen/org/jetbrains/kotlin/js/test/klib/CustomJsCompilerSecondPhaseTestGenerated.java b/js/js.tests/klib-compatibility/tests-gen/org/jetbrains/kotlin/js/test/klib/CustomJsCompilerSecondPhaseTestGenerated.java
index 3b16bd1..67cee79 100644
--- a/js/js.tests/klib-compatibility/tests-gen/org/jetbrains/kotlin/js/test/klib/CustomJsCompilerSecondPhaseTestGenerated.java
+++ b/js/js.tests/klib-compatibility/tests-gen/org/jetbrains/kotlin/js/test/klib/CustomJsCompilerSecondPhaseTestGenerated.java
@@ -554,6 +554,18 @@
}
@Test
+ @TestMetadata("annotationAnnotationParam.kt")
+ public void testAnnotationAnnotationParam() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+ }
+
+ @Test
+ @TestMetadata("annotationAnyDispatch.kt")
+ public void testAnnotationAnyDispatch() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+ }
+
+ @Test
@TestMetadata("annotationEnclosingName.kt")
public void testAnnotationEnclosingName() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -572,6 +584,12 @@
}
@Test
+ @TestMetadata("annotationInlineMultiModule.kt")
+ public void testAnnotationInlineMultiModule() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+ }
+
+ @Test
@TestMetadata("annotationInstances.kt")
public void testAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -608,6 +626,12 @@
}
@Test
+ @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+ public void testAnnotationToStringDefaultsAndEmptyArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+ }
+
+ @Test
@TestMetadata("annotationType.kt")
public void testAnnotationType() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -632,6 +656,42 @@
}
@Test
+ @TestMetadata("arrayContentEqAny.kt")
+ public void testArrayContentEqAny() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+ }
+
+ @Test
+ @TestMetadata("arraysAndKClass.kt")
+ public void testArraysAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("differentAnnotationTypes.kt")
+ public void testDifferentAnnotationTypes() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+ }
+
+ @Test
+ @TestMetadata("differentOrder.kt")
+ public void testDifferentOrder() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+ }
+
+ @Test
+ @TestMetadata("enumAndKClass.kt")
+ public void testEnumAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("enumArray.kt")
+ public void testEnumArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+ }
+
+ @Test
@TestMetadata("inInlineFunction.kt")
public void testInInlineFunction() {
runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -644,6 +704,12 @@
}
@Test
+ @TestMetadata("instanceEquality.kt")
+ public void testInstanceEquality() {
+ runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+ }
+
+ @Test
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() {
runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -668,6 +734,12 @@
}
@Test
+ @TestMetadata("mixedArray.kt")
+ public void testMixedArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+ }
+
+ @Test
@TestMetadata("multifileEqHc.kt")
public void testMultifileEqHc() {
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -698,22 +770,64 @@
}
@Test
+ @TestMetadata("naNAndZero.kt")
+ public void testNaNAndZero() {
+ runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+ }
+
+ @Test
+ @TestMetadata("nested.kt")
+ public void testNested() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+ }
+
+ @Test
@TestMetadata("nestedAnnotationInstances.kt")
public void testNestedAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
}
@Test
+ @TestMetadata("nestedDefaults.kt")
+ public void testNestedDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+ }
+
+ @Test
@TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
public void testRearrangedArgumentsInAnnotationCall() {
runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
}
@Test
+ @TestMetadata("repeatableInstantiation.kt")
+ public void testRepeatableInstantiation() {
+ runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+ }
+
+ @Test
+ @TestMetadata("typeAliasesAndGenericsInterop.kt")
+ public void testTypeAliasesAndGenericsInterop() {
+ runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+ }
+
+ @Test
+ @TestMetadata("unsignedAndBooleanArrays.kt")
+ public void testUnsignedAndBooleanArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+ }
+
+ @Test
@TestMetadata("varargInAnnotationParameterInstantiation.kt")
public void testVarargInAnnotationParameterInstantiation() {
runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
}
+
+ @Test
+ @TestMetadata("withDefaults.kt")
+ public void testWithDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+ }
}
@Nested
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java
index 3908751..d90a55a 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java
@@ -546,6 +546,18 @@
}
@Test
+ @TestMetadata("annotationAnnotationParam.kt")
+ public void testAnnotationAnnotationParam() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+ }
+
+ @Test
+ @TestMetadata("annotationAnyDispatch.kt")
+ public void testAnnotationAnyDispatch() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+ }
+
+ @Test
@TestMetadata("annotationEnclosingName.kt")
public void testAnnotationEnclosingName() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -564,6 +576,12 @@
}
@Test
+ @TestMetadata("annotationInlineMultiModule.kt")
+ public void testAnnotationInlineMultiModule() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+ }
+
+ @Test
@TestMetadata("annotationInstances.kt")
public void testAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -600,6 +618,12 @@
}
@Test
+ @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+ public void testAnnotationToStringDefaultsAndEmptyArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+ }
+
+ @Test
@TestMetadata("annotationType.kt")
public void testAnnotationType() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -624,6 +648,42 @@
}
@Test
+ @TestMetadata("arrayContentEqAny.kt")
+ public void testArrayContentEqAny() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+ }
+
+ @Test
+ @TestMetadata("arraysAndKClass.kt")
+ public void testArraysAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("differentAnnotationTypes.kt")
+ public void testDifferentAnnotationTypes() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+ }
+
+ @Test
+ @TestMetadata("differentOrder.kt")
+ public void testDifferentOrder() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+ }
+
+ @Test
+ @TestMetadata("enumAndKClass.kt")
+ public void testEnumAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("enumArray.kt")
+ public void testEnumArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+ }
+
+ @Test
@TestMetadata("inInlineFunction.kt")
public void testInInlineFunction() {
runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -636,6 +696,12 @@
}
@Test
+ @TestMetadata("instanceEquality.kt")
+ public void testInstanceEquality() {
+ runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+ }
+
+ @Test
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() {
runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -660,6 +726,12 @@
}
@Test
+ @TestMetadata("mixedArray.kt")
+ public void testMixedArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+ }
+
+ @Test
@TestMetadata("multifileEqHc.kt")
public void testMultifileEqHc() {
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -690,22 +762,64 @@
}
@Test
+ @TestMetadata("naNAndZero.kt")
+ public void testNaNAndZero() {
+ runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+ }
+
+ @Test
+ @TestMetadata("nested.kt")
+ public void testNested() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+ }
+
+ @Test
@TestMetadata("nestedAnnotationInstances.kt")
public void testNestedAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
}
@Test
+ @TestMetadata("nestedDefaults.kt")
+ public void testNestedDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+ }
+
+ @Test
@TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
public void testRearrangedArgumentsInAnnotationCall() {
runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
}
@Test
+ @TestMetadata("repeatableInstantiation.kt")
+ public void testRepeatableInstantiation() {
+ runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+ }
+
+ @Test
+ @TestMetadata("typeAliasesAndGenericsInterop.kt")
+ public void testTypeAliasesAndGenericsInterop() {
+ runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+ }
+
+ @Test
+ @TestMetadata("unsignedAndBooleanArrays.kt")
+ public void testUnsignedAndBooleanArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+ }
+
+ @Test
@TestMetadata("varargInAnnotationParameterInstantiation.kt")
public void testVarargInAnnotationParameterInstantiation() {
runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
}
+
+ @Test
+ @TestMetadata("withDefaults.kt")
+ public void testWithDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+ }
}
@Nested
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxWithInlinedFunInKlibTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxWithInlinedFunInKlibTestGenerated.java
index 1854cfd..e19b738 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxWithInlinedFunInKlibTestGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxWithInlinedFunInKlibTestGenerated.java
@@ -548,6 +548,18 @@
}
@Test
+ @TestMetadata("annotationAnnotationParam.kt")
+ public void testAnnotationAnnotationParam() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+ }
+
+ @Test
+ @TestMetadata("annotationAnyDispatch.kt")
+ public void testAnnotationAnyDispatch() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+ }
+
+ @Test
@TestMetadata("annotationEnclosingName.kt")
public void testAnnotationEnclosingName() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -566,6 +578,12 @@
}
@Test
+ @TestMetadata("annotationInlineMultiModule.kt")
+ public void testAnnotationInlineMultiModule() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+ }
+
+ @Test
@TestMetadata("annotationInstances.kt")
public void testAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -602,6 +620,12 @@
}
@Test
+ @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+ public void testAnnotationToStringDefaultsAndEmptyArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+ }
+
+ @Test
@TestMetadata("annotationType.kt")
public void testAnnotationType() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -626,6 +650,42 @@
}
@Test
+ @TestMetadata("arrayContentEqAny.kt")
+ public void testArrayContentEqAny() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+ }
+
+ @Test
+ @TestMetadata("arraysAndKClass.kt")
+ public void testArraysAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("differentAnnotationTypes.kt")
+ public void testDifferentAnnotationTypes() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+ }
+
+ @Test
+ @TestMetadata("differentOrder.kt")
+ public void testDifferentOrder() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+ }
+
+ @Test
+ @TestMetadata("enumAndKClass.kt")
+ public void testEnumAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("enumArray.kt")
+ public void testEnumArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+ }
+
+ @Test
@TestMetadata("inInlineFunction.kt")
public void testInInlineFunction() {
runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -638,6 +698,12 @@
}
@Test
+ @TestMetadata("instanceEquality.kt")
+ public void testInstanceEquality() {
+ runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+ }
+
+ @Test
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() {
runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -662,6 +728,12 @@
}
@Test
+ @TestMetadata("mixedArray.kt")
+ public void testMixedArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+ }
+
+ @Test
@TestMetadata("multifileEqHc.kt")
public void testMultifileEqHc() {
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -692,22 +764,64 @@
}
@Test
+ @TestMetadata("naNAndZero.kt")
+ public void testNaNAndZero() {
+ runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+ }
+
+ @Test
+ @TestMetadata("nested.kt")
+ public void testNested() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+ }
+
+ @Test
@TestMetadata("nestedAnnotationInstances.kt")
public void testNestedAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
}
@Test
+ @TestMetadata("nestedDefaults.kt")
+ public void testNestedDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+ }
+
+ @Test
@TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
public void testRearrangedArgumentsInAnnotationCall() {
runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
}
@Test
+ @TestMetadata("repeatableInstantiation.kt")
+ public void testRepeatableInstantiation() {
+ runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+ }
+
+ @Test
+ @TestMetadata("typeAliasesAndGenericsInterop.kt")
+ public void testTypeAliasesAndGenericsInterop() {
+ runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+ }
+
+ @Test
+ @TestMetadata("unsignedAndBooleanArrays.kt")
+ public void testUnsignedAndBooleanArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+ }
+
+ @Test
@TestMetadata("varargInAnnotationParameterInstantiation.kt")
public void testVarargInAnnotationParameterInstantiation() {
runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
}
+
+ @Test
+ @TestMetadata("withDefaults.kt")
+ public void testWithDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+ }
}
@Nested
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenSplittingInlineWithInlinedFunInKlibTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenSplittingInlineWithInlinedFunInKlibTestGenerated.java
index b7e1d5b..d81ea3a 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenSplittingInlineWithInlinedFunInKlibTestGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenSplittingInlineWithInlinedFunInKlibTestGenerated.java
@@ -548,6 +548,18 @@
}
@Test
+ @TestMetadata("annotationAnnotationParam.kt")
+ public void testAnnotationAnnotationParam() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+ }
+
+ @Test
+ @TestMetadata("annotationAnyDispatch.kt")
+ public void testAnnotationAnyDispatch() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+ }
+
+ @Test
@TestMetadata("annotationEnclosingName.kt")
public void testAnnotationEnclosingName() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -566,6 +578,12 @@
}
@Test
+ @TestMetadata("annotationInlineMultiModule.kt")
+ public void testAnnotationInlineMultiModule() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+ }
+
+ @Test
@TestMetadata("annotationInstances.kt")
public void testAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -602,6 +620,12 @@
}
@Test
+ @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+ public void testAnnotationToStringDefaultsAndEmptyArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+ }
+
+ @Test
@TestMetadata("annotationType.kt")
public void testAnnotationType() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -626,6 +650,42 @@
}
@Test
+ @TestMetadata("arrayContentEqAny.kt")
+ public void testArrayContentEqAny() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+ }
+
+ @Test
+ @TestMetadata("arraysAndKClass.kt")
+ public void testArraysAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("differentAnnotationTypes.kt")
+ public void testDifferentAnnotationTypes() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+ }
+
+ @Test
+ @TestMetadata("differentOrder.kt")
+ public void testDifferentOrder() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+ }
+
+ @Test
+ @TestMetadata("enumAndKClass.kt")
+ public void testEnumAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("enumArray.kt")
+ public void testEnumArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+ }
+
+ @Test
@TestMetadata("inInlineFunction.kt")
public void testInInlineFunction() {
runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -638,6 +698,12 @@
}
@Test
+ @TestMetadata("instanceEquality.kt")
+ public void testInstanceEquality() {
+ runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+ }
+
+ @Test
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() {
runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -662,6 +728,12 @@
}
@Test
+ @TestMetadata("mixedArray.kt")
+ public void testMixedArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+ }
+
+ @Test
@TestMetadata("multifileEqHc.kt")
public void testMultifileEqHc() {
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -692,22 +764,64 @@
}
@Test
+ @TestMetadata("naNAndZero.kt")
+ public void testNaNAndZero() {
+ runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+ }
+
+ @Test
+ @TestMetadata("nested.kt")
+ public void testNested() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+ }
+
+ @Test
@TestMetadata("nestedAnnotationInstances.kt")
public void testNestedAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
}
@Test
+ @TestMetadata("nestedDefaults.kt")
+ public void testNestedDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+ }
+
+ @Test
@TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
public void testRearrangedArgumentsInAnnotationCall() {
runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
}
@Test
+ @TestMetadata("repeatableInstantiation.kt")
+ public void testRepeatableInstantiation() {
+ runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+ }
+
+ @Test
+ @TestMetadata("typeAliasesAndGenericsInterop.kt")
+ public void testTypeAliasesAndGenericsInterop() {
+ runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+ }
+
+ @Test
+ @TestMetadata("unsignedAndBooleanArrays.kt")
+ public void testUnsignedAndBooleanArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+ }
+
+ @Test
@TestMetadata("varargInAnnotationParameterInstantiation.kt")
public void testVarargInAnnotationParameterInstantiation() {
runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
}
+
+ @Test
+ @TestMetadata("withDefaults.kt")
+ public void testWithDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+ }
}
@Nested
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6CodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6CodegenBoxTestGenerated.java
index fb435d8..5feb088 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6CodegenBoxTestGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6CodegenBoxTestGenerated.java
@@ -551,6 +551,18 @@
}
@Test
+ @TestMetadata("annotationAnnotationParam.kt")
+ public void testAnnotationAnnotationParam() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+ }
+
+ @Test
+ @TestMetadata("annotationAnyDispatch.kt")
+ public void testAnnotationAnyDispatch() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+ }
+
+ @Test
@TestMetadata("annotationEnclosingName.kt")
public void testAnnotationEnclosingName() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -569,6 +581,12 @@
}
@Test
+ @TestMetadata("annotationInlineMultiModule.kt")
+ public void testAnnotationInlineMultiModule() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+ }
+
+ @Test
@TestMetadata("annotationInstances.kt")
public void testAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -605,6 +623,12 @@
}
@Test
+ @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+ public void testAnnotationToStringDefaultsAndEmptyArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+ }
+
+ @Test
@TestMetadata("annotationType.kt")
public void testAnnotationType() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -629,6 +653,42 @@
}
@Test
+ @TestMetadata("arrayContentEqAny.kt")
+ public void testArrayContentEqAny() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+ }
+
+ @Test
+ @TestMetadata("arraysAndKClass.kt")
+ public void testArraysAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("differentAnnotationTypes.kt")
+ public void testDifferentAnnotationTypes() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+ }
+
+ @Test
+ @TestMetadata("differentOrder.kt")
+ public void testDifferentOrder() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+ }
+
+ @Test
+ @TestMetadata("enumAndKClass.kt")
+ public void testEnumAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("enumArray.kt")
+ public void testEnumArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+ }
+
+ @Test
@TestMetadata("inInlineFunction.kt")
public void testInInlineFunction() {
runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -641,6 +701,12 @@
}
@Test
+ @TestMetadata("instanceEquality.kt")
+ public void testInstanceEquality() {
+ runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+ }
+
+ @Test
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() {
runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -665,6 +731,12 @@
}
@Test
+ @TestMetadata("mixedArray.kt")
+ public void testMixedArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+ }
+
+ @Test
@TestMetadata("multifileEqHc.kt")
public void testMultifileEqHc() {
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -695,22 +767,64 @@
}
@Test
+ @TestMetadata("naNAndZero.kt")
+ public void testNaNAndZero() {
+ runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+ }
+
+ @Test
+ @TestMetadata("nested.kt")
+ public void testNested() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+ }
+
+ @Test
@TestMetadata("nestedAnnotationInstances.kt")
public void testNestedAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
}
@Test
+ @TestMetadata("nestedDefaults.kt")
+ public void testNestedDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+ }
+
+ @Test
@TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
public void testRearrangedArgumentsInAnnotationCall() {
runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
}
@Test
+ @TestMetadata("repeatableInstantiation.kt")
+ public void testRepeatableInstantiation() {
+ runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+ }
+
+ @Test
+ @TestMetadata("typeAliasesAndGenericsInterop.kt")
+ public void testTypeAliasesAndGenericsInterop() {
+ runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+ }
+
+ @Test
+ @TestMetadata("unsignedAndBooleanArrays.kt")
+ public void testUnsignedAndBooleanArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+ }
+
+ @Test
@TestMetadata("varargInAnnotationParameterInstantiation.kt")
public void testVarargInAnnotationParameterInstantiation() {
runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
}
+
+ @Test
+ @TestMetadata("withDefaults.kt")
+ public void testWithDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+ }
}
@Nested
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java
index bb5c9a5..75f3f4b 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java
@@ -551,6 +551,18 @@
}
@Test
+ @TestMetadata("annotationAnnotationParam.kt")
+ public void testAnnotationAnnotationParam() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+ }
+
+ @Test
+ @TestMetadata("annotationAnyDispatch.kt")
+ public void testAnnotationAnyDispatch() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+ }
+
+ @Test
@TestMetadata("annotationEnclosingName.kt")
public void testAnnotationEnclosingName() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -569,6 +581,12 @@
}
@Test
+ @TestMetadata("annotationInlineMultiModule.kt")
+ public void testAnnotationInlineMultiModule() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+ }
+
+ @Test
@TestMetadata("annotationInstances.kt")
public void testAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -605,6 +623,12 @@
}
@Test
+ @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+ public void testAnnotationToStringDefaultsAndEmptyArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+ }
+
+ @Test
@TestMetadata("annotationType.kt")
public void testAnnotationType() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -629,6 +653,42 @@
}
@Test
+ @TestMetadata("arrayContentEqAny.kt")
+ public void testArrayContentEqAny() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+ }
+
+ @Test
+ @TestMetadata("arraysAndKClass.kt")
+ public void testArraysAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("differentAnnotationTypes.kt")
+ public void testDifferentAnnotationTypes() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+ }
+
+ @Test
+ @TestMetadata("differentOrder.kt")
+ public void testDifferentOrder() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+ }
+
+ @Test
+ @TestMetadata("enumAndKClass.kt")
+ public void testEnumAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("enumArray.kt")
+ public void testEnumArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+ }
+
+ @Test
@TestMetadata("inInlineFunction.kt")
public void testInInlineFunction() {
runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -641,6 +701,12 @@
}
@Test
+ @TestMetadata("instanceEquality.kt")
+ public void testInstanceEquality() {
+ runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+ }
+
+ @Test
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() {
runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -665,6 +731,12 @@
}
@Test
+ @TestMetadata("mixedArray.kt")
+ public void testMixedArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+ }
+
+ @Test
@TestMetadata("multifileEqHc.kt")
public void testMultifileEqHc() {
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -695,22 +767,64 @@
}
@Test
+ @TestMetadata("naNAndZero.kt")
+ public void testNaNAndZero() {
+ runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+ }
+
+ @Test
+ @TestMetadata("nested.kt")
+ public void testNested() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+ }
+
+ @Test
@TestMetadata("nestedAnnotationInstances.kt")
public void testNestedAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
}
@Test
+ @TestMetadata("nestedDefaults.kt")
+ public void testNestedDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+ }
+
+ @Test
@TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
public void testRearrangedArgumentsInAnnotationCall() {
runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
}
@Test
+ @TestMetadata("repeatableInstantiation.kt")
+ public void testRepeatableInstantiation() {
+ runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+ }
+
+ @Test
+ @TestMetadata("typeAliasesAndGenericsInterop.kt")
+ public void testTypeAliasesAndGenericsInterop() {
+ runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+ }
+
+ @Test
+ @TestMetadata("unsignedAndBooleanArrays.kt")
+ public void testUnsignedAndBooleanArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+ }
+
+ @Test
@TestMetadata("varargInAnnotationParameterInstantiation.kt")
public void testVarargInAnnotationParameterInstantiation() {
runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
}
+
+ @Test
+ @TestMetadata("withDefaults.kt")
+ public void testWithDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+ }
}
@Nested
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java
index 3f83b9a..1776ccc 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java
@@ -555,6 +555,18 @@
}
@Test
+ @TestMetadata("annotationAnnotationParam.kt")
+ public void testAnnotationAnnotationParam() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+ }
+
+ @Test
+ @TestMetadata("annotationAnyDispatch.kt")
+ public void testAnnotationAnyDispatch() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+ }
+
+ @Test
@TestMetadata("annotationEnclosingName.kt")
public void testAnnotationEnclosingName() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -573,6 +585,12 @@
}
@Test
+ @TestMetadata("annotationInlineMultiModule.kt")
+ public void testAnnotationInlineMultiModule() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+ }
+
+ @Test
@TestMetadata("annotationInstances.kt")
public void testAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -609,6 +627,12 @@
}
@Test
+ @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+ public void testAnnotationToStringDefaultsAndEmptyArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+ }
+
+ @Test
@TestMetadata("annotationType.kt")
public void testAnnotationType() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -633,6 +657,42 @@
}
@Test
+ @TestMetadata("arrayContentEqAny.kt")
+ public void testArrayContentEqAny() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+ }
+
+ @Test
+ @TestMetadata("arraysAndKClass.kt")
+ public void testArraysAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("differentAnnotationTypes.kt")
+ public void testDifferentAnnotationTypes() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+ }
+
+ @Test
+ @TestMetadata("differentOrder.kt")
+ public void testDifferentOrder() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+ }
+
+ @Test
+ @TestMetadata("enumAndKClass.kt")
+ public void testEnumAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("enumArray.kt")
+ public void testEnumArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+ }
+
+ @Test
@TestMetadata("inInlineFunction.kt")
public void testInInlineFunction() {
runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -645,6 +705,12 @@
}
@Test
+ @TestMetadata("instanceEquality.kt")
+ public void testInstanceEquality() {
+ runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+ }
+
+ @Test
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() {
runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -669,6 +735,12 @@
}
@Test
+ @TestMetadata("mixedArray.kt")
+ public void testMixedArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+ }
+
+ @Test
@TestMetadata("multifileEqHc.kt")
public void testMultifileEqHc() {
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -699,22 +771,64 @@
}
@Test
+ @TestMetadata("naNAndZero.kt")
+ public void testNaNAndZero() {
+ runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+ }
+
+ @Test
+ @TestMetadata("nested.kt")
+ public void testNested() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+ }
+
+ @Test
@TestMetadata("nestedAnnotationInstances.kt")
public void testNestedAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
}
@Test
+ @TestMetadata("nestedDefaults.kt")
+ public void testNestedDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+ }
+
+ @Test
@TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
public void testRearrangedArgumentsInAnnotationCall() {
runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
}
@Test
+ @TestMetadata("repeatableInstantiation.kt")
+ public void testRepeatableInstantiation() {
+ runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+ }
+
+ @Test
+ @TestMetadata("typeAliasesAndGenericsInterop.kt")
+ public void testTypeAliasesAndGenericsInterop() {
+ runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+ }
+
+ @Test
+ @TestMetadata("unsignedAndBooleanArrays.kt")
+ public void testUnsignedAndBooleanArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+ }
+
+ @Test
@TestMetadata("varargInAnnotationParameterInstantiation.kt")
public void testVarargInAnnotationParameterInstantiation() {
runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
}
+
+ @Test
+ @TestMetadata("withDefaults.kt")
+ public void testWithDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+ }
}
@Nested
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/JsIrDeserializationCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/JsIrDeserializationCodegenBoxTestGenerated.java
index b5a6b4b..1cb8f4e 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/JsIrDeserializationCodegenBoxTestGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/JsIrDeserializationCodegenBoxTestGenerated.java
@@ -548,6 +548,18 @@
}
@Test
+ @TestMetadata("annotationAnnotationParam.kt")
+ public void testAnnotationAnnotationParam() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+ }
+
+ @Test
+ @TestMetadata("annotationAnyDispatch.kt")
+ public void testAnnotationAnyDispatch() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+ }
+
+ @Test
@TestMetadata("annotationEnclosingName.kt")
public void testAnnotationEnclosingName() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -566,6 +578,12 @@
}
@Test
+ @TestMetadata("annotationInlineMultiModule.kt")
+ public void testAnnotationInlineMultiModule() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+ }
+
+ @Test
@TestMetadata("annotationInstances.kt")
public void testAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -602,6 +620,12 @@
}
@Test
+ @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+ public void testAnnotationToStringDefaultsAndEmptyArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+ }
+
+ @Test
@TestMetadata("annotationType.kt")
public void testAnnotationType() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -626,6 +650,42 @@
}
@Test
+ @TestMetadata("arrayContentEqAny.kt")
+ public void testArrayContentEqAny() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+ }
+
+ @Test
+ @TestMetadata("arraysAndKClass.kt")
+ public void testArraysAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("differentAnnotationTypes.kt")
+ public void testDifferentAnnotationTypes() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+ }
+
+ @Test
+ @TestMetadata("differentOrder.kt")
+ public void testDifferentOrder() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+ }
+
+ @Test
+ @TestMetadata("enumAndKClass.kt")
+ public void testEnumAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("enumArray.kt")
+ public void testEnumArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+ }
+
+ @Test
@TestMetadata("inInlineFunction.kt")
public void testInInlineFunction() {
runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -638,6 +698,12 @@
}
@Test
+ @TestMetadata("instanceEquality.kt")
+ public void testInstanceEquality() {
+ runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+ }
+
+ @Test
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() {
runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -662,6 +728,12 @@
}
@Test
+ @TestMetadata("mixedArray.kt")
+ public void testMixedArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+ }
+
+ @Test
@TestMetadata("multifileEqHc.kt")
public void testMultifileEqHc() {
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -692,22 +764,64 @@
}
@Test
+ @TestMetadata("naNAndZero.kt")
+ public void testNaNAndZero() {
+ runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+ }
+
+ @Test
+ @TestMetadata("nested.kt")
+ public void testNested() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+ }
+
+ @Test
@TestMetadata("nestedAnnotationInstances.kt")
public void testNestedAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
}
@Test
+ @TestMetadata("nestedDefaults.kt")
+ public void testNestedDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+ }
+
+ @Test
@TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
public void testRearrangedArgumentsInAnnotationCall() {
runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
}
@Test
+ @TestMetadata("repeatableInstantiation.kt")
+ public void testRepeatableInstantiation() {
+ runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+ }
+
+ @Test
+ @TestMetadata("typeAliasesAndGenericsInterop.kt")
+ public void testTypeAliasesAndGenericsInterop() {
+ runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+ }
+
+ @Test
+ @TestMetadata("unsignedAndBooleanArrays.kt")
+ public void testUnsignedAndBooleanArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+ }
+
+ @Test
@TestMetadata("varargInAnnotationParameterInstantiation.kt")
public void testVarargInAnnotationParameterInstantiation() {
runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
}
+
+ @Test
+ @TestMetadata("withDefaults.kt")
+ public void testWithDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+ }
}
@Nested
diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/JsIrDeserializationCodegenBoxWithInlinedFunInKlibTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/JsIrDeserializationCodegenBoxWithInlinedFunInKlibTestGenerated.java
index 9fca1f4..abb0047 100644
--- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/JsIrDeserializationCodegenBoxWithInlinedFunInKlibTestGenerated.java
+++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/JsIrDeserializationCodegenBoxWithInlinedFunInKlibTestGenerated.java
@@ -548,6 +548,18 @@
}
@Test
+ @TestMetadata("annotationAnnotationParam.kt")
+ public void testAnnotationAnnotationParam() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+ }
+
+ @Test
+ @TestMetadata("annotationAnyDispatch.kt")
+ public void testAnnotationAnyDispatch() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+ }
+
+ @Test
@TestMetadata("annotationEnclosingName.kt")
public void testAnnotationEnclosingName() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -566,6 +578,12 @@
}
@Test
+ @TestMetadata("annotationInlineMultiModule.kt")
+ public void testAnnotationInlineMultiModule() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+ }
+
+ @Test
@TestMetadata("annotationInstances.kt")
public void testAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -602,6 +620,12 @@
}
@Test
+ @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+ public void testAnnotationToStringDefaultsAndEmptyArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+ }
+
+ @Test
@TestMetadata("annotationType.kt")
public void testAnnotationType() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -626,6 +650,42 @@
}
@Test
+ @TestMetadata("arrayContentEqAny.kt")
+ public void testArrayContentEqAny() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+ }
+
+ @Test
+ @TestMetadata("arraysAndKClass.kt")
+ public void testArraysAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("differentAnnotationTypes.kt")
+ public void testDifferentAnnotationTypes() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+ }
+
+ @Test
+ @TestMetadata("differentOrder.kt")
+ public void testDifferentOrder() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+ }
+
+ @Test
+ @TestMetadata("enumAndKClass.kt")
+ public void testEnumAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("enumArray.kt")
+ public void testEnumArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+ }
+
+ @Test
@TestMetadata("inInlineFunction.kt")
public void testInInlineFunction() {
runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -638,6 +698,12 @@
}
@Test
+ @TestMetadata("instanceEquality.kt")
+ public void testInstanceEquality() {
+ runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+ }
+
+ @Test
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() {
runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -662,6 +728,12 @@
}
@Test
+ @TestMetadata("mixedArray.kt")
+ public void testMixedArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+ }
+
+ @Test
@TestMetadata("multifileEqHc.kt")
public void testMultifileEqHc() {
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -692,22 +764,64 @@
}
@Test
+ @TestMetadata("naNAndZero.kt")
+ public void testNaNAndZero() {
+ runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+ }
+
+ @Test
+ @TestMetadata("nested.kt")
+ public void testNested() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+ }
+
+ @Test
@TestMetadata("nestedAnnotationInstances.kt")
public void testNestedAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
}
@Test
+ @TestMetadata("nestedDefaults.kt")
+ public void testNestedDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+ }
+
+ @Test
@TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
public void testRearrangedArgumentsInAnnotationCall() {
runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
}
@Test
+ @TestMetadata("repeatableInstantiation.kt")
+ public void testRepeatableInstantiation() {
+ runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+ }
+
+ @Test
+ @TestMetadata("typeAliasesAndGenericsInterop.kt")
+ public void testTypeAliasesAndGenericsInterop() {
+ runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+ }
+
+ @Test
+ @TestMetadata("unsignedAndBooleanArrays.kt")
+ public void testUnsignedAndBooleanArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+ }
+
+ @Test
@TestMetadata("varargInAnnotationParameterInstantiation.kt")
public void testVarargInAnnotationParameterInstantiation() {
runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
}
+
+ @Test
+ @TestMetadata("withDefaults.kt")
+ public void testWithDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+ }
}
@Nested
diff --git a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmDeclarations.kt b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmDeclarations.kt
index 346b0f8..5d85b13 100644
--- a/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmDeclarations.kt
+++ b/kotlin-native/backend.native/compiler/ir/backend.native/src/org/jetbrains/kotlin/backend/konan/llvm/LlvmDeclarations.kt
@@ -295,7 +295,16 @@
LLVMArrayType(llvm.int8PtrType, context.getLayoutBuilder(declaration).vtableEntries.size)!!
)
- typeInfoGlobal = staticData.createGlobal(typeInfoWithVtableType, typeInfoSymbolName, declaration.isExported())
+ typeInfoGlobal = staticData.createGlobal(
+ typeInfoWithVtableType, typeInfoSymbolName,
+ declaration.isExported()
+ // This is required because internal inline functions can access private classes.
+ // So, in the generated code, the class type info can be accessed outside the file.
+ // With per-file caches involved, this can mean accessing from a different object file.
+ // Therefore, the class type info has to have external linkage in that case.
+ // Hopefully, this can be removed after fixing KT-69666.
+ || context.config.producePerFileCache && declaration.isConstructedFromExportedInlineFunctions
+ )
// Other LLVM modules might import this global as a TypeInfo global.
// This works only if there is no gap between the beginning of the global and the TypeInfo part,
@@ -304,20 +313,6 @@
val typeInfoOffsetInGlobal = LLVMOffsetOfElement(llvmTargetData, typeInfoWithVtableType, 0)
check(typeInfoOffsetInGlobal == 0L) { "Offset for $typeInfoSymbolName TypeInfo is $typeInfoOffsetInGlobal" }
- if (context.config.producePerFileCache && declaration.isConstructedFromExportedInlineFunctions) {
- // This is required because internal inline functions can access private classes.
- // So, in the generated code, the class type info can be accessed outside the file.
- // With per-file caches involved, this can mean accessing from a different object file.
- // Therefore, the class type info has to have external linkage in that case.
- // Check e.g. `nestedInPrivateClass2.kt` test (it should fail if you remove setting linkage to external).
- //
- // This case should be reflected in the `isExported` parameter of `createGlobal` above, instead of
- // patching the linkage ad hoc.
- // The problem is: such globals in fact can have clashing names, which makes createGlobal fail.
- // See https://youtrack.jetbrains.com/issue/KT-61428.
- typeInfoGlobal.setLinkage(LLVMLinkage.LLVMExternalLinkage)
- }
-
typeInfoPtr = typeInfoGlobal.pointer.getElementPtr(llvm, typeInfoWithVtableType, 0)
} else {
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/AppleFrameworkIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/AppleFrameworkIT.kt
index 6c46c38..4f643e8 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/AppleFrameworkIT.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/AppleFrameworkIT.kt
@@ -574,12 +574,13 @@
}
@DisplayName("Smoke test with apple gradle plugin")
+ // AppleGradle plugin is not supported by Gradle 9.0+ due to Project.exec use
+ @GradleTestVersions(maxVersion = TestVersions.Gradle.G_8_14)
@GradleTest
fun smokeTestWithAppleGradlePlugin(gradleVersion: GradleVersion) {
nativeProject(
"appleGradlePluginConsumesAppleFrameworks",
gradleVersion,
- buildJdk = jdk11Info.javaHome,
buildOptions = defaultBuildOptions.copy(
// Apple plugin doesn't support configuration cache
configurationCache = BuildOptions.ConfigurationCacheValue.DISABLED,
@@ -609,7 +610,7 @@
}
build(*dependencyInsight("iosAppIosX64ReleaseImplementation0"), "-PmultipleFrameworks") {
- assertOutputDoesNotContain("mainStaticReleaseFrameworkIos")
+ assertOutputContains("Could not resolve project :iosLib")
}
}
}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/consumableAppleFrameworks/consumer/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/consumableAppleFrameworks/consumer/build.gradle.kts
index e52c3ae..8d154f0 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/consumableAppleFrameworks/consumer/build.gradle.kts
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/consumableAppleFrameworks/consumer/build.gradle.kts
@@ -31,7 +31,7 @@
isCanBeResolved = true
attributes {
attribute(KotlinPlatformType.attribute, KotlinPlatformType.native)
- attribute(ArtifactAttributes.ARTIFACT_FORMAT, FRAMEWORK)
+ attribute(ArtifactTypeDefinition.ARTIFACT_TYPE_ATTRIBUTE, FRAMEWORK)
attribute(KotlinNativeTarget.kotlinNativeBuildTypeAttribute, request.buildType.name)
attribute(Framework.frameworkTargets, request.targets.map { it.name }.toSet())
if (request.name != null) {
diff --git a/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestGenerated.java b/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestGenerated.java
index 06d33be..882c3bf 100644
--- a/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestGenerated.java
+++ b/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestGenerated.java
@@ -560,6 +560,18 @@
}
@Test
+ @TestMetadata("annotationAnnotationParam.kt")
+ public void testAnnotationAnnotationParam() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+ }
+
+ @Test
+ @TestMetadata("annotationAnyDispatch.kt")
+ public void testAnnotationAnyDispatch() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+ }
+
+ @Test
@TestMetadata("annotationEnclosingName.kt")
public void testAnnotationEnclosingName() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -578,6 +590,12 @@
}
@Test
+ @TestMetadata("annotationInlineMultiModule.kt")
+ public void testAnnotationInlineMultiModule() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+ }
+
+ @Test
@TestMetadata("annotationInstances.kt")
public void testAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -614,6 +632,12 @@
}
@Test
+ @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+ public void testAnnotationToStringDefaultsAndEmptyArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+ }
+
+ @Test
@TestMetadata("annotationType.kt")
public void testAnnotationType() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -638,6 +662,42 @@
}
@Test
+ @TestMetadata("arrayContentEqAny.kt")
+ public void testArrayContentEqAny() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+ }
+
+ @Test
+ @TestMetadata("arraysAndKClass.kt")
+ public void testArraysAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("differentAnnotationTypes.kt")
+ public void testDifferentAnnotationTypes() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+ }
+
+ @Test
+ @TestMetadata("differentOrder.kt")
+ public void testDifferentOrder() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+ }
+
+ @Test
+ @TestMetadata("enumAndKClass.kt")
+ public void testEnumAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("enumArray.kt")
+ public void testEnumArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+ }
+
+ @Test
@TestMetadata("inInlineFunction.kt")
public void testInInlineFunction() {
runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -650,6 +710,12 @@
}
@Test
+ @TestMetadata("instanceEquality.kt")
+ public void testInstanceEquality() {
+ runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+ }
+
+ @Test
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() {
runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -674,6 +740,12 @@
}
@Test
+ @TestMetadata("mixedArray.kt")
+ public void testMixedArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+ }
+
+ @Test
@TestMetadata("multifileEqHc.kt")
public void testMultifileEqHc() {
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -704,22 +776,64 @@
}
@Test
+ @TestMetadata("naNAndZero.kt")
+ public void testNaNAndZero() {
+ runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+ }
+
+ @Test
+ @TestMetadata("nested.kt")
+ public void testNested() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+ }
+
+ @Test
@TestMetadata("nestedAnnotationInstances.kt")
public void testNestedAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
}
@Test
+ @TestMetadata("nestedDefaults.kt")
+ public void testNestedDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+ }
+
+ @Test
@TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
public void testRearrangedArgumentsInAnnotationCall() {
runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
}
@Test
+ @TestMetadata("repeatableInstantiation.kt")
+ public void testRepeatableInstantiation() {
+ runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+ }
+
+ @Test
+ @TestMetadata("typeAliasesAndGenericsInterop.kt")
+ public void testTypeAliasesAndGenericsInterop() {
+ runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+ }
+
+ @Test
+ @TestMetadata("unsignedAndBooleanArrays.kt")
+ public void testUnsignedAndBooleanArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+ }
+
+ @Test
@TestMetadata("varargInAnnotationParameterInstantiation.kt")
public void testVarargInAnnotationParameterInstantiation() {
runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
}
+
+ @Test
+ @TestMetadata("withDefaults.kt")
+ public void testWithDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+ }
}
@Nested
diff --git a/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestNoPLGenerated.java b/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestNoPLGenerated.java
index a2b9bf5..6fa4598 100644
--- a/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestNoPLGenerated.java
+++ b/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/FirNativeCodegenBoxTestNoPLGenerated.java
@@ -572,6 +572,18 @@
}
@Test
+ @TestMetadata("annotationAnnotationParam.kt")
+ public void testAnnotationAnnotationParam() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+ }
+
+ @Test
+ @TestMetadata("annotationAnyDispatch.kt")
+ public void testAnnotationAnyDispatch() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+ }
+
+ @Test
@TestMetadata("annotationEnclosingName.kt")
public void testAnnotationEnclosingName() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -590,6 +602,12 @@
}
@Test
+ @TestMetadata("annotationInlineMultiModule.kt")
+ public void testAnnotationInlineMultiModule() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+ }
+
+ @Test
@TestMetadata("annotationInstances.kt")
public void testAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -626,6 +644,12 @@
}
@Test
+ @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+ public void testAnnotationToStringDefaultsAndEmptyArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+ }
+
+ @Test
@TestMetadata("annotationType.kt")
public void testAnnotationType() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -650,6 +674,42 @@
}
@Test
+ @TestMetadata("arrayContentEqAny.kt")
+ public void testArrayContentEqAny() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+ }
+
+ @Test
+ @TestMetadata("arraysAndKClass.kt")
+ public void testArraysAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("differentAnnotationTypes.kt")
+ public void testDifferentAnnotationTypes() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+ }
+
+ @Test
+ @TestMetadata("differentOrder.kt")
+ public void testDifferentOrder() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+ }
+
+ @Test
+ @TestMetadata("enumAndKClass.kt")
+ public void testEnumAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("enumArray.kt")
+ public void testEnumArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+ }
+
+ @Test
@TestMetadata("inInlineFunction.kt")
public void testInInlineFunction() {
runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -662,6 +722,12 @@
}
@Test
+ @TestMetadata("instanceEquality.kt")
+ public void testInstanceEquality() {
+ runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+ }
+
+ @Test
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() {
runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -686,6 +752,12 @@
}
@Test
+ @TestMetadata("mixedArray.kt")
+ public void testMixedArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+ }
+
+ @Test
@TestMetadata("multifileEqHc.kt")
public void testMultifileEqHc() {
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -716,22 +788,64 @@
}
@Test
+ @TestMetadata("naNAndZero.kt")
+ public void testNaNAndZero() {
+ runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+ }
+
+ @Test
+ @TestMetadata("nested.kt")
+ public void testNested() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+ }
+
+ @Test
@TestMetadata("nestedAnnotationInstances.kt")
public void testNestedAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
}
@Test
+ @TestMetadata("nestedDefaults.kt")
+ public void testNestedDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+ }
+
+ @Test
@TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
public void testRearrangedArgumentsInAnnotationCall() {
runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
}
@Test
+ @TestMetadata("repeatableInstantiation.kt")
+ public void testRepeatableInstantiation() {
+ runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+ }
+
+ @Test
+ @TestMetadata("typeAliasesAndGenericsInterop.kt")
+ public void testTypeAliasesAndGenericsInterop() {
+ runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+ }
+
+ @Test
+ @TestMetadata("unsignedAndBooleanArrays.kt")
+ public void testUnsignedAndBooleanArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+ }
+
+ @Test
@TestMetadata("varargInAnnotationParameterInstantiation.kt")
public void testVarargInAnnotationParameterInstantiation() {
runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
}
+
+ @Test
+ @TestMetadata("withDefaults.kt")
+ public void testWithDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+ }
}
@Nested
diff --git a/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestGenerated.java b/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestGenerated.java
index 0bfff47..054b21f 100644
--- a/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestGenerated.java
+++ b/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestGenerated.java
@@ -566,6 +566,18 @@
}
@Test
+ @TestMetadata("annotationAnnotationParam.kt")
+ public void testAnnotationAnnotationParam() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+ }
+
+ @Test
+ @TestMetadata("annotationAnyDispatch.kt")
+ public void testAnnotationAnyDispatch() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+ }
+
+ @Test
@TestMetadata("annotationEnclosingName.kt")
public void testAnnotationEnclosingName() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -584,6 +596,12 @@
}
@Test
+ @TestMetadata("annotationInlineMultiModule.kt")
+ public void testAnnotationInlineMultiModule() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+ }
+
+ @Test
@TestMetadata("annotationInstances.kt")
public void testAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -620,6 +638,12 @@
}
@Test
+ @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+ public void testAnnotationToStringDefaultsAndEmptyArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+ }
+
+ @Test
@TestMetadata("annotationType.kt")
public void testAnnotationType() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -644,6 +668,42 @@
}
@Test
+ @TestMetadata("arrayContentEqAny.kt")
+ public void testArrayContentEqAny() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+ }
+
+ @Test
+ @TestMetadata("arraysAndKClass.kt")
+ public void testArraysAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("differentAnnotationTypes.kt")
+ public void testDifferentAnnotationTypes() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+ }
+
+ @Test
+ @TestMetadata("differentOrder.kt")
+ public void testDifferentOrder() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+ }
+
+ @Test
+ @TestMetadata("enumAndKClass.kt")
+ public void testEnumAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("enumArray.kt")
+ public void testEnumArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+ }
+
+ @Test
@TestMetadata("inInlineFunction.kt")
public void testInInlineFunction() {
runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -656,6 +716,12 @@
}
@Test
+ @TestMetadata("instanceEquality.kt")
+ public void testInstanceEquality() {
+ runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+ }
+
+ @Test
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() {
runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -680,6 +746,12 @@
}
@Test
+ @TestMetadata("mixedArray.kt")
+ public void testMixedArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+ }
+
+ @Test
@TestMetadata("multifileEqHc.kt")
public void testMultifileEqHc() {
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -710,22 +782,64 @@
}
@Test
+ @TestMetadata("naNAndZero.kt")
+ public void testNaNAndZero() {
+ runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+ }
+
+ @Test
+ @TestMetadata("nested.kt")
+ public void testNested() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+ }
+
+ @Test
@TestMetadata("nestedAnnotationInstances.kt")
public void testNestedAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
}
@Test
+ @TestMetadata("nestedDefaults.kt")
+ public void testNestedDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+ }
+
+ @Test
@TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
public void testRearrangedArgumentsInAnnotationCall() {
runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
}
@Test
+ @TestMetadata("repeatableInstantiation.kt")
+ public void testRepeatableInstantiation() {
+ runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+ }
+
+ @Test
+ @TestMetadata("typeAliasesAndGenericsInterop.kt")
+ public void testTypeAliasesAndGenericsInterop() {
+ runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+ }
+
+ @Test
+ @TestMetadata("unsignedAndBooleanArrays.kt")
+ public void testUnsignedAndBooleanArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+ }
+
+ @Test
@TestMetadata("varargInAnnotationParameterInstantiation.kt")
public void testVarargInAnnotationParameterInstantiation() {
runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
}
+
+ @Test
+ @TestMetadata("withDefaults.kt")
+ public void testWithDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+ }
}
@Nested
diff --git a/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestNoPLGenerated.java b/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestNoPLGenerated.java
index b3cfc69..fcd58ec 100644
--- a/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestNoPLGenerated.java
+++ b/native/native.tests/codegen-box/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxTestNoPLGenerated.java
@@ -578,6 +578,18 @@
}
@Test
+ @TestMetadata("annotationAnnotationParam.kt")
+ public void testAnnotationAnnotationParam() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+ }
+
+ @Test
+ @TestMetadata("annotationAnyDispatch.kt")
+ public void testAnnotationAnyDispatch() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+ }
+
+ @Test
@TestMetadata("annotationEnclosingName.kt")
public void testAnnotationEnclosingName() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -596,6 +608,12 @@
}
@Test
+ @TestMetadata("annotationInlineMultiModule.kt")
+ public void testAnnotationInlineMultiModule() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+ }
+
+ @Test
@TestMetadata("annotationInstances.kt")
public void testAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -632,6 +650,12 @@
}
@Test
+ @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+ public void testAnnotationToStringDefaultsAndEmptyArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+ }
+
+ @Test
@TestMetadata("annotationType.kt")
public void testAnnotationType() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -656,6 +680,42 @@
}
@Test
+ @TestMetadata("arrayContentEqAny.kt")
+ public void testArrayContentEqAny() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+ }
+
+ @Test
+ @TestMetadata("arraysAndKClass.kt")
+ public void testArraysAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("differentAnnotationTypes.kt")
+ public void testDifferentAnnotationTypes() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+ }
+
+ @Test
+ @TestMetadata("differentOrder.kt")
+ public void testDifferentOrder() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+ }
+
+ @Test
+ @TestMetadata("enumAndKClass.kt")
+ public void testEnumAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("enumArray.kt")
+ public void testEnumArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+ }
+
+ @Test
@TestMetadata("inInlineFunction.kt")
public void testInInlineFunction() {
runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -668,6 +728,12 @@
}
@Test
+ @TestMetadata("instanceEquality.kt")
+ public void testInstanceEquality() {
+ runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+ }
+
+ @Test
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() {
runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -692,6 +758,12 @@
}
@Test
+ @TestMetadata("mixedArray.kt")
+ public void testMixedArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+ }
+
+ @Test
@TestMetadata("multifileEqHc.kt")
public void testMultifileEqHc() {
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -722,22 +794,64 @@
}
@Test
+ @TestMetadata("naNAndZero.kt")
+ public void testNaNAndZero() {
+ runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+ }
+
+ @Test
+ @TestMetadata("nested.kt")
+ public void testNested() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+ }
+
+ @Test
@TestMetadata("nestedAnnotationInstances.kt")
public void testNestedAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
}
@Test
+ @TestMetadata("nestedDefaults.kt")
+ public void testNestedDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+ }
+
+ @Test
@TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
public void testRearrangedArgumentsInAnnotationCall() {
runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
}
@Test
+ @TestMetadata("repeatableInstantiation.kt")
+ public void testRepeatableInstantiation() {
+ runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+ }
+
+ @Test
+ @TestMetadata("typeAliasesAndGenericsInterop.kt")
+ public void testTypeAliasesAndGenericsInterop() {
+ runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+ }
+
+ @Test
+ @TestMetadata("unsignedAndBooleanArrays.kt")
+ public void testUnsignedAndBooleanArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+ }
+
+ @Test
@TestMetadata("varargInAnnotationParameterInstantiation.kt")
public void testVarargInAnnotationParameterInstantiation() {
runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
}
+
+ @Test
+ @TestMetadata("withDefaults.kt")
+ public void testWithDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+ }
}
@Nested
diff --git a/native/native.tests/klib-ir-inliner/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxWithInlinedFunInKlibTestGenerated.java b/native/native.tests/klib-ir-inliner/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxWithInlinedFunInKlibTestGenerated.java
index 9eba074..e7a711a 100644
--- a/native/native.tests/klib-ir-inliner/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxWithInlinedFunInKlibTestGenerated.java
+++ b/native/native.tests/klib-ir-inliner/tests-gen/org/jetbrains/kotlin/konan/test/blackbox/NativeCodegenBoxWithInlinedFunInKlibTestGenerated.java
@@ -560,6 +560,18 @@
}
@Test
+ @TestMetadata("annotationAnnotationParam.kt")
+ public void testAnnotationAnnotationParam() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+ }
+
+ @Test
+ @TestMetadata("annotationAnyDispatch.kt")
+ public void testAnnotationAnyDispatch() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+ }
+
+ @Test
@TestMetadata("annotationEnclosingName.kt")
public void testAnnotationEnclosingName() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -578,6 +590,12 @@
}
@Test
+ @TestMetadata("annotationInlineMultiModule.kt")
+ public void testAnnotationInlineMultiModule() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+ }
+
+ @Test
@TestMetadata("annotationInstances.kt")
public void testAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -614,6 +632,12 @@
}
@Test
+ @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+ public void testAnnotationToStringDefaultsAndEmptyArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+ }
+
+ @Test
@TestMetadata("annotationType.kt")
public void testAnnotationType() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -638,6 +662,42 @@
}
@Test
+ @TestMetadata("arrayContentEqAny.kt")
+ public void testArrayContentEqAny() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+ }
+
+ @Test
+ @TestMetadata("arraysAndKClass.kt")
+ public void testArraysAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("differentAnnotationTypes.kt")
+ public void testDifferentAnnotationTypes() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+ }
+
+ @Test
+ @TestMetadata("differentOrder.kt")
+ public void testDifferentOrder() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+ }
+
+ @Test
+ @TestMetadata("enumAndKClass.kt")
+ public void testEnumAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("enumArray.kt")
+ public void testEnumArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+ }
+
+ @Test
@TestMetadata("inInlineFunction.kt")
public void testInInlineFunction() {
runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -650,6 +710,12 @@
}
@Test
+ @TestMetadata("instanceEquality.kt")
+ public void testInstanceEquality() {
+ runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+ }
+
+ @Test
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() {
runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -674,6 +740,12 @@
}
@Test
+ @TestMetadata("mixedArray.kt")
+ public void testMixedArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+ }
+
+ @Test
@TestMetadata("multifileEqHc.kt")
public void testMultifileEqHc() {
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -704,22 +776,64 @@
}
@Test
+ @TestMetadata("naNAndZero.kt")
+ public void testNaNAndZero() {
+ runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+ }
+
+ @Test
+ @TestMetadata("nested.kt")
+ public void testNested() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+ }
+
+ @Test
@TestMetadata("nestedAnnotationInstances.kt")
public void testNestedAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
}
@Test
+ @TestMetadata("nestedDefaults.kt")
+ public void testNestedDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+ }
+
+ @Test
@TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
public void testRearrangedArgumentsInAnnotationCall() {
runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
}
@Test
+ @TestMetadata("repeatableInstantiation.kt")
+ public void testRepeatableInstantiation() {
+ runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+ }
+
+ @Test
+ @TestMetadata("typeAliasesAndGenericsInterop.kt")
+ public void testTypeAliasesAndGenericsInterop() {
+ runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+ }
+
+ @Test
+ @TestMetadata("unsignedAndBooleanArrays.kt")
+ public void testUnsignedAndBooleanArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+ }
+
+ @Test
@TestMetadata("varargInAnnotationParameterInstantiation.kt")
public void testVarargInAnnotationParameterInstantiation() {
runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
}
+
+ @Test
+ @TestMetadata("withDefaults.kt")
+ public void testWithDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+ }
}
@Nested
diff --git a/native/native.tests/klib-ir-inliner/tests-gen/org/jetbrains/kotlin/konan/test/serialization/NativeIrDeserializationTestGenerated.java b/native/native.tests/klib-ir-inliner/tests-gen/org/jetbrains/kotlin/konan/test/serialization/NativeIrDeserializationTestGenerated.java
index 647d44c..7ca0b1c 100644
--- a/native/native.tests/klib-ir-inliner/tests-gen/org/jetbrains/kotlin/konan/test/serialization/NativeIrDeserializationTestGenerated.java
+++ b/native/native.tests/klib-ir-inliner/tests-gen/org/jetbrains/kotlin/konan/test/serialization/NativeIrDeserializationTestGenerated.java
@@ -548,6 +548,18 @@
}
@Test
+ @TestMetadata("annotationAnnotationParam.kt")
+ public void testAnnotationAnnotationParam() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+ }
+
+ @Test
+ @TestMetadata("annotationAnyDispatch.kt")
+ public void testAnnotationAnyDispatch() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+ }
+
+ @Test
@TestMetadata("annotationEnclosingName.kt")
public void testAnnotationEnclosingName() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -566,6 +578,12 @@
}
@Test
+ @TestMetadata("annotationInlineMultiModule.kt")
+ public void testAnnotationInlineMultiModule() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+ }
+
+ @Test
@TestMetadata("annotationInstances.kt")
public void testAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -602,6 +620,12 @@
}
@Test
+ @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+ public void testAnnotationToStringDefaultsAndEmptyArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+ }
+
+ @Test
@TestMetadata("annotationType.kt")
public void testAnnotationType() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -626,6 +650,42 @@
}
@Test
+ @TestMetadata("arrayContentEqAny.kt")
+ public void testArrayContentEqAny() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+ }
+
+ @Test
+ @TestMetadata("arraysAndKClass.kt")
+ public void testArraysAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("differentAnnotationTypes.kt")
+ public void testDifferentAnnotationTypes() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+ }
+
+ @Test
+ @TestMetadata("differentOrder.kt")
+ public void testDifferentOrder() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+ }
+
+ @Test
+ @TestMetadata("enumAndKClass.kt")
+ public void testEnumAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("enumArray.kt")
+ public void testEnumArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+ }
+
+ @Test
@TestMetadata("inInlineFunction.kt")
public void testInInlineFunction() {
runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -638,6 +698,12 @@
}
@Test
+ @TestMetadata("instanceEquality.kt")
+ public void testInstanceEquality() {
+ runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+ }
+
+ @Test
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() {
runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -662,6 +728,12 @@
}
@Test
+ @TestMetadata("mixedArray.kt")
+ public void testMixedArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+ }
+
+ @Test
@TestMetadata("multifileEqHc.kt")
public void testMultifileEqHc() {
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -692,22 +764,64 @@
}
@Test
+ @TestMetadata("naNAndZero.kt")
+ public void testNaNAndZero() {
+ runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+ }
+
+ @Test
+ @TestMetadata("nested.kt")
+ public void testNested() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+ }
+
+ @Test
@TestMetadata("nestedAnnotationInstances.kt")
public void testNestedAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
}
@Test
+ @TestMetadata("nestedDefaults.kt")
+ public void testNestedDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+ }
+
+ @Test
@TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
public void testRearrangedArgumentsInAnnotationCall() {
runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
}
@Test
+ @TestMetadata("repeatableInstantiation.kt")
+ public void testRepeatableInstantiation() {
+ runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+ }
+
+ @Test
+ @TestMetadata("typeAliasesAndGenericsInterop.kt")
+ public void testTypeAliasesAndGenericsInterop() {
+ runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+ }
+
+ @Test
+ @TestMetadata("unsignedAndBooleanArrays.kt")
+ public void testUnsignedAndBooleanArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+ }
+
+ @Test
@TestMetadata("varargInAnnotationParameterInstantiation.kt")
public void testVarargInAnnotationParameterInstantiation() {
runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
}
+
+ @Test
+ @TestMetadata("withDefaults.kt")
+ public void testWithDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+ }
}
@Nested
diff --git a/native/native.tests/klib-ir-inliner/tests-gen/org/jetbrains/kotlin/konan/test/serialization/NativeIrDeserializationWithInlinedFunInKlibTestGenerated.java b/native/native.tests/klib-ir-inliner/tests-gen/org/jetbrains/kotlin/konan/test/serialization/NativeIrDeserializationWithInlinedFunInKlibTestGenerated.java
index c5dfd56..3c0d4be 100644
--- a/native/native.tests/klib-ir-inliner/tests-gen/org/jetbrains/kotlin/konan/test/serialization/NativeIrDeserializationWithInlinedFunInKlibTestGenerated.java
+++ b/native/native.tests/klib-ir-inliner/tests-gen/org/jetbrains/kotlin/konan/test/serialization/NativeIrDeserializationWithInlinedFunInKlibTestGenerated.java
@@ -548,6 +548,18 @@
}
@Test
+ @TestMetadata("annotationAnnotationParam.kt")
+ public void testAnnotationAnnotationParam() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+ }
+
+ @Test
+ @TestMetadata("annotationAnyDispatch.kt")
+ public void testAnnotationAnyDispatch() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+ }
+
+ @Test
@TestMetadata("annotationEnclosingName.kt")
public void testAnnotationEnclosingName() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -566,6 +578,12 @@
}
@Test
+ @TestMetadata("annotationInlineMultiModule.kt")
+ public void testAnnotationInlineMultiModule() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+ }
+
+ @Test
@TestMetadata("annotationInstances.kt")
public void testAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -602,6 +620,12 @@
}
@Test
+ @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+ public void testAnnotationToStringDefaultsAndEmptyArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+ }
+
+ @Test
@TestMetadata("annotationType.kt")
public void testAnnotationType() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -626,6 +650,42 @@
}
@Test
+ @TestMetadata("arrayContentEqAny.kt")
+ public void testArrayContentEqAny() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+ }
+
+ @Test
+ @TestMetadata("arraysAndKClass.kt")
+ public void testArraysAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("differentAnnotationTypes.kt")
+ public void testDifferentAnnotationTypes() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+ }
+
+ @Test
+ @TestMetadata("differentOrder.kt")
+ public void testDifferentOrder() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+ }
+
+ @Test
+ @TestMetadata("enumAndKClass.kt")
+ public void testEnumAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("enumArray.kt")
+ public void testEnumArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+ }
+
+ @Test
@TestMetadata("inInlineFunction.kt")
public void testInInlineFunction() {
runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -638,6 +698,12 @@
}
@Test
+ @TestMetadata("instanceEquality.kt")
+ public void testInstanceEquality() {
+ runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+ }
+
+ @Test
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() {
runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -662,6 +728,12 @@
}
@Test
+ @TestMetadata("mixedArray.kt")
+ public void testMixedArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+ }
+
+ @Test
@TestMetadata("multifileEqHc.kt")
public void testMultifileEqHc() {
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -692,22 +764,64 @@
}
@Test
+ @TestMetadata("naNAndZero.kt")
+ public void testNaNAndZero() {
+ runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+ }
+
+ @Test
+ @TestMetadata("nested.kt")
+ public void testNested() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+ }
+
+ @Test
@TestMetadata("nestedAnnotationInstances.kt")
public void testNestedAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
}
@Test
+ @TestMetadata("nestedDefaults.kt")
+ public void testNestedDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+ }
+
+ @Test
@TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
public void testRearrangedArgumentsInAnnotationCall() {
runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
}
@Test
+ @TestMetadata("repeatableInstantiation.kt")
+ public void testRepeatableInstantiation() {
+ runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+ }
+
+ @Test
+ @TestMetadata("typeAliasesAndGenericsInterop.kt")
+ public void testTypeAliasesAndGenericsInterop() {
+ runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+ }
+
+ @Test
+ @TestMetadata("unsignedAndBooleanArrays.kt")
+ public void testUnsignedAndBooleanArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+ }
+
+ @Test
@TestMetadata("varargInAnnotationParameterInstantiation.kt")
public void testVarargInAnnotationParameterInstantiation() {
runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
}
+
+ @Test
+ @TestMetadata("withDefaults.kt")
+ public void testWithDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+ }
}
@Nested
diff --git a/plugins/power-assert/testData/codegen/parameters/ContextReceivers.fir.kt.txt b/plugins/power-assert/testData/codegen/parameters/ContextReceivers.fir.kt.txt
index c161b5f..5cf22db 100644
--- a/plugins/power-assert/testData/codegen/parameters/ContextReceivers.fir.kt.txt
+++ b/plugins/power-assert/testData/codegen/parameters/ContextReceivers.fir.kt.txt
@@ -36,14 +36,14 @@
)])
}
-context(<unused var>: Asserter)
+context($context-Asserter: Asserter)
fun context1Assert(condition: Boolean, msg: Any? = null) {
when {
condition.not() -> throw AssertionError(p0 = toString(/* <this> = msg */))
}
}
-context(<unused var>: Asserter, <unused var>: Asserter)
+context($context-Asserter#1: Asserter, $context-Asserter#2: Asserter)
fun context2Assert(condition: Boolean, msg: Any? = null) {
when {
condition.not() -> throw AssertionError(p0 = toString(/* <this> = msg */))
@@ -57,7 +57,7 @@
{ // BLOCK
val tmp_2: Int = "test".<get-length>()
val tmp_3: Boolean = EQEQ(arg0 = tmp_2, arg1 = 5)
- context1Assert(/* <unused var> = tmp_1, */ condition = tmp_3, msg = "\ncontext1Assert(\"test\".length == 5)" + "\n | |" + "\n | " + tmp_3 + "\n " + tmp_2 + "\n")
+ context1Assert(/* $context-Asserter = tmp_1, */ condition = tmp_3, msg = "\ncontext1Assert(\"test\".length == 5)" + "\n | |" + "\n | " + tmp_3 + "\n " + tmp_2 + "\n")
}
}
}
@@ -73,7 +73,7 @@
{ // BLOCK
val tmp_6: Int = "test".<get-length>()
val tmp_7: Boolean = EQEQ(arg0 = tmp_6, arg1 = 5)
- context2Assert(/* <unused var> = tmp_4, <unused var> = tmp_5, */ condition = tmp_7, msg = "\ncontext2Assert(\"test\".length == 5)" + "\n | |" + "\n | " + tmp_7 + "\n " + tmp_6 + "\n")
+ context2Assert(/* $context-Asserter#1 = tmp_4, $context-Asserter#2 = tmp_5, */ condition = tmp_7, msg = "\ncontext2Assert(\"test\".length == 5)" + "\n | |" + "\n | " + tmp_7 + "\n " + tmp_6 + "\n")
}
}
}
diff --git a/prepare/analysis-api-test-framework/build.gradle.kts b/prepare/analysis-api-test-framework/build.gradle.kts
index bebbb34..e53aa1a 100644
--- a/prepare/analysis-api-test-framework/build.gradle.kts
+++ b/prepare/analysis-api-test-framework/build.gradle.kts
@@ -2,35 +2,44 @@
java
}
-val testModules = listOf(
+val testFixturesModules = listOf(
":analysis:analysis-api-fir",
":analysis:low-level-api-fir",
- ":analysis:low-level-api-fir:tests-jdk11",
":analysis:analysis-test-framework",
":analysis:analysis-api-impl-base",
":analysis:analysis-api-standalone",
":analysis:decompiled:decompiler-to-file-stubs",
)
+val testModules = listOf(
+ ":analysis:low-level-api-fir:tests-jdk11",
+)
+
val mainModules = listOf(
":kotlin-preloader",
)
dependencies {
- testModules.forEach {
- embedded(projectTests(it)) { isTransitive = false }
+ fun List<String>.registerDependencies(notation: (String) -> Dependency) {
+ this.forEach {
+ embedded(notation(it)) {
+ if (this is ModuleDependency) isTransitive = false
+ }
+ }
}
- mainModules.forEach {
- embedded(project(it)) { isTransitive = false }
- }
+ mainModules.registerDependencies { project(it) }
+ testFixturesModules.registerDependencies { testFixtures(project(it)) }
+ testModules.registerDependencies { projectTests(it) }
}
publish()
runtimeJar()
sourcesJar {
from {
- mainModules.map { project(it).mainSourceSet.allSource } + testModules.map { project(it).testSourceSet.allSource }
+ mainModules.map { project(it).mainSourceSet.allSource } +
+ testFixturesModules.map { project(it).testFixturesSourceSet.allSource } +
+ testModules.map { project(it).testSourceSet.allSource }
}
}
javadocJar()
diff --git a/prepare/kotlin-compiler-internal-test-framework/build.gradle.kts b/prepare/kotlin-compiler-internal-test-framework/build.gradle.kts
index 1b470d2..f4cade1 100644
--- a/prepare/kotlin-compiler-internal-test-framework/build.gradle.kts
+++ b/prepare/kotlin-compiler-internal-test-framework/build.gradle.kts
@@ -2,12 +2,14 @@
java
}
-val testModules = listOf(
+val testFixturesModules = listOf(
":compiler:test-infrastructure",
":compiler:test-infrastructure-utils",
":compiler:tests-compiler-utils",
":compiler:tests-common-new",
- ":generators:test-generator"
+ ":generators:test-generator",
+ ":kotlin-build-common",
+ ":js:js.tests",
)
val mainModules = listOf(
@@ -17,24 +19,25 @@
)
dependencies {
- mainModules.forEach {
- embedded(project(it)) { isTransitive = false }
- }
- testModules.forEach {
- embedded(testFixtures(project(it))) {
- if (this is ModuleDependency) isTransitive = false
+ fun List<String>.registerDependencies(notation: (String) -> Dependency) {
+ this.forEach {
+ embedded(notation(it)) {
+ if (this is ModuleDependency) isTransitive = false
+ }
}
}
+
+ mainModules.registerDependencies { project(it) }
+ testFixturesModules.registerDependencies { testFixtures(project(it)) }
}
publish()
runtimeJar()
sourcesJar {
from {
- mainModules.map { project(it).mainSourceSet.allSource } + testModules.map { project(it).testSourceSet.allSource }
+ mainModules.map { project(it).mainSourceSet.allSource } +
+ testFixturesModules.map { project(it).testFixturesSourceSet.allSource }
}
-
- dependsOn(":compiler:fir:checkers:generateCheckersComponents")
}
javadocJar()
diff --git a/repo/gradle-build-conventions/utilities/src/main/kotlin/sourceSets.kt b/repo/gradle-build-conventions/utilities/src/main/kotlin/sourceSets.kt
index 016d759..73fb92e 100644
--- a/repo/gradle-build-conventions/utilities/src/main/kotlin/sourceSets.kt
+++ b/repo/gradle-build-conventions/utilities/src/main/kotlin/sourceSets.kt
@@ -46,12 +46,18 @@
val Project.mainSourceSet: SourceSet
get() = javaPluginExtension().mainSourceSet
+val Project.testFixturesSourceSet: SourceSet
+ get() = javaPluginExtension().testFixturesSourceSet
+
val Project.testSourceSet: SourceSet
get() = javaPluginExtension().testSourceSet
val JavaPluginExtension.mainSourceSet: SourceSet
get() = sourceSets.getByName("main")
+val JavaPluginExtension.testFixturesSourceSet: SourceSet
+ get() = sourceSets.getByName("testFixtures")
+
val JavaPluginExtension.testSourceSet: SourceSet
get() = sourceSets.getByName("test")
diff --git a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenBoxTestGenerated.java b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenBoxTestGenerated.java
index 0a22934..d368b31 100644
--- a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenBoxTestGenerated.java
+++ b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenBoxTestGenerated.java
@@ -546,6 +546,18 @@
}
@Test
+ @TestMetadata("annotationAnnotationParam.kt")
+ public void testAnnotationAnnotationParam() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+ }
+
+ @Test
+ @TestMetadata("annotationAnyDispatch.kt")
+ public void testAnnotationAnyDispatch() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+ }
+
+ @Test
@TestMetadata("annotationEnclosingName.kt")
public void testAnnotationEnclosingName() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -564,6 +576,12 @@
}
@Test
+ @TestMetadata("annotationInlineMultiModule.kt")
+ public void testAnnotationInlineMultiModule() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+ }
+
+ @Test
@TestMetadata("annotationInstances.kt")
public void testAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -600,6 +618,12 @@
}
@Test
+ @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+ public void testAnnotationToStringDefaultsAndEmptyArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+ }
+
+ @Test
@TestMetadata("annotationType.kt")
public void testAnnotationType() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -624,6 +648,42 @@
}
@Test
+ @TestMetadata("arrayContentEqAny.kt")
+ public void testArrayContentEqAny() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+ }
+
+ @Test
+ @TestMetadata("arraysAndKClass.kt")
+ public void testArraysAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("differentAnnotationTypes.kt")
+ public void testDifferentAnnotationTypes() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+ }
+
+ @Test
+ @TestMetadata("differentOrder.kt")
+ public void testDifferentOrder() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+ }
+
+ @Test
+ @TestMetadata("enumAndKClass.kt")
+ public void testEnumAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("enumArray.kt")
+ public void testEnumArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+ }
+
+ @Test
@TestMetadata("inInlineFunction.kt")
public void testInInlineFunction() {
runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -636,6 +696,12 @@
}
@Test
+ @TestMetadata("instanceEquality.kt")
+ public void testInstanceEquality() {
+ runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+ }
+
+ @Test
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() {
runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -660,6 +726,12 @@
}
@Test
+ @TestMetadata("mixedArray.kt")
+ public void testMixedArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+ }
+
+ @Test
@TestMetadata("multifileEqHc.kt")
public void testMultifileEqHc() {
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -690,22 +762,64 @@
}
@Test
+ @TestMetadata("naNAndZero.kt")
+ public void testNaNAndZero() {
+ runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+ }
+
+ @Test
+ @TestMetadata("nested.kt")
+ public void testNested() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+ }
+
+ @Test
@TestMetadata("nestedAnnotationInstances.kt")
public void testNestedAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
}
@Test
+ @TestMetadata("nestedDefaults.kt")
+ public void testNestedDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+ }
+
+ @Test
@TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
public void testRearrangedArgumentsInAnnotationCall() {
runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
}
@Test
+ @TestMetadata("repeatableInstantiation.kt")
+ public void testRepeatableInstantiation() {
+ runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+ }
+
+ @Test
+ @TestMetadata("typeAliasesAndGenericsInterop.kt")
+ public void testTypeAliasesAndGenericsInterop() {
+ runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+ }
+
+ @Test
+ @TestMetadata("unsignedAndBooleanArrays.kt")
+ public void testUnsignedAndBooleanArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+ }
+
+ @Test
@TestMetadata("varargInAnnotationParameterInstantiation.kt")
public void testVarargInAnnotationParameterInstantiation() {
runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
}
+
+ @Test
+ @TestMetadata("withDefaults.kt")
+ public void testWithDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+ }
}
@Nested
diff --git a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenBoxWithInlinedFunInKlibTestGenerated.java b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenBoxWithInlinedFunInKlibTestGenerated.java
index 914f6ed..c262089 100644
--- a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenBoxWithInlinedFunInKlibTestGenerated.java
+++ b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenBoxWithInlinedFunInKlibTestGenerated.java
@@ -548,6 +548,18 @@
}
@Test
+ @TestMetadata("annotationAnnotationParam.kt")
+ public void testAnnotationAnnotationParam() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+ }
+
+ @Test
+ @TestMetadata("annotationAnyDispatch.kt")
+ public void testAnnotationAnyDispatch() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+ }
+
+ @Test
@TestMetadata("annotationEnclosingName.kt")
public void testAnnotationEnclosingName() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -566,6 +578,12 @@
}
@Test
+ @TestMetadata("annotationInlineMultiModule.kt")
+ public void testAnnotationInlineMultiModule() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+ }
+
+ @Test
@TestMetadata("annotationInstances.kt")
public void testAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -602,6 +620,12 @@
}
@Test
+ @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+ public void testAnnotationToStringDefaultsAndEmptyArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+ }
+
+ @Test
@TestMetadata("annotationType.kt")
public void testAnnotationType() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -626,6 +650,42 @@
}
@Test
+ @TestMetadata("arrayContentEqAny.kt")
+ public void testArrayContentEqAny() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+ }
+
+ @Test
+ @TestMetadata("arraysAndKClass.kt")
+ public void testArraysAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("differentAnnotationTypes.kt")
+ public void testDifferentAnnotationTypes() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+ }
+
+ @Test
+ @TestMetadata("differentOrder.kt")
+ public void testDifferentOrder() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+ }
+
+ @Test
+ @TestMetadata("enumAndKClass.kt")
+ public void testEnumAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("enumArray.kt")
+ public void testEnumArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+ }
+
+ @Test
@TestMetadata("inInlineFunction.kt")
public void testInInlineFunction() {
runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -638,6 +698,12 @@
}
@Test
+ @TestMetadata("instanceEquality.kt")
+ public void testInstanceEquality() {
+ runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+ }
+
+ @Test
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() {
runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -662,6 +728,12 @@
}
@Test
+ @TestMetadata("mixedArray.kt")
+ public void testMixedArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+ }
+
+ @Test
@TestMetadata("multifileEqHc.kt")
public void testMultifileEqHc() {
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -692,22 +764,64 @@
}
@Test
+ @TestMetadata("naNAndZero.kt")
+ public void testNaNAndZero() {
+ runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+ }
+
+ @Test
+ @TestMetadata("nested.kt")
+ public void testNested() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+ }
+
+ @Test
@TestMetadata("nestedAnnotationInstances.kt")
public void testNestedAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
}
@Test
+ @TestMetadata("nestedDefaults.kt")
+ public void testNestedDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+ }
+
+ @Test
@TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
public void testRearrangedArgumentsInAnnotationCall() {
runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
}
@Test
+ @TestMetadata("repeatableInstantiation.kt")
+ public void testRepeatableInstantiation() {
+ runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+ }
+
+ @Test
+ @TestMetadata("typeAliasesAndGenericsInterop.kt")
+ public void testTypeAliasesAndGenericsInterop() {
+ runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+ }
+
+ @Test
+ @TestMetadata("unsignedAndBooleanArrays.kt")
+ public void testUnsignedAndBooleanArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+ }
+
+ @Test
@TestMetadata("varargInAnnotationParameterInstantiation.kt")
public void testVarargInAnnotationParameterInstantiation() {
runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
}
+
+ @Test
+ @TestMetadata("withDefaults.kt")
+ public void testWithDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+ }
}
@Nested
diff --git a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenSplittingWithInlinedFunInKlibTestGenerated.java b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenSplittingWithInlinedFunInKlibTestGenerated.java
index 455952a..d51dc35 100644
--- a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenSplittingWithInlinedFunInKlibTestGenerated.java
+++ b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmJsCodegenSplittingWithInlinedFunInKlibTestGenerated.java
@@ -548,6 +548,18 @@
}
@Test
+ @TestMetadata("annotationAnnotationParam.kt")
+ public void testAnnotationAnnotationParam() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnnotationParam.kt");
+ }
+
+ @Test
+ @TestMetadata("annotationAnyDispatch.kt")
+ public void testAnnotationAnyDispatch() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationAnyDispatch.kt");
+ }
+
+ @Test
@TestMetadata("annotationEnclosingName.kt")
public void testAnnotationEnclosingName() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationEnclosingName.kt");
@@ -566,6 +578,12 @@
}
@Test
+ @TestMetadata("annotationInlineMultiModule.kt")
+ public void testAnnotationInlineMultiModule() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationInlineMultiModule.kt");
+ }
+
+ @Test
@TestMetadata("annotationInstances.kt")
public void testAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationInstances.kt");
@@ -602,6 +620,12 @@
}
@Test
+ @TestMetadata("annotationToStringDefaultsAndEmptyArrays.kt")
+ public void testAnnotationToStringDefaultsAndEmptyArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/annotationToStringDefaultsAndEmptyArrays.kt");
+ }
+
+ @Test
@TestMetadata("annotationType.kt")
public void testAnnotationType() {
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
@@ -626,6 +650,42 @@
}
@Test
+ @TestMetadata("arrayContentEqAny.kt")
+ public void testArrayContentEqAny() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arrayContentEqAny.kt");
+ }
+
+ @Test
+ @TestMetadata("arraysAndKClass.kt")
+ public void testArraysAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/arraysAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("differentAnnotationTypes.kt")
+ public void testDifferentAnnotationTypes() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentAnnotationTypes.kt");
+ }
+
+ @Test
+ @TestMetadata("differentOrder.kt")
+ public void testDifferentOrder() {
+ runTest("compiler/testData/codegen/box/annotations/instances/differentOrder.kt");
+ }
+
+ @Test
+ @TestMetadata("enumAndKClass.kt")
+ public void testEnumAndKClass() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumAndKClass.kt");
+ }
+
+ @Test
+ @TestMetadata("enumArray.kt")
+ public void testEnumArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/enumArray.kt");
+ }
+
+ @Test
@TestMetadata("inInlineFunction.kt")
public void testInInlineFunction() {
runTest("compiler/testData/codegen/box/annotations/instances/inInlineFunction.kt");
@@ -638,6 +698,12 @@
}
@Test
+ @TestMetadata("instanceEquality.kt")
+ public void testInstanceEquality() {
+ runTest("compiler/testData/codegen/box/annotations/instances/instanceEquality.kt");
+ }
+
+ @Test
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() {
runTest("compiler/testData/codegen/box/annotations/instances/javaAnnotation.kt");
@@ -662,6 +728,12 @@
}
@Test
+ @TestMetadata("mixedArray.kt")
+ public void testMixedArray() {
+ runTest("compiler/testData/codegen/box/annotations/instances/mixedArray.kt");
+ }
+
+ @Test
@TestMetadata("multifileEqHc.kt")
public void testMultifileEqHc() {
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
@@ -692,22 +764,64 @@
}
@Test
+ @TestMetadata("naNAndZero.kt")
+ public void testNaNAndZero() {
+ runTest("compiler/testData/codegen/box/annotations/instances/naNAndZero.kt");
+ }
+
+ @Test
+ @TestMetadata("nested.kt")
+ public void testNested() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nested.kt");
+ }
+
+ @Test
@TestMetadata("nestedAnnotationInstances.kt")
public void testNestedAnnotationInstances() {
runTest("compiler/testData/codegen/box/annotations/instances/nestedAnnotationInstances.kt");
}
@Test
+ @TestMetadata("nestedDefaults.kt")
+ public void testNestedDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/nestedDefaults.kt");
+ }
+
+ @Test
@TestMetadata("rearrangedArgumentsInAnnotationCall.kt")
public void testRearrangedArgumentsInAnnotationCall() {
runTest("compiler/testData/codegen/box/annotations/instances/rearrangedArgumentsInAnnotationCall.kt");
}
@Test
+ @TestMetadata("repeatableInstantiation.kt")
+ public void testRepeatableInstantiation() {
+ runTest("compiler/testData/codegen/box/annotations/instances/repeatableInstantiation.kt");
+ }
+
+ @Test
+ @TestMetadata("typeAliasesAndGenericsInterop.kt")
+ public void testTypeAliasesAndGenericsInterop() {
+ runTest("compiler/testData/codegen/box/annotations/instances/typeAliasesAndGenericsInterop.kt");
+ }
+
+ @Test
+ @TestMetadata("unsignedAndBooleanArrays.kt")
+ public void testUnsignedAndBooleanArrays() {
+ runTest("compiler/testData/codegen/box/annotations/instances/unsignedAndBooleanArrays.kt");
+ }
+
+ @Test
@TestMetadata("varargInAnnotationParameterInstantiation.kt")
public void testVarargInAnnotationParameterInstantiation() {
runTest("compiler/testData/codegen/box/annotations/instances/varargInAnnotationParameterInstantiation.kt");
}
+
+ @Test
+ @TestMetadata("withDefaults.kt")
+ public void testWithDefaults() {
+ runTest("compiler/testData/codegen/box/annotations/instances/withDefaults.kt");
+ }
}
@Nested