From 0f076e16ed424c8127874a0919329fd4a3c7de76 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Fri, 1 Oct 2021 11:44:21 +0300 Subject: [PATCH] [FIR] Update plugin testdata --- .../plugin/generators/AllOpenClassGenerator.kt | 5 ++++- .../AllOpenTopLevelDeclarationsGenerator.kt | 3 +++ ...ssWithGeneratedMembersAndNestedClass.fir.txt | 5 +++++ ...atedClassWithMembersAndNestedClasses.fir.txt | 17 +++++++++++++++++ .../memberGen/topLevelCallables.fir.txt | 6 ++++++ .../diagnostics/memberGen/topLevelCallables.kt | 4 ---- .../diagnostics/supertypes/simple.fir.txt | 2 ++ 7 files changed, 37 insertions(+), 5 deletions(-) diff --git a/plugins/fir/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/AllOpenClassGenerator.kt b/plugins/fir/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/AllOpenClassGenerator.kt index 7f3ef37144d..261fd28d56f 100644 --- a/plugins/fir/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/AllOpenClassGenerator.kt +++ b/plugins/fir/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/AllOpenClassGenerator.kt @@ -38,6 +38,8 @@ import org.jetbrains.kotlin.name.Name * - testClassName() functions for all classes annotated with @B * - NestedClassName nested classes for all classes annotated with @B * - function `materialize: ClassName` in those nested classes + * + * If there are no annotated classes then AllOpenGenerated class is not generated */ class AllOpenClassGenerator(session: FirSession) : FirDeclarationGenerationExtension(session) { companion object { @@ -78,6 +80,7 @@ class AllOpenClassGenerator(session: FirSession) : FirDeclarationGenerationExten private fun generateAllOpenGeneratedClass(classId: ClassId): FirClassLikeSymbol<*>? { if (classId != GENERATED_CLASS_ID) return null + if (matchedClasses.isEmpty()) return null return buildClass(classId).symbol } @@ -152,7 +155,7 @@ class AllOpenClassGenerator(session: FirSession) : FirDeclarationGenerationExten } override fun getTopLevelClassIds(): Set { - return setOf(GENERATED_CLASS_ID) + return if (matchedClasses.isEmpty()) emptySet() else setOf(GENERATED_CLASS_ID) } override fun hasPackage(packageFqName: FqName): Boolean { diff --git a/plugins/fir/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/AllOpenTopLevelDeclarationsGenerator.kt b/plugins/fir/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/AllOpenTopLevelDeclarationsGenerator.kt index 1e089434cfa..983d24c683a 100644 --- a/plugins/fir/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/AllOpenTopLevelDeclarationsGenerator.kt +++ b/plugins/fir/fir-plugin-prototype/src/org/jetbrains/kotlin/fir/plugin/generators/AllOpenTopLevelDeclarationsGenerator.kt @@ -26,6 +26,9 @@ import org.jetbrains.kotlin.name.CallableId import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.Name +/* + * Generates `dummyClassName(value: ClassName): String` function for each class annotated with @A + */ class AllOpenTopLevelDeclarationsGenerator(session: FirSession) : FirDeclarationGenerationExtension(session) { private val predicateBasedProvider = session.predicateBasedProvider private val matchedClasses by lazy { diff --git a/plugins/fir/fir-plugin-prototype/testData/diagnostics/memberGen/classWithGeneratedMembersAndNestedClass.fir.txt b/plugins/fir/fir-plugin-prototype/testData/diagnostics/memberGen/classWithGeneratedMembersAndNestedClass.fir.txt index 20a1f1f105c..9f0ac73d4c4 100644 --- a/plugins/fir/fir-plugin-prototype/testData/diagnostics/memberGen/classWithGeneratedMembersAndNestedClass.fir.txt +++ b/plugins/fir/fir-plugin-prototype/testData/diagnostics/memberGen/classWithGeneratedMembersAndNestedClass.fir.txt @@ -11,6 +11,11 @@ FILE: classWithGeneratedMembersAndNestedClass.kt } + public final fun materialize(): R|Foo| + + public final class Nested : R|kotlin/Any| { + } + } public final class Bar : R|kotlin/Any| { public constructor(): R|Bar| { diff --git a/plugins/fir/fir-plugin-prototype/testData/diagnostics/memberGen/generatedClassWithMembersAndNestedClasses.fir.txt b/plugins/fir/fir-plugin-prototype/testData/diagnostics/memberGen/generatedClassWithMembersAndNestedClasses.fir.txt index e8c28c0a269..39cda0f2c06 100644 --- a/plugins/fir/fir-plugin-prototype/testData/diagnostics/memberGen/generatedClassWithMembersAndNestedClasses.fir.txt +++ b/plugins/fir/fir-plugin-prototype/testData/diagnostics/memberGen/generatedClassWithMembersAndNestedClasses.fir.txt @@ -1,4 +1,6 @@ FILE: generatedClassWithMembersAndNestedClasses.kt + package bar + @R|org/jetbrains/kotlin/fir/plugin/B|() public final class Foo : R|kotlin/Any| { public constructor(): R|bar/Foo| { super() @@ -26,3 +28,18 @@ FILE: generatedClassWithMembersAndNestedClasses.kt lval nestedBar: R|foo/AllOpenGenerated.NestedBar| = Q|foo/AllOpenGenerated|.R|foo/AllOpenGenerated.NestedBar|() R|/nestedBar|.R|foo/AllOpenGenerated.NestedBar.materialize|().R|bar/Bar.bar|() } +FILE: ### GENERATED DECLARATIONS ### + package foo + + public final class AllOpenGenerated : R|kotlin/Any| { + public final class NestedFoo : R|kotlin/Any| { + public final fun materialize(): R|bar/Foo| + + } + + public final class NestedBar : R|kotlin/Any| { + public final fun materialize(): R|bar/Bar| + + } + + } diff --git a/plugins/fir/fir-plugin-prototype/testData/diagnostics/memberGen/topLevelCallables.fir.txt b/plugins/fir/fir-plugin-prototype/testData/diagnostics/memberGen/topLevelCallables.fir.txt index 51d324a3dd8..b3cddfe51ba 100644 --- a/plugins/fir/fir-plugin-prototype/testData/diagnostics/memberGen/topLevelCallables.fir.txt +++ b/plugins/fir/fir-plugin-prototype/testData/diagnostics/memberGen/topLevelCallables.fir.txt @@ -1,4 +1,6 @@ FILE: topLevelCallables.kt + package foo + @R|org/jetbrains/kotlin/fir/plugin/A|() public final class MySuperClass : R|kotlin/Any| { public constructor(): R|foo/MySuperClass| { super() @@ -12,3 +14,7 @@ FILE: topLevelCallables.kt } public final fun takeString(s: R|kotlin/String|): R|kotlin/Unit| { } +FILE: ### GENERATED DECLARATIONS ### + package foo + + public final fun dummyMySuperClass(value: R|foo/MySuperClass|): R|kotlin/String| diff --git a/plugins/fir/fir-plugin-prototype/testData/diagnostics/memberGen/topLevelCallables.kt b/plugins/fir/fir-plugin-prototype/testData/diagnostics/memberGen/topLevelCallables.kt index 2d5ea00a24c..f7a7286203f 100644 --- a/plugins/fir/fir-plugin-prototype/testData/diagnostics/memberGen/topLevelCallables.kt +++ b/plugins/fir/fir-plugin-prototype/testData/diagnostics/memberGen/topLevelCallables.kt @@ -2,10 +2,6 @@ package foo import org.jetbrains.kotlin.fir.plugin.A -/* - * Plugin generates `dummyClassName(value: ClassName): String` function for each class annotated with @A - */ - @A class MySuperClass { fun test() { diff --git a/plugins/fir/fir-plugin-prototype/testData/diagnostics/supertypes/simple.fir.txt b/plugins/fir/fir-plugin-prototype/testData/diagnostics/supertypes/simple.fir.txt index d21361b5614..39d6f94f446 100644 --- a/plugins/fir/fir-plugin-prototype/testData/diagnostics/supertypes/simple.fir.txt +++ b/plugins/fir/fir-plugin-prototype/testData/diagnostics/supertypes/simple.fir.txt @@ -1,4 +1,6 @@ FILE: simple.kt + package foo + public abstract interface MyInterface : R|kotlin/Any| { public abstract fun foo(): R|kotlin/Unit|