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.diagnostic.Logger
import com.intellij.openapi.project.Project import com.intellij.openapi.project.Project
import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
import org.jetbrains.kotlin.descriptors.PropertyDescriptor 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
@@ -26,6 +27,7 @@ import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.resolve.BindingContext 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.resolve.lazy.declarations.PackageMemberDeclarationProvider
import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult import org.jetbrains.kotlin.utils.addToStdlib.firstNotNullResult
import java.util.* import java.util.*
@@ -66,13 +68,18 @@ interface SyntheticResolveExtension {
) = ) =
instances.forEach { instances.forEach {
withLinkageErrorLogger(it) { withLinkageErrorLogger(it) {
generateSyntheticClasses( generateSyntheticClasses(thisDescriptor, name, ctx, declarationProvider, result)
thisDescriptor, }
name, }
ctx,
declarationProvider, override fun generateSyntheticClasses(
result 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( fun generateSyntheticMethods(
thisDescriptor: ClassDescriptor, thisDescriptor: ClassDescriptor,
name: Name, name: Name,
@@ -51,7 +51,7 @@ class LazyPackageMemberScope(
getScopeForMemberDeclarationResolution(declaration) getScopeForMemberDeclarationResolution(declaration)
override fun getNonDeclaredClasses(name: Name, result: MutableSet<ClassDescriptor>) { 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>) { override fun getNonDeclaredFunctions(name: Name, result: MutableSet<SimpleFunctionDescriptor>) {