From 968d789c88d14b4d81d0aebaff61280b8df15eea Mon Sep 17 00:00:00 2001 From: Travis Miehm Date: Wed, 29 Nov 2023 13:04:45 -0500 Subject: [PATCH 1/5] WIP - Support Kotlin 1.9.21 --- build.gradle.kts | 5 ----- gradle/projects.libs.versions.toml | 8 ++++---- .../internal/registry/InternalRegistry.kt | 10 +++++++--- .../phases/codegen/asm/ClassGeneration.kt | 19 +++++++++++++++++++ .../arrow/meta/phases/codegen/ir/IrUtils.kt | 2 ++ settings.gradle.kts | 11 +++++++++++ 6 files changed, 43 insertions(+), 12 deletions(-) create mode 100644 libs/arrow-meta/src/main/kotlin/arrow/meta/phases/codegen/asm/ClassGeneration.kt diff --git a/build.gradle.kts b/build.gradle.kts index 3aac3bb22..fa52ea6e2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -13,11 +13,6 @@ plugins { } allprojects { - repositories { - mavenCentral() - maven(url = "https://oss.sonatype.org/content/repositories/snapshots/") - } - group = property("projects.group").toString() } diff --git a/gradle/projects.libs.versions.toml b/gradle/projects.libs.versions.toml index 940f715d4..7c387e726 100644 --- a/gradle/projects.libs.versions.toml +++ b/gradle/projects.libs.versions.toml @@ -7,12 +7,12 @@ dokka = "1.8.10" intellijOpenApi = "7.0.3" javaAssist = "3.29.2-GA" junit = "5.9.2" -kotlin = "1.8.21" +kotlin = "1.9.21" kotlinCompileTesting = "1.5.0" javaCompileTesting = "0.21.0" kotlinBinaryCompatibilityValidator = "0.13.0" detekt = "1.22.0" -ksp = "1.8.21-1.0.11" +ksp = "1.9.21-1.0.15" [libraries] arrowCore = { module = "io.arrow-kt:arrow-core", version.ref = "arrow" } @@ -26,12 +26,12 @@ junitEngine = { module = "org.junit.jupiter:junit-jupiter-engine", version.ref = junitPlatformLauncher = { module = "org.junit.platform:junit-platform-launcher", version.ref = "junit" } kotlin-annotationProcessingEmbeddable = { module = "org.jetbrains.kotlin:kotlin-annotation-processing-embeddable" } kotlin-compiler = { module = "org.jetbrains.kotlin:kotlin-compiler" } -kotlin-compilerEmbeddable = { module = "org.jetbrains.kotlin:kotlin-compiler-embeddable" } +kotlin-compilerEmbeddable = { module = "org.jetbrains.kotlin:kotlin-compiler-embeddable", version.ref = "kotlin" } kotlin-stdlibCommon = { module = "org.jetbrains.kotlin:kotlin-stdlib-common", version.ref = "kotlin" } kotlin-stdlibJDK8 = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" } kotlin-stdlibJS = { module = "org.jetbrains.kotlin:kotlin-stdlib-js" } kotlin-scriptingCompilerEmbeddable = { module = "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable" } -kotlin-scriptUtil = { module = "org.jetbrains.kotlin:kotlin-script-util" } +kotlin-scriptUtil = { module = "org.jetbrains.kotlin:kotlin-script-util", version="1.8.22" } kotlin-gradlePluginX = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin" } kotlin-gradlePluginApi = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin-api" } kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect" } diff --git a/libs/arrow-meta/src/main/kotlin/arrow/meta/internal/registry/InternalRegistry.kt b/libs/arrow-meta/src/main/kotlin/arrow/meta/internal/registry/InternalRegistry.kt index 6ab5c8e77..ea2a0d08d 100644 --- a/libs/arrow-meta/src/main/kotlin/arrow/meta/internal/registry/InternalRegistry.kt +++ b/libs/arrow-meta/src/main/kotlin/arrow/meta/internal/registry/InternalRegistry.kt @@ -17,6 +17,7 @@ import arrow.meta.phases.analysis.CollectAdditionalSources import arrow.meta.phases.analysis.ExtraImports import arrow.meta.phases.analysis.PreprocessedVirtualFileFactory import arrow.meta.phases.codegen.asm.ClassBuilder +import arrow.meta.phases.codegen.asm.ClassGeneration import arrow.meta.phases.codegen.asm.Codegen import arrow.meta.phases.codegen.ir.IRGeneration import arrow.meta.phases.config.Config @@ -35,7 +36,6 @@ import org.jetbrains.kotlin.cli.common.messages.MessageCollector import org.jetbrains.kotlin.codegen.ClassBuilderFactory import org.jetbrains.kotlin.codegen.ImplementationBodyCodegen import org.jetbrains.kotlin.codegen.StackValue -import org.jetbrains.kotlin.codegen.extensions.ClassBuilderInterceptorExtension import org.jetbrains.kotlin.codegen.extensions.ExpressionCodegenExtension import org.jetbrains.kotlin.com.intellij.mock.MockProject import org.jetbrains.kotlin.com.intellij.openapi.project.Project @@ -179,6 +179,7 @@ interface InternalRegistry : ConfigSyntax { is AnalysisHandler -> registerAnalysisHandler(this, ctx) is ClassBuilder -> registerClassBuilder(this, ctx) is Codegen -> registerCodegen(this, ctx) + is ClassGeneration -> TODO("ClassGeneration phase is not supported") is DeclarationAttributeAlterer -> registerDeclarationAttributeAlterer(this, ctx) is PackageProvider -> packageFragmentProvider(this, ctx) is SyntheticResolver -> registerSyntheticResolver(this, ctx) @@ -609,8 +610,11 @@ interface InternalRegistry : ConfigSyntax { phase: ClassBuilder, ctx: CompilerContext ) { - ClassBuilderInterceptorExtension.registerExtension( - object : ClassBuilderInterceptorExtension { + @Suppress("DEPRECATION_ERROR") + org.jetbrains.kotlin.codegen.extensions.ClassBuilderInterceptorExtension.registerExtension( + object : + @Suppress("DEPRECATION_ERROR") + org.jetbrains.kotlin.codegen.extensions.ClassBuilderInterceptorExtension { override fun interceptClassBuilderFactory( interceptedFactory: ClassBuilderFactory, bindingContext: BindingContext, diff --git a/libs/arrow-meta/src/main/kotlin/arrow/meta/phases/codegen/asm/ClassGeneration.kt b/libs/arrow-meta/src/main/kotlin/arrow/meta/phases/codegen/asm/ClassGeneration.kt new file mode 100644 index 000000000..b0e71f56a --- /dev/null +++ b/libs/arrow-meta/src/main/kotlin/arrow/meta/phases/codegen/asm/ClassGeneration.kt @@ -0,0 +1,19 @@ +package arrow.meta.phases.codegen.asm + +import arrow.meta.phases.CompilerContext +import arrow.meta.phases.ExtensionPhase +import org.jetbrains.kotlin.backend.jvm.extensions.ClassGenerator +import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI +import org.jetbrains.kotlin.ir.declarations.IrClass + +/** + * @see [ExtensionPhase] + * @see [arrow.meta.dsl.codegen.asm.AsmSyntax] + */ +interface ClassGeneration : ExtensionPhase { + @OptIn(ObsoleteDescriptorBasedAPI::class) + fun CompilerContext.interceptClassGenerator( + generator: ClassGenerator, + declaration: IrClass? + ): ClassGenerator +} diff --git a/libs/arrow-meta/src/main/kotlin/arrow/meta/phases/codegen/ir/IrUtils.kt b/libs/arrow-meta/src/main/kotlin/arrow/meta/phases/codegen/ir/IrUtils.kt index 6d3297ddd..8cbd384f3 100644 --- a/libs/arrow-meta/src/main/kotlin/arrow/meta/phases/codegen/ir/IrUtils.kt +++ b/libs/arrow-meta/src/main/kotlin/arrow/meta/phases/codegen/ir/IrUtils.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.IrStatement import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET +import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerDesc.signatureString import org.jetbrains.kotlin.ir.declarations.IrConstructor import org.jetbrains.kotlin.ir.declarations.IrFactory import org.jetbrains.kotlin.ir.declarations.IrFunction @@ -34,6 +35,7 @@ import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.IrTypeSystemContext import org.jetbrains.kotlin.ir.types.IrTypeSystemContextImpl import org.jetbrains.kotlin.ir.types.defaultType +import org.jetbrains.kotlin.ir.util.IdSignature import org.jetbrains.kotlin.ir.util.ReferenceSymbolTable import org.jetbrains.kotlin.ir.util.TypeTranslator import org.jetbrains.kotlin.ir.util.constructors diff --git a/settings.gradle.kts b/settings.gradle.kts index 0072764b5..d24334117 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -15,6 +15,17 @@ dependencyResolutionManagement { kotlinVersion?.let { version("kotlin", it) } } } + + repositories { + mavenLocal { + content { + includeGroup("io.arrow-kt") + includeGroup("com.github.tschuchortdev") + } + } + mavenCentral() + maven(url = "https://oss.sonatype.org/content/repositories/snapshots/") + } } rootProject.name = "arrow-meta-workspace" From 76d61f9c502f3044bdfd1f5b7d75e87ca5f064d7 Mon Sep 17 00:00:00 2001 From: Travis Miehm Date: Fri, 1 Dec 2023 15:47:28 -0500 Subject: [PATCH 2/5] Switch to ZacSweers/kotlin-compile-testing for 1.9.21 support --- gradle/projects.libs.versions.toml | 6 ++-- .../arrow/meta/phases/codegen/ir/IrUtils.kt | 11 ++++--- .../arrow/meta/plugin/testing/Compilation.kt | 6 ++-- .../plugin/testing/CompilationAssertions.kt | 33 ++++++++++++------- 4 files changed, 36 insertions(+), 20 deletions(-) diff --git a/gradle/projects.libs.versions.toml b/gradle/projects.libs.versions.toml index 7c387e726..6d1d29f9b 100644 --- a/gradle/projects.libs.versions.toml +++ b/gradle/projects.libs.versions.toml @@ -8,7 +8,7 @@ intellijOpenApi = "7.0.3" javaAssist = "3.29.2-GA" junit = "5.9.2" kotlin = "1.9.21" -kotlinCompileTesting = "1.5.0" +kotlinCompileTesting = "0.4.0" javaCompileTesting = "0.21.0" kotlinBinaryCompatibilityValidator = "0.13.0" detekt = "1.22.0" @@ -35,8 +35,8 @@ kotlin-scriptUtil = { module = "org.jetbrains.kotlin:kotlin-script-util", versio kotlin-gradlePluginX = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin" } kotlin-gradlePluginApi = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin-api" } kotlin-reflect = { module = "org.jetbrains.kotlin:kotlin-reflect" } -kotlinCompileTesting = { module = "com.github.tschuchortdev:kotlin-compile-testing", version.ref = "kotlinCompileTesting" } -kotlinCompileTestingKsp = { module = "com.github.tschuchortdev:kotlin-compile-testing-ksp", version.ref = "kotlinCompileTesting" } +kotlinCompileTesting = { module = "dev.zacsweers.kctfork:core", version.ref = "kotlinCompileTesting" } +kotlinCompileTestingKsp = { module = "dev.zacsweers.kctfork:ksp", version.ref = "kotlinCompileTesting" } javaCompileTesting = { module = "com.google.testing.compile:compile-testing", version.ref = "javaCompileTesting" } ksp-api = { module = "com.google.devtools.ksp:symbol-processing-api", version.ref = "ksp" } ksp-lib = { module = "com.google.devtools.ksp:symbol-processing", version.ref = "ksp" } diff --git a/libs/arrow-meta/src/main/kotlin/arrow/meta/phases/codegen/ir/IrUtils.kt b/libs/arrow-meta/src/main/kotlin/arrow/meta/phases/codegen/ir/IrUtils.kt index 8cbd384f3..647993497 100644 --- a/libs/arrow-meta/src/main/kotlin/arrow/meta/phases/codegen/ir/IrUtils.kt +++ b/libs/arrow-meta/src/main/kotlin/arrow/meta/phases/codegen/ir/IrUtils.kt @@ -69,10 +69,11 @@ class IrUtils( fun KotlinType.toIrType(): IrType = typeTranslator.translateType(this) + @OptIn(ObsoleteDescriptorBasedAPI::class) fun CallableDescriptor.irCall(): IrExpression = when (this) { is PropertyDescriptor -> { - val irField = pluginContext.symbols.externalSymbolTable.referenceField(this) + val irField = pluginContext.symbols.externalSymbolTable.descriptorExtension.referenceField(this) irField.owner.correspondingPropertySymbol?.owner?.getter?.symbol?.let { irSimpleFunctionSymbol -> IrCallImpl( @@ -87,7 +88,7 @@ class IrUtils( ?: TODO("Unsupported irCall for $this") } is ClassConstructorDescriptor -> { - val irSymbol = pluginContext.symbols.externalSymbolTable.referenceConstructor(this) + val irSymbol = pluginContext.symbols.externalSymbolTable.descriptorExtension.referenceConstructor(this) IrConstructorCallImpl( startOffset = UNDEFINED_OFFSET, endOffset = UNDEFINED_OFFSET, @@ -110,7 +111,7 @@ class IrUtils( ) } is FakeCallableDescriptorForObject -> { - val irSymbol = pluginContext.symbols.externalSymbolTable.referenceClass(classDescriptor) + val irSymbol = pluginContext.symbols.externalSymbolTable.descriptorExtension.referenceClass(classDescriptor) IrGetObjectValueImpl( startOffset = UNDEFINED_OFFSET, endOffset = UNDEFINED_OFFSET, @@ -123,8 +124,10 @@ class IrUtils( } } + @OptIn(ObsoleteDescriptorBasedAPI::class) fun PropertyDescriptor.irGetterCall(): IrCall? { - val irField = pluginContext.symbols.externalSymbolTable.referenceField(this) + this.backingField + val irField = pluginContext.symbols.externalSymbolTable.descriptorExtension.referenceField(this) return irField.owner.correspondingPropertySymbol?.owner?.getter?.symbol?.let { irSimpleFunctionSymbol -> IrCallImpl( diff --git a/libs/meta-test/src/main/kotlin/arrow/meta/plugin/testing/Compilation.kt b/libs/meta-test/src/main/kotlin/arrow/meta/plugin/testing/Compilation.kt index 399707431..c07f61b4d 100644 --- a/libs/meta-test/src/main/kotlin/arrow/meta/plugin/testing/Compilation.kt +++ b/libs/meta-test/src/main/kotlin/arrow/meta/plugin/testing/Compilation.kt @@ -1,7 +1,7 @@ package arrow.meta.plugin.testing +import com.tschuchort.compiletesting.CompilationResult import com.tschuchort.compiletesting.KotlinCompilation -import com.tschuchort.compiletesting.KotlinCompilation.Result import com.tschuchort.compiletesting.PluginOption import com.tschuchort.compiletesting.SourceFile import com.tschuchort.compiletesting.kspSourcesDir @@ -14,7 +14,8 @@ import org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi internal const val DEFAULT_FILENAME = "Source.kt" -internal fun compile(data: CompilationData): Result { +@OptIn(ExperimentalCompilerApi::class) +internal fun compile(data: CompilationData): CompilationResult { val compilation = createKotlinCompilation(data) if (data.symbolProcessors.isEmpty()) { return compilation.compile() @@ -62,6 +63,7 @@ private fun createKotlinCompilation(data: CompilationData) = pluginOptions = data.pluginOptions.map { PluginOption(it.pluginId, it.key, it.value) } } +@OptIn(ExperimentalCompilerApi::class) private val KotlinCompilation.kspGeneratedSourceFiles: List get() = kspSourcesDir diff --git a/libs/meta-test/src/main/kotlin/arrow/meta/plugin/testing/CompilationAssertions.kt b/libs/meta-test/src/main/kotlin/arrow/meta/plugin/testing/CompilationAssertions.kt index 8dadd2d5e..23c49e914 100644 --- a/libs/meta-test/src/main/kotlin/arrow/meta/plugin/testing/CompilationAssertions.kt +++ b/libs/meta-test/src/main/kotlin/arrow/meta/plugin/testing/CompilationAssertions.kt @@ -1,9 +1,7 @@ -@file:OptIn(ExperimentalCompilerApi::class) - package arrow.meta.plugin.testing +import com.tschuchort.compiletesting.CompilationResult import com.tschuchort.compiletesting.KotlinCompilation.ExitCode -import com.tschuchort.compiletesting.KotlinCompilation.Result import java.io.File import java.net.URLClassLoader import java.nio.file.Files @@ -24,8 +22,8 @@ private const val VARIABLE = "[^(]+" * * Running the compilation from the provided configuration and getting the results (status, classes, * and output messages) is possible thanks to - * [Kotlin Compile Testing](https://github.com/tschuchortdev/kotlin-compile-testing), a library - * developed by [Thilo Schuchort](https://github.com/tschuchortdev). + * [Kotlin Compile Testing](https://github.com/ZacSweers/kotlin-compile-testing), a library + * developed by [Thilo Schuchort](https://github.com/tschuchortdev), and forked by [ZacSweers](https://github.com/ZacSweers). * * Main schema: * ``` @@ -61,6 +59,7 @@ private const val VARIABLE = "[^(]+" */ fun assertThis(compilerTest: CompilerTest): Unit = compilerTest.run(interpreter) +@OptIn(ExperimentalCompilerApi::class) private val interpreter: (CompilerTest) -> Unit = { tailrec fun List.compilationData( acc: CompilationData = CompilationData.empty @@ -101,7 +100,7 @@ private val interpreter: (CompilerTest) -> Unit = { ) } - fun runAssert(singleAssert: Assert.SingleAssert, compilationResult: Result): Unit = + fun runAssert(singleAssert: Assert.SingleAssert, compilationResult: CompilationResult): Unit = when (singleAssert) { Assert.Empty -> println("Assertions not found") Assert.CompilationResult.Compiles -> assertCompiles(compilationResult) @@ -128,32 +127,40 @@ private val interpreter: (CompilerTest) -> Unit = { } } +@OptIn(ExperimentalCompilerApi::class) private fun CompilationData.addDependencies(config: Config.AddDependencies) = copy(dependencies = dependencies + config.dependencies.map { it.mavenCoordinates }) +@OptIn(ExperimentalCompilerApi::class) private fun CompilationData.addCompilerPlugins(config: Config.AddCompilerPlugins) = copy( compilerPlugins = compilerPlugins + config.plugins.flatMap { it.dependencies.map { it.mavenCoordinates } } ) +@OptIn(ExperimentalCompilerApi::class) private fun CompilationData.addMetaPlugins(config: Config.AddMetaPlugins) = copy(metaPlugins = metaPlugins + config.plugins) +@OptIn(ExperimentalCompilerApi::class) private fun CompilationData.addArguments(config: Config.AddArguments) = copy(arguments = arguments + config.arguments) +@OptIn(ExperimentalCompilerApi::class) private fun CompilationData.addCommandLineProcessors(config: Config.AddCommandLineProcessors) = copy(commandLineProcessors = commandLineProcessors + config.commandLineProcessors) +@OptIn(ExperimentalCompilerApi::class) private fun CompilationData.addSymbolProcessors(config: Config.AddSymbolProcessors) = copy(symbolProcessors = symbolProcessors + config.symbolProcessors) +@OptIn(ExperimentalCompilerApi::class) private fun CompilationData.addPluginOptions(config: Config.AddPluginOptions) = copy(pluginOptions = pluginOptions + config.pluginOptions) +@OptIn(ExperimentalCompilerApi::class) private fun assertEvalsTo( - compilationResult: Result, + compilationResult: CompilationResult, source: Code.Source, output: Any?, onError: (Throwable) -> Any? @@ -174,20 +181,24 @@ private fun assertEvalsTo( } } -private fun assertCompiles(compilationResult: Result) { +@OptIn(ExperimentalCompilerApi::class) +private fun assertCompiles(compilationResult: CompilationResult) { assertThat(compilationResult.exitCode).isEqualTo(ExitCode.OK) } -private fun assertCompilesWith(compilationResult: Result, check: (String) -> Boolean) { +@OptIn(ExperimentalCompilerApi::class) +private fun assertCompilesWith(compilationResult: CompilationResult, check: (String) -> Boolean) { assertThat(compilationResult.exitCode).isEqualTo(ExitCode.OK) assertThat(check(compilationResult.messages)).isTrue } -private fun assertFails(compilationResult: Result) { +@OptIn(ExperimentalCompilerApi::class) +private fun assertFails(compilationResult: CompilationResult) { assertThat(compilationResult.exitCode).isNotEqualTo(ExitCode.OK) } -private fun assertFailsWith(compilationResult: Result, check: (String) -> Boolean) { +@OptIn(ExperimentalCompilerApi::class) +private fun assertFailsWith(compilationResult: CompilationResult, check: (String) -> Boolean) { assertFails(compilationResult) assertThat(check(compilationResult.messages)).isTrue } From 46d8f0d2772e47ed64ac2c8c36817b166e9adf60 Mon Sep 17 00:00:00 2001 From: Ben Poland Date: Mon, 4 Dec 2023 14:32:26 -0500 Subject: [PATCH 3/5] Automated fixes - formatting - regenerate API --- libs/arrow-meta/api/arrow-meta.api | 83 ++++++++++--------- .../arrow/meta/phases/codegen/ir/IrUtils.kt | 13 +-- .../plugin/testing/CompilationAssertions.kt | 3 +- 3 files changed, 54 insertions(+), 45 deletions(-) diff --git a/libs/arrow-meta/api/arrow-meta.api b/libs/arrow-meta/api/arrow-meta.api index fa19e2cba..1f9013ac1 100644 --- a/libs/arrow-meta/api/arrow-meta.api +++ b/libs/arrow-meta/api/arrow-meta.api @@ -684,6 +684,10 @@ public abstract interface class arrow/meta/phases/codegen/asm/ClassBuilder : arr public abstract fun interceptClassBuilder (Larrow/meta/phases/CompilerContext;Lorg/jetbrains/kotlin/codegen/ClassBuilderFactory;Lorg/jetbrains/kotlin/resolve/BindingContext;Lorg/jetbrains/kotlin/diagnostics/DiagnosticSink;)Lorg/jetbrains/kotlin/codegen/ClassBuilderFactory; } +public abstract interface class arrow/meta/phases/codegen/asm/ClassGeneration : arrow/meta/phases/ExtensionPhase { + public abstract fun interceptClassGenerator (Larrow/meta/phases/CompilerContext;Lorg/jetbrains/kotlin/backend/jvm/extensions/ClassGenerator;Lorg/jetbrains/kotlin/ir/declarations/IrClass;)Lorg/jetbrains/kotlin/backend/jvm/extensions/ClassGenerator; +} + public abstract interface class arrow/meta/phases/codegen/asm/Codegen : arrow/meta/phases/ExtensionPhase { public abstract fun applyFunction (Larrow/meta/phases/CompilerContext;Lorg/jetbrains/kotlin/codegen/StackValue;Lorg/jetbrains/kotlin/resolve/calls/model/ResolvedCall;Lorg/jetbrains/kotlin/codegen/extensions/ExpressionCodegenExtension$Context;)Lorg/jetbrains/kotlin/codegen/StackValue; public abstract fun applyProperty (Larrow/meta/phases/CompilerContext;Lorg/jetbrains/kotlin/codegen/StackValue;Lorg/jetbrains/kotlin/resolve/calls/model/ResolvedCall;Lorg/jetbrains/kotlin/codegen/extensions/ExpressionCodegenExtension$Context;)Lorg/jetbrains/kotlin/codegen/StackValue; @@ -709,7 +713,6 @@ public final class arrow/meta/phases/codegen/ir/IrUtils : org/jetbrains/kotlin/i public fun asDynamicType (Lorg/jetbrains/kotlin/types/model/FlexibleTypeMarker;)Lorg/jetbrains/kotlin/ir/types/IrDynamicType; public synthetic fun asDynamicType (Lorg/jetbrains/kotlin/types/model/FlexibleTypeMarker;)Lorg/jetbrains/kotlin/types/model/DynamicTypeMarker; public fun asFlexibleType (Lorg/jetbrains/kotlin/types/model/KotlinTypeMarker;)Lorg/jetbrains/kotlin/types/model/FlexibleTypeMarker; - public fun asRawType (Lorg/jetbrains/kotlin/types/model/FlexibleTypeMarker;)Lorg/jetbrains/kotlin/types/model/RawTypeMarker; public fun asSimpleType (Lorg/jetbrains/kotlin/types/model/KotlinTypeMarker;)Lorg/jetbrains/kotlin/types/model/SimpleTypeMarker; public fun asTypeArgument (Lorg/jetbrains/kotlin/types/model/KotlinTypeMarker;)Lorg/jetbrains/kotlin/ir/types/IrTypeArgument; public synthetic fun asTypeArgument (Lorg/jetbrains/kotlin/types/model/KotlinTypeMarker;)Lorg/jetbrains/kotlin/types/model/TypeArgumentMarker; @@ -719,31 +722,43 @@ public final class arrow/meta/phases/codegen/ir/IrUtils : org/jetbrains/kotlin/i public fun captureStatus (Lorg/jetbrains/kotlin/types/model/CapturedTypeMarker;)Lorg/jetbrains/kotlin/types/model/CaptureStatus; public fun createAnonymousInitializer (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/ir/symbols/IrAnonymousInitializerSymbol;Z)Lorg/jetbrains/kotlin/ir/declarations/IrAnonymousInitializer; public fun createBlockBody (II)Lorg/jetbrains/kotlin/ir/expressions/IrBlockBody; - public fun createBlockBody (IILjava/util/List;)Lorg/jetbrains/kotlin/ir/expressions/IrBlockBody; - public fun createBlockBody (IILkotlin/jvm/functions/Function1;)Lorg/jetbrains/kotlin/ir/expressions/IrBlockBody; - public fun createClass (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/ir/symbols/IrClassSymbol;Lorg/jetbrains/kotlin/name/Name;Lorg/jetbrains/kotlin/descriptors/ClassKind;Lorg/jetbrains/kotlin/descriptors/DescriptorVisibility;Lorg/jetbrains/kotlin/descriptors/Modality;ZZZZZZZLorg/jetbrains/kotlin/descriptors/SourceElement;)Lorg/jetbrains/kotlin/ir/declarations/IrClass; - public fun createConstructor (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/ir/symbols/IrConstructorSymbol;Lorg/jetbrains/kotlin/name/Name;Lorg/jetbrains/kotlin/descriptors/DescriptorVisibility;Lorg/jetbrains/kotlin/ir/types/IrType;ZZZZLorg/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedContainerSource;)Lorg/jetbrains/kotlin/ir/declarations/IrConstructor; - public fun createEnumEntry (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/ir/symbols/IrEnumEntrySymbol;Lorg/jetbrains/kotlin/name/Name;)Lorg/jetbrains/kotlin/ir/declarations/IrEnumEntry; + public synthetic fun createBlockBody (IILjava/util/List;)Lorg/jetbrains/kotlin/ir/expressions/IrBlockBody; + public synthetic fun createBlockBody (IILkotlin/jvm/functions/Function1;)Lorg/jetbrains/kotlin/ir/expressions/IrBlockBody; + public synthetic fun createClass (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/ir/symbols/IrClassSymbol;Lorg/jetbrains/kotlin/name/Name;Lorg/jetbrains/kotlin/descriptors/ClassKind;Lorg/jetbrains/kotlin/descriptors/DescriptorVisibility;Lorg/jetbrains/kotlin/descriptors/Modality;ZZZZZZZLorg/jetbrains/kotlin/descriptors/SourceElement;)Lorg/jetbrains/kotlin/ir/declarations/IrClass; + public fun createClass (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/name/Name;Lorg/jetbrains/kotlin/descriptors/DescriptorVisibility;Lorg/jetbrains/kotlin/ir/symbols/IrClassSymbol;Lorg/jetbrains/kotlin/descriptors/ClassKind;Lorg/jetbrains/kotlin/descriptors/Modality;ZZZZZZZLorg/jetbrains/kotlin/descriptors/SourceElement;)Lorg/jetbrains/kotlin/ir/declarations/IrClass; + public synthetic fun createConstructor (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/ir/symbols/IrConstructorSymbol;Lorg/jetbrains/kotlin/name/Name;Lorg/jetbrains/kotlin/descriptors/DescriptorVisibility;Lorg/jetbrains/kotlin/ir/types/IrType;ZZZZLorg/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedContainerSource;)Lorg/jetbrains/kotlin/ir/declarations/IrConstructor; + public fun createConstructor (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/name/Name;Lorg/jetbrains/kotlin/descriptors/DescriptorVisibility;ZZLorg/jetbrains/kotlin/ir/types/IrType;Lorg/jetbrains/kotlin/ir/symbols/IrConstructorSymbol;ZZLorg/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedContainerSource;)Lorg/jetbrains/kotlin/ir/declarations/IrConstructor; + public fun createEmptySubstitutor ()Lorg/jetbrains/kotlin/types/model/TypeSubstitutorMarker; + public synthetic fun createEnumEntry (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/ir/symbols/IrEnumEntrySymbol;Lorg/jetbrains/kotlin/name/Name;)Lorg/jetbrains/kotlin/ir/declarations/IrEnumEntry; + public fun createEnumEntry (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/name/Name;Lorg/jetbrains/kotlin/ir/symbols/IrEnumEntrySymbol;)Lorg/jetbrains/kotlin/ir/declarations/IrEnumEntry; public fun createErrorDeclaration (IILorg/jetbrains/kotlin/descriptors/DeclarationDescriptor;)Lorg/jetbrains/kotlin/ir/declarations/IrErrorDeclaration; public fun createErrorType (Ljava/lang/String;)Lorg/jetbrains/kotlin/types/model/SimpleTypeMarker; - public fun createExpressionBody (IILkotlin/jvm/functions/Function1;)Lorg/jetbrains/kotlin/ir/expressions/IrExpressionBody; public fun createExpressionBody (IILorg/jetbrains/kotlin/ir/expressions/IrExpression;)Lorg/jetbrains/kotlin/ir/expressions/IrExpressionBody; - public fun createExpressionBody (Lorg/jetbrains/kotlin/ir/expressions/IrExpression;)Lorg/jetbrains/kotlin/ir/expressions/IrExpressionBody; - public fun createField (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/ir/symbols/IrFieldSymbol;Lorg/jetbrains/kotlin/name/Name;Lorg/jetbrains/kotlin/ir/types/IrType;Lorg/jetbrains/kotlin/descriptors/DescriptorVisibility;ZZZ)Lorg/jetbrains/kotlin/ir/declarations/IrField; + public synthetic fun createExpressionBody (Lorg/jetbrains/kotlin/ir/expressions/IrExpression;)Lorg/jetbrains/kotlin/ir/expressions/IrExpressionBody; + public synthetic fun createField (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/ir/symbols/IrFieldSymbol;Lorg/jetbrains/kotlin/name/Name;Lorg/jetbrains/kotlin/ir/types/IrType;Lorg/jetbrains/kotlin/descriptors/DescriptorVisibility;ZZZ)Lorg/jetbrains/kotlin/ir/declarations/IrField; + public fun createField (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/name/Name;Lorg/jetbrains/kotlin/descriptors/DescriptorVisibility;Lorg/jetbrains/kotlin/ir/symbols/IrFieldSymbol;Lorg/jetbrains/kotlin/ir/types/IrType;ZZZ)Lorg/jetbrains/kotlin/ir/declarations/IrField; public fun createFlexibleType (Lorg/jetbrains/kotlin/types/model/SimpleTypeMarker;Lorg/jetbrains/kotlin/types/model/SimpleTypeMarker;)Lorg/jetbrains/kotlin/types/model/KotlinTypeMarker; - public fun createFunction (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/ir/symbols/IrSimpleFunctionSymbol;Lorg/jetbrains/kotlin/name/Name;Lorg/jetbrains/kotlin/descriptors/DescriptorVisibility;Lorg/jetbrains/kotlin/descriptors/Modality;Lorg/jetbrains/kotlin/ir/types/IrType;ZZZZZZZZLorg/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedContainerSource;)Lorg/jetbrains/kotlin/ir/declarations/IrSimpleFunction; - public fun createFunctionWithLateBinding (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/name/Name;Lorg/jetbrains/kotlin/descriptors/DescriptorVisibility;Lorg/jetbrains/kotlin/descriptors/Modality;Lorg/jetbrains/kotlin/ir/types/IrType;ZZZZZZZ)Lorg/jetbrains/kotlin/ir/declarations/IrSimpleFunction; - public fun createLocalDelegatedProperty (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/ir/symbols/IrLocalDelegatedPropertySymbol;Lorg/jetbrains/kotlin/name/Name;Lorg/jetbrains/kotlin/ir/types/IrType;Z)Lorg/jetbrains/kotlin/ir/declarations/IrLocalDelegatedProperty; - public fun createProperty (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/ir/symbols/IrPropertySymbol;Lorg/jetbrains/kotlin/name/Name;Lorg/jetbrains/kotlin/descriptors/DescriptorVisibility;Lorg/jetbrains/kotlin/descriptors/Modality;ZZZZZZZLorg/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedContainerSource;)Lorg/jetbrains/kotlin/ir/declarations/IrProperty; - public fun createPropertyWithLateBinding (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/name/Name;Lorg/jetbrains/kotlin/descriptors/DescriptorVisibility;Lorg/jetbrains/kotlin/descriptors/Modality;ZZZZZZ)Lorg/jetbrains/kotlin/ir/declarations/IrProperty; + public synthetic fun createFunction (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/ir/symbols/IrSimpleFunctionSymbol;Lorg/jetbrains/kotlin/name/Name;Lorg/jetbrains/kotlin/descriptors/DescriptorVisibility;Lorg/jetbrains/kotlin/descriptors/Modality;Lorg/jetbrains/kotlin/ir/types/IrType;ZZZZZZZZLorg/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedContainerSource;)Lorg/jetbrains/kotlin/ir/declarations/IrSimpleFunction; + public synthetic fun createFunctionWithLateBinding (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/name/Name;Lorg/jetbrains/kotlin/descriptors/DescriptorVisibility;Lorg/jetbrains/kotlin/descriptors/Modality;Lorg/jetbrains/kotlin/ir/types/IrType;ZZZZZZZ)Lorg/jetbrains/kotlin/ir/declarations/IrSimpleFunction; + public fun createFunctionWithLateBinding (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/name/Name;Lorg/jetbrains/kotlin/descriptors/DescriptorVisibility;ZZLorg/jetbrains/kotlin/ir/types/IrType;Lorg/jetbrains/kotlin/descriptors/Modality;ZZZZZZ)Lorg/jetbrains/kotlin/ir/declarations/IrFunctionWithLateBinding; + public synthetic fun createLocalDelegatedProperty (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/ir/symbols/IrLocalDelegatedPropertySymbol;Lorg/jetbrains/kotlin/name/Name;Lorg/jetbrains/kotlin/ir/types/IrType;Z)Lorg/jetbrains/kotlin/ir/declarations/IrLocalDelegatedProperty; + public fun createLocalDelegatedProperty (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/name/Name;Lorg/jetbrains/kotlin/ir/symbols/IrLocalDelegatedPropertySymbol;Lorg/jetbrains/kotlin/ir/types/IrType;Z)Lorg/jetbrains/kotlin/ir/declarations/IrLocalDelegatedProperty; + public synthetic fun createProperty (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/ir/symbols/IrPropertySymbol;Lorg/jetbrains/kotlin/name/Name;Lorg/jetbrains/kotlin/descriptors/DescriptorVisibility;Lorg/jetbrains/kotlin/descriptors/Modality;ZZZZZZZLorg/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedContainerSource;)Lorg/jetbrains/kotlin/ir/declarations/IrProperty; + public fun createProperty (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/name/Name;Lorg/jetbrains/kotlin/descriptors/DescriptorVisibility;Lorg/jetbrains/kotlin/descriptors/Modality;Lorg/jetbrains/kotlin/ir/symbols/IrPropertySymbol;ZZZZZLorg/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedContainerSource;ZZ)Lorg/jetbrains/kotlin/ir/declarations/IrProperty; + public synthetic fun createPropertyWithLateBinding (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/name/Name;Lorg/jetbrains/kotlin/descriptors/DescriptorVisibility;Lorg/jetbrains/kotlin/descriptors/Modality;ZZZZZZ)Lorg/jetbrains/kotlin/ir/declarations/IrProperty; + public fun createPropertyWithLateBinding (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/name/Name;Lorg/jetbrains/kotlin/descriptors/DescriptorVisibility;Lorg/jetbrains/kotlin/descriptors/Modality;ZZZZZZZ)Lorg/jetbrains/kotlin/ir/declarations/IrPropertyWithLateBinding; + public fun createSimpleFunction (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/name/Name;Lorg/jetbrains/kotlin/descriptors/DescriptorVisibility;ZZLorg/jetbrains/kotlin/ir/types/IrType;Lorg/jetbrains/kotlin/descriptors/Modality;Lorg/jetbrains/kotlin/ir/symbols/IrSimpleFunctionSymbol;ZZZZZLorg/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedContainerSource;Z)Lorg/jetbrains/kotlin/ir/declarations/IrSimpleFunction; public fun createSimpleType (Lorg/jetbrains/kotlin/types/model/TypeConstructorMarker;Ljava/util/List;ZZLjava/util/List;)Lorg/jetbrains/kotlin/types/model/SimpleTypeMarker; public fun createStarProjection (Lorg/jetbrains/kotlin/types/model/TypeParameterMarker;)Lorg/jetbrains/kotlin/ir/types/impl/IrStarProjectionImpl; public synthetic fun createStarProjection (Lorg/jetbrains/kotlin/types/model/TypeParameterMarker;)Lorg/jetbrains/kotlin/types/model/TypeArgumentMarker; - public fun createTypeAlias (IILorg/jetbrains/kotlin/ir/symbols/IrTypeAliasSymbol;Lorg/jetbrains/kotlin/name/Name;Lorg/jetbrains/kotlin/descriptors/DescriptorVisibility;Lorg/jetbrains/kotlin/ir/types/IrType;ZLorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;)Lorg/jetbrains/kotlin/ir/declarations/IrTypeAlias; + public fun createTypeAlias (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/name/Name;Lorg/jetbrains/kotlin/descriptors/DescriptorVisibility;Lorg/jetbrains/kotlin/ir/symbols/IrTypeAliasSymbol;ZLorg/jetbrains/kotlin/ir/types/IrType;)Lorg/jetbrains/kotlin/ir/declarations/IrTypeAlias; + public synthetic fun createTypeAlias (IILorg/jetbrains/kotlin/ir/symbols/IrTypeAliasSymbol;Lorg/jetbrains/kotlin/name/Name;Lorg/jetbrains/kotlin/descriptors/DescriptorVisibility;Lorg/jetbrains/kotlin/ir/types/IrType;ZLorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;)Lorg/jetbrains/kotlin/ir/declarations/IrTypeAlias; public fun createTypeArgument (Lorg/jetbrains/kotlin/types/model/KotlinTypeMarker;Lorg/jetbrains/kotlin/types/model/TypeVariance;)Lorg/jetbrains/kotlin/types/model/TypeArgumentMarker; - public fun createTypeParameter (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/ir/symbols/IrTypeParameterSymbol;Lorg/jetbrains/kotlin/name/Name;IZLorg/jetbrains/kotlin/types/Variance;)Lorg/jetbrains/kotlin/ir/declarations/IrTypeParameter; + public synthetic fun createTypeParameter (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/ir/symbols/IrTypeParameterSymbol;Lorg/jetbrains/kotlin/name/Name;IZLorg/jetbrains/kotlin/types/Variance;)Lorg/jetbrains/kotlin/ir/declarations/IrTypeParameter; + public fun createTypeParameter (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/name/Name;Lorg/jetbrains/kotlin/ir/symbols/IrTypeParameterSymbol;Lorg/jetbrains/kotlin/types/Variance;IZ)Lorg/jetbrains/kotlin/ir/declarations/IrTypeParameter; public fun createUninferredType (Lorg/jetbrains/kotlin/types/model/TypeConstructorMarker;)Lorg/jetbrains/kotlin/types/model/KotlinTypeMarker; - public fun createValueParameter (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/ir/symbols/IrValueParameterSymbol;Lorg/jetbrains/kotlin/name/Name;ILorg/jetbrains/kotlin/ir/types/IrType;Lorg/jetbrains/kotlin/ir/types/IrType;ZZZZ)Lorg/jetbrains/kotlin/ir/declarations/IrValueParameter; + public synthetic fun createValueParameter (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/ir/symbols/IrValueParameterSymbol;Lorg/jetbrains/kotlin/name/Name;ILorg/jetbrains/kotlin/ir/types/IrType;Lorg/jetbrains/kotlin/ir/types/IrType;ZZZZ)Lorg/jetbrains/kotlin/ir/declarations/IrValueParameter; + public fun createValueParameter (IILorg/jetbrains/kotlin/ir/declarations/IrDeclarationOrigin;Lorg/jetbrains/kotlin/name/Name;Lorg/jetbrains/kotlin/ir/types/IrType;ZLorg/jetbrains/kotlin/ir/symbols/IrValueParameterSymbol;ILorg/jetbrains/kotlin/ir/types/IrType;ZZZ)Lorg/jetbrains/kotlin/ir/declarations/IrValueParameter; public fun enterScope (Lorg/jetbrains/kotlin/ir/declarations/IrDeclaration;)V public fun enterScope (Lorg/jetbrains/kotlin/ir/symbols/IrSymbol;)V public fun fastCorrespondingSupertypes (Lorg/jetbrains/kotlin/types/model/SimpleTypeMarker;Lorg/jetbrains/kotlin/types/model/TypeConstructorMarker;)Ljava/util/List; @@ -757,6 +772,7 @@ public final class arrow/meta/phases/codegen/ir/IrUtils : org/jetbrains/kotlin/i public fun getClassFqNameUnsafe (Lorg/jetbrains/kotlin/types/model/TypeConstructorMarker;)Lorg/jetbrains/kotlin/name/FqNameUnsafe; public final fun getCompilerContext ()Larrow/meta/phases/CompilerContext; public fun getCustomAttributes (Lorg/jetbrains/kotlin/types/model/KotlinTypeMarker;)Ljava/util/List; + public fun getDescriptorExtension ()Lorg/jetbrains/kotlin/ir/util/ReferenceSymbolTableExtension; public fun getIrBuiltIns ()Lorg/jetbrains/kotlin/ir/IrBuiltIns; public final fun getModuleFragment ()Lorg/jetbrains/kotlin/ir/declarations/IrModuleFragment; public fun getName (Lorg/jetbrains/kotlin/types/model/TypeParameterMarker;)Lorg/jetbrains/kotlin/name/Name; @@ -832,6 +848,7 @@ public final class arrow/meta/phases/codegen/ir/IrUtils : org/jetbrains/kotlin/i public fun isOldCapturedType (Lorg/jetbrains/kotlin/types/model/CapturedTypeMarker;)Z public fun isPrimitiveType (Lorg/jetbrains/kotlin/types/model/SimpleTypeMarker;)Z public fun isProjectionNotNull (Lorg/jetbrains/kotlin/types/model/CapturedTypeMarker;)Z + public fun isRawType (Lorg/jetbrains/kotlin/types/model/KotlinTypeMarker;)Z public fun isReified (Lorg/jetbrains/kotlin/types/model/TypeParameterMarker;)Z public fun isSimpleType (Lorg/jetbrains/kotlin/types/model/KotlinTypeMarker;)Z public fun isSingleClassifierType (Lorg/jetbrains/kotlin/types/model/SimpleTypeMarker;)Z @@ -865,30 +882,17 @@ public final class arrow/meta/phases/codegen/ir/IrUtils : org/jetbrains/kotlin/i public synthetic fun possibleIntegerTypes (Lorg/jetbrains/kotlin/types/model/SimpleTypeMarker;)Ljava/util/Collection; public fun possibleIntegerTypes (Lorg/jetbrains/kotlin/types/model/SimpleTypeMarker;)Ljava/util/Set; public fun projection (Lorg/jetbrains/kotlin/types/model/CapturedTypeConstructorMarker;)Lorg/jetbrains/kotlin/types/model/TypeArgumentMarker; - public fun referenceClass (Lorg/jetbrains/kotlin/descriptors/ClassDescriptor;)Lorg/jetbrains/kotlin/ir/symbols/IrClassSymbol; - public fun referenceClass (Lorg/jetbrains/kotlin/ir/util/IdSignature;Z)Lorg/jetbrains/kotlin/ir/symbols/IrClassSymbol; - public fun referenceConstructor (Lorg/jetbrains/kotlin/descriptors/ClassConstructorDescriptor;)Lorg/jetbrains/kotlin/ir/symbols/IrConstructorSymbol; - public fun referenceConstructor (Lorg/jetbrains/kotlin/ir/util/IdSignature;Z)Lorg/jetbrains/kotlin/ir/symbols/IrConstructorSymbol; - public fun referenceDeclaredFunction (Lorg/jetbrains/kotlin/descriptors/FunctionDescriptor;)Lorg/jetbrains/kotlin/ir/symbols/IrSimpleFunctionSymbol; - public fun referenceEnumEntry (Lorg/jetbrains/kotlin/descriptors/ClassDescriptor;)Lorg/jetbrains/kotlin/ir/symbols/IrEnumEntrySymbol; - public fun referenceEnumEntry (Lorg/jetbrains/kotlin/ir/util/IdSignature;Z)Lorg/jetbrains/kotlin/ir/symbols/IrEnumEntrySymbol; - public fun referenceField (Lorg/jetbrains/kotlin/descriptors/PropertyDescriptor;)Lorg/jetbrains/kotlin/ir/symbols/IrFieldSymbol; - public fun referenceField (Lorg/jetbrains/kotlin/ir/util/IdSignature;Z)Lorg/jetbrains/kotlin/ir/symbols/IrFieldSymbol; - public fun referenceProperty (Lorg/jetbrains/kotlin/descriptors/PropertyDescriptor;)Lorg/jetbrains/kotlin/ir/symbols/IrPropertySymbol; - public fun referenceProperty (Lorg/jetbrains/kotlin/descriptors/PropertyDescriptor;Lkotlin/jvm/functions/Function0;)Lorg/jetbrains/kotlin/ir/declarations/IrProperty; - public fun referenceProperty (Lorg/jetbrains/kotlin/ir/util/IdSignature;Z)Lorg/jetbrains/kotlin/ir/symbols/IrPropertySymbol; - public fun referenceScopedTypeParameter (Lorg/jetbrains/kotlin/descriptors/TypeParameterDescriptor;)Lorg/jetbrains/kotlin/ir/symbols/IrTypeParameterSymbol; - public fun referenceScript (Lorg/jetbrains/kotlin/descriptors/ScriptDescriptor;)Lorg/jetbrains/kotlin/ir/symbols/IrScriptSymbol; - public fun referenceSimpleFunction (Lorg/jetbrains/kotlin/descriptors/FunctionDescriptor;)Lorg/jetbrains/kotlin/ir/symbols/IrSimpleFunctionSymbol; - public fun referenceSimpleFunction (Lorg/jetbrains/kotlin/ir/util/IdSignature;Z)Lorg/jetbrains/kotlin/ir/symbols/IrSimpleFunctionSymbol; - public fun referenceTypeAlias (Lorg/jetbrains/kotlin/descriptors/TypeAliasDescriptor;)Lorg/jetbrains/kotlin/ir/symbols/IrTypeAliasSymbol; - public fun referenceTypeAlias (Lorg/jetbrains/kotlin/ir/util/IdSignature;Z)Lorg/jetbrains/kotlin/ir/symbols/IrTypeAliasSymbol; - public fun referenceTypeParameter (Lorg/jetbrains/kotlin/descriptors/TypeParameterDescriptor;)Lorg/jetbrains/kotlin/ir/symbols/IrTypeParameterSymbol; - public fun referenceTypeParameter (Lorg/jetbrains/kotlin/ir/util/IdSignature;Z)Lorg/jetbrains/kotlin/ir/symbols/IrTypeParameterSymbol; - public fun referenceValueParameter (Lorg/jetbrains/kotlin/descriptors/ParameterDescriptor;)Lorg/jetbrains/kotlin/ir/symbols/IrValueParameterSymbol; - public fun referenceVariable (Lorg/jetbrains/kotlin/descriptors/VariableDescriptor;)Lorg/jetbrains/kotlin/ir/symbols/IrVariableSymbol; + public fun referenceClass (Lorg/jetbrains/kotlin/ir/util/IdSignature;)Lorg/jetbrains/kotlin/ir/symbols/IrClassSymbol; + public fun referenceConstructor (Lorg/jetbrains/kotlin/ir/util/IdSignature;)Lorg/jetbrains/kotlin/ir/symbols/IrConstructorSymbol; + public fun referenceEnumEntry (Lorg/jetbrains/kotlin/ir/util/IdSignature;)Lorg/jetbrains/kotlin/ir/symbols/IrEnumEntrySymbol; + public fun referenceField (Lorg/jetbrains/kotlin/ir/util/IdSignature;)Lorg/jetbrains/kotlin/ir/symbols/IrFieldSymbol; + public fun referenceProperty (Lorg/jetbrains/kotlin/ir/util/IdSignature;)Lorg/jetbrains/kotlin/ir/symbols/IrPropertySymbol; + public fun referenceSimpleFunction (Lorg/jetbrains/kotlin/ir/util/IdSignature;)Lorg/jetbrains/kotlin/ir/symbols/IrSimpleFunctionSymbol; + public fun referenceTypeAlias (Lorg/jetbrains/kotlin/ir/util/IdSignature;)Lorg/jetbrains/kotlin/ir/symbols/IrTypeAliasSymbol; + public fun referenceTypeParameter (Lorg/jetbrains/kotlin/ir/util/IdSignature;)Lorg/jetbrains/kotlin/ir/symbols/IrTypeParameterSymbol; public fun replaceCustomAttributes (Lorg/jetbrains/kotlin/types/model/KotlinTypeMarker;Ljava/util/List;)Lorg/jetbrains/kotlin/types/model/KotlinTypeMarker; public fun replaceType (Lorg/jetbrains/kotlin/types/model/TypeArgumentMarker;Lorg/jetbrains/kotlin/types/model/KotlinTypeMarker;)Lorg/jetbrains/kotlin/types/model/TypeArgumentMarker; + public fun safeSubstitute (Lorg/jetbrains/kotlin/types/model/TypeSubstitutorMarker;Lorg/jetbrains/kotlin/types/model/KotlinTypeMarker;)Lorg/jetbrains/kotlin/types/model/KotlinTypeMarker; public fun size (Lorg/jetbrains/kotlin/types/model/TypeArgumentListMarker;)I public final fun substitutedIrTypes (Lorg/jetbrains/kotlin/descriptors/CallableDescriptor;Lorg/jetbrains/kotlin/resolve/calls/inference/components/NewTypeSubstitutorByConstructorMap;)Ljava/util/List; public fun substitutionSupertypePolicy (Lorg/jetbrains/kotlin/types/model/SimpleTypeMarker;)Lorg/jetbrains/kotlin/types/TypeCheckerState$SupertypesPolicy; @@ -902,6 +906,7 @@ public final class arrow/meta/phases/codegen/ir/IrUtils : org/jetbrains/kotlin/i public fun typeConstructor (Lorg/jetbrains/kotlin/types/model/SimpleTypeMarker;)Lorg/jetbrains/kotlin/types/model/TypeConstructorMarker; public fun typeDepth (Lorg/jetbrains/kotlin/types/model/KotlinTypeMarker;)I public fun typeDepth (Lorg/jetbrains/kotlin/types/model/SimpleTypeMarker;)I + public fun typeSubstitutorByTypeConstructor (Ljava/util/Map;)Lorg/jetbrains/kotlin/types/model/TypeSubstitutorMarker; public fun unionTypeAttributes (Ljava/util/List;)Ljava/util/List; public fun unwrapStubTypeVariableConstructor (Lorg/jetbrains/kotlin/types/model/TypeConstructorMarker;)Lorg/jetbrains/kotlin/types/model/TypeConstructorMarker; public fun upperBound (Lorg/jetbrains/kotlin/types/model/FlexibleTypeMarker;)Lorg/jetbrains/kotlin/types/model/SimpleTypeMarker; diff --git a/libs/arrow-meta/src/main/kotlin/arrow/meta/phases/codegen/ir/IrUtils.kt b/libs/arrow-meta/src/main/kotlin/arrow/meta/phases/codegen/ir/IrUtils.kt index 647993497..e450851e0 100644 --- a/libs/arrow-meta/src/main/kotlin/arrow/meta/phases/codegen/ir/IrUtils.kt +++ b/libs/arrow-meta/src/main/kotlin/arrow/meta/phases/codegen/ir/IrUtils.kt @@ -14,7 +14,6 @@ import org.jetbrains.kotlin.ir.IrElement import org.jetbrains.kotlin.ir.IrStatement import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET -import org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir.JsManglerDesc.signatureString import org.jetbrains.kotlin.ir.declarations.IrConstructor import org.jetbrains.kotlin.ir.declarations.IrFactory import org.jetbrains.kotlin.ir.declarations.IrFunction @@ -35,7 +34,6 @@ import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.types.IrTypeSystemContext import org.jetbrains.kotlin.ir.types.IrTypeSystemContextImpl import org.jetbrains.kotlin.ir.types.defaultType -import org.jetbrains.kotlin.ir.util.IdSignature import org.jetbrains.kotlin.ir.util.ReferenceSymbolTable import org.jetbrains.kotlin.ir.util.TypeTranslator import org.jetbrains.kotlin.ir.util.constructors @@ -73,7 +71,8 @@ class IrUtils( fun CallableDescriptor.irCall(): IrExpression = when (this) { is PropertyDescriptor -> { - val irField = pluginContext.symbols.externalSymbolTable.descriptorExtension.referenceField(this) + val irField = + pluginContext.symbols.externalSymbolTable.descriptorExtension.referenceField(this) irField.owner.correspondingPropertySymbol?.owner?.getter?.symbol?.let { irSimpleFunctionSymbol -> IrCallImpl( @@ -88,7 +87,8 @@ class IrUtils( ?: TODO("Unsupported irCall for $this") } is ClassConstructorDescriptor -> { - val irSymbol = pluginContext.symbols.externalSymbolTable.descriptorExtension.referenceConstructor(this) + val irSymbol = + pluginContext.symbols.externalSymbolTable.descriptorExtension.referenceConstructor(this) IrConstructorCallImpl( startOffset = UNDEFINED_OFFSET, endOffset = UNDEFINED_OFFSET, @@ -111,7 +111,10 @@ class IrUtils( ) } is FakeCallableDescriptorForObject -> { - val irSymbol = pluginContext.symbols.externalSymbolTable.descriptorExtension.referenceClass(classDescriptor) + val irSymbol = + pluginContext.symbols.externalSymbolTable.descriptorExtension.referenceClass( + classDescriptor + ) IrGetObjectValueImpl( startOffset = UNDEFINED_OFFSET, endOffset = UNDEFINED_OFFSET, diff --git a/libs/meta-test/src/main/kotlin/arrow/meta/plugin/testing/CompilationAssertions.kt b/libs/meta-test/src/main/kotlin/arrow/meta/plugin/testing/CompilationAssertions.kt index 23c49e914..aa28bd86b 100644 --- a/libs/meta-test/src/main/kotlin/arrow/meta/plugin/testing/CompilationAssertions.kt +++ b/libs/meta-test/src/main/kotlin/arrow/meta/plugin/testing/CompilationAssertions.kt @@ -23,7 +23,8 @@ private const val VARIABLE = "[^(]+" * Running the compilation from the provided configuration and getting the results (status, classes, * and output messages) is possible thanks to * [Kotlin Compile Testing](https://github.com/ZacSweers/kotlin-compile-testing), a library - * developed by [Thilo Schuchort](https://github.com/tschuchortdev), and forked by [ZacSweers](https://github.com/ZacSweers). + * developed by [Thilo Schuchort](https://github.com/tschuchortdev), and forked by + * [ZacSweers](https://github.com/ZacSweers). * * Main schema: * ``` From b0f921ea35dcd55d78a30b689fde380e7b20a60f Mon Sep 17 00:00:00 2001 From: Travis Miehm Date: Wed, 6 Dec 2023 10:45:57 -0500 Subject: [PATCH 4/5] Handle ClassGeneration extension phase --- libs/arrow-meta/api/arrow-meta.api | 2 ++ .../internal/registry/InternalRegistry.kt | 19 ++++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/libs/arrow-meta/api/arrow-meta.api b/libs/arrow-meta/api/arrow-meta.api index 1f9013ac1..c18813c5c 100644 --- a/libs/arrow-meta/api/arrow-meta.api +++ b/libs/arrow-meta/api/arrow-meta.api @@ -524,6 +524,7 @@ public abstract interface class arrow/meta/internal/registry/InternalRegistry : public fun packageFragmentProvider (Lorg/jetbrains/kotlin/compiler/plugin/CompilerPluginRegistrar$ExtensionStorage;Larrow/meta/phases/resolve/PackageProvider;Larrow/meta/phases/CompilerContext;)V public fun registerAnalysisHandler (Lorg/jetbrains/kotlin/compiler/plugin/CompilerPluginRegistrar$ExtensionStorage;Larrow/meta/phases/analysis/AnalysisHandler;Larrow/meta/phases/CompilerContext;)V public fun registerClassBuilder (Lorg/jetbrains/kotlin/compiler/plugin/CompilerPluginRegistrar$ExtensionStorage;Larrow/meta/phases/codegen/asm/ClassBuilder;Larrow/meta/phases/CompilerContext;)V + public fun registerClassGenerator (Lorg/jetbrains/kotlin/compiler/plugin/CompilerPluginRegistrar$ExtensionStorage;Larrow/meta/phases/codegen/asm/ClassGeneration;Larrow/meta/phases/CompilerContext;)V public fun registerCodegen (Lorg/jetbrains/kotlin/compiler/plugin/CompilerPluginRegistrar$ExtensionStorage;Larrow/meta/phases/codegen/asm/Codegen;Larrow/meta/phases/CompilerContext;)V public fun registerCollectAdditionalSources (Lorg/jetbrains/kotlin/compiler/plugin/CompilerPluginRegistrar$ExtensionStorage;Larrow/meta/phases/analysis/CollectAdditionalSources;Larrow/meta/phases/CompilerContext;)V public fun registerCompilerConfiguration (Lorg/jetbrains/kotlin/compiler/plugin/CompilerPluginRegistrar$ExtensionStorage;Larrow/meta/phases/config/Config;Larrow/meta/phases/CompilerContext;)V @@ -550,6 +551,7 @@ public final class arrow/meta/internal/registry/InternalRegistry$DefaultImpls { public static fun packageFragmentProvider (Larrow/meta/internal/registry/InternalRegistry;Lorg/jetbrains/kotlin/compiler/plugin/CompilerPluginRegistrar$ExtensionStorage;Larrow/meta/phases/resolve/PackageProvider;Larrow/meta/phases/CompilerContext;)V public static fun registerAnalysisHandler (Larrow/meta/internal/registry/InternalRegistry;Lorg/jetbrains/kotlin/compiler/plugin/CompilerPluginRegistrar$ExtensionStorage;Larrow/meta/phases/analysis/AnalysisHandler;Larrow/meta/phases/CompilerContext;)V public static fun registerClassBuilder (Larrow/meta/internal/registry/InternalRegistry;Lorg/jetbrains/kotlin/compiler/plugin/CompilerPluginRegistrar$ExtensionStorage;Larrow/meta/phases/codegen/asm/ClassBuilder;Larrow/meta/phases/CompilerContext;)V + public static fun registerClassGenerator (Larrow/meta/internal/registry/InternalRegistry;Lorg/jetbrains/kotlin/compiler/plugin/CompilerPluginRegistrar$ExtensionStorage;Larrow/meta/phases/codegen/asm/ClassGeneration;Larrow/meta/phases/CompilerContext;)V public static fun registerCodegen (Larrow/meta/internal/registry/InternalRegistry;Lorg/jetbrains/kotlin/compiler/plugin/CompilerPluginRegistrar$ExtensionStorage;Larrow/meta/phases/codegen/asm/Codegen;Larrow/meta/phases/CompilerContext;)V public static fun registerCollectAdditionalSources (Larrow/meta/internal/registry/InternalRegistry;Lorg/jetbrains/kotlin/compiler/plugin/CompilerPluginRegistrar$ExtensionStorage;Larrow/meta/phases/analysis/CollectAdditionalSources;Larrow/meta/phases/CompilerContext;)V public static fun registerCompilerConfiguration (Larrow/meta/internal/registry/InternalRegistry;Lorg/jetbrains/kotlin/compiler/plugin/CompilerPluginRegistrar$ExtensionStorage;Larrow/meta/phases/config/Config;Larrow/meta/phases/CompilerContext;)V diff --git a/libs/arrow-meta/src/main/kotlin/arrow/meta/internal/registry/InternalRegistry.kt b/libs/arrow-meta/src/main/kotlin/arrow/meta/internal/registry/InternalRegistry.kt index ea2a0d08d..26c65a02b 100644 --- a/libs/arrow-meta/src/main/kotlin/arrow/meta/internal/registry/InternalRegistry.kt +++ b/libs/arrow-meta/src/main/kotlin/arrow/meta/internal/registry/InternalRegistry.kt @@ -30,6 +30,8 @@ import org.jetbrains.kotlin.analyzer.AnalysisResult import org.jetbrains.kotlin.analyzer.ModuleInfo import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext +import org.jetbrains.kotlin.backend.jvm.extensions.ClassGenerator +import org.jetbrains.kotlin.backend.jvm.extensions.ClassGeneratorExtension import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity import org.jetbrains.kotlin.cli.common.messages.MessageCollector @@ -66,6 +68,7 @@ import org.jetbrains.kotlin.extensions.PreprocessedVirtualFileFactoryExtension import org.jetbrains.kotlin.extensions.StorageComponentContainerContributor import org.jetbrains.kotlin.incremental.components.LookupLocation import org.jetbrains.kotlin.incremental.components.LookupTracker +import org.jetbrains.kotlin.ir.declarations.IrClass import org.jetbrains.kotlin.ir.declarations.IrModuleFragment import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.platform.TargetPlatform @@ -179,7 +182,7 @@ interface InternalRegistry : ConfigSyntax { is AnalysisHandler -> registerAnalysisHandler(this, ctx) is ClassBuilder -> registerClassBuilder(this, ctx) is Codegen -> registerCodegen(this, ctx) - is ClassGeneration -> TODO("ClassGeneration phase is not supported") + is ClassGeneration -> registerClassGenerator(this, ctx) is DeclarationAttributeAlterer -> registerDeclarationAttributeAlterer(this, ctx) is PackageProvider -> packageFragmentProvider(this, ctx) is SyntheticResolver -> registerSyntheticResolver(this, ctx) @@ -606,6 +609,20 @@ interface InternalRegistry : ConfigSyntax { } } + fun CompilerPluginRegistrar.ExtensionStorage.registerClassGenerator( + phase: ClassGeneration, + ctx: CompilerContext + ) { + ClassGeneratorExtension.registerExtension( + object : ClassGeneratorExtension { + override fun generateClass( + generator: ClassGenerator, + declaration: IrClass? + ): ClassGenerator = phase.run { ctx.interceptClassGenerator(generator, declaration) } + } + ) + } + fun CompilerPluginRegistrar.ExtensionStorage.registerClassBuilder( phase: ClassBuilder, ctx: CompilerContext From cbb0e73ae712646030d6a83784ec9e3fa28b6290 Mon Sep 17 00:00:00 2001 From: Travis Miehm Date: Mon, 11 Dec 2023 09:19:52 -0500 Subject: [PATCH 5/5] Remove unnecessary reference to com.github.tschuchortdev --- settings.gradle.kts | 1 - 1 file changed, 1 deletion(-) diff --git a/settings.gradle.kts b/settings.gradle.kts index d24334117..082e35488 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -20,7 +20,6 @@ dependencyResolutionManagement { mavenLocal { content { includeGroup("io.arrow-kt") - includeGroup("com.github.tschuchortdev") } } mavenCentral()