Reformat TreeBasedAnnotation.kt
This commit is contained in:
committed by
teamcity
parent
23c69f8d17
commit
09ff6303cc
+49
-35
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user