[JS IR BE] Implement isPrimitiveArray with pure Ir
This commit is contained in:
-3
@@ -17,9 +17,6 @@ import org.jetbrains.kotlin.types.typeUtil.isSubtypeOf
|
|||||||
|
|
||||||
// TODO: implement pure Ir-based function (see IrTypeUtils.kt)
|
// TODO: implement pure Ir-based function (see IrTypeUtils.kt)
|
||||||
|
|
||||||
@Deprecated("Use pure Ir helper")
|
|
||||||
fun IrType.isPrimitiveArray() = KotlinBuiltIns.isPrimitiveArray(toKotlinType())
|
|
||||||
|
|
||||||
@Deprecated("Use pure Ir helper")
|
@Deprecated("Use pure Ir helper")
|
||||||
fun IrType.getPrimitiveArrayElementType() = KotlinBuiltIns.getPrimitiveArrayElementType(toKotlinType())
|
fun IrType.getPrimitiveArrayElementType() = KotlinBuiltIns.getPrimitiveArrayElementType(toKotlinType())
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.ir.util
|
package org.jetbrains.kotlin.ir.util
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns.FQ_NAMES
|
||||||
import org.jetbrains.kotlin.builtins.UnsignedTypes
|
import org.jetbrains.kotlin.builtins.UnsignedTypes
|
||||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||||
import org.jetbrains.kotlin.ir.declarations.IrClass
|
import org.jetbrains.kotlin.ir.declarations.IrClass
|
||||||
@@ -91,3 +92,4 @@ private inline fun IrType.isTypeFromKotlinPackage(namePredicate: (Name) -> Boole
|
|||||||
} else return false
|
} else return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun IrType.isPrimitiveArray() = isTypeFromKotlinPackage { it in FQ_NAMES.primitiveArrayTypeShortNames }
|
||||||
-1
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.ir.backend.js.lower
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.backend.common.FileLoweringPass
|
import org.jetbrains.kotlin.backend.common.FileLoweringPass
|
||||||
import org.jetbrains.kotlin.backend.common.lower.AbstractValueUsageTransformer
|
import org.jetbrains.kotlin.backend.common.lower.AbstractValueUsageTransformer
|
||||||
import org.jetbrains.kotlin.backend.common.utils.isPrimitiveArray
|
|
||||||
import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext
|
import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext
|
||||||
import org.jetbrains.kotlin.ir.backend.js.ir.JsIrBuilder
|
import org.jetbrains.kotlin.ir.backend.js.ir.JsIrBuilder
|
||||||
import org.jetbrains.kotlin.ir.backend.js.utils.realOverrideTarget
|
import org.jetbrains.kotlin.ir.backend.js.utils.realOverrideTarget
|
||||||
|
|||||||
+18
-13
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.ir.declarations.impl.IrExternalPackageFragmentImpl
|
|||||||
import org.jetbrains.kotlin.ir.symbols.IrExternalPackageFragmentSymbol
|
import org.jetbrains.kotlin.ir.symbols.IrExternalPackageFragmentSymbol
|
||||||
import org.jetbrains.kotlin.ir.util.isEffectivelyExternal
|
import org.jetbrains.kotlin.ir.util.isEffectivelyExternal
|
||||||
import org.jetbrains.kotlin.ir.util.transformFlat
|
import org.jetbrains.kotlin.ir.util.transformFlat
|
||||||
|
import org.jetbrains.kotlin.ir.util.kotlinPackageFqn
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
@@ -45,19 +46,7 @@ fun moveBodilessDeclarationsToSeparatePlace(context: JsIrBackendContext, module:
|
|||||||
fun isBuiltInClass(declaration: IrDeclaration): Boolean =
|
fun isBuiltInClass(declaration: IrDeclaration): Boolean =
|
||||||
declaration is IrClass && declaration.name in builtInClasses
|
declaration is IrClass && declaration.name in builtInClasses
|
||||||
|
|
||||||
val packageFragment = IrExternalPackageFragmentImpl(object : IrExternalPackageFragmentSymbol {
|
val packageFragmentMap = mutableMapOf<FqName, IrExternalPackageFragment>()
|
||||||
override val descriptor: PackageFragmentDescriptor
|
|
||||||
get() = error("Operation is unsupported")
|
|
||||||
|
|
||||||
private var _owner: IrExternalPackageFragment? = null
|
|
||||||
override val owner get() = _owner!!
|
|
||||||
|
|
||||||
override val isBound get() = _owner != null
|
|
||||||
|
|
||||||
override fun bind(owner: IrExternalPackageFragment) {
|
|
||||||
_owner = owner
|
|
||||||
}
|
|
||||||
}, FqName.ROOT)
|
|
||||||
|
|
||||||
fun collectExternalClasses(container: IrDeclarationContainer, includeCurrentLevel: Boolean): List<IrClass> {
|
fun collectExternalClasses(container: IrDeclarationContainer, includeCurrentLevel: Boolean): List<IrClass> {
|
||||||
val externalClasses =
|
val externalClasses =
|
||||||
@@ -82,6 +71,22 @@ fun moveBodilessDeclarationsToSeparatePlace(context: JsIrBackendContext, module:
|
|||||||
|
|
||||||
val it = irFile.declarations.iterator()
|
val it = irFile.declarations.iterator()
|
||||||
|
|
||||||
|
val packageFragment = packageFragmentMap.getOrPut(irFile.fqName) {
|
||||||
|
IrExternalPackageFragmentImpl(object : IrExternalPackageFragmentSymbol {
|
||||||
|
override val descriptor: PackageFragmentDescriptor
|
||||||
|
get() = error("Operation is unsupported")
|
||||||
|
|
||||||
|
private var _owner: IrExternalPackageFragment? = null
|
||||||
|
override val owner get() = _owner!!
|
||||||
|
|
||||||
|
override val isBound get() = _owner != null
|
||||||
|
|
||||||
|
override fun bind(owner: IrExternalPackageFragment) {
|
||||||
|
_owner = owner
|
||||||
|
}
|
||||||
|
}, irFile.fqName)
|
||||||
|
}
|
||||||
|
|
||||||
while (it.hasNext()) {
|
while (it.hasNext()) {
|
||||||
val d = it.next()
|
val d = it.next()
|
||||||
|
|
||||||
|
|||||||
-1
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.ir.backend.js.lower
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.backend.common.FileLoweringPass
|
import org.jetbrains.kotlin.backend.common.FileLoweringPass
|
||||||
import org.jetbrains.kotlin.backend.common.utils.getPrimitiveArrayElementType
|
import org.jetbrains.kotlin.backend.common.utils.getPrimitiveArrayElementType
|
||||||
import org.jetbrains.kotlin.backend.common.utils.isPrimitiveArray
|
|
||||||
import org.jetbrains.kotlin.ir.IrStatement
|
import org.jetbrains.kotlin.ir.IrStatement
|
||||||
import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext
|
import org.jetbrains.kotlin.ir.backend.js.JsIrBackendContext
|
||||||
import org.jetbrains.kotlin.ir.backend.js.ir.JsIrArithBuilder
|
import org.jetbrains.kotlin.ir.backend.js.ir.JsIrArithBuilder
|
||||||
|
|||||||
Reference in New Issue
Block a user