Add package-level class descriptors generation to the SyntheticResolveExtension

required for extracting script descriptors generation to an extension
This commit is contained in:
Ilya Chernikov
2019-02-12 14:53:47 +01:00
parent 0839b44ebb
commit 4359919e10
2 changed files with 24 additions and 8 deletions
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.resolve.extensions
import com.intellij.openapi.diagnostic.Logger
import com.intellij.openapi.project.Project
import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
import org.jetbrains.kotlin.descriptors.SimpleFunctionDescriptor
import org.jetbrains.kotlin.extensions.ProjectExtensionDescriptor
@@ -26,6 +27,7 @@ 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.declarations.ClassMemberDeclarationProvider
import org.jetbrains.kotlin.resolve.lazy.declarations.PackageMemberDeclarationProvider
import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
import java.util.*
@@ -66,13 +68,18 @@ interface SyntheticResolveExtension {
) =
instances.forEach {
withLinkageErrorLogger(it) {
generateSyntheticClasses(
thisDescriptor,
name,
ctx,
declarationProvider,
result
)
generateSyntheticClasses(thisDescriptor, name, ctx, declarationProvider, result)
}
}
override fun generateSyntheticClasses(
thisDescriptor: PackageFragmentDescriptor, name: Name,
ctx: LazyClassContext, declarationProvider: PackageMemberDeclarationProvider,
result: MutableSet<ClassDescriptor>
) =
instances.forEach {
withLinkageErrorLogger(it) {
generateSyntheticClasses(thisDescriptor, name, ctx, declarationProvider, result)
}
}
@@ -139,6 +146,15 @@ interface SyntheticResolveExtension {
) {
}
fun generateSyntheticClasses(
thisDescriptor: PackageFragmentDescriptor,
name: Name,
ctx: LazyClassContext,
declarationProvider: PackageMemberDeclarationProvider,
result: MutableSet<ClassDescriptor>
) {
}
fun generateSyntheticMethods(
thisDescriptor: ClassDescriptor,
name: Name,
@@ -51,7 +51,7 @@ class LazyPackageMemberScope(
getScopeForMemberDeclarationResolution(declaration)
override fun getNonDeclaredClasses(name: Name, result: MutableSet<ClassDescriptor>) {
// No extra classes
c.syntheticResolveExtension.generateSyntheticClasses(thisDescriptor, name, c, declarationProvider, result)
}
override fun getNonDeclaredFunctions(name: Name, result: MutableSet<SimpleFunctionDescriptor>) {