Reformat TreeBasedAnnotation.kt

This commit is contained in:
Dmitriy Novozhilov
2022-05-26 11:09:25 +03:00
committed by teamcity
parent 23c69f8d17
commit 09ff6303cc
@@ -27,35 +27,43 @@ import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
class TreeBasedAnnotation(
val annotation: JCTree.JCAnnotation,
val compilationUnit: CompilationUnitTree,
val javac: JavacWrapper,
val onElement: JavaElement
val annotation: JCTree.JCAnnotation,
val compilationUnit: CompilationUnitTree,
val javac: JavacWrapper,
val onElement: JavaElement
) : JavaElement, JavaAnnotation {
override val arguments: Collection<JavaAnnotationArgument>
get() = createAnnotationArguments(this, javac, onElement)
override val classId: ClassId?
get() = (resolve() as? JavaClassWithClassId)?.classId ?: ClassId.topLevel(FqName(annotation.annotationType.toString().substringAfter("@")))
override val classId: ClassId
get() = (resolve() as? JavaClassWithClassId)?.classId ?: ClassId.topLevel(
FqName(
annotation.annotationType.toString().substringAfter("@")
)
)
override fun resolve() = javac.resolve(annotation.annotationType, compilationUnit, onElement) as? JavaClass
}
sealed class TreeBasedAnnotationArgument(override val name: Name,
val javac: JavacWrapper) : JavaAnnotationArgument, JavaElement
sealed class TreeBasedAnnotationArgument(
override val name: Name,
val javac: JavacWrapper
) : JavaAnnotationArgument, JavaElement
class TreeBasedLiteralAnnotationArgument(name: Name,
override val value: Any?,
javac: JavacWrapper) : TreeBasedAnnotationArgument(name, javac), JavaLiteralAnnotationArgument
class TreeBasedLiteralAnnotationArgument(
name: Name,
override val value: Any?,
javac: JavacWrapper
) : TreeBasedAnnotationArgument(name, javac), JavaLiteralAnnotationArgument
class TreeBasedReferenceAnnotationArgument(
name: Name,
private val compilationUnit: CompilationUnitTree,
private val field: JCTree.JCFieldAccess,
javac: JavacWrapper,
private val onElement: JavaElement
name: Name,
private val compilationUnit: CompilationUnitTree,
private val field: JCTree.JCFieldAccess,
javac: JavacWrapper,
private val onElement: JavaElement
) : TreeBasedAnnotationArgument(name, javac), JavaEnumValueAnnotationArgument {
// TODO: do not run resolve here
private val javaField: JavaField? by lazy(LazyThreadSafetyMode.PUBLICATION) {
@@ -72,41 +80,47 @@ class TreeBasedReferenceAnnotationArgument(
get() = javaField?.name
}
class TreeBasedArrayAnnotationArgument(val args: List<JavaAnnotationArgument>,
name: Name,
javac: JavacWrapper) : TreeBasedAnnotationArgument(name, javac), JavaArrayAnnotationArgument {
class TreeBasedArrayAnnotationArgument(
val args: List<JavaAnnotationArgument>,
name: Name,
javac: JavacWrapper
) : TreeBasedAnnotationArgument(name, javac), JavaArrayAnnotationArgument {
override fun getElements() = args
}
class TreeBasedJavaClassObjectAnnotationArgument(private val type: JCTree.JCExpression,
name: Name,
private val compilationUnit: CompilationUnitTree,
javac: JavacWrapper,
private val onElement: JavaElement) : TreeBasedAnnotationArgument(name, javac), JavaClassObjectAnnotationArgument {
class TreeBasedJavaClassObjectAnnotationArgument(
private val type: JCTree.JCExpression,
name: Name,
private val compilationUnit: CompilationUnitTree,
javac: JavacWrapper,
private val onElement: JavaElement
) : TreeBasedAnnotationArgument(name, javac), JavaClassObjectAnnotationArgument {
override fun getReferencedType(): JavaType =
TreeBasedType.create(type, compilationUnit, javac, emptyList(), onElement)
TreeBasedType.create(type, compilationUnit, javac, emptyList(), onElement)
}
class TreeBasedAnnotationAsAnnotationArgument(private val annotation: JCTree.JCAnnotation,
name: Name,
private val compilationUnit: CompilationUnitTree,
javac: JavacWrapper,
private val onElement: JavaElement) : TreeBasedAnnotationArgument(name, javac), JavaAnnotationAsAnnotationArgument {
class TreeBasedAnnotationAsAnnotationArgument(
private val annotation: JCTree.JCAnnotation,
name: Name,
private val compilationUnit: CompilationUnitTree,
javac: JavacWrapper,
private val onElement: JavaElement
) : TreeBasedAnnotationArgument(name, javac), JavaAnnotationAsAnnotationArgument {
override fun getAnnotation(): JavaAnnotation =
TreeBasedAnnotation(annotation, compilationUnit, javac, onElement)
TreeBasedAnnotation(annotation, compilationUnit, javac, onElement)
}
private fun createAnnotationArguments(
annotation: TreeBasedAnnotation, javac: JavacWrapper, onElement: JavaElement
): Collection<JavaAnnotationArgument> =
annotation.annotation.arguments.mapNotNull {
val name = if (it is JCTree.JCAssign) Name.identifier(it.lhs.toString()) else Name.identifier("value")
createAnnotationArgument(it, name, annotation.compilationUnit, javac, annotation.resolve(), onElement)
}
annotation.annotation.arguments.mapNotNull {
val name = if (it is JCTree.JCAssign) Name.identifier(it.lhs.toString()) else Name.identifier("value")
createAnnotationArgument(it, name, annotation.compilationUnit, javac, annotation.resolve(), onElement)
}
internal fun createAnnotationArgument(
argument: JCTree.JCExpression,