diff --git a/libraries/ReadMe.md b/libraries/ReadMe.md
index c74443858b1..63b3ceb9ff2 100644
--- a/libraries/ReadMe.md
+++ b/libraries/ReadMe.md
@@ -46,20 +46,7 @@ If your maven build is failing with Out-Of-Memory errors, set JVM options for ma
## Kotlin serialization Gradle Plugin
-To build it, first **build all the above** and then, `cd` to `tools/kotlin-serialization`
-and run `mvn install`
-
-So, all build sequence will look like:
-
-```bash
-# Assuming you are in the kotlin/libraries folder
-./gradlew build install
-mvn install
-cd tools/gradle-tools
-./gradlew clean install
-cd ../kotlin-serialization
-mvn install
-```
+First, build all the above. Then run `./gradlew :kotlin-serialization:install` to install it to your local maven repository.
When it is installed in local maven repository, you can add it as a dependency in buildscript classpath and apply it:
@@ -73,7 +60,7 @@ buildscript {
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.1-SNAPSHOT"
- classpath "org.jetbrains.kotlinx:kotlinx-serialization:1.1-SNAPSHOT"
+ classpath "org.jetbrains.kotlinx:kotlin-serialization:0.1"
}
}
@@ -81,3 +68,5 @@ apply plugin: 'kotlin'
apply plugin: 'kotlin-serialization'
```
+
+You can also obtain it from bintray: https://bintray.com/kotlin/kotlinx/kotlinx.serialization
\ No newline at end of file
diff --git a/libraries/tools/kotlin-serialization/build.gradle b/libraries/tools/kotlin-serialization/build.gradle
new file mode 100644
index 00000000000..5b9b1def0fc
--- /dev/null
+++ b/libraries/tools/kotlin-serialization/build.gradle
@@ -0,0 +1,68 @@
+plugins {
+ id "com.jfrog.bintray" version "1.7.3"
+}
+
+group = 'org.jetbrains.kotlinx'
+version = '0.1'
+
+apply plugin: 'kotlin'
+
+configureJvmProject(project)
+
+compileJava {
+ sourceCompatibility = 1.8
+ targetCompatibility = 1.8
+ options.fork = false
+}
+
+repositories {
+ mavenLocal()
+ jcenter()
+ maven { url 'http://repository.jetbrains.com/utils' }
+}
+
+dependencies {
+ compileOnly project(':kotlin-gradle-plugin-api')
+
+ compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
+ compile "org.jetbrains.kotlin:kotlin-compiler-embeddable:$kotlin_version"
+
+ compileOnly 'org.jetbrains.kotlin:gradle-api:1.6'
+}
+
+def originalSrc = "$kotlin_root/plugins/kotlin-serialization/kotlin-serialization-compiler/src"
+def targetSrc = file("$buildDir/kotlin-serialization-target-src")
+
+task preprocessSources(type: Copy) {
+ from originalSrc
+ into targetSrc
+ filter { it.replaceAll('(?
-
-
- 4.0.0
-
- 3.0.4
- ${basedir}/../../../plugins/kotlin-serialization/kotlin-serialization-compiler/src
- ${basedir}/src/main/kotlin
- ${basedir}/src/main/resources
- ${basedir}/target/src/main/kotlin
- ${basedir}/target/resource
-
-
-
- org.jetbrains.kotlin
- kotlin-project
- 1.1-SNAPSHOT
- ../../pom.xml
-
-
- org.jetbrains.kotlinx
- kotlinx-serialization
- jar
-
- Serialization plugin for Gradle
-
-
-
- jetbrains-utils
- http://repository.jetbrains.com/utils
-
-
-
-
-
- org.jetbrains.kotlin
- kotlin-stdlib
- ${project.version}
-
-
- org.jetbrains.kotlin
- kotlin-compiler-embeddable
- ${project.version}
-
-
- org.jetbrains.kotlin
- kotlin-gradle-plugin-api
- ${project.version}
- provided
-
-
- org.jetbrains.kotlin
- gradle-api
- 2.2
- provided
-
-
-
-
- ${serialization.target-src}
-
-
- ${serialization.target-resources}
-
-
-
-
-
- maven-resources-plugin
- 3.0.0
-
-
- copy-sources
- validate
-
- copy-resources
-
-
- ${serialization.target-src}
-
-
- ${serialization.src}
-
-
- ${serialization.gradle.plugin.src}
-
-
-
-
-
- copy-resources
- validate
-
- copy-resources
-
-
- ${serialization.target-resources}/META-INF
-
-
- ${serialization.src}/META-INF
-
-
- ${serialization.gradle.plugin.resources}/META-INF
-
-
-
-
-
-
-
- com.google.code.maven-replacer-plugin
- replacer
- 1.5.3
-
-
- generate-sources
-
- replace
-
-
-
-
-
- ${serialization.target-src}/**
-
-
-
- (?<!\.)com\.intellij
- org.jetbrains.kotlin.com.intellij
-
-
-
-
-
- kotlin-maven-plugin
- org.jetbrains.kotlin
- ${project.version}
-
-
-
- compile
- compile
-
- compile
-
-
-
- ${serialization.target-src}
-
-
-
-
-
-
-
-
diff --git a/libraries/tools/kotlin-serialization/src/main/kotlin/org/jetbrains/kotlinx/serialization/gradle/SerializationSubplugin.kt b/libraries/tools/kotlin-serialization/src/main/kotlin/org/jetbrains/kotlinx/serialization/gradle/SerializationSubplugin.kt
index 1a8bf46916f..ff204f061b3 100644
--- a/libraries/tools/kotlin-serialization/src/main/kotlin/org/jetbrains/kotlinx/serialization/gradle/SerializationSubplugin.kt
+++ b/libraries/tools/kotlin-serialization/src/main/kotlin/org/jetbrains/kotlinx/serialization/gradle/SerializationSubplugin.kt
@@ -38,7 +38,7 @@ class SerializationGradleSubplugin : Plugin {
class SerializationKotlinGradleSubplugin : KotlinGradleSubplugin {
companion object {
val SERIALIZATION_GROUP_NAME = "org.jetbrains.kotlinx"
- val SERIALIZATION_ARTIFACT_NAME = "kotlinx-serialization"
+ val SERIALIZATION_ARTIFACT_NAME = "kotlin-serialization"
}
override fun isApplicable(project: Project, task: AbstractCompile) = SerializationGradleSubplugin.isEnabled(project)
diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/build.gradle b/plugins/kotlin-serialization/kotlin-serialization-compiler/build.gradle
index 2cdb3a7e0db..cf5d58c3379 100644
--- a/plugins/kotlin-serialization/kotlin-serialization-compiler/build.gradle
+++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/build.gradle
@@ -1,6 +1,6 @@
buildscript {
ext {
- kotlin_root = "$rootDir/../../../"
+ kotlin_root = file("$rootDir/../../..")
distDir = file("$kotlin_root/dist")
bootstrapCompilerFile = file("$distDir/kotlin-compiler-for-maven.jar")
kotlin_version = "1.1.3"
@@ -57,7 +57,9 @@ jar {
apply plugin: 'org.jetbrains.intellij'
intellij {
- localPath "$kotlin_root/ideaSDK"
+ if (findProperty("noIdeaSDK") == null) {
+ localPath "$kotlin_root/ideaSDK"
+ }
pluginName 'Kotlin-serialization'
downloadSources false
}
\ No newline at end of file
diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/js/SerializableJsTranslator.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/js/SerializableJsTranslator.kt
index 18291a2417c..8bf1930e1e4 100644
--- a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/js/SerializableJsTranslator.kt
+++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/js/SerializableJsTranslator.kt
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.js.translate.general.Translation
import org.jetbrains.kotlin.js.translate.utils.JsAstUtils
import org.jetbrains.kotlin.js.translate.utils.TranslationUtils
import org.jetbrains.kotlin.psi.KtExpression
+import org.jetbrains.kotlin.psi.KtProperty
import org.jetbrains.kotlin.psi.KtPureClassOrObject
import org.jetbrains.kotlinx.serialization.compiler.backend.common.SerializableCodegen
import org.jetbrains.kotlinx.serialization.compiler.backend.common.anonymousInitializers
@@ -83,7 +84,7 @@ class SerializableJsTranslator(val declaration: KtPureClassOrObject,
//transient initializers and init blocks
val serialDescs = properties.serializableProperties.map { it.descriptor }
- (initMap - serialDescs).forEach { desc, expr ->
+ (initMap - serialDescs).forEach { (desc, expr) ->
val e = requireNotNull(expr) {"transient without an initializer"}
val initExpr = Translation.translateAsExpression(e, context)
+TranslationUtils.assignmentToBackingField(context, desc, initExpr).makeStmt()
diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/js/SerializerJsTranslator.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/js/SerializerJsTranslator.kt
index 974f8650bf2..01ba9362d15 100644
--- a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/js/SerializerJsTranslator.kt
+++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/js/SerializerJsTranslator.kt
@@ -25,7 +25,6 @@ import org.jetbrains.kotlin.js.translate.declaration.DefaultPropertyTranslator
import org.jetbrains.kotlin.js.translate.general.Translation
import org.jetbrains.kotlin.js.translate.utils.JsAstUtils
import org.jetbrains.kotlin.js.translate.utils.TranslationUtils
-import org.jetbrains.kotlin.js.translate.utils.TranslationUtils.shouldBoxReturnValue
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.KtPureClassOrObject
import org.jetbrains.kotlin.resolve.descriptorUtil.classId
@@ -260,10 +259,10 @@ class SerializerJsTranslator(declaration: KtPureClassOrObject,
).makeStmt()
}
// char unboxing crutch
- if (KotlinBuiltIns.isCharOrNullableChar(property.type) && !shouldBoxReturnValue(property.descriptor.getter)) {
+ if (KotlinBuiltIns.isCharOrNullableChar(property.type)) {
+JsAstUtils.assignment(
localProps[i],
- Translation.unboxIfNeeded(context, localProps[i], true)
+ TranslationUtils.coerce(context, localProps[i], TranslationUtils.getReturnTypeForCoercion(property.descriptor.getter!!))
).makeStmt()
}
diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/jvm/SerializableCodegenImpl.kt b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/jvm/SerializableCodegenImpl.kt
index b1e6cf5dd2d..45d861a3bd0 100644
--- a/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/jvm/SerializableCodegenImpl.kt
+++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/src/org/jetbrains/kotlinx/serialization/compiler/backend/jvm/SerializableCodegenImpl.kt
@@ -150,9 +150,9 @@ class SerializableCodegenImpl(
val serializedProps = properties.serializableProperties.map { it.descriptor }
(descToProps - serializedProps)
- .forEach { _, prop -> classCodegen.initializeProperty(exprCodegen, prop) }
+ .forEach { (_, prop) -> classCodegen.initializeProperty(exprCodegen, prop) }
(paramsToProps - serializedProps)
- .forEach { t, u -> exprCodegen.genInitParam(t, u) }
+ .forEach { (t, u) -> exprCodegen.genInitParam(t, u) }
// init blocks
// todo: proper order with other initializers