Skip to content

Commit

Permalink
Update to 2.1.0-Beta1
Browse files Browse the repository at this point in the history
  • Loading branch information
ZacSweers committed Sep 20, 2024
1 parent e209bee commit 712e147
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 42 deletions.
6 changes: 3 additions & 3 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ gjf = "1.17.0"
incap = "1.0.0"
jdk = "22"
jvmTarget = "11"
kotlin = "2.0.20"
kotlinCompileTesting = "0.5.1"
kotlin = "2.1.0-Beta1"
kotlinCompileTesting = "0.6.0-alpha01"
kotlinpoet = "1.18.1"
ksp = "2.0.20-1.0.25"
ksp = "2.1.0-Beta1-1.0.25"
ktfmt = "0.52"
moshi = "1.15.1"
okhttp = "4.12.0"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,14 +60,24 @@ internal fun IrProperty.jsonIgnoreFromAnywhere(): Boolean {

internal fun IrAnnotationContainer.jsonName(): String? {
@Suppress("UNCHECKED_CAST")
return (getAnnotation(JSON_ANNOTATION)?.getValueArgument(0) as? IrConst<String>?)
?.value
?.takeUnless { it == Json.UNSET_NAME }
return getAnnotation(JSON_ANNOTATION)?.constArgumentOfTypeAt<String>(0)?.takeUnless {
it == Json.UNSET_NAME
}
}

internal fun <T> IrConstructorCall.constArgumentOfTypeAt(position: Int): T? {
@Suppress("UNCHECKED_CAST")
return (getValueArgument(position) as? IrConst?)?.value as? T?
}

internal fun <T> IrConst.valueAs(): T {
@Suppress("UNCHECKED_CAST")
return value as T
}

internal fun IrAnnotationContainer.jsonIgnore(): Boolean {
@Suppress("UNCHECKED_CAST")
return (getAnnotation(JSON_ANNOTATION)?.getValueArgument(1) as? IrConst<Boolean>?)?.value == true
return getAnnotation(JSON_ANNOTATION)?.constArgumentOfTypeAt<Boolean>(1) == true
}

private val TargetProperty.isSettable
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ import org.jetbrains.kotlin.ir.declarations.IrClass
import org.jetbrains.kotlin.ir.declarations.IrDeclaration
import org.jetbrains.kotlin.ir.declarations.IrFile
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
import org.jetbrains.kotlin.ir.expressions.IrConst
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
import org.jetbrains.kotlin.ir.util.file
Expand Down Expand Up @@ -101,16 +100,16 @@ internal class MoshiIrVisitor(

override fun visitClassNew(declaration: IrClass): IrStatement {
declaration.getAnnotation(JSON_CLASS_ANNOTATION)?.let { call ->
call.getValueArgument(0)?.let { generateAdapter ->
call.constArgumentOfTypeAt<Boolean>(0)?.let { generateAdapter ->
// This is generateAdapter
@Suppress("UNCHECKED_CAST")
if (!(generateAdapter as IrConst<Boolean>).value) {
if (!generateAdapter) {
return super.visitClassNew(declaration)
}

// This is generator
@Suppress("UNCHECKED_CAST")
val generatorValue = (call.getValueArgument(1) as? IrConst<String>?)?.value.orEmpty()
val generatorValue = call.constArgumentOfTypeAt<String>(1).orEmpty()
val generator =
if (generatorValue.isNotBlank()) {
val labelKey = generatorValue.labelKey()
Expand Down Expand Up @@ -160,13 +159,12 @@ internal class MoshiIrVisitor(
internal fun IrConstructorCall.labelKey(checkGenerateAdapter: Boolean = true): String? {
// This is generateAdapter
@Suppress("UNCHECKED_CAST")
if (checkGenerateAdapter && !(getValueArgument(0) as IrConst<Boolean>).value) {
if (checkGenerateAdapter && constArgumentOfTypeAt<Boolean>(0) != true) {
return null
}

// This is generator
@Suppress("UNCHECKED_CAST")
val generatorValue = (getValueArgument(1) as? IrConst<String>?)?.value.orEmpty()
@Suppress("UNCHECKED_CAST") val generatorValue = constArgumentOfTypeAt<String>(1).orEmpty()
return generatorValue.labelKey()
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ import org.jetbrains.kotlin.ir.builders.irBoolean
import org.jetbrains.kotlin.ir.builders.irBranch
import org.jetbrains.kotlin.ir.builders.irCall
import org.jetbrains.kotlin.ir.builders.irConcat
import org.jetbrains.kotlin.ir.builders.irDelegatingConstructorCall
import org.jetbrains.kotlin.ir.builders.irElseBranch
import org.jetbrains.kotlin.ir.builders.irEquals
import org.jetbrains.kotlin.ir.builders.irEqualsNull
Expand Down Expand Up @@ -82,7 +83,6 @@ import org.jetbrains.kotlin.ir.declarations.IrValueParameter
import org.jetbrains.kotlin.ir.declarations.IrVariable
import org.jetbrains.kotlin.ir.expressions.IrDelegatingConstructorCall
import org.jetbrains.kotlin.ir.expressions.addArgument
import org.jetbrains.kotlin.ir.expressions.impl.IrDelegatingConstructorCallImpl
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
import org.jetbrains.kotlin.ir.symbols.UnsafeDuringIrConstructionAPI
import org.jetbrains.kotlin.ir.types.IrType
Expand Down Expand Up @@ -880,12 +880,7 @@ internal class MoshiAdapterGenerator(
@OptIn(UnsafeDuringIrConstructionAPI::class)
private fun IrBuilderWithScope.generateJsonAdapterSuperConstructorCall():
IrDelegatingConstructorCall {
return IrDelegatingConstructorCallImpl.fromSymbolOwner(
startOffset,
endOffset,
pluginContext.irBuiltIns.unitType,
moshiSymbols.jsonAdapter.constructors.single(),
)
return irDelegatingConstructorCall(moshiSymbols.jsonAdapter.constructors.single().owner)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package dev.zacsweers.moshix.ir.compiler.sealed
import dev.zacsweers.moshix.ir.compiler.MoshiSymbols
import dev.zacsweers.moshix.ir.compiler.api.AdapterGenerator
import dev.zacsweers.moshix.ir.compiler.api.PreparedAdapter
import dev.zacsweers.moshix.ir.compiler.constArgumentOfTypeAt
import dev.zacsweers.moshix.ir.compiler.labelKey
import dev.zacsweers.moshix.ir.compiler.util.addOverride
import dev.zacsweers.moshix.ir.compiler.util.checkIsVisible
Expand All @@ -29,6 +30,7 @@ import org.jetbrains.kotlin.ir.builders.declarations.buildValueParameter
import org.jetbrains.kotlin.ir.builders.irAs
import org.jetbrains.kotlin.ir.builders.irBlockBody
import org.jetbrains.kotlin.ir.builders.irCall
import org.jetbrains.kotlin.ir.builders.irDelegatingConstructorCall
import org.jetbrains.kotlin.ir.builders.irExprBody
import org.jetbrains.kotlin.ir.builders.irGet
import org.jetbrains.kotlin.ir.builders.irGetField
Expand All @@ -51,7 +53,6 @@ import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
import org.jetbrains.kotlin.ir.expressions.IrDelegatingConstructorCall
import org.jetbrains.kotlin.ir.expressions.IrExpression
import org.jetbrains.kotlin.ir.expressions.IrVararg
import org.jetbrains.kotlin.ir.expressions.impl.IrDelegatingConstructorCallImpl
import org.jetbrains.kotlin.ir.interpreter.hasAnnotation
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
Expand Down Expand Up @@ -310,7 +311,7 @@ private constructor(

@Suppress("UNCHECKED_CAST")
val mainLabel =
(labelAnnotation.getValueArgument(0) as? IrConst<String>)?.value
labelAnnotation.constArgumentOfTypeAt<String>(0)
?: run {
logger.error(subtype) { "No label member for TypeLabel annotation!" }
return null
Expand Down Expand Up @@ -340,7 +341,7 @@ private constructor(
@Suppress("UNCHECKED_CAST")
val alternates =
(labelAnnotation.getValueArgument(1) as IrVararg?)?.elements.orEmpty().map {
(it as IrConst<String>).value
(it as IrConst).value as String
}

for (alternate in alternates) {
Expand Down Expand Up @@ -611,12 +612,7 @@ private constructor(
@OptIn(UnsafeDuringIrConstructionAPI::class)
private fun IrBuilderWithScope.generateJsonAdapterSuperConstructorCall():
IrDelegatingConstructorCall {
return IrDelegatingConstructorCallImpl.fromSymbolOwner(
startOffset,
endOffset,
pluginContext.irBuiltIns.unitType,
moshiSymbols.jsonAdapter.constructors.single(),
)
return irDelegatingConstructorCall(moshiSymbols.jsonAdapter.constructors.single().owner)
}

companion object {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,6 @@ import org.jetbrains.kotlin.ir.expressions.IrValueAccessExpression
import org.jetbrains.kotlin.ir.expressions.IrVararg
import org.jetbrains.kotlin.ir.expressions.IrWhen
import org.jetbrains.kotlin.ir.expressions.IrWhileLoop
import org.jetbrains.kotlin.ir.expressions.impl.IrIfThenElseImpl
import org.jetbrains.kotlin.ir.symbols.IrTypeAliasSymbol
import org.jetbrains.kotlin.ir.symbols.UnsafeDuringIrConstructionAPI
import org.jetbrains.kotlin.ir.types.IrDynamicType
Expand All @@ -98,6 +97,7 @@ import org.jetbrains.kotlin.ir.types.IrType
import org.jetbrains.kotlin.ir.types.IrTypeAbbreviation
import org.jetbrains.kotlin.ir.types.IrTypeArgument
import org.jetbrains.kotlin.ir.types.IrTypeProjection
import org.jetbrains.kotlin.ir.types.SimpleTypeNullability
import org.jetbrains.kotlin.ir.types.classOrNull
import org.jetbrains.kotlin.ir.types.isAny
import org.jetbrains.kotlin.ir.types.isInt
Expand Down Expand Up @@ -636,7 +636,7 @@ internal class IrSourcePrinterVisitor(out: Appendable, indentUnit: String = " "
print("\"")
for (arg in arguments) {
when {
arg is IrConst<*> && arg.kind == IrConstKind.String -> print(arg.value)
arg is IrConst && arg.kind == IrConstKind.String -> print(arg.value)
arg is IrGetValue -> {
print("$")
arg.print()
Expand Down Expand Up @@ -664,7 +664,7 @@ internal class IrSourcePrinterVisitor(out: Appendable, indentUnit: String = " "
}

override fun visitWhen(expression: IrWhen) {
val isIf = expression.origin == IrStatementOrigin.IF || expression is IrIfThenElseImpl
val isIf = expression.origin == IrStatementOrigin.IF
when {
expression.origin == IrStatementOrigin.OROR -> {
val lhs = expression.branches[0].condition
Expand All @@ -681,12 +681,10 @@ internal class IrSourcePrinterVisitor(out: Appendable, indentUnit: String = " "
rhs.print()
}
isIf -> {
val singleLine =
expression.branches.all { it.result is IrConst<*> || it.result is IrGetValue }
val singleLine = expression.branches.all { it.result is IrConst || it.result is IrGetValue }
expression.branches.forEachIndexed { index, branch ->
val isElse =
index == expression.branches.size - 1 &&
(branch.condition as? IrConst<*>)?.value == true
index == expression.branches.size - 1 && (branch.condition as? IrConst)?.value == true
when {
index == 0 -> {
print("if (")
Expand Down Expand Up @@ -715,7 +713,7 @@ internal class IrSourcePrinterVisitor(out: Appendable, indentUnit: String = " "
print("when ")
bracedBlock {
expression.branches.forEach {
val isElse = (it.condition as? IrConst<*>)?.value == true
val isElse = (it.condition as? IrConst)?.value == true

if (isElse) {
print("else")
Expand Down Expand Up @@ -978,7 +976,7 @@ internal class IrSourcePrinterVisitor(out: Appendable, indentUnit: String = " "
return "${if (value < 0) "-" else ""}0b$result"
}

override fun visitConst(expression: IrConst<*>) {
override fun visitConst(expression: IrConst) {
val result =
when (expression.kind) {
is IrConstKind.Null -> "${expression.value}"
Expand Down Expand Up @@ -1286,8 +1284,11 @@ internal class IrSourcePrinterVisitor(out: Appendable, indentUnit: String = " "
}
)
}
if (hasQuestionMark) {
append('?')
when (nullability) {
SimpleTypeNullability.MARKED_NULLABLE -> append('?')
SimpleTypeNullability.NOT_SPECIFIED -> {}

SimpleTypeNullability.DEFINITELY_NOT_NULL -> append("& Any")
}
abbreviation?.let { append(it.renderTypeAbbreviation()) }
}
Expand Down Expand Up @@ -1411,7 +1412,7 @@ internal class IrSourcePrinterVisitor(out: Appendable, indentUnit: String = " "
when (irElement) {
null -> append("<null>")
is IrConstructorCall -> renderAsAnnotation(irElement)
is IrConst<*> -> {
is IrConst -> {
append('\'')
append(irElement.value.toString())
append('\'')
Expand Down

0 comments on commit 712e147

Please sign in to comment.