Erase non-reified type parameters by-default when inlining.

Substitution of type arguments to non-reified type parameters may lead
to accidental reification, which should not be done (see ^KT-60174 for
examples). So, we should erase them, except the few cases.

^KT-60174: Fixed
^KT-60175: Fixed
This commit is contained in:
vladislav.grechko
2023-07-27 18:30:50 +02:00
committed by Space Team
parent 29ecc4d987
commit f318b5969d
89 changed files with 2369 additions and 280 deletions
@@ -222,7 +222,8 @@ internal fun kotlinToJsStringAdapter(x: String?): JsString? {
}
internal fun jsCheckIsNullOrUndefinedAdapter(x: ExternalInterfaceType?): ExternalInterfaceType? =
x.takeIf { !isNullish(it) }
// We deliberately avoid usage of `takeIf` here as type erase on the inlining stage leads to infinite recursion
if (isNullish(x)) null else x
// js string to kotlin string import
// TODO Uint16Array may work with byte endian different with Wasm (i.e. little endian)