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:
+2
-1
@@ -511,7 +511,8 @@ tasks {
|
|||||||
":kotlin-noarg-compiler-plugin:test",
|
":kotlin-noarg-compiler-plugin:test",
|
||||||
":kotlin-sam-with-receiver-compiler-plugin:test",
|
":kotlin-sam-with-receiver-compiler-plugin:test",
|
||||||
":plugins:uast-kotlin:test",
|
":plugins:uast-kotlin:test",
|
||||||
":kotlin-annotation-processing-gradle:test")
|
":kotlin-annotation-processing-gradle:test",
|
||||||
|
":kotlinx-serialization-ide-plugin:test")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -42,6 +42,3 @@ fun AnnotationDescriptor.argumentValue(parameterName: String): ConstantValue<*>?
|
|||||||
DeprecationLevel.ERROR
|
DeprecationLevel.ERROR
|
||||||
)
|
)
|
||||||
val JVM_FIELD_ANNOTATION_FQ_NAME = FqName("kotlin.jvm.JvmField")
|
val JVM_FIELD_ANNOTATION_FQ_NAME = FqName("kotlin.jvm.JvmField")
|
||||||
|
|
||||||
val KOTLINX_SERIALIZABLE_FQ_NAME = FqName("kotlinx.serialization.Serializable")
|
|
||||||
val KOTLINX_SERIALIZER_FQ_NAME = FqName("kotlinx.serialization.Serializer")
|
|
||||||
|
|||||||
+2
-2
@@ -36,6 +36,8 @@ import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
|||||||
import org.jetbrains.kotlin.frontend.di.configureModule
|
import org.jetbrains.kotlin.frontend.di.configureModule
|
||||||
import org.jetbrains.kotlin.idea.caches.lightClasses.IDELightClassConstructionContext.Mode.EXACT
|
import org.jetbrains.kotlin.idea.caches.lightClasses.IDELightClassConstructionContext.Mode.EXACT
|
||||||
import org.jetbrains.kotlin.idea.caches.lightClasses.IDELightClassConstructionContext.Mode.LIGHT
|
import org.jetbrains.kotlin.idea.caches.lightClasses.IDELightClassConstructionContext.Mode.LIGHT
|
||||||
|
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.kotlin.idea.caches.project.getModuleInfo
|
import org.jetbrains.kotlin.idea.caches.project.getModuleInfo
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
||||||
import org.jetbrains.kotlin.idea.compiler.IDELanguageSettingsProvider
|
import org.jetbrains.kotlin.idea.compiler.IDELanguageSettingsProvider
|
||||||
@@ -52,8 +54,6 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.getElementTextWithContext
|
import org.jetbrains.kotlin.psi.psiUtil.getElementTextWithContext
|
||||||
import org.jetbrains.kotlin.resolve.*
|
import org.jetbrains.kotlin.resolve.*
|
||||||
import org.jetbrains.kotlin.resolve.annotations.KOTLINX_SERIALIZABLE_FQ_NAME
|
|
||||||
import org.jetbrains.kotlin.resolve.annotations.KOTLINX_SERIALIZER_FQ_NAME
|
|
||||||
import org.jetbrains.kotlin.resolve.calls.CallResolver
|
import org.jetbrains.kotlin.resolve.calls.CallResolver
|
||||||
import org.jetbrains.kotlin.resolve.calls.context.BasicCallResolutionContext
|
import org.jetbrains.kotlin.resolve.calls.context.BasicCallResolutionContext
|
||||||
import org.jetbrains.kotlin.resolve.calls.context.CheckArgumentTypesMode
|
import org.jetbrains.kotlin.resolve.calls.context.CheckArgumentTypesMode
|
||||||
|
|||||||
@@ -0,0 +1,11 @@
|
|||||||
|
/*
|
||||||
|
* 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.kotlin.idea.caches.lightClasses.annotations
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.name.FqName
|
||||||
|
|
||||||
|
val KOTLINX_SERIALIZABLE_FQ_NAME = FqName("kotlinx.serialization.Serializable")
|
||||||
|
val KOTLINX_SERIALIZER_FQ_NAME = FqName("kotlinx.serialization.Serializer")
|
||||||
+6
-5
@@ -1,10 +1,7 @@
|
|||||||
package org.jetbrains.kotlinx.serialization.compiler.resolve
|
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.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
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 {
|
object SerializationPackages {
|
||||||
internal val packageFqName = FqName("kotlinx.serialization")
|
internal val packageFqName = FqName("kotlinx.serialization")
|
||||||
@@ -13,8 +10,12 @@ object SerializationPackages {
|
|||||||
}
|
}
|
||||||
|
|
||||||
object SerializationAnnotations {
|
object SerializationAnnotations {
|
||||||
internal val serializableAnnotationFqName = KOTLINX_SERIALIZABLE_FQ_NAME
|
// When changing names for these annotations, please change
|
||||||
internal val serializerAnnotationFqName = KOTLINX_SERIALIZER_FQ_NAME
|
// 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 serialNameAnnotationFqName = FqName("kotlinx.serialization.SerialName")
|
||||||
internal val serialOptionalFqName = FqName("kotlinx.serialization.Optional")
|
internal val serialOptionalFqName = FqName("kotlinx.serialization.Optional")
|
||||||
internal val serialTransientFqName = FqName("kotlinx.serialization.Transient")
|
internal val serialTransientFqName = FqName("kotlinx.serialization.Transient")
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ dependencies {
|
|||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
"main" { projectDefault() }
|
"main" { projectDefault() }
|
||||||
"test" {}
|
"test" { projectDefault() }
|
||||||
}
|
}
|
||||||
|
|
||||||
runtimeJar()
|
runtimeJar()
|
||||||
|
|||||||
+18
@@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user