Replace some KtDeclaration.analyze() with resolveToDescriptorIfAny()

Also, enhance comment on KtElement.analyze()
This commit is contained in:
Mikhail Glukhikh
2018-02-14 13:45:54 +03:00
parent 88b8652ed2
commit eabc7c9ba8
20 changed files with 73 additions and 75 deletions
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.ConstructorDescriptor
import org.jetbrains.kotlin.idea.caches.resolve.analyze
import org.jetbrains.kotlin.idea.caches.resolve.resolveToDescriptorIfAny
import org.jetbrains.kotlin.idea.core.getOrCreateCompanionObject
import org.jetbrains.kotlin.idea.intentions.branchedTransformations.unwrapBlockOrParenthesis
import org.jetbrains.kotlin.idea.util.findAnnotation
@@ -54,8 +55,7 @@ class ParcelMigrateToParcelizeQuickFix(function: KtClass) : AbstractParcelableQu
private fun KtClass.findParcelerCompanionObject(): Pair<KtObjectDeclaration, ClassDescriptor>? {
for (obj in companionObjects) {
val bindingContext = obj.analyze(BodyResolveMode.PARTIAL)
val objDescriptor = bindingContext[BindingContext.CLASS, obj] ?: continue
val objDescriptor = obj.resolveToDescriptorIfAny() as? ClassDescriptor ?: continue
for (superClassifier in objDescriptor.getAllSuperClassifiers()) {
val superClass = superClassifier as? ClassDescriptor ?: continue
if (superClass.fqNameSafe == PARCELER_FQNAME) return Pair(obj, objDescriptor)