Всем привет. Подскажите в чем дело? код: ``` ...
# russian
c
Всем привет. Подскажите в чем дело? код:
Copy code
private fun getValue(exp: Expression, needType: LLVMType, writer: MethodWriter) =
            when (exp) {
                is Expression.NumberConst -> {
                    when (needType) {
                        ctx.writer.I32 -> writer.i32(exp.value.toInt())
                        else -> TODO()
                    }
                }
                is Expression.GetStaticField -> {
                    val clazz = ctx.loader.load(exp.owner)!!
                    val field = clazz.globalFiels.find { it is JVMClass.JVMGlobalField && it.field.name == exp.field } ?: TODO("Can't find ${exp.field} in ${exp.owner}")
                    writer.loadGlobal(field)
                }
                is Expression.This -> writer.arg(0)
                is Expression.GetLocalField -> {
                    val selfClass = ctx.loader.load(exp.owner.type)!!
                    val own = getValue(exp = exp.owner, writer = writer, needType = selfClass.struct) << тут ошибка
                    val fieldIndex = selfClass.struct.fieldIndex { it.field.name == exp.field }
                    val fieldPtr = writer.field_ptr(f = own, index = fieldIndex)
                    writer.load(fieldPtr)
                }
                else -> TODO()
            }
ошибка компиляции:
Type checking has run into a recursive problem. Easiest workaround: specify types of your declarations explicitly
. ну да рекурсия. Ну а в чем дело то? )))