Minor. Move serialization annotation fq-names to IDE light-classes

They are a kind of a hack applied in light-classes and it'd be nice
to prevent them being used in irrelevant contexts

kotlin-serialization-compiler module should not depend on idea,
thus we can't use annotations directly there.

So, we copy-paste them and add a test on names consistency
This commit is contained in:
Denis Zharkov
2018-09-18 14:38:34 +03:00
parent b31de355db
commit ed7dd6fccb
7 changed files with 40 additions and 12 deletions
@@ -1,10 +1,7 @@
package org.jetbrains.kotlinx.serialization.compiler.resolve
import org.jetbrains.kotlin.load.java.JvmAnnotationNames
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.resolve.annotations.KOTLINX_SERIALIZABLE_FQ_NAME
import org.jetbrains.kotlin.resolve.annotations.KOTLINX_SERIALIZER_FQ_NAME
object SerializationPackages {
internal val packageFqName = FqName("kotlinx.serialization")
@@ -13,8 +10,12 @@ object SerializationPackages {
}
object SerializationAnnotations {
internal val serializableAnnotationFqName = KOTLINX_SERIALIZABLE_FQ_NAME
internal val serializerAnnotationFqName = KOTLINX_SERIALIZER_FQ_NAME
// When changing names for these annotations, please change
// org.jetbrains.kotlin.idea.caches.lightClasses.annotations.KOTLINX_SERIALIZABLE_FQ_NAME and
// org.jetbrains.kotlin.idea.caches.lightClasses.annotations.KOTLINX_SERIALIZER_FQ_NAME accordingly.
// Otherwise, there it might lead to exceptions from light classes when building them for serializer/serializable classes
val serializableAnnotationFqName = FqName("kotlinx.serialization.Serializable")
val serializerAnnotationFqName = FqName("kotlinx.serialization.Serializer")
internal val serialNameAnnotationFqName = FqName("kotlinx.serialization.SerialName")
internal val serialOptionalFqName = FqName("kotlinx.serialization.Optional")
internal val serialTransientFqName = FqName("kotlinx.serialization.Transient")
@@ -20,7 +20,7 @@ dependencies {
sourceSets {
"main" { projectDefault() }
"test" {}
"test" { projectDefault() }
}
runtimeJar()
@@ -0,0 +1,18 @@
/*
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlinx.serialization.idea
import junit.framework.TestCase
import org.jetbrains.kotlin.idea.caches.lightClasses.annotations.KOTLINX_SERIALIZABLE_FQ_NAME
import org.jetbrains.kotlin.idea.caches.lightClasses.annotations.KOTLINX_SERIALIZER_FQ_NAME
import org.jetbrains.kotlinx.serialization.compiler.resolve.SerializationAnnotations
class AnnotationNamesConsistencyTest : TestCase() {
fun testConsistency() {
assertEquals(KOTLINX_SERIALIZABLE_FQ_NAME, SerializationAnnotations.serializableAnnotationFqName)
assertEquals(KOTLINX_SERIALIZER_FQ_NAME, SerializationAnnotations.serializerAnnotationFqName)
}
}