Fix Kotlin/JS compiler under JRE9

See KT-20653, KT-20650
This commit is contained in:
Alexey Andreev
2017-10-11 13:57:44 +03:00
parent e5cfd198c7
commit 8a8891d7c9
3 changed files with 44 additions and 29 deletions
@@ -20,8 +20,7 @@ import org.jetbrains.kotlin.serialization.deserialization.BinaryVersion
import java.io.DataInputStream
import java.io.File
import java.io.InputStream
import javax.xml.bind.DatatypeConverter.parseBase64Binary
import javax.xml.bind.DatatypeConverter.printBase64Binary
import java.util.*
class KotlinJavascriptMetadata(val version: JsMetadataVersion, val moduleName: String, val body: ByteArray)
@@ -73,7 +72,8 @@ object KotlinJavascriptMetadataUtils {
KOTLIN_JAVASCRIPT_METHOD_NAME_PATTERN.matcher(text).find() && METADATA_PATTERN.matcher(text).find()
fun formatMetadataAsString(moduleName: String, content: ByteArray): String =
"// Kotlin.$KOTLIN_JAVASCRIPT_METHOD_NAME(${JsMetadataVersion.INSTANCE.toInteger()}, \"$moduleName\", \"${printBase64Binary(content)}\");\n"
"// Kotlin.$KOTLIN_JAVASCRIPT_METHOD_NAME(${JsMetadataVersion.INSTANCE.toInteger()}, \"$moduleName\", " +
"\"${Base64.getEncoder().encodeToString(content)}\");\n"
@JvmStatic
fun loadMetadata(file: File): List<KotlinJavascriptMetadata> {
@@ -99,7 +99,7 @@ object KotlinJavascriptMetadataUtils {
val abiVersion = JsMetadataVersion.fromInteger(matcher.group(1).toInt())
val moduleName = matcher.group(3)
val data = matcher.group(5)
metadataList.add(KotlinJavascriptMetadata(abiVersion, moduleName, parseBase64Binary(data)))
metadataList.add(KotlinJavascriptMetadata(abiVersion, moduleName, Base64.getDecoder().decode(data)))
}
}
}