Add context to generateSynthetic* in SyntheticResolveExtension
This commit is contained in:
+7
-2
@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
|||||||
import org.jetbrains.kotlin.descriptors.SimpleFunctionDescriptor
|
import org.jetbrains.kotlin.descriptors.SimpleFunctionDescriptor
|
||||||
import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor
|
import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.lazy.LazyClassContext
|
import org.jetbrains.kotlin.resolve.lazy.LazyClassContext
|
||||||
import org.jetbrains.kotlin.resolve.lazy.declarations.ClassMemberDeclarationProvider
|
import org.jetbrains.kotlin.resolve.lazy.declarations.ClassMemberDeclarationProvider
|
||||||
import org.jetbrains.kotlin.types.KotlinType
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
@@ -62,17 +63,19 @@ interface SyntheticResolveExtension {
|
|||||||
// todo revert
|
// todo revert
|
||||||
override fun generateSyntheticMethods(
|
override fun generateSyntheticMethods(
|
||||||
thisDescriptor: ClassDescriptor, name: Name,
|
thisDescriptor: ClassDescriptor, name: Name,
|
||||||
|
bindingContext: BindingContext,
|
||||||
fromSupertypes: List<SimpleFunctionDescriptor>,
|
fromSupertypes: List<SimpleFunctionDescriptor>,
|
||||||
result: MutableCollection<SimpleFunctionDescriptor>
|
result: MutableCollection<SimpleFunctionDescriptor>
|
||||||
) =
|
) =
|
||||||
instances.forEach { it.generateSyntheticMethods(thisDescriptor, name, fromSupertypes, result) }
|
instances.forEach { it.generateSyntheticMethods(thisDescriptor, name, bindingContext, fromSupertypes, result) }
|
||||||
|
|
||||||
override fun generateSyntheticProperties(
|
override fun generateSyntheticProperties(
|
||||||
thisDescriptor: ClassDescriptor, name: Name,
|
thisDescriptor: ClassDescriptor, name: Name,
|
||||||
|
bindingContext: BindingContext,
|
||||||
fromSupertypes: ArrayList<PropertyDescriptor>,
|
fromSupertypes: ArrayList<PropertyDescriptor>,
|
||||||
result: MutableSet<PropertyDescriptor>
|
result: MutableSet<PropertyDescriptor>
|
||||||
) =
|
) =
|
||||||
instances.forEach { it.generateSyntheticProperties(thisDescriptor, name, fromSupertypes, result) }
|
instances.forEach { it.generateSyntheticProperties(thisDescriptor, name, bindingContext, fromSupertypes, result) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -97,6 +100,7 @@ interface SyntheticResolveExtension {
|
|||||||
fun generateSyntheticMethods(
|
fun generateSyntheticMethods(
|
||||||
thisDescriptor: ClassDescriptor,
|
thisDescriptor: ClassDescriptor,
|
||||||
name: Name,
|
name: Name,
|
||||||
|
bindingContext: BindingContext,
|
||||||
fromSupertypes: List<SimpleFunctionDescriptor>,
|
fromSupertypes: List<SimpleFunctionDescriptor>,
|
||||||
result: MutableCollection<SimpleFunctionDescriptor>
|
result: MutableCollection<SimpleFunctionDescriptor>
|
||||||
) {
|
) {
|
||||||
@@ -105,6 +109,7 @@ interface SyntheticResolveExtension {
|
|||||||
fun generateSyntheticProperties(
|
fun generateSyntheticProperties(
|
||||||
thisDescriptor: ClassDescriptor,
|
thisDescriptor: ClassDescriptor,
|
||||||
name: Name,
|
name: Name,
|
||||||
|
bindingContext: BindingContext,
|
||||||
fromSupertypes: ArrayList<PropertyDescriptor>,
|
fromSupertypes: ArrayList<PropertyDescriptor>,
|
||||||
result: MutableSet<PropertyDescriptor>
|
result: MutableSet<PropertyDescriptor>
|
||||||
) {
|
) {
|
||||||
|
|||||||
+2
-2
@@ -205,7 +205,7 @@ open class LazyClassMemberScope(
|
|||||||
}
|
}
|
||||||
result.addAll(generateDelegatingDescriptors(name, EXTRACT_FUNCTIONS, result))
|
result.addAll(generateDelegatingDescriptors(name, EXTRACT_FUNCTIONS, result))
|
||||||
generateDataClassMethods(result, name, location, fromSupertypes)
|
generateDataClassMethods(result, name, location, fromSupertypes)
|
||||||
c.syntheticResolveExtension.generateSyntheticMethods(thisDescriptor, name, fromSupertypes, result)
|
c.syntheticResolveExtension.generateSyntheticMethods(thisDescriptor, name, trace.bindingContext, fromSupertypes, result)
|
||||||
generateFakeOverrides(name, fromSupertypes, result, SimpleFunctionDescriptor::class.java)
|
generateFakeOverrides(name, fromSupertypes, result, SimpleFunctionDescriptor::class.java)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -337,7 +337,7 @@ open class LazyClassMemberScope(
|
|||||||
fromSupertypes.addAll(supertype.memberScope.getContributedVariables(name, NoLookupLocation.FOR_ALREADY_TRACKED))
|
fromSupertypes.addAll(supertype.memberScope.getContributedVariables(name, NoLookupLocation.FOR_ALREADY_TRACKED))
|
||||||
}
|
}
|
||||||
result.addAll(generateDelegatingDescriptors(name, EXTRACT_PROPERTIES, result))
|
result.addAll(generateDelegatingDescriptors(name, EXTRACT_PROPERTIES, result))
|
||||||
c.syntheticResolveExtension.generateSyntheticProperties(thisDescriptor, name, fromSupertypes, result)
|
c.syntheticResolveExtension.generateSyntheticProperties(thisDescriptor, name, trace.bindingContext, fromSupertypes, result)
|
||||||
generateFakeOverrides(name, fromSupertypes, result, PropertyDescriptor::class.java)
|
generateFakeOverrides(name, fromSupertypes, result, PropertyDescriptor::class.java)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+6
-4
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.name.ClassId
|
|||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.psi.KtElement
|
import org.jetbrains.kotlin.psi.KtElement
|
||||||
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
|
import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
||||||
@@ -80,10 +81,11 @@ open class ParcelableResolveExtension : SyntheticResolveExtension {
|
|||||||
override fun getSyntheticCompanionObjectNameIfNeeded(thisDescriptor: ClassDescriptor) = null
|
override fun getSyntheticCompanionObjectNameIfNeeded(thisDescriptor: ClassDescriptor) = null
|
||||||
|
|
||||||
override fun generateSyntheticMethods(
|
override fun generateSyntheticMethods(
|
||||||
clazz: ClassDescriptor,
|
clazz: ClassDescriptor,
|
||||||
name: Name,
|
name: Name,
|
||||||
fromSupertypes: List<SimpleFunctionDescriptor>,
|
bindingContext: BindingContext,
|
||||||
result: MutableCollection<SimpleFunctionDescriptor>
|
fromSupertypes: List<SimpleFunctionDescriptor>,
|
||||||
|
result: MutableCollection<SimpleFunctionDescriptor>
|
||||||
) {
|
) {
|
||||||
fun isExperimental(): Boolean {
|
fun isExperimental(): Boolean {
|
||||||
val sourceElement = (clazz.source as? PsiSourceElement)?.psi as? KtElement ?: return false
|
val sourceElement = (clazz.source as? PsiSourceElement)?.psi as? KtElement ?: return false
|
||||||
|
|||||||
Reference in New Issue
Block a user