Split scripts and class/object declarations in DeclarationsProvider

simplifies code in most places, avoids filtering in places where they
should be processed independently
This commit is contained in:
Ilya Chernikov
2019-02-12 15:26:37 +01:00
parent a218455193
commit e28017039d
10 changed files with 45 additions and 51 deletions
@@ -11,7 +11,6 @@ import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.resolve.extensions.SyntheticResolveExtension
import org.jetbrains.kotlin.resolve.lazy.LazyClassContext
import org.jetbrains.kotlin.resolve.lazy.ResolveSession
import org.jetbrains.kotlin.resolve.lazy.data.KtScriptInfo
import org.jetbrains.kotlin.resolve.lazy.declarations.PackageMemberDeclarationProvider
import org.jetbrains.kotlin.resolve.lazy.descriptors.LazyScriptDescriptor
@@ -23,10 +22,8 @@ class ScriptingResolveExtension : SyntheticResolveExtension {
declarationProvider: PackageMemberDeclarationProvider,
result: MutableSet<ClassDescriptor>
) {
declarationProvider.getClassOrObjectDeclarations(name).mapNotNullTo(result) {
if (it is KtScriptInfo) {
LazyScriptDescriptor(ctx as ResolveSession, thisDescriptor, name, it)
} else null
declarationProvider.getScriptDeclarations(name).mapTo(result) {
LazyScriptDescriptor(ctx as ResolveSession, thisDescriptor, name, it)
}
super.generateSyntheticClasses(thisDescriptor, name, ctx, declarationProvider, result)