From 2b05320ae964f24e50b9620019f2739c2b338c22 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Thu, 9 Jan 2020 12:44:39 +0300 Subject: [PATCH] [Raw FIR] Synchronize enum entry building in PSI / light AST modes --- .../converter/DeclarationsConverter.kt | 2 +- .../kotlin/fir/lightTree/fir/ClassWrapper.kt | 4 ++ ...ghtTree2FirConverterTestCaseGenerated.java | 10 +++ .../fir/lightTree/compare/TreesCompareTest.kt | 16 ++++- .../kotlin/fir/builder/RawFirBuilder.kt | 14 ++++- .../rawBuilder/declarations/annotation.kt | 20 ++++++ .../rawBuilder/declarations/annotation.txt | 62 +++++++++++++++++++ .../declarations/constructorInObject.kt | 20 ++++++ .../declarations/constructorInObject.txt | 54 ++++++++++++++++ .../rawBuilder/declarations/enums.txt | 42 +++++-------- .../rawBuilder/declarations/enums2.txt | 16 ++--- .../RawFirBuilderTestCaseGenerated.java | 10 +++ .../constructorInObject.fir.kt | 2 +- .../rawBuilder/declarations/annotation.kt | 57 +++++++++++++++++ .../declarations/constructorInObject.kt | 24 +++++++ .../expressions/lambdaAndAnonymousFunction.kt | 19 ++++++ .../expressions/qualifierWithTypeArguments.kt | 5 ++ .../FirVisualizerForRawFirDataGenerated.java | 10 +++ .../PsiVisualizerForRawFirDataGenerated.java | 10 +++ 19 files changed, 353 insertions(+), 44 deletions(-) create mode 100644 compiler/fir/psi2fir/testData/rawBuilder/declarations/annotation.kt create mode 100644 compiler/fir/psi2fir/testData/rawBuilder/declarations/annotation.txt create mode 100644 compiler/fir/psi2fir/testData/rawBuilder/declarations/constructorInObject.kt create mode 100644 compiler/fir/psi2fir/testData/rawBuilder/declarations/constructorInObject.txt create mode 100644 compiler/visualizer/testData/rawBuilder/declarations/annotation.kt create mode 100644 compiler/visualizer/testData/rawBuilder/declarations/constructorInObject.kt create mode 100644 compiler/visualizer/testData/rawBuilder/expressions/lambdaAndAnonymousFunction.kt create mode 100644 compiler/visualizer/testData/rawBuilder/expressions/qualifierWithTypeArguments.kt diff --git a/compiler/fir/lightTree/src/org/jetbrains/kotlin/fir/lightTree/converter/DeclarationsConverter.kt b/compiler/fir/lightTree/src/org/jetbrains/kotlin/fir/lightTree/converter/DeclarationsConverter.kt index 5cb0b370037..7bcb0a1fb27 100644 --- a/compiler/fir/lightTree/src/org/jetbrains/kotlin/fir/lightTree/converter/DeclarationsConverter.kt +++ b/compiler/fir/lightTree/src/org/jetbrains/kotlin/fir/lightTree/converter/DeclarationsConverter.kt @@ -612,7 +612,7 @@ class DeclarationsConverter( * primaryConstructor branch */ private fun convertPrimaryConstructor(primaryConstructor: LighterASTNode?, classWrapper: ClassWrapper): PrimaryConstructor? { - if (primaryConstructor == null && classWrapper.hasSecondaryConstructor) return null + if (primaryConstructor == null && !classWrapper.isEnumEntry() && classWrapper.hasSecondaryConstructor) return null if (classWrapper.isInterface()) return null var modifiers = Modifier() diff --git a/compiler/fir/lightTree/src/org/jetbrains/kotlin/fir/lightTree/fir/ClassWrapper.kt b/compiler/fir/lightTree/src/org/jetbrains/kotlin/fir/lightTree/fir/ClassWrapper.kt index 3c9fc01f32d..7de1cb7fae3 100644 --- a/compiler/fir/lightTree/src/org/jetbrains/kotlin/fir/lightTree/fir/ClassWrapper.kt +++ b/compiler/fir/lightTree/src/org/jetbrains/kotlin/fir/lightTree/fir/ClassWrapper.kt @@ -32,6 +32,10 @@ class ClassWrapper( return className == SpecialNames.NO_NAME_PROVIDED && isObject() } + fun isEnumEntry(): Boolean { + return classKind == ClassKind.ENUM_ENTRY + } + private fun isObject(): Boolean { return classKind == ClassKind.OBJECT } diff --git a/compiler/fir/lightTree/tests/org/jetbrains/kotlin/fir/lightTree/LightTree2FirConverterTestCaseGenerated.java b/compiler/fir/lightTree/tests/org/jetbrains/kotlin/fir/lightTree/LightTree2FirConverterTestCaseGenerated.java index dca7f5aba01..5179186923e 100644 --- a/compiler/fir/lightTree/tests/org/jetbrains/kotlin/fir/lightTree/LightTree2FirConverterTestCaseGenerated.java +++ b/compiler/fir/lightTree/tests/org/jetbrains/kotlin/fir/lightTree/LightTree2FirConverterTestCaseGenerated.java @@ -40,11 +40,21 @@ public class LightTree2FirConverterTestCaseGenerated extends AbstractLightTree2F KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/psi2fir/testData/rawBuilder/declarations"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @TestMetadata("annotation.kt") + public void testAnnotation() throws Exception { + runTest("compiler/fir/psi2fir/testData/rawBuilder/declarations/annotation.kt"); + } + @TestMetadata("complexTypes.kt") public void testComplexTypes() throws Exception { runTest("compiler/fir/psi2fir/testData/rawBuilder/declarations/complexTypes.kt"); } + @TestMetadata("constructorInObject.kt") + public void testConstructorInObject() throws Exception { + runTest("compiler/fir/psi2fir/testData/rawBuilder/declarations/constructorInObject.kt"); + } + @TestMetadata("derivedClass.kt") public void testDerivedClass() throws Exception { runTest("compiler/fir/psi2fir/testData/rawBuilder/declarations/derivedClass.kt"); diff --git a/compiler/fir/lightTree/tests/org/jetbrains/kotlin/fir/lightTree/compare/TreesCompareTest.kt b/compiler/fir/lightTree/tests/org/jetbrains/kotlin/fir/lightTree/compare/TreesCompareTest.kt index 2254f92cea7..c23101bda4f 100644 --- a/compiler/fir/lightTree/tests/org/jetbrains/kotlin/fir/lightTree/compare/TreesCompareTest.kt +++ b/compiler/fir/lightTree/tests/org/jetbrains/kotlin/fir/lightTree/compare/TreesCompareTest.kt @@ -27,10 +27,16 @@ class TreesCompareTest : AbstractRawFirBuilderTestCase() { private fun compareBase(path: String, withTestData: Boolean, compareFir: (File) -> Boolean) { var counter = 0 var errorCounter = 0 + val differentFiles = mutableListOf() val onEachFile: (File) -> Unit = { file -> - if (!compareFir(file)) errorCounter++ - counter++ + if (!compareFir(file)) { + errorCounter++ + differentFiles += file + } + if (!file.name.endsWith(".fir.kt")) { + counter++ + } } println("BASE PATH: $path") if (!withTestData) { @@ -40,6 +46,9 @@ class TreesCompareTest : AbstractRawFirBuilderTestCase() { } println("All scanned files: $counter") println("Files that aren't equal to FIR: $errorCounter") + if (errorCounter > 0) { + println(differentFiles) + } TestCase.assertEquals(0, errorCounter) } @@ -64,6 +73,9 @@ class TreesCompareTest : AbstractRawFirBuilderTestCase() { fun testCompareDiagnostics() { val lightTreeConverter = LightTree2Fir(scopeProvider = StubFirScopeProvider, stubMode = false) compareBase("compiler/testData/diagnostics/tests", withTestData = true) { file -> + if (file.name.endsWith(".fir.kt")) { + return@compareBase true + } val notEditedText = FileUtil.loadFile(file, CharsetToolkit.UTF8, true).trim() val text = notEditedText.replace("()|()".toRegex(), "").replaceAfter(".java", "") diff --git a/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt b/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt index 1757318d920..abc9e61d084 100644 --- a/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt +++ b/compiler/fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt @@ -37,6 +37,7 @@ import org.jetbrains.kotlin.psi.psiUtil.hasExpectModifier import org.jetbrains.kotlin.types.Variance import org.jetbrains.kotlin.types.expressions.OperatorConventions import org.jetbrains.kotlin.util.OperatorNameConventions +import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull class RawFirBuilder(session: FirSession, val scopeProvider: FirScopeProvider, val stubMode: Boolean) : BaseFirBuilder(session) { @@ -475,14 +476,21 @@ class RawFirBuilder(session: FirSession, val scopeProvider: FirScopeProvider, va val delegatedEntrySelfType = FirResolvedTypeRefImpl(source = null, ConeClassLikeTypeImpl(obj.symbol.toLookupTag(), emptyArray(), isNullable = false)) - extractSuperTypeListEntriesTo(obj, delegatedEntrySelfType, delegatedEnumSelfTypeRef, ClassKind.ENUM_ENTRY) + extractAnnotationsTo(obj) + obj.superTypeRefs += delegatedEnumSelfTypeRef + obj.declarations += primaryConstructor.toFirConstructor( + superTypeListEntries.firstIsInstanceOrNull(), + delegatedEnumSelfTypeRef, + delegatedEntrySelfType, + owner = this + ) for (declaration in declarations) { obj.declarations += declaration.toFirDeclaration( delegatedEnumSelfTypeRef, - delegatedSelfType = null, + delegatedSelfType = delegatedEntrySelfType, this, - hasPrimaryConstructor = false + hasPrimaryConstructor = true ) } diff --git a/compiler/fir/psi2fir/testData/rawBuilder/declarations/annotation.kt b/compiler/fir/psi2fir/testData/rawBuilder/declarations/annotation.kt new file mode 100644 index 00000000000..31b8e95d177 --- /dev/null +++ b/compiler/fir/psi2fir/testData/rawBuilder/declarations/annotation.kt @@ -0,0 +1,20 @@ +@Target(AnnotationTarget.ANNOTATION_CLASS) annotation class base + +@base annotation class derived + +@base class correct(@base val x: Int) { + @base constructor(): this(0) +} + +@base enum class My { + @base FIRST, + @base SECOND +} + +@base fun foo(@base y: @base Int): Int { + @base fun bar(@base z: @base Int) = z + 1 + @base val local = bar(y) + return local +} + +@base val z = 0 diff --git a/compiler/fir/psi2fir/testData/rawBuilder/declarations/annotation.txt b/compiler/fir/psi2fir/testData/rawBuilder/declarations/annotation.txt new file mode 100644 index 00000000000..dc52381ab2e --- /dev/null +++ b/compiler/fir/psi2fir/testData/rawBuilder/declarations/annotation.txt @@ -0,0 +1,62 @@ +FILE: annotation.kt + @Target(AnnotationTarget#.ANNOTATION_CLASS#) public? final? annotation class base : R|kotlin/Annotation| { + public? constructor(): R|base| { + super() + } + + } + @base() public? final? annotation class derived : R|kotlin/Annotation| { + public? constructor(): R|derived| { + super() + } + + } + @base() public? final? class correct : R|kotlin/Any| { + public? constructor(@base() x: Int): R|correct| { + super() + } + + @base() public? final? val x: Int = R|/x| + public? get(): Int + + @base() public? constructor(): R|correct| { + this(IntegerLiteral(0)) + } + + } + @base() public? final? enum class My : R|kotlin/Enum| { + private constructor(): R|My| { + super() + } + + public final static enum entry FIRST: R|My| = @base() object : R|My| { + public? constructor(): R|anonymous| { + super() + } + + } + + public final static enum entry SECOND: R|My| = @base() object : R|My| { + public? constructor(): R|anonymous| { + super() + } + + } + + public final static fun values(): R|kotlin/Array| { + } + + public final static fun valueOf(value: R|kotlin/String|): R|My| { + } + + } + @base() public? final? fun foo(@base() y: @base() Int): Int { + @base() local final? fun bar(@base() z: @base() Int): { + ^bar z#.plus#(IntegerLiteral(1)) + } + + @base() lval local: = bar#(y#) + ^foo local# + } + @base() public? final? val z: = IntegerLiteral(0) + public? get(): diff --git a/compiler/fir/psi2fir/testData/rawBuilder/declarations/constructorInObject.kt b/compiler/fir/psi2fir/testData/rawBuilder/declarations/constructorInObject.kt new file mode 100644 index 00000000000..98fcf0c9e1f --- /dev/null +++ b/compiler/fir/psi2fir/testData/rawBuilder/declarations/constructorInObject.kt @@ -0,0 +1,20 @@ +object A { + constructor() + init {} +} + +enum class B { + X() { + constructor() + } +} + +class C { + companion object { + constructor() + } +} + +val anonObject = object { + constructor() +} \ No newline at end of file diff --git a/compiler/fir/psi2fir/testData/rawBuilder/declarations/constructorInObject.txt b/compiler/fir/psi2fir/testData/rawBuilder/declarations/constructorInObject.txt new file mode 100644 index 00000000000..094cf57b73c --- /dev/null +++ b/compiler/fir/psi2fir/testData/rawBuilder/declarations/constructorInObject.txt @@ -0,0 +1,54 @@ +FILE: constructorInObject.kt + public? final? object A : R|kotlin/Any| { + public? constructor(): R|A| { + super() + } + + init { + } + + } + public? final? enum class B : R|kotlin/Enum| { + private constructor(): R|B| { + super() + } + + public final static enum entry X: R|B| = object : R|B| { + public? constructor(): R|anonymous| { + super() + } + + public? constructor(): R|anonymous| { + this() + } + + } + + public final static fun values(): R|kotlin/Array| { + } + + public final static fun valueOf(value: R|kotlin/String|): R|B| { + } + + } + public? final? class C : R|kotlin/Any| { + public? constructor(): R|C| { + super() + } + + public? final? companion object Companion : R|kotlin/Any| { + public? constructor(): R|C.Companion| { + super() + } + + } + + } + public? final? val anonObject: = object : R|kotlin/Any| { + public? constructor(): { + super<>() + } + + } + + public? get(): diff --git a/compiler/fir/psi2fir/testData/rawBuilder/declarations/enums.txt b/compiler/fir/psi2fir/testData/rawBuilder/declarations/enums.txt index b157b30d4c2..490ddb75c70 100644 --- a/compiler/fir/psi2fir/testData/rawBuilder/declarations/enums.txt +++ b/compiler/fir/psi2fir/testData/rawBuilder/declarations/enums.txt @@ -4,33 +4,27 @@ FILE: enums.kt super() } - public final static val FIRST: R|Order| = object : R|Order| { - public? constructor(): R|Order| { + public final static enum entry FIRST: R|Order| = object : R|Order| { + public? constructor(): R|anonymous| { super() } } - - - public final static val SECOND: R|Order| = object : R|Order| { - public? constructor(): R|Order| { + public final static enum entry SECOND: R|Order| = object : R|Order| { + public? constructor(): R|anonymous| { super() } } - - - public final static val THIRD: R|Order| = object : R|Order| { - public? constructor(): R|Order| { + public final static enum entry THIRD: R|Order| = object : R|Order| { + public? constructor(): R|anonymous| { super() } } - - public final static fun values(): R|kotlin/Array| { } @@ -49,9 +43,9 @@ FILE: enums.kt internal final? val r: Double = R|/r| internal get(): Double - public final static val MERCURY: R|Planet| = object : Planet { - public? constructor(): Planet { - super(Double(1.0), Double(2.0)) + public final static enum entry MERCURY: R|Planet| = object : R|Planet| { + public? constructor(): R|anonymous| { + super(Double(1.0), Double(2.0)) } public? open? override fun sayHello(): R|kotlin/Unit| { @@ -60,11 +54,9 @@ FILE: enums.kt } - - - public final static val VENERA: R|Planet| = object : Planet { - public? constructor(): Planet { - super(Double(3.0), Double(4.0)) + public final static enum entry VENERA: R|Planet| = object : R|Planet| { + public? constructor(): R|anonymous| { + super(Double(3.0), Double(4.0)) } public? open? override fun sayHello(): R|kotlin/Unit| { @@ -73,11 +65,9 @@ FILE: enums.kt } - - - public final static val EARTH: R|Planet| = object : Planet { - public? constructor(): Planet { - super(Double(5.0), Double(6.0)) + public final static enum entry EARTH: R|Planet| = object : R|Planet| { + public? constructor(): R|anonymous| { + super(Double(5.0), Double(6.0)) } public? open? override fun sayHello(): R|kotlin/Unit| { @@ -86,8 +76,6 @@ FILE: enums.kt } - - public? final? val g: Double = G#.times#(m#).div#(r#.times#(r#)) public? get(): Double diff --git a/compiler/fir/psi2fir/testData/rawBuilder/declarations/enums2.txt b/compiler/fir/psi2fir/testData/rawBuilder/declarations/enums2.txt index 94134c6576b..3ab74c467b0 100644 --- a/compiler/fir/psi2fir/testData/rawBuilder/declarations/enums2.txt +++ b/compiler/fir/psi2fir/testData/rawBuilder/declarations/enums2.txt @@ -21,9 +21,9 @@ FILE: enums2.kt public? final? val x: Some = R|/x| public? get(): Some - public final static val FIRST: R|SomeEnum| = object : SomeEnum { - public? constructor(): SomeEnum { - super(O1#) + public final static enum entry FIRST: R|SomeEnum| = object : R|SomeEnum| { + public? constructor(): R|anonymous| { + super(O1#) } public? open? override fun check(y: Some): Boolean { @@ -32,11 +32,9 @@ FILE: enums2.kt } - - - public final static val SECOND: R|SomeEnum| = object : SomeEnum { - public? constructor(): SomeEnum { - super(O2#) + public final static enum entry SECOND: R|SomeEnum| = object : R|SomeEnum| { + public? constructor(): R|anonymous| { + super(O2#) } public? open? override fun check(y: Some): Boolean { @@ -45,8 +43,6 @@ FILE: enums2.kt } - - public? abstract fun check(y: Some): Boolean public final static fun values(): R|kotlin/Array| { diff --git a/compiler/fir/psi2fir/tests/org/jetbrains/kotlin/fir/builder/RawFirBuilderTestCaseGenerated.java b/compiler/fir/psi2fir/tests/org/jetbrains/kotlin/fir/builder/RawFirBuilderTestCaseGenerated.java index b0b2e7a414c..106177ce142 100644 --- a/compiler/fir/psi2fir/tests/org/jetbrains/kotlin/fir/builder/RawFirBuilderTestCaseGenerated.java +++ b/compiler/fir/psi2fir/tests/org/jetbrains/kotlin/fir/builder/RawFirBuilderTestCaseGenerated.java @@ -40,11 +40,21 @@ public class RawFirBuilderTestCaseGenerated extends AbstractRawFirBuilderTestCas KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/psi2fir/testData/rawBuilder/declarations"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @TestMetadata("annotation.kt") + public void testAnnotation() throws Exception { + runTest("compiler/fir/psi2fir/testData/rawBuilder/declarations/annotation.kt"); + } + @TestMetadata("complexTypes.kt") public void testComplexTypes() throws Exception { runTest("compiler/fir/psi2fir/testData/rawBuilder/declarations/complexTypes.kt"); } + @TestMetadata("constructorInObject.kt") + public void testConstructorInObject() throws Exception { + runTest("compiler/fir/psi2fir/testData/rawBuilder/declarations/constructorInObject.kt"); + } + @TestMetadata("derivedClass.kt") public void testDerivedClass() throws Exception { runTest("compiler/fir/psi2fir/testData/rawBuilder/declarations/derivedClass.kt"); diff --git a/compiler/testData/diagnostics/tests/secondaryConstructors/constructorInObject.fir.kt b/compiler/testData/diagnostics/tests/secondaryConstructors/constructorInObject.fir.kt index d82fd198544..0f1efb9a536 100644 --- a/compiler/testData/diagnostics/tests/secondaryConstructors/constructorInObject.fir.kt +++ b/compiler/testData/diagnostics/tests/secondaryConstructors/constructorInObject.fir.kt @@ -5,7 +5,7 @@ object A { enum class B { X() { - constructor() + constructor() } } diff --git a/compiler/visualizer/testData/rawBuilder/declarations/annotation.kt b/compiler/visualizer/testData/rawBuilder/declarations/annotation.kt new file mode 100644 index 00000000000..0c4eeab48f2 --- /dev/null +++ b/compiler/visualizer/testData/rawBuilder/declarations/annotation.kt @@ -0,0 +1,57 @@ +//constructor annotation/Target(vararg annotation/AnnotationTarget) +//│ enum class annotation/AnnotationTarget: Enum +//│ │ enum entry annotation/AnnotationTarget.ANNOTATION_CLASS +//│ │ │ +@Target(AnnotationTarget.ANNOTATION_CLASS) annotation class base + +//constructor base() +//│ +@base annotation class derived + +//constructor base() constructor base() +//│ │ +@base class correct(@base val x: Int) { +// constructor base() Int +// │ │ + @base constructor(): this(0) +} + +//constructor base() +//│ +@base enum class My { +// constructor base() +// │ + @base FIRST, +// constructor base() +// │ + @base SECOND +} + +//constructor base() +//│ constructor base() +//│ │ constructor base() +//│ │ │ +@base fun foo(@base y: @base Int): Int { +// constructor base() +// │ constructor base() +// │ │ constructor base() +// │ │ │ Int +// │ │ │ │ foo.bar.z: Int +// │ │ │ │ │ fun (Int).plus(Int): Int +// │ │ │ │ │ │ Int +// │ │ │ │ │ │ │ + @base fun bar(@base z: @base Int) = z + 1 +// constructor base() +// │ fun foo.bar(Int): Int +// │ Int │ foo.y: Int +// │ │ │ │ + @base val local = bar(y) +// val foo.local: Int +// │ + return local +} + +//constructor base() +//│ Int Int +//│ │ │ +@base val z = 0 diff --git a/compiler/visualizer/testData/rawBuilder/declarations/constructorInObject.kt b/compiler/visualizer/testData/rawBuilder/declarations/constructorInObject.kt new file mode 100644 index 00000000000..3e7c2800f67 --- /dev/null +++ b/compiler/visualizer/testData/rawBuilder/declarations/constructorInObject.kt @@ -0,0 +1,24 @@ +object A { + constructor() + init {} +} + +enum class B { +// constructor B() +// │ + X() { + constructor() + } +} + +class C { + companion object { + constructor() + } +} + +// Any +// │ +val anonObject = object { + constructor() +} diff --git a/compiler/visualizer/testData/rawBuilder/expressions/lambdaAndAnonymousFunction.kt b/compiler/visualizer/testData/rawBuilder/expressions/lambdaAndAnonymousFunction.kt new file mode 100644 index 00000000000..abe5f1201bd --- /dev/null +++ b/compiler/visualizer/testData/rawBuilder/expressions/lambdaAndAnonymousFunction.kt @@ -0,0 +1,19 @@ +// T fun (() -> T).invoke(): T +// │ │ +fun run(block: () -> T): T = block() + +fun test_1() { +// fun run(() -> Unit): Unit +// │ + run { return@run } +// fun run(() -> ???): ??? +// │ + run { return } +} + +fun test_2() { +// fun run(() -> Int): Int +// │ Int +// │ │ + run(fun (): Int { return 1 }) +} diff --git a/compiler/visualizer/testData/rawBuilder/expressions/qualifierWithTypeArguments.kt b/compiler/visualizer/testData/rawBuilder/expressions/qualifierWithTypeArguments.kt new file mode 100644 index 00000000000..68849bf4d42 --- /dev/null +++ b/compiler/visualizer/testData/rawBuilder/expressions/qualifierWithTypeArguments.kt @@ -0,0 +1,5 @@ +fun test() { +// class Array: Any, Cloneable, java/io/Serializable +// │ + Array::class +} diff --git a/compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/fir/FirVisualizerForRawFirDataGenerated.java b/compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/fir/FirVisualizerForRawFirDataGenerated.java index 0272fdf508b..70debab2430 100644 --- a/compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/fir/FirVisualizerForRawFirDataGenerated.java +++ b/compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/fir/FirVisualizerForRawFirDataGenerated.java @@ -40,11 +40,21 @@ public class FirVisualizerForRawFirDataGenerated extends AbstractFirVisualizer { KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/psi2fir/testData/rawBuilder/declarations"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @TestMetadata("annotation.kt") + public void testAnnotation() throws Exception { + runTest("compiler/fir/psi2fir/testData/rawBuilder/declarations/annotation.kt"); + } + @TestMetadata("complexTypes.kt") public void testComplexTypes() throws Exception { runTest("compiler/fir/psi2fir/testData/rawBuilder/declarations/complexTypes.kt"); } + @TestMetadata("constructorInObject.kt") + public void testConstructorInObject() throws Exception { + runTest("compiler/fir/psi2fir/testData/rawBuilder/declarations/constructorInObject.kt"); + } + @TestMetadata("derivedClass.kt") public void testDerivedClass() throws Exception { runTest("compiler/fir/psi2fir/testData/rawBuilder/declarations/derivedClass.kt"); diff --git a/compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/psi/PsiVisualizerForRawFirDataGenerated.java b/compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/psi/PsiVisualizerForRawFirDataGenerated.java index a84450728c8..9e0af85d6e6 100644 --- a/compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/psi/PsiVisualizerForRawFirDataGenerated.java +++ b/compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/psi/PsiVisualizerForRawFirDataGenerated.java @@ -40,11 +40,21 @@ public class PsiVisualizerForRawFirDataGenerated extends AbstractPsiVisualizer { KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/psi2fir/testData/rawBuilder/declarations"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @TestMetadata("annotation.kt") + public void testAnnotation() throws Exception { + runTest("compiler/fir/psi2fir/testData/rawBuilder/declarations/annotation.kt"); + } + @TestMetadata("complexTypes.kt") public void testComplexTypes() throws Exception { runTest("compiler/fir/psi2fir/testData/rawBuilder/declarations/complexTypes.kt"); } + @TestMetadata("constructorInObject.kt") + public void testConstructorInObject() throws Exception { + runTest("compiler/fir/psi2fir/testData/rawBuilder/declarations/constructorInObject.kt"); + } + @TestMetadata("derivedClass.kt") public void testDerivedClass() throws Exception { runTest("compiler/fir/psi2fir/testData/rawBuilder/declarations/derivedClass.kt");