Symbol based types: cleanup code
This commit is contained in:
+19
-20
@@ -26,8 +26,8 @@ import javax.lang.model.element.TypeParameterElement
|
|||||||
import javax.lang.model.type.*
|
import javax.lang.model.type.*
|
||||||
|
|
||||||
sealed class SymbolBasedType<out T : TypeMirror>(
|
sealed class SymbolBasedType<out T : TypeMirror>(
|
||||||
val typeMirror: T,
|
val typeMirror: T,
|
||||||
val javac: JavacWrapper
|
val javac: JavacWrapper
|
||||||
) : JavaType, JavaAnnotationOwner {
|
) : JavaType, JavaAnnotationOwner {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
@@ -57,8 +57,8 @@ sealed class SymbolBasedType<out T : TypeMirror>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
class SymbolBasedPrimitiveType(
|
class SymbolBasedPrimitiveType(
|
||||||
typeMirror: TypeMirror,
|
typeMirror: TypeMirror,
|
||||||
javac: JavacWrapper
|
javac: JavacWrapper
|
||||||
) : SymbolBasedType<TypeMirror>(typeMirror, javac), JavaPrimitiveType {
|
) : SymbolBasedType<TypeMirror>(typeMirror, javac), JavaPrimitiveType {
|
||||||
|
|
||||||
override val type: PrimitiveType?
|
override val type: PrimitiveType?
|
||||||
@@ -67,23 +67,22 @@ class SymbolBasedPrimitiveType(
|
|||||||
}
|
}
|
||||||
|
|
||||||
class SymbolBasedClassifierType<out T : TypeMirror>(
|
class SymbolBasedClassifierType<out T : TypeMirror>(
|
||||||
typeMirror: T,
|
typeMirror: T,
|
||||||
javac: JavacWrapper
|
javac: JavacWrapper
|
||||||
) : SymbolBasedType<T>(typeMirror, javac), JavaClassifierType {
|
) : SymbolBasedType<T>(typeMirror, javac), JavaClassifierType {
|
||||||
|
|
||||||
override val classifier: JavaClassifier?
|
override val classifier: JavaClassifier?
|
||||||
by lazy {
|
by lazy {
|
||||||
when (typeMirror.kind) {
|
when (typeMirror.kind) {
|
||||||
TypeKind.DECLARED -> ((typeMirror as DeclaredType).asElement() as Symbol.ClassSymbol).let { symbol ->
|
TypeKind.DECLARED -> ((typeMirror as DeclaredType).asElement() as Symbol.ClassSymbol).let { symbol ->
|
||||||
// try to find cached javaClass
|
// try to find cached javaClass
|
||||||
val classId = symbol.computeClassId()
|
val classId = symbol.computeClassId()
|
||||||
classId?.let { javac.findClass(it) }
|
classId?.let { javac.findClass(it) } ?: SymbolBasedClass(symbol, javac, classId, symbol.classfile)
|
||||||
?: SymbolBasedClass(symbol, javac, classId, symbol.classfile)
|
}
|
||||||
|
TypeKind.TYPEVAR -> SymbolBasedTypeParameter((typeMirror as TypeVariable).asElement() as TypeParameterElement, javac)
|
||||||
|
else -> null
|
||||||
}
|
}
|
||||||
TypeKind.TYPEVAR -> SymbolBasedTypeParameter((typeMirror as TypeVariable).asElement() as TypeParameterElement, javac)
|
|
||||||
else -> null
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
override val typeArguments: List<JavaType>
|
override val typeArguments: List<JavaType>
|
||||||
get() {
|
get() {
|
||||||
@@ -120,8 +119,8 @@ class SymbolBasedClassifierType<out T : TypeMirror>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
class SymbolBasedWildcardType(
|
class SymbolBasedWildcardType(
|
||||||
typeMirror: WildcardType,
|
typeMirror: WildcardType,
|
||||||
javac: JavacWrapper
|
javac: JavacWrapper
|
||||||
) : SymbolBasedType<WildcardType>(typeMirror, javac), JavaWildcardType {
|
) : SymbolBasedType<WildcardType>(typeMirror, javac), JavaWildcardType {
|
||||||
|
|
||||||
override val bound: JavaType?
|
override val bound: JavaType?
|
||||||
@@ -136,8 +135,8 @@ class SymbolBasedWildcardType(
|
|||||||
}
|
}
|
||||||
|
|
||||||
class SymbolBasedArrayType(
|
class SymbolBasedArrayType(
|
||||||
typeMirror: ArrayType,
|
typeMirror: ArrayType,
|
||||||
javac: JavacWrapper
|
javac: JavacWrapper
|
||||||
) : SymbolBasedType<ArrayType>(typeMirror, javac), JavaArrayType {
|
) : SymbolBasedType<ArrayType>(typeMirror, javac), JavaArrayType {
|
||||||
|
|
||||||
override val componentType: JavaType
|
override val componentType: JavaType
|
||||||
|
|||||||
Reference in New Issue
Block a user