[K/Wasm] Allow to export unsigned numbers

This commit is contained in:
Artem Kobzar
2023-12-08 09:06:19 +00:00
committed by Space Team
parent a3c1f4ea12
commit 2eb1e65bbf
19 changed files with 528 additions and 24 deletions
@@ -27,7 +27,6 @@ object JsPlatformConfigurator : PlatformConfiguratorBase(
JsRuntimeAnnotationChecker,
JsDynamicDeclarationChecker,
JsExportAnnotationChecker,
JsExportDeclarationChecker
),
additionalCallCheckers = listOf(
JsModuleCallChecker,
@@ -52,6 +51,7 @@ object JsPlatformConfigurator : PlatformConfiguratorBase(
container.useInstance(ExtensionFunctionToExternalIsInlinable)
container.useInstance(JsQualifierChecker)
container.useInstance(JsNativeDiagnosticSuppressor)
container.useInstance(JsExportDeclarationChecker(includeUnsignedNumbers = false))
}
override fun configureModuleDependentCheckers(container: StorageComponentContainer) {
@@ -33,7 +33,7 @@ import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.types.isDynamic
import org.jetbrains.kotlin.types.typeUtil.*
object JsExportDeclarationChecker : DeclarationChecker {
class JsExportDeclarationChecker(private val includeUnsignedNumbers: Boolean) : DeclarationChecker {
override fun check(declaration: KtDeclaration, descriptor: DeclarationDescriptor, context: DeclarationCheckerContext) {
val trace = context.trace
val bindingContext = trace.bindingContext
@@ -190,8 +190,9 @@ object JsExportDeclarationChecker : DeclarationChecker {
KotlinBuiltIns.isString(nonNullable) ||
(nonNullable.isPrimitiveNumberOrNullableType() && !nonNullable.isLong()) ||
nonNullable.isNothingOrNullableNothing() ||
KotlinBuiltIns.isArray(this) ||
KotlinBuiltIns.isPrimitiveArray(this)
KotlinBuiltIns.isArray(nonNullable) ||
KotlinBuiltIns.isPrimitiveArray(nonNullable) ||
(includeUnsignedNumbers && KotlinBuiltIns.isUnsignedNumber(nonNullable))
if (isPrimitiveExportableType) return true