Refactor creation of ModuleDescriptor

Add storageManager to ModuleDescriptorImpl (to be used later)
Extract ModuleParameters to hold default imports and platform class map
Introduce MutableModuleContext to simplify module creation code
This commit is contained in:
Pavel V. Talanov
2015-05-19 16:34:31 +03:00
parent 6a3cb0eff8
commit cfdb1f4ec3
30 changed files with 304 additions and 234 deletions
@@ -21,7 +21,6 @@ import com.intellij.openapi.util.io.FileUtil
import com.intellij.testFramework.UsefulTestCase
import org.jetbrains.kotlin.cli.jvm.compiler.CliLightClassGenerationSupport
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.context.ModuleContext
import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
@@ -48,16 +47,15 @@ public abstract class AbstractDescriptorRendererTest : KotlinTestWithEnvironment
val fileText = FileUtil.loadFile(File(path), true)
val psiFile = JetPsiFactory(getProject()).createFile(fileText)
val lazyModule = TopDownAnalyzerFacadeForJVM.createSealedJavaModule()
val moduleContext = ModuleContext(lazyModule, getProject())
val context = TopDownAnalyzerFacadeForJVM.createContextWithSealedModule(getProject())
val resolveSession = InjectorForLazyResolve(
moduleContext,
FileBasedDeclarationProviderFactory(moduleContext.storageManager, listOf(psiFile)),
context,
FileBasedDeclarationProviderFactory(context.storageManager, listOf(psiFile)),
CliLightClassGenerationSupport.NoScopeRecordCliBindingTrace(),
KotlinJvmCheckerProvider, DynamicTypesSettings()).getResolveSession()
lazyModule.initialize(resolveSession.getPackageFragmentProvider())
context.initializeModuleContents(resolveSession.getPackageFragmentProvider())
val descriptors = ArrayList<DeclarationDescriptor>()
@@ -65,7 +63,7 @@ public abstract class AbstractDescriptorRendererTest : KotlinTestWithEnvironment
override fun visitJetFile(file: JetFile) {
val fqName = file.getPackageFqName()
if (!fqName.isRoot()) {
val packageDescriptor = lazyModule.getPackage(fqName)
val packageDescriptor = context.module.getPackage(fqName)
descriptors.add(packageDescriptor)
}
file.acceptChildren(this)