[scripting] Make properties from destructing declarations available with reflection

This commit is contained in:
Ilya Muradyan
2021-10-05 16:40:59 +03:00
committed by teamcityserver
parent 1c16f2f8c9
commit 58831eacca
5 changed files with 65 additions and 1 deletions
@@ -6,8 +6,11 @@
package org.jetbrains.kotlin.scripting.resolve
import org.jetbrains.kotlin.descriptors.ClassConstructorDescriptor
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
import org.jetbrains.kotlin.incremental.components.LookupLocation
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.KtDestructuringDeclaration
import org.jetbrains.kotlin.resolve.BindingTrace
import org.jetbrains.kotlin.resolve.lazy.ResolveSession
import org.jetbrains.kotlin.resolve.lazy.declarations.ClassMemberDeclarationProvider
@@ -53,6 +56,20 @@ class LazyScriptClassMemberScope(
override fun createPropertiesFromPrimaryConstructorParameters(name: Name, result: MutableSet<PropertyDescriptor>) {
}
override fun collectDescriptorsFromDestructingDeclaration(
result: MutableSet<DeclarationDescriptor>,
declaration: KtDestructuringDeclaration,
nameFilter: (Name) -> Boolean,
location: LookupLocation
) {
for (entry in declaration.entries) {
val name = entry.nameAsSafeName
if (nameFilter(name) && name.identifierOrNullIfSpecial != "_") {
result.addAll(getContributedVariables(name, location))
}
}
}
companion object {
const val IMPLICIT_RECEIVER_PARAM_NAME_PREFIX = "\$\$implicitReceiver"
const val IMPORTED_SCRIPT_PARAM_NAME_PREFIX = "\$\$importedScript"