Do not generate properties from script constructor
From now all script parameter properties are generated by template class
This commit is contained in:
-51
@@ -19,16 +19,11 @@ package org.jetbrains.kotlin.resolve.lazy.descriptors
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.descriptors.annotations.Annotations
|
||||
import org.jetbrains.kotlin.descriptors.impl.ClassConstructorDescriptorImpl
|
||||
import org.jetbrains.kotlin.descriptors.impl.PropertyDescriptorImpl
|
||||
import org.jetbrains.kotlin.descriptors.impl.ValueParameterDescriptorImpl
|
||||
import org.jetbrains.kotlin.incremental.components.LookupLocation
|
||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
||||
import org.jetbrains.kotlin.incremental.record
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.resolve.BindingTrace
|
||||
import org.jetbrains.kotlin.resolve.lazy.ResolveSession
|
||||
import org.jetbrains.kotlin.resolve.lazy.declarations.ClassMemberDeclarationProvider
|
||||
import org.jetbrains.kotlin.utils.toReadOnlyList
|
||||
|
||||
class LazyScriptClassMemberScope(
|
||||
resolveSession: ResolveSession,
|
||||
@@ -65,52 +60,6 @@ class LazyScriptClassMemberScope(
|
||||
}
|
||||
}
|
||||
|
||||
override fun computeExtraDescriptors(location: LookupLocation): Collection<DeclarationDescriptor> {
|
||||
return (super.computeExtraDescriptors(location)
|
||||
+ getPropertiesForScriptParameters()).toReadOnlyList()
|
||||
}
|
||||
|
||||
private fun getPropertiesForScriptParameters() = getPrimaryConstructor()!!.valueParameters.flatMap {
|
||||
getContributedVariables(it.name, NoLookupLocation.FOR_SCRIPT)
|
||||
}
|
||||
|
||||
override fun createPropertiesFromPrimaryConstructorParameters(name: Name, result: MutableSet<PropertyDescriptor>) {
|
||||
val primaryConstructor = getPrimaryConstructor()!!
|
||||
val parametersToPassToSuperclass = scriptDescriptor.scriptParametersToPassToSuperclass.map { it.first }
|
||||
for (valueParameterDescriptor in primaryConstructor.valueParameters) {
|
||||
if (name == valueParameterDescriptor.name && name !in parametersToPassToSuperclass) {
|
||||
result.add(createPropertyFromScriptParameter(scriptDescriptor, valueParameterDescriptor))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun createPropertyFromScriptParameter(
|
||||
scriptDescriptor: ScriptDescriptor,
|
||||
parameter: ValueParameterDescriptor
|
||||
): PropertyDescriptor {
|
||||
val propertyDescriptor = PropertyDescriptorImpl.create(
|
||||
scriptDescriptor,
|
||||
Annotations.EMPTY,
|
||||
Modality.FINAL,
|
||||
Visibilities.PUBLIC,
|
||||
false,
|
||||
parameter.name,
|
||||
CallableMemberDescriptor.Kind.DECLARATION,
|
||||
SourceElement.NO_SOURCE,
|
||||
/* lateInit = */ false,
|
||||
/* isConst = */ false
|
||||
)
|
||||
propertyDescriptor.setType(
|
||||
parameter.type,
|
||||
listOf(),
|
||||
scriptDescriptor.thisAsReceiverParameter,
|
||||
null as ReceiverParameterDescriptor?
|
||||
)
|
||||
propertyDescriptor.initialize(null, null)
|
||||
return propertyDescriptor
|
||||
}
|
||||
|
||||
override fun recordLookup(name: Name, from: LookupLocation) {
|
||||
c.lookupTracker.record(from, thisDescriptor, name)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user