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 import org.jetbrains.kotlin.name.Name
class TreeBasedAnnotation( class TreeBasedAnnotation(
val annotation: JCTree.JCAnnotation, val annotation: JCTree.JCAnnotation,
val compilationUnit: CompilationUnitTree, val compilationUnit: CompilationUnitTree,
val javac: JavacWrapper, val javac: JavacWrapper,
val onElement: JavaElement val onElement: JavaElement
) : JavaElement, JavaAnnotation { ) : JavaElement, JavaAnnotation {
override val arguments: Collection<JavaAnnotationArgument> override val arguments: Collection<JavaAnnotationArgument>
get() = createAnnotationArguments(this, javac, onElement) get() = createAnnotationArguments(this, javac, onElement)
override val classId: ClassId? override val classId: ClassId
get() = (resolve() as? JavaClassWithClassId)?.classId ?: ClassId.topLevel(FqName(annotation.annotationType.toString().substringAfter("@"))) get() = (resolve() as? JavaClassWithClassId)?.classId ?: ClassId.topLevel(
FqName(
annotation.annotationType.toString().substringAfter("@")
)
)
override fun resolve() = javac.resolve(annotation.annotationType, compilationUnit, onElement) as? JavaClass override fun resolve() = javac.resolve(annotation.annotationType, compilationUnit, onElement) as? JavaClass
} }
sealed class TreeBasedAnnotationArgument(override val name: Name, sealed class TreeBasedAnnotationArgument(
val javac: JavacWrapper) : JavaAnnotationArgument, JavaElement override val name: Name,
val javac: JavacWrapper
) : JavaAnnotationArgument, JavaElement
class TreeBasedLiteralAnnotationArgument(name: Name, class TreeBasedLiteralAnnotationArgument(
override val value: Any?, name: Name,
javac: JavacWrapper) : TreeBasedAnnotationArgument(name, javac), JavaLiteralAnnotationArgument override val value: Any?,
javac: JavacWrapper
) : TreeBasedAnnotationArgument(name, javac), JavaLiteralAnnotationArgument
class TreeBasedReferenceAnnotationArgument( class TreeBasedReferenceAnnotationArgument(
name: Name, name: Name,
private val compilationUnit: CompilationUnitTree, private val compilationUnit: CompilationUnitTree,
private val field: JCTree.JCFieldAccess, private val field: JCTree.JCFieldAccess,
javac: JavacWrapper, javac: JavacWrapper,
private val onElement: JavaElement private val onElement: JavaElement
) : TreeBasedAnnotationArgument(name, javac), JavaEnumValueAnnotationArgument { ) : TreeBasedAnnotationArgument(name, javac), JavaEnumValueAnnotationArgument {
// TODO: do not run resolve here // TODO: do not run resolve here
private val javaField: JavaField? by lazy(LazyThreadSafetyMode.PUBLICATION) { private val javaField: JavaField? by lazy(LazyThreadSafetyMode.PUBLICATION) {
@@ -72,41 +80,47 @@ class TreeBasedReferenceAnnotationArgument(
get() = javaField?.name get() = javaField?.name
} }
class TreeBasedArrayAnnotationArgument(val args: List<JavaAnnotationArgument>, class TreeBasedArrayAnnotationArgument(
name: Name, val args: List<JavaAnnotationArgument>,
javac: JavacWrapper) : TreeBasedAnnotationArgument(name, javac), JavaArrayAnnotationArgument { name: Name,
javac: JavacWrapper
) : TreeBasedAnnotationArgument(name, javac), JavaArrayAnnotationArgument {
override fun getElements() = args override fun getElements() = args
} }
class TreeBasedJavaClassObjectAnnotationArgument(private val type: JCTree.JCExpression, class TreeBasedJavaClassObjectAnnotationArgument(
name: Name, private val type: JCTree.JCExpression,
private val compilationUnit: CompilationUnitTree, name: Name,
javac: JavacWrapper, private val compilationUnit: CompilationUnitTree,
private val onElement: JavaElement) : TreeBasedAnnotationArgument(name, javac), JavaClassObjectAnnotationArgument { javac: JavacWrapper,
private val onElement: JavaElement
) : TreeBasedAnnotationArgument(name, javac), JavaClassObjectAnnotationArgument {
override fun getReferencedType(): JavaType = 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, class TreeBasedAnnotationAsAnnotationArgument(
name: Name, private val annotation: JCTree.JCAnnotation,
private val compilationUnit: CompilationUnitTree, name: Name,
javac: JavacWrapper, private val compilationUnit: CompilationUnitTree,
private val onElement: JavaElement) : TreeBasedAnnotationArgument(name, javac), JavaAnnotationAsAnnotationArgument { javac: JavacWrapper,
private val onElement: JavaElement
) : TreeBasedAnnotationArgument(name, javac), JavaAnnotationAsAnnotationArgument {
override fun getAnnotation(): JavaAnnotation = override fun getAnnotation(): JavaAnnotation =
TreeBasedAnnotation(annotation, compilationUnit, javac, onElement) TreeBasedAnnotation(annotation, compilationUnit, javac, onElement)
} }
private fun createAnnotationArguments( private fun createAnnotationArguments(
annotation: TreeBasedAnnotation, javac: JavacWrapper, onElement: JavaElement annotation: TreeBasedAnnotation, javac: JavacWrapper, onElement: JavaElement
): Collection<JavaAnnotationArgument> = ): Collection<JavaAnnotationArgument> =
annotation.annotation.arguments.mapNotNull { annotation.annotation.arguments.mapNotNull {
val name = if (it is JCTree.JCAssign) Name.identifier(it.lhs.toString()) else Name.identifier("value") 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) createAnnotationArgument(it, name, annotation.compilationUnit, javac, annotation.resolve(), onElement)
} }
internal fun createAnnotationArgument( internal fun createAnnotationArgument(
argument: JCTree.JCExpression, argument: JCTree.JCExpression,