Clean up some code in compiler.resolution.common.jvm
This commit is contained in:
+26
-26
@@ -25,11 +25,11 @@ import org.jetbrains.org.objectweb.asm.*
|
||||
import java.lang.reflect.Array
|
||||
|
||||
internal class AnnotationsAndParameterCollectorMethodVisitor(
|
||||
private val member: BinaryJavaMethodBase,
|
||||
private val context: ClassifierResolutionContext,
|
||||
private val signatureParser: BinaryClassSignatureParser,
|
||||
private val parametersToSkipNumber: Int,
|
||||
private val parametersCountInMethodDesc: Int
|
||||
private val member: BinaryJavaMethodBase,
|
||||
private val context: ClassifierResolutionContext,
|
||||
private val signatureParser: BinaryClassSignatureParser,
|
||||
private val parametersToSkipNumber: Int,
|
||||
private val parametersCountInMethodDesc: Int
|
||||
) : MethodVisitor(ASM_API_VERSION_FOR_CLASS_READING) {
|
||||
private var parameterIndex = 0
|
||||
|
||||
@@ -106,17 +106,17 @@ internal class AnnotationsAndParameterCollectorMethodVisitor(
|
||||
}
|
||||
|
||||
class BinaryJavaAnnotation private constructor(
|
||||
desc: String,
|
||||
private val context: ClassifierResolutionContext,
|
||||
override val arguments: Collection<JavaAnnotationArgument>
|
||||
desc: String,
|
||||
private val context: ClassifierResolutionContext,
|
||||
override val arguments: Collection<JavaAnnotationArgument>
|
||||
) : JavaAnnotation {
|
||||
|
||||
companion object {
|
||||
|
||||
fun createAnnotationAndVisitor(
|
||||
desc: String,
|
||||
context: ClassifierResolutionContext,
|
||||
signatureParser: BinaryClassSignatureParser
|
||||
desc: String,
|
||||
context: ClassifierResolutionContext,
|
||||
signatureParser: BinaryClassSignatureParser
|
||||
): Pair<JavaAnnotation, AnnotationVisitor> {
|
||||
val arguments = mutableListOf<JavaAnnotationArgument>()
|
||||
val annotation = BinaryJavaAnnotation(desc, context, arguments)
|
||||
@@ -155,9 +155,9 @@ class BinaryJavaAnnotation private constructor(
|
||||
context.resolveByInternalName(Type.getType(desc).internalName)
|
||||
}
|
||||
|
||||
override val classId: ClassId?
|
||||
override val classId: ClassId
|
||||
get() = classifierResolutionResult.classifier.safeAs<JavaClass>()?.classId
|
||||
?: ClassId.topLevel(FqName(classifierResolutionResult.qualifiedName))
|
||||
?: ClassId.topLevel(FqName(classifierResolutionResult.qualifiedName))
|
||||
|
||||
override fun resolve() = classifierResolutionResult.classifier as? JavaClass
|
||||
}
|
||||
@@ -224,37 +224,37 @@ abstract class PlainJavaAnnotationArgument(name: String?) : JavaAnnotationArgume
|
||||
}
|
||||
|
||||
class PlainJavaLiteralAnnotationArgument(
|
||||
name: String?,
|
||||
override val value: Any?
|
||||
name: String?,
|
||||
override val value: Any?
|
||||
) : PlainJavaAnnotationArgument(name), JavaLiteralAnnotationArgument
|
||||
|
||||
class PlainJavaClassObjectAnnotationArgument(
|
||||
name: String?,
|
||||
private val type: Type,
|
||||
private val signatureParser: BinaryClassSignatureParser,
|
||||
private val context: ClassifierResolutionContext
|
||||
name: String?,
|
||||
private val type: Type,
|
||||
private val signatureParser: BinaryClassSignatureParser,
|
||||
private val context: ClassifierResolutionContext
|
||||
) : PlainJavaAnnotationArgument(name), JavaClassObjectAnnotationArgument {
|
||||
override fun getReferencedType() = signatureParser.mapAsmType(type, context)
|
||||
}
|
||||
|
||||
class PlainJavaArrayAnnotationArgument(
|
||||
name: String?,
|
||||
private val elements: List<JavaAnnotationArgument>
|
||||
name: String?,
|
||||
private val elements: List<JavaAnnotationArgument>
|
||||
) : PlainJavaAnnotationArgument(name), JavaArrayAnnotationArgument {
|
||||
override fun getElements(): List<JavaAnnotationArgument> = elements
|
||||
}
|
||||
|
||||
class PlainJavaAnnotationAsAnnotationArgument(
|
||||
name: String?,
|
||||
private val annotation: JavaAnnotation
|
||||
name: String?,
|
||||
private val annotation: JavaAnnotation
|
||||
) : PlainJavaAnnotationArgument(name), JavaAnnotationAsAnnotationArgument {
|
||||
override fun getAnnotation() = annotation
|
||||
}
|
||||
|
||||
class PlainJavaEnumValueAnnotationArgument(
|
||||
name: String?,
|
||||
override val enumClassId: ClassId,
|
||||
entryName: String
|
||||
name: String?,
|
||||
override val enumClassId: ClassId,
|
||||
entryName: String
|
||||
) : PlainJavaAnnotationArgument(name), JavaEnumValueAnnotationArgument {
|
||||
override val entryName = Name.identifier(entryName)
|
||||
}
|
||||
|
||||
+18
-20
@@ -105,8 +105,8 @@ class BinaryClassSignatureParser {
|
||||
}
|
||||
|
||||
private fun parseParameterizedClassRefSignature(
|
||||
signature: CharacterIterator,
|
||||
context: ClassifierResolutionContext
|
||||
signature: CharacterIterator,
|
||||
context: ClassifierResolutionContext
|
||||
): JavaClassifierType {
|
||||
val canonicalName = StringBuilder()
|
||||
|
||||
@@ -120,12 +120,10 @@ class BinaryClassSignatureParser {
|
||||
signature.next()
|
||||
do {
|
||||
group.add(parseClassOrTypeVariableElement(signature, context))
|
||||
}
|
||||
while (signature.current() != '>')
|
||||
} while (signature.current() != '>')
|
||||
|
||||
argumentGroups.add(group)
|
||||
}
|
||||
else if (c != ' ') {
|
||||
} else if (c != ' ') {
|
||||
canonicalName.append(c)
|
||||
}
|
||||
signature.next()
|
||||
@@ -199,21 +197,21 @@ class BinaryClassSignatureParser {
|
||||
fun mapAsmType(type: Type, context: ClassifierResolutionContext) = parseTypeString(StringCharacterIterator(type.descriptor), context)
|
||||
|
||||
private fun parseTypeWithoutVarianceAndArray(signature: CharacterIterator, context: ClassifierResolutionContext) =
|
||||
when (signature.current()) {
|
||||
'L' -> parseParameterizedClassRefSignature(signature, context)
|
||||
'T' -> parseTypeVariableRefSignature(signature, context)
|
||||
when (signature.current()) {
|
||||
'L' -> parseParameterizedClassRefSignature(signature, context)
|
||||
'T' -> parseTypeVariableRefSignature(signature, context)
|
||||
|
||||
'B' -> parsePrimitiveType(signature, PrimitiveType.BYTE)
|
||||
'C' -> parsePrimitiveType(signature, PrimitiveType.CHAR)
|
||||
'D' -> parsePrimitiveType(signature, PrimitiveType.DOUBLE)
|
||||
'F' -> parsePrimitiveType(signature, PrimitiveType.FLOAT)
|
||||
'I' -> parsePrimitiveType(signature, PrimitiveType.INT)
|
||||
'J' -> parsePrimitiveType(signature, PrimitiveType.LONG)
|
||||
'Z' -> parsePrimitiveType(signature, PrimitiveType.BOOLEAN)
|
||||
'S' -> parsePrimitiveType(signature, PrimitiveType.SHORT)
|
||||
'V' -> parsePrimitiveType(signature, null)
|
||||
else -> null
|
||||
}
|
||||
'B' -> parsePrimitiveType(signature, PrimitiveType.BYTE)
|
||||
'C' -> parsePrimitiveType(signature, PrimitiveType.CHAR)
|
||||
'D' -> parsePrimitiveType(signature, PrimitiveType.DOUBLE)
|
||||
'F' -> parsePrimitiveType(signature, PrimitiveType.FLOAT)
|
||||
'I' -> parsePrimitiveType(signature, PrimitiveType.INT)
|
||||
'J' -> parsePrimitiveType(signature, PrimitiveType.LONG)
|
||||
'Z' -> parsePrimitiveType(signature, PrimitiveType.BOOLEAN)
|
||||
'S' -> parsePrimitiveType(signature, PrimitiveType.SHORT)
|
||||
'V' -> parsePrimitiveType(signature, null)
|
||||
else -> null
|
||||
}
|
||||
|
||||
private fun parsePrimitiveType(signature: CharacterIterator, primitiveType: PrimitiveType?): JavaType {
|
||||
signature.next()
|
||||
|
||||
Reference in New Issue
Block a user