[IR] Minor: Code cleanup
This commit is contained in:
+18
-15
@@ -45,17 +45,16 @@ class DescriptorByIdSignatureFinderImpl(
|
|||||||
|
|
||||||
override fun findDescriptorBySignature(signature: IdSignature): DeclarationDescriptor? =
|
override fun findDescriptorBySignature(signature: IdSignature): DeclarationDescriptor? =
|
||||||
when (signature) {
|
when (signature) {
|
||||||
is IdSignature.AccessorSignature -> findDescriptorForAccessorSignature(signature)
|
is IdSignature.AccessorSignature -> resolveAccessorSignature(signature)
|
||||||
is IdSignature.CommonSignature -> findDescriptorForPublicSignature(signature)
|
is IdSignature.CommonSignature -> resolveCommonSignature(signature)
|
||||||
is IdSignature.CompositeSignature -> resolveCompositeSignature(signature)
|
is IdSignature.CompositeSignature -> resolveCompositeSignature(signature)
|
||||||
else -> error("only PublicSignature or AccessorSignature should reach this point, got $signature")
|
else -> error("Unexpected signature kind: $signature")
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun resolveCompositeSignature(signature: IdSignature.CompositeSignature): DeclarationDescriptor? {
|
private fun resolveCompositeSignature(signature: IdSignature.CompositeSignature): DeclarationDescriptor? {
|
||||||
val container = findDescriptorBySignature(signature.nearestPublicSig())
|
val container = findDescriptorBySignature(signature.nearestPublicSig()) ?: return null
|
||||||
val inner = signature.inner
|
|
||||||
if (inner is IdSignature.LocalSignature) {
|
|
||||||
|
|
||||||
|
(signature.inner as? IdSignature.LocalSignature)?.let { inner ->
|
||||||
fun isTypeParameterSig(fqn: String): Boolean =
|
fun isTypeParameterSig(fqn: String): Boolean =
|
||||||
fqn == MangleConstant.TYPE_PARAMETER_MARKER_NAME || fqn == MangleConstant.TYPE_PARAMETER_MARKER_NAME_SETTER
|
fqn == MangleConstant.TYPE_PARAMETER_MARKER_NAME || fqn == MangleConstant.TYPE_PARAMETER_MARKER_NAME_SETTER
|
||||||
|
|
||||||
@@ -69,14 +68,17 @@ class DescriptorByIdSignatureFinderImpl(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return container
|
return container
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun findDescriptorForAccessorSignature(signature: IdSignature.AccessorSignature): DeclarationDescriptor? {
|
private fun resolveAccessorSignature(signature: IdSignature.AccessorSignature): DeclarationDescriptor? {
|
||||||
val propertyDescriptor = findDescriptorBySignature(signature.propertySignature) as? PropertyDescriptor
|
val propertyDescriptor = findDescriptorBySignature(signature.propertySignature) as? PropertyDescriptor ?: return null
|
||||||
?: return null
|
return when (signature.accessorSignature.shortName) {
|
||||||
val shortName = signature.accessorSignature.shortName
|
propertyDescriptor.getter?.name?.asString() -> propertyDescriptor.getter
|
||||||
return propertyDescriptor.accessors.singleOrNull { it.name.asString() == shortName }
|
propertyDescriptor.setter?.name?.asString() -> propertyDescriptor.setter
|
||||||
|
else -> null
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun isConstructorName(n: Name) = n.isSpecial && n.asString() == "<init>"
|
private fun isConstructorName(n: Name) = n.isSpecial && n.asString() == "<init>"
|
||||||
@@ -97,14 +99,15 @@ class DescriptorByIdSignatureFinderImpl(
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun performLookup(nameSegments: List<String>, packageFqName: FqName): Collection<DeclarationDescriptor> {
|
private fun lookupTopLevelDescriptors(nameSegments: List<String>, packageFqName: FqName): Collection<DeclarationDescriptor> {
|
||||||
val declarationName = nameSegments[0]
|
val declarationName = nameSegments[0]
|
||||||
val isLeaf = nameSegments.size == 1
|
val isLeaf = nameSegments.size == 1
|
||||||
return when (lookupMode) {
|
return when (lookupMode) {
|
||||||
LookupMode.MODULE_WITH_DEPENDENCIES -> {
|
LookupMode.MODULE_WITH_DEPENDENCIES -> {
|
||||||
moduleDescriptor
|
moduleDescriptor
|
||||||
.getPackage(packageFqName)
|
.getPackage(packageFqName)
|
||||||
.memberScope.loadDescriptors(declarationName, isLeaf)
|
.memberScope
|
||||||
|
.loadDescriptors(declarationName, isLeaf)
|
||||||
}
|
}
|
||||||
LookupMode.MODULE_ONLY -> {
|
LookupMode.MODULE_ONLY -> {
|
||||||
(moduleDescriptor as ModuleDescriptorImpl)
|
(moduleDescriptor as ModuleDescriptorImpl)
|
||||||
@@ -115,9 +118,9 @@ class DescriptorByIdSignatureFinderImpl(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun findDescriptorForPublicSignature(signature: IdSignature.CommonSignature): DeclarationDescriptor? {
|
private fun resolveCommonSignature(signature: IdSignature.CommonSignature): DeclarationDescriptor? {
|
||||||
val nameSegments = signature.nameSegments
|
val nameSegments = signature.nameSegments
|
||||||
val toplevelDescriptors = performLookup(nameSegments, signature.packageFqName())
|
val toplevelDescriptors = lookupTopLevelDescriptors(nameSegments, signature.packageFqName())
|
||||||
.ifEmpty { return null }
|
.ifEmpty { return null }
|
||||||
|
|
||||||
var acc = toplevelDescriptors
|
var acc = toplevelDescriptors
|
||||||
|
|||||||
Reference in New Issue
Block a user