Skip to content

Commit

Permalink
Remove compatibility fallbacks as compiled is equal to minimum Kotlin…
Browse files Browse the repository at this point in the history
… version
  • Loading branch information
lupuuss committed Nov 10, 2024
1 parent c6796f9 commit 9ae2b1e
Show file tree
Hide file tree
Showing 7 changed files with 16 additions and 118 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,11 @@ package dev.mokkery.plugin

import dev.mokkery.MokkeryConfig
import dev.mokkery.plugin.ir.locationInFile
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.messageCollector
import org.jetbrains.kotlin.ir.declarations.IrFile
import org.jetbrains.kotlin.ir.expressions.IrExpression

@Suppress("DEPRECATION")
val CompilerConfiguration.messageCollectorCompat: MessageCollector get() = try {
messageCollector
} catch (e: NoSuchMethodError) {
get(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, MessageCollector.NONE)
}

internal inline fun MessageCollector.log(message: () -> String) {
report(CompilerMessageSeverity.LOGGING, "${MokkeryConfig.PLUGIN_ID}: ${message()}")
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package dev.mokkery.plugin.core

import dev.mokkery.plugin.messageCollectorCompat
import org.jetbrains.kotlin.backend.common.lower.DeclarationIrBuilder
import org.jetbrains.kotlin.config.messageCollector
import org.jetbrains.kotlin.ir.builders.IrGeneratorContext
import org.jetbrains.kotlin.ir.declarations.IrClass
import org.jetbrains.kotlin.ir.declarations.IrProperty
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
import org.jetbrains.kotlin.ir.expressions.IrCall
import org.jetbrains.kotlin.ir.symbols.IrSymbol

val TransformerScope.messageCollector get() = compilerConfig.messageCollectorCompat
val TransformerScope.messageCollector get() = compilerConfig.messageCollector

fun TransformerScope.getClass(resolver: ClassResolver): IrClass = classes.getOrPut(resolver) {
resolver.resolve(pluginContext)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package dev.mokkery.plugin.diagnostics

import dev.mokkery.plugin.core.Mokkery.Errors
import dev.mokkery.plugin.fir.renderTypeCompat
import org.jetbrains.kotlin.diagnostics.KtDiagnosticFactoryToRendererMap
import org.jetbrains.kotlin.diagnostics.rendering.BaseDiagnosticRendererFactory
import org.jetbrains.kotlin.diagnostics.rendering.CommonRenderers
Expand All @@ -11,7 +10,7 @@ import org.jetbrains.kotlin.fir.types.ConeKotlinType

class MokkeryDiagnosticRendererFactory : BaseDiagnosticRendererFactory() {

private val typeRenderer: DiagnosticParameterRenderer<ConeKotlinType> = FirDiagnosticRenderers.renderTypeCompat()
private val typeRenderer: DiagnosticParameterRenderer<ConeKotlinType> = FirDiagnosticRenderers.RENDER_TYPE

override val MAP = KtDiagnosticFactoryToRendererMap("MokkeryDiagnostic").apply {
put(
Expand Down
18 changes: 0 additions & 18 deletions mokkery-plugin/src/main/kotlin/dev/mokkery/plugin/fir/Utils.kt
Original file line number Diff line number Diff line change
@@ -1,24 +1,6 @@
package dev.mokkery.plugin.fir

import org.jetbrains.kotlin.diagnostics.rendering.DiagnosticParameterRenderer
import org.jetbrains.kotlin.fir.analysis.diagnostics.FirDiagnosticRenderers
import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
import org.jetbrains.kotlin.fir.types.ConeKotlinType


fun FirConstructorSymbol.isDefault() = valueParameterSymbols.isEmpty() || valueParameterSymbols.all { it.hasDefaultValue }

val FirRegularClassSymbol.constructors get() = declarationSymbols.filterIsInstance<FirConstructorSymbol>()

@Suppress("UNCHECKED_CAST")
fun FirDiagnosticRenderers.renderTypeCompat(): DiagnosticParameterRenderer<ConeKotlinType> = try {
RENDER_TYPE
} catch (e: NoSuchMethodError) {
FirDiagnosticRenderers::class
.java
.methods
.first { it.name == "getRENDER_TYPE" }
.invoke(this)
.let { it as DiagnosticParameterRenderer<ConeKotlinType> }
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@ import dev.mokkery.plugin.core.IrMokkeryKind
import dev.mokkery.plugin.core.Kotlin
import dev.mokkery.plugin.core.Mokkery
import dev.mokkery.plugin.core.TransformerScope
import dev.mokkery.plugin.ir.compat.IrClassReferenceImplCompat
import dev.mokkery.plugin.ir.compat.IrFunctionExpressionImplCompat
import dev.mokkery.plugin.ir.compat.IrGetEnumValueImplCompat
import dev.mokkery.plugin.core.getClass
import dev.mokkery.plugin.core.getFunction
import org.jetbrains.kotlin.backend.common.lower.DeclarationIrBuilder
Expand Down Expand Up @@ -43,6 +40,9 @@ import org.jetbrains.kotlin.ir.expressions.IrSetField
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
import org.jetbrains.kotlin.ir.expressions.IrWhen
import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl
import org.jetbrains.kotlin.ir.expressions.impl.IrClassReferenceImpl
import org.jetbrains.kotlin.ir.expressions.impl.IrFunctionExpressionImpl
import org.jetbrains.kotlin.ir.expressions.impl.IrGetEnumValueImpl
import org.jetbrains.kotlin.ir.expressions.putArgument
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
Expand All @@ -61,7 +61,7 @@ import org.jetbrains.kotlin.ir.util.primaryConstructor
import org.jetbrains.kotlin.name.Name

// use until resolved https://youtrack.jetbrains.com/issue/KT-66178/kClassReference-extension-returns-incorrect-IrClassReferenceImpl
fun IrBuilderWithScope.kClassReference(classType: IrType): IrClassReference = IrClassReferenceImplCompat(
fun IrBuilderWithScope.kClassReference(classType: IrType): IrClassReference = IrClassReferenceImpl(
startOffset = startOffset,
endOffset = endOffset,
type = context.irBuiltIns.kClassClass.starProjectedType,
Expand All @@ -72,7 +72,7 @@ fun IrBuilderWithScope.kClassReference(classType: IrType): IrClassReference = Ir
fun IrBuilderWithScope.irGetEnumEntry(
irClass: IrClass,
name: String
): IrGetEnumValue = IrGetEnumValueImplCompat(
): IrGetEnumValue = IrGetEnumValueImpl(
startOffset = startOffset,
endOffset = endOffset,
type = irClass.defaultType,
Expand Down Expand Up @@ -141,12 +141,12 @@ fun IrBuilderWithScope.irLambda(
block(this@apply)
}
}
return IrFunctionExpressionImplCompat(
UNDEFINED_OFFSET,
UNDEFINED_OFFSET,
lambdaType,
lambda,
IrStatementOrigin.LAMBDA
return IrFunctionExpressionImpl(
startOffset = UNDEFINED_OFFSET,
endOffset = UNDEFINED_OFFSET,
type = lambdaType,
function = lambda,
origin = IrStatementOrigin.LAMBDA
)
}

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
package dev.mokkery.plugin.jvm

import dev.mokkery.plugin.core.Mokkery
import dev.mokkery.plugin.messageCollectorCompat
import org.jetbrains.kotlin.backend.jvm.extensions.ClassGenerator
import org.jetbrains.kotlin.backend.jvm.extensions.ClassGeneratorExtension
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.messageCollector
import org.jetbrains.kotlin.ir.declarations.IrClass

class MokkeryClassGenerationExtension(
configuration: CompilerConfiguration
) : ClassGeneratorExtension {

private val collector = configuration.messageCollectorCompat
private val collector = configuration.messageCollector

override fun generateClass(generator: ClassGenerator, declaration: IrClass?): ClassGenerator {
if (declaration == null) return generator
Expand Down

0 comments on commit 9ae2b1e

Please sign in to comment.