Skip to content

Commit 16b00fd

Browse files
Type system simplification (#301)
1 parent 21deeb6 commit 16b00fd

File tree

98 files changed

+1693
-1235
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

98 files changed

+1693
-1235
lines changed

compiler-plugin/src/main/kotlin/tech/mappie/MappieCompilerPluginRegistrar.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import tech.mappie.config.MappieConfiguration
2121
import tech.mappie.config.MappieModule
2222
import tech.mappie.fir.MappieFirRegistrar
2323
import tech.mappie.ir.MappieIrRegistrar
24+
import java.util.EnumSet
2425
import kotlin.text.Regex
2526

2627
@OptIn(ExperimentalCompilerApi::class)
@@ -30,7 +31,7 @@ class MappieCompilerPluginRegistrar : CompilerPluginRegistrar() {
3031

3132
override fun ExtensionStorage.registerExtensions(configuration: CompilerConfiguration) {
3233
val config = MappieConfiguration(
33-
modules = buildList {
34+
modules = EnumSet.noneOf(MappieModule::class.java).apply {
3435
if (configuration.isStartedWithDependency(MODULE_KOTLINX_DATETIME_REGEX)) {
3536
add(MappieModule.KOTLINX_DATETIME)
3637
}

compiler-plugin/src/main/kotlin/tech/mappie/MappiePluginContext.kt

Lines changed: 0 additions & 64 deletions
This file was deleted.

compiler-plugin/src/main/kotlin/tech/mappie/config/MappieConfiguration.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package tech.mappie.config
22

3+
import java.util.EnumSet
4+
35
data class MappieConfiguration(
4-
val modules: List<MappieModule>,
6+
val modules: EnumSet<MappieModule>,
57
val isMappieDebugMode: Boolean,
68
val warningsAsErrors: Boolean,
79
val useDefaultArguments: Boolean,

compiler-plugin/src/main/kotlin/tech/mappie/config/options/StrictEnums.kt

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,19 @@ import org.jetbrains.kotlin.ir.util.getValueArgument
77
import org.jetbrains.kotlin.ir.util.isTrueConst
88
import org.jetbrains.kotlin.ir.util.parentAsClass
99
import org.jetbrains.kotlin.name.Name
10-
import tech.mappie.MappieContext
10+
import tech.mappie.ir.MappieContext
1111
import tech.mappie.util.CLASS_ID_USE_STRICT_ENUMS
1212

13-
fun MappieContext.useStrictEnumsClassSymbol() =
14-
pluginContext.referenceClass(CLASS_ID_USE_STRICT_ENUMS)
13+
context(context: MappieContext)
14+
fun useStrictEnumsClassSymbol() =
15+
context.pluginContext.referenceClass(CLASS_ID_USE_STRICT_ENUMS)
1516

16-
fun MappieContext.getUseStrictEnumsAnnotation(function: IrFunction): IrConstructorCall? =
17+
context(context: MappieContext)
18+
fun getUseStrictEnumsAnnotation(function: IrFunction): IrConstructorCall? =
1719
function.parentAsClass.annotations.firstOrNull { it.type.classOrFail == useStrictEnumsClassSymbol() }
1820

19-
fun MappieContext.useStrictEnums(function: IrFunction): Boolean =
21+
context(context: MappieContext)
22+
fun useStrictEnums(function: IrFunction): Boolean =
2023
getUseStrictEnumsAnnotation(function)
2124
?.let { it.getValueArgument(Name.identifier("value"))?.isTrueConst() ?: true }
22-
?: configuration.strictEnums
25+
?: context.configuration.strictEnums

compiler-plugin/src/main/kotlin/tech/mappie/config/options/StrictJavaNullability.kt

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,19 @@ import org.jetbrains.kotlin.ir.util.getValueArgument
77
import org.jetbrains.kotlin.ir.util.isTrueConst
88
import org.jetbrains.kotlin.ir.util.parentAsClass
99
import org.jetbrains.kotlin.name.Name
10-
import tech.mappie.MappieContext
10+
import tech.mappie.ir.MappieContext
1111
import tech.mappie.util.CLASS_ID_USE_STRICT_JAVA_NULLABILITY
1212

13-
fun MappieContext.useStrictPlatformTypeNullabilityValidationClassSymbol() =
14-
pluginContext.referenceClass(CLASS_ID_USE_STRICT_JAVA_NULLABILITY)
13+
context(context: MappieContext)
14+
fun useStrictPlatformTypeNullabilityValidationClassSymbol() =
15+
context.pluginContext.referenceClass(CLASS_ID_USE_STRICT_JAVA_NULLABILITY)
1516

16-
fun MappieContext.getUseStrictPlatformTypeNullabilityValidationAnnotation(origin: IrFunction): IrConstructorCall? =
17+
context(context: MappieContext)
18+
fun getUseStrictPlatformTypeNullabilityValidationAnnotation(origin: IrFunction): IrConstructorCall? =
1719
origin.parentAsClass.annotations.firstOrNull { it.type.classOrFail == useStrictPlatformTypeNullabilityValidationClassSymbol() }
1820

19-
fun MappieContext.useStrictPlatformTypeNullabilityValidation(origin: IrFunction): Boolean =
21+
context(context: MappieContext)
22+
fun useStrictPlatformTypeNullabilityValidation(origin: IrFunction): Boolean =
2023
getUseStrictPlatformTypeNullabilityValidationAnnotation(origin)
2124
?.let { it.getValueArgument(Name.identifier("value"))?.isTrueConst() ?: true }
22-
?: configuration.strictplatformTypeNullability
25+
?: context.configuration.strictplatformTypeNullability

compiler-plugin/src/main/kotlin/tech/mappie/config/options/StrictVisibility.kt

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,19 @@ import org.jetbrains.kotlin.ir.util.getValueArgument
77
import org.jetbrains.kotlin.ir.util.isTrueConst
88
import org.jetbrains.kotlin.ir.util.parentAsClass
99
import org.jetbrains.kotlin.name.Name
10-
import tech.mappie.MappieContext
10+
import tech.mappie.ir.MappieContext
1111
import tech.mappie.util.CLASS_ID_USE_STRICT_VISIBILITY
1212

13-
fun MappieContext.useStrictVisibilityClassSymbol() =
14-
pluginContext.referenceClass(CLASS_ID_USE_STRICT_VISIBILITY)
13+
context(context: MappieContext)
14+
fun useStrictVisibilityClassSymbol() =
15+
context.pluginContext.referenceClass(CLASS_ID_USE_STRICT_VISIBILITY)
1516

16-
fun MappieContext.getUseStrictVisibilityAnnotation(origin: IrFunction): IrConstructorCall? =
17+
context(context: MappieContext)
18+
fun getUseStrictVisibilityAnnotation(origin: IrFunction): IrConstructorCall? =
1719
origin.parentAsClass.annotations.firstOrNull { it.type.classOrFail == useStrictVisibilityClassSymbol() }
1820

19-
fun MappieContext.useStrictVisibility(origin: IrFunction): Boolean =
21+
context(context: MappieContext)
22+
fun useStrictVisibility(origin: IrFunction): Boolean =
2023
getUseStrictVisibilityAnnotation(origin)
2124
?.let { it.getValueArgument(Name.identifier("value"))?.isTrueConst() ?: true }
22-
?: configuration.strictVisibility
25+
?: context.configuration.strictVisibility

compiler-plugin/src/main/kotlin/tech/mappie/config/options/UseDefaultArguments.kt

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,19 @@ import org.jetbrains.kotlin.ir.util.getValueArgument
77
import org.jetbrains.kotlin.ir.util.isTrueConst
88
import org.jetbrains.kotlin.ir.util.parentAsClass
99
import org.jetbrains.kotlin.name.Name
10-
import tech.mappie.MappieContext
10+
import tech.mappie.ir.MappieContext
1111
import tech.mappie.util.CLASS_ID_USE_DEFAULT_ARGUMENTS
1212

13-
fun MappieContext.useDefaultArgumentsClassSymbol() =
14-
pluginContext.referenceClass(CLASS_ID_USE_DEFAULT_ARGUMENTS)
13+
context(context: MappieContext)
14+
fun useDefaultArgumentsClassSymbol() =
15+
context.pluginContext.referenceClass(CLASS_ID_USE_DEFAULT_ARGUMENTS)
1516

16-
fun MappieContext.getUseDefaultArgumentsAnnotation(origin: IrFunction): IrConstructorCall? =
17+
context(context: MappieContext)
18+
fun getUseDefaultArgumentsAnnotation(origin: IrFunction): IrConstructorCall? =
1719
origin.parentAsClass.annotations.firstOrNull { it.type.classOrFail == useDefaultArgumentsClassSymbol() }
1820

19-
fun MappieContext.useDefaultArguments(origin: IrFunction): Boolean =
21+
context(context: MappieContext)
22+
fun useDefaultArguments(origin: IrFunction): Boolean =
2023
getUseDefaultArgumentsAnnotation(origin)
2124
?.let { it.getValueArgument(Name.identifier("value"))?.isTrueConst() ?: true }
22-
?: configuration.useDefaultArguments
25+
?: context.configuration.useDefaultArguments

compiler-plugin/src/main/kotlin/tech/mappie/exceptions/MappieExceptions.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ package tech.mappie.exceptions
22

33
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageLocation
44
import org.jetbrains.kotlin.ir.IrElement
5-
import tech.mappie.MappieContext
5+
import tech.mappie.ir.MappieContext
66
import tech.mappie.ir.analysis.Problem
77

88
class MappiePanicException private constructor(message: String, val origin: IrElement? = null)

compiler-plugin/src/main/kotlin/tech/mappie/fir/MappieAdditionalCheckersExtension.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ class MappieAdditionalCheckersExtension(session: FirSession) : FirAdditionalChec
2525
}
2626

2727
override val declarationCheckers: DeclarationCheckers = object : DeclarationCheckers() {
28+
2829
override val anonymousObjectCheckers: Set<FirAnonymousObjectChecker> = setOf(
2930
AnonymousMappieObjectChecker()
3031
)

compiler-plugin/src/main/kotlin/tech/mappie/fir/analysis/UnnecessaryExplicitEnumMappingChecker.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package tech.mappie.fir.analysis
22

33
import org.jetbrains.kotlin.diagnostics.*
4-
import org.jetbrains.kotlin.diagnostics.SourceElementPositioningStrategies.WHOLE_ELEMENT
54
import org.jetbrains.kotlin.fir.analysis.checkers.MppCheckerKind
65
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
76
import org.jetbrains.kotlin.fir.analysis.checkers.expression.FirFunctionCallChecker

0 commit comments

Comments
 (0)