diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/element/builder/FirElementBuilder.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/element/builder/FirElementBuilder.kt index 0e9b74524b5..2b3a0ebf71f 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/element/builder/FirElementBuilder.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/element/builder/FirElementBuilder.kt @@ -81,8 +81,9 @@ internal class FirElementBuilder( val firFile = element.containingKtFile val fileStructure = moduleComponents.fileStructureCache.getFileStructure(firFile) - val mappings = fileStructure.getStructureElementFor(element).mappings + val structureElement = fileStructure.getStructureElementFor(element) val psi = getPsiAsFirElementSource(element) ?: return null + val mappings = structureElement.mappings return mappings.getFirOfClosestParent(psi, firResolveSession) ?: firResolveSession.getOrBuildFirFile(firFile) } diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/FileStructure.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/FileStructure.kt index 59878645169..f3eac7070c8 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/FileStructure.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/FileStructure.kt @@ -26,6 +26,8 @@ import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject import org.jetbrains.kotlin.psi.psiUtil.isAncestor import java.util.concurrent.ConcurrentHashMap +import org.jetbrains.kotlin.fir.correspondingProperty +import org.jetbrains.kotlin.fir.declarations.impl.FirPrimaryConstructor internal class FileStructure private constructor( private val ktFile: KtFile, @@ -69,10 +71,6 @@ internal class FileStructure private constructor( container is KtClassOrObject && container.isInsideSuperClassCall(element) -> { container.primaryConstructor?.let { return it } } - - container is KtPrimaryConstructor && container.isInsideAnnotationOnParameter(element) -> { - container.containingClassOrObject?.let { return it } - } } return container @@ -86,30 +84,6 @@ internal class FileStructure private constructor( return false } - private fun KtPrimaryConstructor.isInsideAnnotationOnParameter(element: KtElement): Boolean { - for (parameter in valueParameters) { - for (annotation in parameter.annotationEntries) { - val target = annotation.useSiteTarget?.getAnnotationUseSiteTarget() ?: continue - when (target) { - AnnotationUseSiteTarget.FIELD, - AnnotationUseSiteTarget.PROPERTY, - AnnotationUseSiteTarget.PROPERTY_GETTER, - AnnotationUseSiteTarget.PROPERTY_SETTER, - AnnotationUseSiteTarget.SETTER_PARAMETER -> { - if (annotation.isAncestor(element)) return true - } - AnnotationUseSiteTarget.FILE, - AnnotationUseSiteTarget.RECEIVER, - AnnotationUseSiteTarget.CONSTRUCTOR_PARAMETER, - AnnotationUseSiteTarget.PROPERTY_DELEGATE_FIELD -> { - } - } - } - } - - return false - } - private fun getStructureElementForDeclaration(declaration: KtElement): FileStructureElement { @Suppress("CANNOT_CHECK_FOR_ERASED") val structureElement = structureElements.compute(declaration) { _, structureElement -> @@ -178,6 +152,12 @@ internal class FileStructure private constructor( ) firDeclaration.lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE) + if (firDeclaration is FirPrimaryConstructor) { + firDeclaration.valueParameters.forEach { parameter -> + parameter.correspondingProperty?.lazyResolveToPhase(FirResolvePhase.BODY_RESOLVE) + } + } + return FileElementFactory.createFileStructureElement( firDeclaration = firDeclaration, ktDeclaration = declaration, diff --git a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/FileStructureElement.kt b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/FileStructureElement.kt index 8452e7fcec1..e469f6c7db0 100644 --- a/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/FileStructureElement.kt +++ b/analysis/low-level-api-fir/src/org/jetbrains/kotlin/analysis/low/level/api/fir/file/structure/FileStructureElement.kt @@ -26,6 +26,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol import org.jetbrains.kotlin.psi.* import java.util.concurrent.ConcurrentHashMap +import org.jetbrains.kotlin.fir.correspondingProperty internal sealed class FileStructureElement(val firFile: FirFile, protected val moduleComponents: LLFirModuleResolveComponents) { abstract val psi: KtAnnotated @@ -276,7 +277,19 @@ internal class NonReanalyzableNonClassDeclarationStructureElement( moduleComponents, ) - internal object Recorder : FirElementsRecorder() + internal object Recorder : FirElementsRecorder() { + override fun visitConstructor(constructor: FirConstructor, data: MutableMap) { + if (constructor is FirPrimaryConstructor) { + constructor.valueParameters.forEach { parameter -> + parameter.correspondingProperty?.let { property -> + visitProperty(property, data) + } + } + } + + super.visitConstructor(constructor, data) + } + } } internal class DanglingTopLevelModifierListStructureElement( diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/annotationOnConstructorProperty.kt b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/annotationOnConstructorProperty.kt new file mode 100644 index 00000000000..4c263037a31 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/annotationOnConstructorProperty.kt @@ -0,0 +1,5 @@ +// LOOK_UP_FOR_ELEMENT_OF_TYPE: org.jetbrains.kotlin.psi.KtAnnotationEntry + +class Abc(@Anno var i: Int) { + +} \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/annotationOnConstructorProperty.txt b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/annotationOnConstructorProperty.txt new file mode 100644 index 00000000000..843d35a61b4 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/annotationOnConstructorProperty.txt @@ -0,0 +1,6 @@ +KT element: KtAnnotationEntry +FIR element: FirAnnotationCallImpl +FIR source kind: KtRealSourceElementKind + +FIR element rendered: +@[Types]() \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/annotationOnReturnType.kt b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/annotationOnReturnType.kt new file mode 100644 index 00000000000..6f253dbc811 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/annotationOnReturnType.kt @@ -0,0 +1,3 @@ +// LOOK_UP_FOR_ELEMENT_OF_TYPE: org.jetbrains.kotlin.psi.KtAnnotationEntry + +fun String.collectOfType(i: Int): Sequence<@kotlin.internal.NoInfer T> = 4 \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/annotationOnReturnType.out_of_src_roots.txt b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/annotationOnReturnType.out_of_src_roots.txt new file mode 100644 index 00000000000..3648e7d18df --- /dev/null +++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/annotationOnReturnType.out_of_src_roots.txt @@ -0,0 +1,6 @@ +KT element: KtAnnotationEntry +FIR element: FirAnnotationCallImpl +FIR source kind: KtRealSourceElementKind + +FIR element rendered: +@[Types]() \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/annotationOnReturnType.txt b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/annotationOnReturnType.txt new file mode 100644 index 00000000000..fdd624571fd --- /dev/null +++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/annotationOnReturnType.txt @@ -0,0 +1,6 @@ +KT element: KtAnnotationEntry +FIR element: FirAnnotationCallImpl +FIR source kind: KtRealSourceElementKind + +FIR element rendered: +@[Unresolved]() \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/jvmFieldAnnotationOnConstructorProperty.kt b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/jvmFieldAnnotationOnConstructorProperty.kt new file mode 100644 index 00000000000..9d8cb177929 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/jvmFieldAnnotationOnConstructorProperty.kt @@ -0,0 +1,11 @@ +// LOOK_UP_FOR_ELEMENT_OF_TYPE: org.jetbrains.kotlin.psi.KtAnnotationEntry +// WITH_STDLIB + +class MyClass( + @JvmField + var addCommaWarning: Boolean = false +) : A() { + +} + +open class A \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/jvmFieldAnnotationOnConstructorProperty.out_of_src_roots.txt b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/jvmFieldAnnotationOnConstructorProperty.out_of_src_roots.txt new file mode 100644 index 00000000000..65f5c788fa8 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/jvmFieldAnnotationOnConstructorProperty.out_of_src_roots.txt @@ -0,0 +1,6 @@ +KT element: KtAnnotationEntry +FIR element: FirAnnotationCallImpl +FIR source kind: KtRealSourceElementKind + +FIR element rendered: +@[Types]() \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/jvmFieldAnnotationOnConstructorProperty.txt b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/jvmFieldAnnotationOnConstructorProperty.txt new file mode 100644 index 00000000000..80a02268758 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/jvmFieldAnnotationOnConstructorProperty.txt @@ -0,0 +1,6 @@ +KT element: KtAnnotationEntry +FIR element: FirAnnotationCallImpl +FIR source kind: KtRealSourceElementKind + +FIR element rendered: +@R|kotlin/jvm/JvmField|[Types]() \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorParameter.kt b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorParameter.kt new file mode 100644 index 00000000000..b12ac9dde00 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorParameter.kt @@ -0,0 +1,12 @@ +// LOOK_UP_FOR_ELEMENT_OF_TYPE: org.jetbrains.kotlin.psi.KtAnnotationEntry + +class ResolveMe( + addCommaWarning: @Anno Boolean = false +) : A() { + +} + +open class A + +@Target(AnnotationTarget.TYPE) +annotation class Anno \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorParameter.txt b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorParameter.txt new file mode 100644 index 00000000000..15bc2c7fbb1 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorParameter.txt @@ -0,0 +1,6 @@ +KT element: KtAnnotationEntry +FIR element: FirAnnotationCallImpl +FIR source kind: KtRealSourceElementKind + +FIR element rendered: +@R|Anno|[Types]() \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorProperty.kt b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorProperty.kt new file mode 100644 index 00000000000..66c77974976 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorProperty.kt @@ -0,0 +1,12 @@ +// LOOK_UP_FOR_ELEMENT_OF_TYPE: org.jetbrains.kotlin.psi.KtAnnotationEntry + +class ResolveMe( + var addCommaWarning: @Anno Boolean = false, +) : A() { + +} + +open class A + +@Target(AnnotationTarget.TYPE) +annotation class Anno \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorProperty.txt b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorProperty.txt new file mode 100644 index 00000000000..15bc2c7fbb1 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorProperty.txt @@ -0,0 +1,6 @@ +KT element: KtAnnotationEntry +FIR element: FirAnnotationCallImpl +FIR source kind: KtRealSourceElementKind + +FIR element rendered: +@R|Anno|[Types]() \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorPropertyAndParameter.kt b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorPropertyAndParameter.kt new file mode 100644 index 00000000000..56667734d3b --- /dev/null +++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorPropertyAndParameter.kt @@ -0,0 +1,13 @@ +// LOOK_UP_FOR_ELEMENT_OF_TYPE: org.jetbrains.kotlin.psi.KtAnnotationEntry + +class ResolveMe( + var addCommaWarning: @Anno Boolean = false, + second: @Anno Boolean = false, +) : A() { + +} + +open class A + +@Target(AnnotationTarget.TYPE) +annotation class Anno \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorPropertyAndParameter.txt b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorPropertyAndParameter.txt new file mode 100644 index 00000000000..15bc2c7fbb1 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorPropertyAndParameter.txt @@ -0,0 +1,6 @@ +KT element: KtAnnotationEntry +FIR element: FirAnnotationCallImpl +FIR source kind: KtRealSourceElementKind + +FIR element rendered: +@R|Anno|[Types]() \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorPropertyWithArguments.kt b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorPropertyWithArguments.kt new file mode 100644 index 00000000000..9e655ecc0ed --- /dev/null +++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorPropertyWithArguments.kt @@ -0,0 +1,12 @@ +// LOOK_UP_FOR_ELEMENT_OF_TYPE: org.jetbrains.kotlin.psi.KtAnnotationEntry + +class ResolveMe( + var addCommaWarning: @Anno("abc") Boolean = false, +) : A() { + +} + +open class A + +@Target(AnnotationTarget.TYPE) +annotation class Anno(val value: String) \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorPropertyWithArguments.txt b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorPropertyWithArguments.txt new file mode 100644 index 00000000000..3a6f3df53e4 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorPropertyWithArguments.txt @@ -0,0 +1,6 @@ +KT element: KtAnnotationEntry +FIR element: FirAnnotationCallImpl +FIR source kind: KtRealSourceElementKind + +FIR element rendered: +@R|Anno|[Types](value = String(abc)) diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnFunctionParameter.kt b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnFunctionParameter.kt new file mode 100644 index 00000000000..a0ade4d9f79 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnFunctionParameter.kt @@ -0,0 +1,10 @@ +// LOOK_UP_FOR_ELEMENT_OF_TYPE: org.jetbrains.kotlin.psi.KtAnnotationEntry + +fun t(addCommaWarning: @Anno Boolean) { + +} + +open class A + +@Target(AnnotationTarget.TYPE) +annotation class Anno \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnFunctionParameter.txt b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnFunctionParameter.txt new file mode 100644 index 00000000000..15bc2c7fbb1 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnFunctionParameter.txt @@ -0,0 +1,6 @@ +KT element: KtAnnotationEntry +FIR element: FirAnnotationCallImpl +FIR source kind: KtRealSourceElementKind + +FIR element rendered: +@R|Anno|[Types]() \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnFunctionParameterWithArguments.kt b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnFunctionParameterWithArguments.kt new file mode 100644 index 00000000000..fc7d9118e9f --- /dev/null +++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnFunctionParameterWithArguments.kt @@ -0,0 +1,10 @@ +// LOOK_UP_FOR_ELEMENT_OF_TYPE: org.jetbrains.kotlin.psi.KtAnnotationEntry + +fun t(addCommaWarning: @Anno("abcd") Boolean) { + +} + +open class A + +@Target(AnnotationTarget.TYPE) +annotation class Anno(val value: String) \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnFunctionParameterWithArguments.txt b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnFunctionParameterWithArguments.txt new file mode 100644 index 00000000000..4b549d76be7 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnFunctionParameterWithArguments.txt @@ -0,0 +1,6 @@ +KT element: KtAnnotationEntry +FIR element: FirAnnotationCallImpl +FIR source kind: KtRealSourceElementKind + +FIR element rendered: +@R|Anno|[Types](value = String(abcd)) diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/declarations/constructorProperty.kt b/analysis/low-level-api-fir/testdata/getOrBuildFir/declarations/constructorProperty.kt new file mode 100644 index 00000000000..903b0c3e0cd --- /dev/null +++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/declarations/constructorProperty.kt @@ -0,0 +1,5 @@ +// LOOK_UP_FOR_ELEMENT_OF_TYPE: org.jetbrains.kotlin.psi.KtParameter + +class Abc(val i: Int = 4) { + +} \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/declarations/constructorProperty.txt b/analysis/low-level-api-fir/testdata/getOrBuildFir/declarations/constructorProperty.txt new file mode 100644 index 00000000000..85e70ede471 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/declarations/constructorProperty.txt @@ -0,0 +1,6 @@ +KT element: KtParameter +FIR element: FirValueParameterImpl +FIR source kind: KtRealSourceElementKind + +FIR element rendered: +[ResolvedTo(BODY_RESOLVE)] i: R|kotlin/Int| = Int(4) \ No newline at end of file diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/OutOfContentRootGetOrBuildFirTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/OutOfContentRootGetOrBuildFirTestGenerated.java index 97bf146a4b5..37057519617 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/OutOfContentRootGetOrBuildFirTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/OutOfContentRootGetOrBuildFirTestGenerated.java @@ -69,6 +69,18 @@ public class OutOfContentRootGetOrBuildFirTestGenerated extends AbstractOutOfCon runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/annotationApplicationWithArgumentsOnCallSite.kt"); } + @Test + @TestMetadata("annotationOnConstructorProperty.kt") + public void testAnnotationOnConstructorProperty() throws Exception { + runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/annotationOnConstructorProperty.kt"); + } + + @Test + @TestMetadata("annotationOnReturnType.kt") + public void testAnnotationOnReturnType() throws Exception { + runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/annotationOnReturnType.kt"); + } + @Test @TestMetadata("danglingAnnotation.kt") public void testDanglingAnnotation() throws Exception { @@ -87,6 +99,12 @@ public class OutOfContentRootGetOrBuildFirTestGenerated extends AbstractOutOfCon runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/fileAnnotation.kt"); } + @Test + @TestMetadata("jvmFieldAnnotationOnConstructorProperty.kt") + public void testJvmFieldAnnotationOnConstructorProperty() throws Exception { + runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/jvmFieldAnnotationOnConstructorProperty.kt"); + } + @Test @TestMetadata("retentionValue.kt") public void testRetentionValue() throws Exception { @@ -105,6 +123,42 @@ public class OutOfContentRootGetOrBuildFirTestGenerated extends AbstractOutOfCon runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/superCallAnnotation2.kt"); } + @Test + @TestMetadata("typeOnAnnotationOnConstructorParameter.kt") + public void testTypeOnAnnotationOnConstructorParameter() throws Exception { + runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorParameter.kt"); + } + + @Test + @TestMetadata("typeOnAnnotationOnConstructorProperty.kt") + public void testTypeOnAnnotationOnConstructorProperty() throws Exception { + runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorProperty.kt"); + } + + @Test + @TestMetadata("typeOnAnnotationOnConstructorPropertyAndParameter.kt") + public void testTypeOnAnnotationOnConstructorPropertyAndParameter() throws Exception { + runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorPropertyAndParameter.kt"); + } + + @Test + @TestMetadata("typeOnAnnotationOnConstructorPropertyWithArguments.kt") + public void testTypeOnAnnotationOnConstructorPropertyWithArguments() throws Exception { + runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorPropertyWithArguments.kt"); + } + + @Test + @TestMetadata("typeOnAnnotationOnFunctionParameter.kt") + public void testTypeOnAnnotationOnFunctionParameter() throws Exception { + runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnFunctionParameter.kt"); + } + + @Test + @TestMetadata("typeOnAnnotationOnFunctionParameterWithArguments.kt") + public void testTypeOnAnnotationOnFunctionParameterWithArguments() throws Exception { + runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnFunctionParameterWithArguments.kt"); + } + @Nested @TestMetadata("analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/useSite") @TestDataPath("$PROJECT_ROOT") @@ -375,6 +429,12 @@ public class OutOfContentRootGetOrBuildFirTestGenerated extends AbstractOutOfCon KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/low-level-api-fir/testdata/getOrBuildFir/declarations"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @Test + @TestMetadata("constructorProperty.kt") + public void testConstructorProperty() throws Exception { + runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/declarations/constructorProperty.kt"); + } + @Test @TestMetadata("destructuring.kt") public void testDestructuring() throws Exception { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/SourceGetOrBuildFirTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/SourceGetOrBuildFirTestGenerated.java index 3e8fd806a9d..937e3c17cd0 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/SourceGetOrBuildFirTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/SourceGetOrBuildFirTestGenerated.java @@ -69,6 +69,18 @@ public class SourceGetOrBuildFirTestGenerated extends AbstractSourceGetOrBuildFi runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/annotationApplicationWithArgumentsOnCallSite.kt"); } + @Test + @TestMetadata("annotationOnConstructorProperty.kt") + public void testAnnotationOnConstructorProperty() throws Exception { + runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/annotationOnConstructorProperty.kt"); + } + + @Test + @TestMetadata("annotationOnReturnType.kt") + public void testAnnotationOnReturnType() throws Exception { + runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/annotationOnReturnType.kt"); + } + @Test @TestMetadata("danglingAnnotation.kt") public void testDanglingAnnotation() throws Exception { @@ -87,6 +99,12 @@ public class SourceGetOrBuildFirTestGenerated extends AbstractSourceGetOrBuildFi runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/fileAnnotation.kt"); } + @Test + @TestMetadata("jvmFieldAnnotationOnConstructorProperty.kt") + public void testJvmFieldAnnotationOnConstructorProperty() throws Exception { + runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/jvmFieldAnnotationOnConstructorProperty.kt"); + } + @Test @TestMetadata("retentionValue.kt") public void testRetentionValue() throws Exception { @@ -105,6 +123,42 @@ public class SourceGetOrBuildFirTestGenerated extends AbstractSourceGetOrBuildFi runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/superCallAnnotation2.kt"); } + @Test + @TestMetadata("typeOnAnnotationOnConstructorParameter.kt") + public void testTypeOnAnnotationOnConstructorParameter() throws Exception { + runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorParameter.kt"); + } + + @Test + @TestMetadata("typeOnAnnotationOnConstructorProperty.kt") + public void testTypeOnAnnotationOnConstructorProperty() throws Exception { + runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorProperty.kt"); + } + + @Test + @TestMetadata("typeOnAnnotationOnConstructorPropertyAndParameter.kt") + public void testTypeOnAnnotationOnConstructorPropertyAndParameter() throws Exception { + runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorPropertyAndParameter.kt"); + } + + @Test + @TestMetadata("typeOnAnnotationOnConstructorPropertyWithArguments.kt") + public void testTypeOnAnnotationOnConstructorPropertyWithArguments() throws Exception { + runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnConstructorPropertyWithArguments.kt"); + } + + @Test + @TestMetadata("typeOnAnnotationOnFunctionParameter.kt") + public void testTypeOnAnnotationOnFunctionParameter() throws Exception { + runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnFunctionParameter.kt"); + } + + @Test + @TestMetadata("typeOnAnnotationOnFunctionParameterWithArguments.kt") + public void testTypeOnAnnotationOnFunctionParameterWithArguments() throws Exception { + runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/typeOnAnnotationOnFunctionParameterWithArguments.kt"); + } + @Nested @TestMetadata("analysis/low-level-api-fir/testdata/getOrBuildFir/annotations/useSite") @TestDataPath("$PROJECT_ROOT") @@ -375,6 +429,12 @@ public class SourceGetOrBuildFirTestGenerated extends AbstractSourceGetOrBuildFi KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/low-level-api-fir/testdata/getOrBuildFir/declarations"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @Test + @TestMetadata("constructorProperty.kt") + public void testConstructorProperty() throws Exception { + runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/declarations/constructorProperty.kt"); + } + @Test @TestMetadata("destructuring.kt") public void testDestructuring() throws Exception {