Java annotation mapper refactoring (constant names)

This commit is contained in:
Mikhail Glukhikh
2015-08-05 11:00:37 +03:00
parent 45cc3c025f
commit 850580dc87
@@ -38,17 +38,17 @@ import java.util.EnumSet
public object JavaAnnotationMapper { public object JavaAnnotationMapper {
private val javaTargetFqName = FqName(javaClass<Target>().canonicalName) private val JAVA_TARGET_FQ_NAME = FqName(javaClass<Target>().canonicalName)
private val javaRetentionFqName = FqName(javaClass<Retention>().canonicalName) private val JAVA_RETENTION_FQ_NAME = FqName(javaClass<Retention>().canonicalName)
private val javaDeprecatedFqName = FqName(javaClass<Deprecated>().canonicalName) private val JAVA_DEPRECATED_FQ_NAME = FqName(javaClass<Deprecated>().canonicalName)
private val javaDocumentedFqName = FqName(javaClass<Documented>().canonicalName) private val JAVA_DOCUMENTED_FQ_NAME = FqName(javaClass<Documented>().canonicalName)
// Java8-specific thing // Java8-specific thing
private val javaRepeatableFqName = FqName("java.lang.annotation.Repeatable") private val JAVA_REPEATABLE_FQ_NAME = FqName("java.lang.annotation.Repeatable")
public fun mapOrResolveJavaAnnotation(annotation: JavaAnnotation, c: LazyJavaResolverContext): AnnotationDescriptor? = public fun mapOrResolveJavaAnnotation(annotation: JavaAnnotation, c: LazyJavaResolverContext): AnnotationDescriptor? =
when (annotation.classId) { when (annotation.classId) {
ClassId.topLevel(javaTargetFqName) -> JavaTargetAnnotationDescriptor(annotation, c) ClassId.topLevel(JAVA_TARGET_FQ_NAME) -> JavaTargetAnnotationDescriptor(annotation, c)
ClassId.topLevel(javaRetentionFqName), ClassId.topLevel(javaDeprecatedFqName) -> null ClassId.topLevel(JAVA_RETENTION_FQ_NAME), ClassId.topLevel(JAVA_DEPRECATED_FQ_NAME) -> null
else -> c.resolveAnnotation(annotation) else -> c.resolveAnnotation(annotation)
} }
@@ -58,9 +58,9 @@ public object JavaAnnotationMapper {
): AnnotationDescriptor? { ): AnnotationDescriptor? {
if (kotlinName == KotlinBuiltIns.FQ_NAMES.annotation) { if (kotlinName == KotlinBuiltIns.FQ_NAMES.annotation) {
// Construct kotlin.annotation.annotation from Retention & Repeatable // Construct kotlin.annotation.annotation from Retention & Repeatable
val retentionAnnotation = annotationOwner.findAnnotation(javaRetentionFqName) val retentionAnnotation = annotationOwner.findAnnotation(JAVA_RETENTION_FQ_NAME)
val repeatableAnnotation = annotationOwner.findAnnotation(javaRepeatableFqName) val repeatableAnnotation = annotationOwner.findAnnotation(JAVA_REPEATABLE_FQ_NAME)
val documentedAnnotation = annotationOwner.findAnnotation(javaDocumentedFqName) val documentedAnnotation = annotationOwner.findAnnotation(JAVA_DOCUMENTED_FQ_NAME)
return if (retentionAnnotation != null || repeatableAnnotation != null || documentedAnnotation != null) { return if (retentionAnnotation != null || repeatableAnnotation != null || documentedAnnotation != null) {
JavaRetentionRepeatableAnnotationDescriptor(retentionAnnotation, repeatableAnnotation != null, JavaRetentionRepeatableAnnotationDescriptor(retentionAnnotation, repeatableAnnotation != null,
documentedAnnotation != null, c) documentedAnnotation != null, c)
@@ -70,7 +70,7 @@ public object JavaAnnotationMapper {
} }
} }
if (kotlinName == KotlinBuiltIns.FQ_NAMES.deprecated) { if (kotlinName == KotlinBuiltIns.FQ_NAMES.deprecated) {
val javaAnnotation = annotationOwner.findAnnotation(javaDeprecatedFqName) val javaAnnotation = annotationOwner.findAnnotation(JAVA_DEPRECATED_FQ_NAME)
if (javaAnnotation != null || annotationOwner.isDeprecatedInJavaDoc) { if (javaAnnotation != null || annotationOwner.isDeprecatedInJavaDoc) {
return JavaDeprecatedAnnotationDescriptor(javaAnnotation, c) return JavaDeprecatedAnnotationDescriptor(javaAnnotation, c)
} }
@@ -84,14 +84,14 @@ public object JavaAnnotationMapper {
// kotlin.annotation.annotation is treated separately // kotlin.annotation.annotation is treated separately
private val kotlinToJavaNameMap: Map<FqName, FqName> = private val kotlinToJavaNameMap: Map<FqName, FqName> =
mapOf(KotlinBuiltIns.FQ_NAMES.target to javaTargetFqName) mapOf(KotlinBuiltIns.FQ_NAMES.target to JAVA_TARGET_FQ_NAME)
public val javaToKotlinNameMap: Map<FqName, FqName> = public val javaToKotlinNameMap: Map<FqName, FqName> =
mapOf(javaTargetFqName to KotlinBuiltIns.FQ_NAMES.target, mapOf(JAVA_TARGET_FQ_NAME to KotlinBuiltIns.FQ_NAMES.target,
javaRetentionFqName to KotlinBuiltIns.FQ_NAMES.annotation, JAVA_RETENTION_FQ_NAME to KotlinBuiltIns.FQ_NAMES.annotation,
javaDeprecatedFqName to KotlinBuiltIns.FQ_NAMES.deprecated, JAVA_DEPRECATED_FQ_NAME to KotlinBuiltIns.FQ_NAMES.deprecated,
javaRepeatableFqName to KotlinBuiltIns.FQ_NAMES.annotation, JAVA_REPEATABLE_FQ_NAME to KotlinBuiltIns.FQ_NAMES.annotation,
javaDocumentedFqName to KotlinBuiltIns.FQ_NAMES.annotation) JAVA_DOCUMENTED_FQ_NAME to KotlinBuiltIns.FQ_NAMES.annotation)
} }
abstract class AbstractJavaAnnotationDescriptor( abstract class AbstractJavaAnnotationDescriptor(