Add package-level class descriptors generation to the SyntheticResolveExtension
required for extracting script descriptors generation to an extension
This commit is contained in:
+23
-7
@@ -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,
|
||||||
|
|||||||
+1
-1
@@ -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>) {
|
||||||
|
|||||||
Reference in New Issue
Block a user