PackageFacadeProvider refactoring

This commit is contained in:
Michael Bogdanov
2015-08-27 15:13:42 +03:00
parent 843241848f
commit c274ceffe8
36 changed files with 130 additions and 150 deletions
@@ -246,6 +246,7 @@ public class JvmCodegenUtil {
DescriptorUtils.isAnnotationClass(descriptor); DescriptorUtils.isAnnotationClass(descriptor);
} }
@NotNull
public static String getModuleName(ModuleDescriptor module) { public static String getModuleName(ModuleDescriptor module) {
return KotlinPackage.removeSurrounding(module.getName().asString(), "<", ">"); return KotlinPackage.removeSurrounding(module.getName().asString(), "<", ">");
} }
@@ -39,7 +39,7 @@ import org.jetbrains.kotlin.resolve.CompilerEnvironment
import org.jetbrains.kotlin.resolve.descriptorUtil.classId import org.jetbrains.kotlin.resolve.descriptorUtil.classId
import org.jetbrains.kotlin.resolve.jvm.JvmAnalyzerFacade import org.jetbrains.kotlin.resolve.jvm.JvmAnalyzerFacade
import org.jetbrains.kotlin.resolve.jvm.JvmPlatformParameters import org.jetbrains.kotlin.resolve.jvm.JvmPlatformParameters
import org.jetbrains.kotlin.resolve.lazy.JvmPackageMappingProvider import org.jetbrains.kotlin.cli.jvm.compiler.JvmPackageFacadeProvider
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
import org.jetbrains.kotlin.serialization.DescriptorSerializer import org.jetbrains.kotlin.serialization.DescriptorSerializer
import org.jetbrains.kotlin.serialization.ProtoBuf import org.jetbrains.kotlin.serialization.ProtoBuf
@@ -92,7 +92,7 @@ public class BuiltInsSerializer(private val dependOnOldBuiltIns: Boolean) {
{ ModuleContent(files, GlobalSearchScope.EMPTY_SCOPE) }, { ModuleContent(files, GlobalSearchScope.EMPTY_SCOPE) },
JvmPlatformParameters { throw IllegalStateException() }, JvmPlatformParameters { throw IllegalStateException() },
CompilerEnvironment, CompilerEnvironment,
packageMappingProviderFactory = { a, b -> JvmPackageMappingProvider(environment) } packageFacadeProviderFactory = { a, b -> JvmPackageFacadeProvider(environment) }
) )
val moduleDescriptor = resolver.descriptorForModule(builtInModule) val moduleDescriptor = resolver.descriptorForModule(builtInModule)
@@ -14,27 +14,35 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.kotlin.resolve.lazy package org.jetbrains.kotlin.cli.jvm.compiler
import com.intellij.openapi.vfs.VirtualFile import com.intellij.openapi.vfs.VirtualFile
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.cli.jvm.config.JvmClasspathRoot import org.jetbrains.kotlin.cli.jvm.config.JvmClasspathRoot
import org.jetbrains.kotlin.config.CommonConfigurationKeys import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.load.java.lazy.PackageMappingProvider import org.jetbrains.kotlin.descriptors.PackageFacadeProvider
import org.jetbrains.kotlin.load.kotlin.ModuleMapping import org.jetbrains.kotlin.load.kotlin.ModuleMapping
public class JvmPackageMappingProvider(val env: KotlinCoreEnvironment) : PackageMappingProvider { public class JvmPackageFacadeProvider(val env: KotlinCoreEnvironment) : PackageFacadeProvider {
override fun findPackageMembers(packageName: String): List<String> {
val res = env.configuration.getList(CommonConfigurationKeys.CONTENT_ROOTS). val roots by lazy {
env.configuration.getList(CommonConfigurationKeys.CONTENT_ROOTS).
filterIsInstance<JvmClasspathRoot>(). filterIsInstance<JvmClasspathRoot>().
map { map {
env.contentRootToVirtualFile(it); env.contentRootToVirtualFile(it);
}.filterNotNull() }.filter { it?.findChild("META-INF") != null }.filterNotNull()
}
//TODO additional filtering by package existing override fun findPackageFacades(packageInternalName: String): List<String> {
//val path = packageName.split("/") val pathParts = packageInternalName.split('/')
val mappings = roots.filter {
val mappings = res.map { //filter all roots by package path existing
pathParts.fold(it) {
parent, part ->
if (part.isEmpty()) parent
else parent.findChild(part) ?: return@filter false
}
true
}.map {
it.findChild("META-INF") it.findChild("META-INF")
}.filterNotNull().flatMap { }.filterNotNull().flatMap {
it.children.filter { it.name.endsWith(ModuleMapping.MAPPING_FILE_EXT) }.toList<VirtualFile>() it.children.filter { it.name.endsWith(ModuleMapping.MAPPING_FILE_EXT) }.toList<VirtualFile>()
@@ -42,6 +50,6 @@ public class JvmPackageMappingProvider(val env: KotlinCoreEnvironment) : Package
ModuleMapping(String(it.contentsToByteArray(), "UTF-8")) ModuleMapping(String(it.contentsToByteArray(), "UTF-8"))
} }
return mappings.map { it.findPackageParts(packageName) }.filterNotNull().flatMap { it.parts }.distinct() return mappings.map { it.findPackageParts(packageInternalName) }.filterNotNull().flatMap { it.parts }.distinct()
} }
} }
@@ -57,7 +57,6 @@ import org.jetbrains.kotlin.resolve.BindingTraceContext;
import org.jetbrains.kotlin.resolve.ScriptNameUtil; import org.jetbrains.kotlin.resolve.ScriptNameUtil;
import org.jetbrains.kotlin.resolve.jvm.JvmClassName; import org.jetbrains.kotlin.resolve.jvm.JvmClassName;
import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM; import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM;
import org.jetbrains.kotlin.resolve.lazy.JvmPackageMappingProvider;
import org.jetbrains.kotlin.util.PerformanceCounter; import org.jetbrains.kotlin.util.PerformanceCounter;
import org.jetbrains.kotlin.utils.KotlinPaths; import org.jetbrains.kotlin.utils.KotlinPaths;
@@ -328,7 +327,7 @@ public class KotlinToJVMBytecodeCompiler {
sharedTrace, sharedTrace,
environment.getConfiguration().get(JVMConfigurationKeys.MODULE_IDS), environment.getConfiguration().get(JVMConfigurationKeys.MODULE_IDS),
environment.getConfiguration().get(JVMConfigurationKeys.INCREMENTAL_COMPILATION_COMPONENTS), environment.getConfiguration().get(JVMConfigurationKeys.INCREMENTAL_COMPILATION_COMPONENTS),
new JvmPackageMappingProvider(environment) new JvmPackageFacadeProvider(environment)
); );
} }
} }
@@ -57,7 +57,7 @@ import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowInfo;
import org.jetbrains.kotlin.resolve.jvm.JvmClassName; import org.jetbrains.kotlin.resolve.jvm.JvmClassName;
import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM; import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM;
import org.jetbrains.kotlin.resolve.lazy.FileScopeProvider; import org.jetbrains.kotlin.resolve.lazy.FileScopeProvider;
import org.jetbrains.kotlin.resolve.lazy.JvmPackageMappingProvider; import org.jetbrains.kotlin.cli.jvm.compiler.JvmPackageFacadeProvider;
import org.jetbrains.kotlin.resolve.lazy.ResolveSession; import org.jetbrains.kotlin.resolve.lazy.ResolveSession;
import org.jetbrains.kotlin.resolve.lazy.data.JetClassLikeInfo; import org.jetbrains.kotlin.resolve.lazy.data.JetClassLikeInfo;
import org.jetbrains.kotlin.resolve.lazy.declarations.*; import org.jetbrains.kotlin.resolve.lazy.declarations.*;
@@ -127,7 +127,7 @@ public class ReplInterpreter {
scriptDeclarationFactory, scriptDeclarationFactory,
ProjectScope.getAllScope(project), ProjectScope.getAllScope(project),
scopeProvider, scopeProvider,
new JvmPackageMappingProvider(environment) new JvmPackageFacadeProvider(environment)
); );
this.topDownAnalysisContext = new TopDownAnalysisContext(TopDownAnalysisMode.LocalDeclarations, DataFlowInfo.EMPTY, this.topDownAnalysisContext = new TopDownAnalysisContext(TopDownAnalysisMode.LocalDeclarations, DataFlowInfo.EMPTY,
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.frontend.di.configureModule
import org.jetbrains.kotlin.frontend.java.di.configureJavaTopDownAnalysis import org.jetbrains.kotlin.frontend.java.di.configureJavaTopDownAnalysis
import org.jetbrains.kotlin.incremental.components.LookupTracker import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.load.java.JavaClassFinderImpl import org.jetbrains.kotlin.load.java.JavaClassFinderImpl
import org.jetbrains.kotlin.load.java.lazy.PackageMappingProvider import org.jetbrains.kotlin.descriptors.PackageFacadeProvider
import org.jetbrains.kotlin.load.java.lazy.SingleModuleClassResolver import org.jetbrains.kotlin.load.java.lazy.SingleModuleClassResolver
import org.jetbrains.kotlin.resolve.BindingTrace import org.jetbrains.kotlin.resolve.BindingTrace
import org.jetbrains.kotlin.resolve.BodyResolveCache import org.jetbrains.kotlin.resolve.BodyResolveCache
@@ -40,9 +40,9 @@ import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactory
public fun createContainerForReplWithJava( public fun createContainerForReplWithJava(
moduleContext: ModuleContext, bindingTrace: BindingTrace, declarationProviderFactory: DeclarationProviderFactory, moduleContext: ModuleContext, bindingTrace: BindingTrace, declarationProviderFactory: DeclarationProviderFactory,
moduleContentScope: GlobalSearchScope, additionalFileScopeProvider: FileScopeProvider.AdditionalScopes, moduleContentScope: GlobalSearchScope, additionalFileScopeProvider: FileScopeProvider.AdditionalScopes,
packageMappingProvider: PackageMappingProvider packageFacadeProvider: PackageFacadeProvider
): ContainerForReplWithJava = createContainer("ReplWithJava") { ): ContainerForReplWithJava = createContainer("ReplWithJava") {
useInstance(packageMappingProvider) useInstance(packageFacadeProvider)
configureModule(moduleContext, JvmPlatform, bindingTrace) configureModule(moduleContext, JvmPlatform, bindingTrace)
configureJavaTopDownAnalysis(moduleContentScope, moduleContext.project, LookupTracker.DO_NOTHING) configureJavaTopDownAnalysis(moduleContentScope, moduleContext.project, LookupTracker.DO_NOTHING)
@@ -27,7 +27,7 @@ import org.jetbrains.kotlin.load.java.JavaClassFinderImpl
import org.jetbrains.kotlin.load.java.JavaFlexibleTypeCapabilitiesProvider import org.jetbrains.kotlin.load.java.JavaFlexibleTypeCapabilitiesProvider
import org.jetbrains.kotlin.load.java.components.* import org.jetbrains.kotlin.load.java.components.*
import org.jetbrains.kotlin.load.java.lazy.ModuleClassResolver import org.jetbrains.kotlin.load.java.lazy.ModuleClassResolver
import org.jetbrains.kotlin.load.java.lazy.PackageMappingProvider import org.jetbrains.kotlin.descriptors.PackageFacadeProvider
import org.jetbrains.kotlin.load.java.lazy.SingleModuleClassResolver import org.jetbrains.kotlin.load.java.lazy.SingleModuleClassResolver
import org.jetbrains.kotlin.load.java.sam.SamConversionResolverImpl import org.jetbrains.kotlin.load.java.sam.SamConversionResolverImpl
import org.jetbrains.kotlin.load.java.structure.impl.JavaPropertyInitializerEvaluatorImpl import org.jetbrains.kotlin.load.java.structure.impl.JavaPropertyInitializerEvaluatorImpl
@@ -72,10 +72,10 @@ public fun createContainerForLazyResolveWithJava(
moduleContext: ModuleContext, bindingTrace: BindingTrace, declarationProviderFactory: DeclarationProviderFactory, moduleContext: ModuleContext, bindingTrace: BindingTrace, declarationProviderFactory: DeclarationProviderFactory,
moduleContentScope: GlobalSearchScope, moduleClassResolver: ModuleClassResolver, moduleContentScope: GlobalSearchScope, moduleClassResolver: ModuleClassResolver,
targetEnvironment: TargetEnvironment = CompilerEnvironment, targetEnvironment: TargetEnvironment = CompilerEnvironment,
packageMappingProvider: PackageMappingProvider packageFacadeProvider: PackageFacadeProvider
): ComponentProvider = createContainer("LazyResolveWithJava") { ): ComponentProvider = createContainer("LazyResolveWithJava") {
//TODO: idea specific code //TODO: idea specific code
useInstance(packageMappingProvider) useInstance(packageFacadeProvider)
configureModule(moduleContext, JvmPlatform, bindingTrace) configureModule(moduleContext, JvmPlatform, bindingTrace)
configureJavaTopDownAnalysis(moduleContentScope, moduleContext.project, LookupTracker.DO_NOTHING) configureJavaTopDownAnalysis(moduleContentScope, moduleContext.project, LookupTracker.DO_NOTHING)
@@ -99,9 +99,9 @@ public fun createContainerForTopDownAnalyzerForJvm(
declarationProviderFactory: DeclarationProviderFactory, declarationProviderFactory: DeclarationProviderFactory,
moduleContentScope: GlobalSearchScope, moduleContentScope: GlobalSearchScope,
lookupTracker: LookupTracker, lookupTracker: LookupTracker,
packageMappingProvider: PackageMappingProvider packageFacadeProvider: PackageFacadeProvider
): ContainerForTopDownAnalyzerForJvm = createContainer("TopDownAnalyzerForJvm") { ): ContainerForTopDownAnalyzerForJvm = createContainer("TopDownAnalyzerForJvm") {
useInstance(packageMappingProvider) useInstance(packageFacadeProvider)
configureModule(moduleContext, JvmPlatform, bindingTrace) configureModule(moduleContext, JvmPlatform, bindingTrace)
configureJavaTopDownAnalysis(moduleContentScope, moduleContext.project, lookupTracker) configureJavaTopDownAnalysis(moduleContentScope, moduleContext.project, lookupTracker)
@@ -27,7 +27,7 @@ import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.kotlin.extensions.ExternalDeclarationsProvider import org.jetbrains.kotlin.extensions.ExternalDeclarationsProvider
import org.jetbrains.kotlin.frontend.java.di.createContainerForLazyResolveWithJava import org.jetbrains.kotlin.frontend.java.di.createContainerForLazyResolveWithJava
import org.jetbrains.kotlin.load.java.lazy.ModuleClassResolverImpl import org.jetbrains.kotlin.load.java.lazy.ModuleClassResolverImpl
import org.jetbrains.kotlin.load.java.lazy.PackageMappingProvider import org.jetbrains.kotlin.descriptors.PackageFacadeProvider
import org.jetbrains.kotlin.load.java.structure.JavaClass import org.jetbrains.kotlin.load.java.structure.JavaClass
import org.jetbrains.kotlin.psi.JetFile import org.jetbrains.kotlin.psi.JetFile
import org.jetbrains.kotlin.resolve.CodeAnalyzerInitializer import org.jetbrains.kotlin.resolve.CodeAnalyzerInitializer
@@ -51,7 +51,7 @@ public object JvmAnalyzerFacade : AnalyzerFacade<JvmPlatformParameters>() {
platformParameters: JvmPlatformParameters, platformParameters: JvmPlatformParameters,
targetEnvironment: TargetEnvironment, targetEnvironment: TargetEnvironment,
resolverForProject: ResolverForProject<M>, resolverForProject: ResolverForProject<M>,
packageMappingProvider: PackageMappingProvider packageFacadeProvider: PackageFacadeProvider
): ResolverForModule { ): ResolverForModule {
val (syntheticFiles, moduleContentScope) = moduleContent val (syntheticFiles, moduleContentScope) = moduleContent
val project = moduleContext.project val project = moduleContext.project
@@ -72,7 +72,7 @@ public object JvmAnalyzerFacade : AnalyzerFacade<JvmPlatformParameters>() {
moduleContentScope, moduleContentScope,
moduleClassResolver, moduleClassResolver,
targetEnvironment, targetEnvironment,
packageMappingProvider packageFacadeProvider
) )
val resolveSession = container.get<ResolveSession>() val resolveSession = container.get<ResolveSession>()
val javaDescriptorResolver = container.get<JavaDescriptorResolver>() val javaDescriptorResolver = container.get<JavaDescriptorResolver>()
@@ -40,7 +40,7 @@ import org.jetbrains.kotlin.platform.PlatformToKotlinClassMap;
import org.jetbrains.kotlin.psi.JetFile; import org.jetbrains.kotlin.psi.JetFile;
import org.jetbrains.kotlin.resolve.*; import org.jetbrains.kotlin.resolve.*;
import org.jetbrains.kotlin.resolve.jvm.extensions.AnalysisCompletedHandlerExtension; import org.jetbrains.kotlin.resolve.jvm.extensions.AnalysisCompletedHandlerExtension;
import org.jetbrains.kotlin.load.java.lazy.PackageMappingProvider; import org.jetbrains.kotlin.descriptors.PackageFacadeProvider;
import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory; import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory;
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter; import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter;
import org.jetbrains.kotlin.resolve.scopes.JetScope; import org.jetbrains.kotlin.resolve.scopes.JetScope;
@@ -93,9 +93,9 @@ public enum TopDownAnalyzerFacadeForJVM {
@NotNull Collection<JetFile> files, @NotNull Collection<JetFile> files,
@NotNull BindingTrace trace, @NotNull BindingTrace trace,
@NotNull TopDownAnalysisMode topDownAnalysisMode, @NotNull TopDownAnalysisMode topDownAnalysisMode,
PackageMappingProvider packageMappingProvider PackageFacadeProvider packageFacadeProvider
) { ) {
return analyzeFilesWithJavaIntegration(moduleContext, files, trace, topDownAnalysisMode, null, null, packageMappingProvider); return analyzeFilesWithJavaIntegration(moduleContext, files, trace, topDownAnalysisMode, null, null, packageFacadeProvider);
} }
@NotNull @NotNull
@@ -105,11 +105,11 @@ public enum TopDownAnalyzerFacadeForJVM {
@NotNull BindingTrace trace, @NotNull BindingTrace trace,
@Nullable List<String> moduleIds, @Nullable List<String> moduleIds,
@Nullable IncrementalCompilationComponents incrementalCompilationComponents, @Nullable IncrementalCompilationComponents incrementalCompilationComponents,
@NotNull PackageMappingProvider packageMappingProvider @NotNull PackageFacadeProvider packageFacadeProvider
) { ) {
return analyzeFilesWithJavaIntegration( return analyzeFilesWithJavaIntegration(
moduleContext, files, trace, TopDownAnalysisMode.TopLevelDeclarations, moduleIds, incrementalCompilationComponents, moduleContext, files, trace, TopDownAnalysisMode.TopLevelDeclarations, moduleIds, incrementalCompilationComponents,
packageMappingProvider); packageFacadeProvider);
} }
@NotNull @NotNull
@@ -120,7 +120,7 @@ public enum TopDownAnalyzerFacadeForJVM {
@NotNull TopDownAnalysisMode topDownAnalysisMode, @NotNull TopDownAnalysisMode topDownAnalysisMode,
@Nullable List<String> moduleIds, @Nullable List<String> moduleIds,
@Nullable IncrementalCompilationComponents incrementalCompilationComponents, @Nullable IncrementalCompilationComponents incrementalCompilationComponents,
@NotNull PackageMappingProvider packageMappingProvider @NotNull PackageFacadeProvider packageFacadeProvider
) { ) {
Project project = moduleContext.getProject(); Project project = moduleContext.getProject();
List<JetFile> allFiles = JvmAnalyzerFacade.getAllFilesToAnalyze(project, null, files); List<JetFile> allFiles = JvmAnalyzerFacade.getAllFilesToAnalyze(project, null, files);
@@ -137,7 +137,7 @@ public enum TopDownAnalyzerFacadeForJVM {
providerFactory, providerFactory,
GlobalSearchScope.allScope(project), GlobalSearchScope.allScope(project),
lookupTracker, lookupTracker,
packageMappingProvider packageFacadeProvider
); );
List<PackageFragmentProvider> additionalProviders = new ArrayList<PackageFragmentProvider>(); List<PackageFragmentProvider> additionalProviders = new ArrayList<PackageFragmentProvider>();
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
import org.jetbrains.kotlin.descriptors.impl.LazyModuleDependencies import org.jetbrains.kotlin.descriptors.impl.LazyModuleDependencies
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.kotlin.load.java.lazy.PackageMappingProvider import org.jetbrains.kotlin.descriptors.PackageFacadeProvider
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.psi.JetFile import org.jetbrains.kotlin.psi.JetFile
@@ -130,7 +130,7 @@ public abstract class AnalyzerFacade<in P : PlatformAnalysisParameters> {
platformParameters: P, platformParameters: P,
targetEnvironment: TargetEnvironment, targetEnvironment: TargetEnvironment,
delegateResolver: ResolverForProject<M> = EmptyResolverForProject(), delegateResolver: ResolverForProject<M> = EmptyResolverForProject(),
packageMappingProviderFactory: (M, ModuleContent) -> PackageMappingProvider = { (m, c) -> PackageMappingProvider.EMPTY } packageFacadeProviderFactory: (M, ModuleContent) -> PackageFacadeProvider = { (m, c) -> PackageFacadeProvider.EMPTY }
): ResolverForProject<M> { ): ResolverForProject<M> {
val storageManager = projectContext.storageManager val storageManager = projectContext.storageManager
fun createResolverForProject(): ResolverForProjectImpl<M> { fun createResolverForProject(): ResolverForProjectImpl<M> {
@@ -187,7 +187,7 @@ public abstract class AnalyzerFacade<in P : PlatformAnalysisParameters> {
createResolverForModule( createResolverForModule(
module, descriptor, projectContext.withModule(descriptor), modulesContent(module), module, descriptor, projectContext.withModule(descriptor), modulesContent(module),
platformParameters, targetEnvironment, resolverForProject, platformParameters, targetEnvironment, resolverForProject,
packageMappingProviderFactory(module, content) packageFacadeProviderFactory(module, content)
) )
} }
@@ -208,7 +208,7 @@ public abstract class AnalyzerFacade<in P : PlatformAnalysisParameters> {
platformParameters: P, platformParameters: P,
targetEnvironment: TargetEnvironment, targetEnvironment: TargetEnvironment,
resolverForProject: ResolverForProject<M>, resolverForProject: ResolverForProject<M>,
packageMappingProvider: PackageMappingProvider packageFacadeProvider: PackageFacadeProvider
): ResolverForModule ): ResolverForModule
public abstract val moduleParameters: ModuleParameters public abstract val moduleParameters: ModuleParameters
@@ -48,7 +48,7 @@ import org.jetbrains.kotlin.resolve.calls.model.MutableResolvedCall;
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall; import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall;
import org.jetbrains.kotlin.resolve.diagnostics.Diagnostics; import org.jetbrains.kotlin.resolve.diagnostics.Diagnostics;
import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM; import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM;
import org.jetbrains.kotlin.resolve.lazy.JvmPackageMappingProvider; import org.jetbrains.kotlin.cli.jvm.compiler.JvmPackageFacadeProvider;
import org.jetbrains.kotlin.resolve.lazy.LazyResolveTestUtil; import org.jetbrains.kotlin.resolve.lazy.LazyResolveTestUtil;
import org.jetbrains.kotlin.storage.ExceptionTracker; import org.jetbrains.kotlin.storage.ExceptionTracker;
import org.jetbrains.kotlin.storage.LockBasedStorageManager; import org.jetbrains.kotlin.storage.LockBasedStorageManager;
@@ -248,7 +248,7 @@ public abstract class AbstractJetDiagnosticsTest extends BaseDiagnosticsTest {
moduleTrace, moduleTrace,
null, null,
null, null,
new JvmPackageMappingProvider(getEnvironment()) new JvmPackageFacadeProvider(getEnvironment())
); );
} }
@@ -29,7 +29,7 @@ import org.jetbrains.kotlin.codegen.state.GenerationState;
import org.jetbrains.kotlin.config.CompilerConfiguration; import org.jetbrains.kotlin.config.CompilerConfiguration;
import org.jetbrains.kotlin.resolve.AnalyzingUtils; import org.jetbrains.kotlin.resolve.AnalyzingUtils;
import org.jetbrains.kotlin.resolve.BindingTraceContext; import org.jetbrains.kotlin.resolve.BindingTraceContext;
import org.jetbrains.kotlin.resolve.lazy.JvmPackageMappingProvider; import org.jetbrains.kotlin.cli.jvm.compiler.JvmPackageFacadeProvider;
import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil; import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil;
import org.jetbrains.kotlin.test.JetTestUtils; import org.jetbrains.kotlin.test.JetTestUtils;
import org.jetbrains.kotlin.utils.UtilsPackage; import org.jetbrains.kotlin.utils.UtilsPackage;
@@ -53,7 +53,7 @@ public class CodegenTestUtil {
AnalysisResult analysisResult = JvmResolveUtil.analyzeFilesWithJavaIntegrationAndCheckForErrors( AnalysisResult analysisResult = JvmResolveUtil.analyzeFilesWithJavaIntegrationAndCheckForErrors(
environment.getProject(), environment.getProject(),
files.getPsiFiles(), files.getPsiFiles(),
new JvmPackageMappingProvider(environment) new JvmPackageFacadeProvider(environment)
); );
analysisResult.throwIfError(); analysisResult.throwIfError();
AnalyzingUtils.throwExceptionOnErrors(analysisResult.getBindingContext()); AnalyzingUtils.throwExceptionOnErrors(analysisResult.getBindingContext());
@@ -19,11 +19,11 @@ package org.jetbrains.kotlin.codegen;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.analyzer.AnalysisResult; import org.jetbrains.kotlin.analyzer.AnalysisResult;
import org.jetbrains.kotlin.cli.jvm.compiler.JvmPackageFacadeProvider;
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment; import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment;
import org.jetbrains.kotlin.codegen.state.GenerationState; import org.jetbrains.kotlin.codegen.state.GenerationState;
import org.jetbrains.kotlin.load.java.lazy.PackageMappingProvider; import org.jetbrains.kotlin.descriptors.PackageFacadeProvider;
import org.jetbrains.kotlin.psi.JetFile; import org.jetbrains.kotlin.psi.JetFile;
import org.jetbrains.kotlin.resolve.lazy.JvmPackageMappingProvider;
import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil; import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil;
import java.util.Collections; import java.util.Collections;
@@ -48,20 +48,21 @@ public class GenerationUtils {
@NotNull KotlinCoreEnvironment environment @NotNull KotlinCoreEnvironment environment
) { ) {
AnalysisResult analysisResult = AnalysisResult analysisResult =
JvmResolveUtil.analyzeOneFileWithJavaIntegrationAndCheckForErrors(psiFile, new JvmPackageMappingProvider(environment)); JvmResolveUtil.analyzeOneFileWithJavaIntegrationAndCheckForErrors(psiFile, new JvmPackageFacadeProvider(environment));
return compileFilesGetGenerationState(psiFile.getProject(), analysisResult, Collections.singletonList(psiFile)); return compileFilesGetGenerationState(psiFile.getProject(), analysisResult, Collections.singletonList(psiFile));
} }
@NotNull @NotNull
public static GenerationState compileManyFilesGetGenerationStateForTest(@NotNull Project project, @NotNull List<JetFile> files) { public static GenerationState compileManyFilesGetGenerationStateForTest(@NotNull Project project, @NotNull List<JetFile> files) {
return compileManyFilesGetGenerationStateForTest(project, files, PackageMappingProvider.EMPTY); return compileManyFilesGetGenerationStateForTest(project, files, PackageFacadeProvider.EMPTY);
} }
@NotNull @NotNull
public static GenerationState compileManyFilesGetGenerationStateForTest(@NotNull Project project, @NotNull List<JetFile> files, public static GenerationState compileManyFilesGetGenerationStateForTest(@NotNull Project project, @NotNull List<JetFile> files,
@NotNull PackageMappingProvider packageMappingProvider) { @NotNull PackageFacadeProvider packageFacadeProvider
) {
AnalysisResult analysisResult = JvmResolveUtil.analyzeFilesWithJavaIntegrationAndCheckForErrors( AnalysisResult analysisResult = JvmResolveUtil.analyzeFilesWithJavaIntegrationAndCheckForErrors(
project, files, packageMappingProvider); project, files, packageFacadeProvider);
return compileFilesGetGenerationState(project, analysisResult, files); return compileFilesGetGenerationState(project, analysisResult, files);
} }
@@ -29,7 +29,7 @@ import org.jetbrains.kotlin.codegen.CodegenTestCase;
import org.jetbrains.kotlin.codegen.GenerationUtils; import org.jetbrains.kotlin.codegen.GenerationUtils;
import org.jetbrains.kotlin.config.CompilerConfiguration; import org.jetbrains.kotlin.config.CompilerConfiguration;
import org.jetbrains.kotlin.psi.JetFile; import org.jetbrains.kotlin.psi.JetFile;
import org.jetbrains.kotlin.resolve.lazy.JvmPackageMappingProvider; import org.jetbrains.kotlin.cli.jvm.compiler.JvmPackageFacadeProvider;
import org.jetbrains.kotlin.test.ConfigurationKind; import org.jetbrains.kotlin.test.ConfigurationKind;
import org.jetbrains.kotlin.test.InTextDirectivesUtils; import org.jetbrains.kotlin.test.InTextDirectivesUtils;
import org.jetbrains.kotlin.test.JetTestUtils; import org.jetbrains.kotlin.test.JetTestUtils;
@@ -155,7 +155,7 @@ public abstract class AbstractBlackBoxCodegenTest extends CodegenTestCase {
loadFiles(ArrayUtil.toStringArray(ktFilePaths)); loadFiles(ArrayUtil.toStringArray(ktFilePaths));
classFileFactory = classFileFactory =
GenerationUtils.compileManyFilesGetGenerationStateForTest(myEnvironment.getProject(), myFiles.getPsiFiles(), GenerationUtils.compileManyFilesGetGenerationStateForTest(myEnvironment.getProject(), myFiles.getPsiFiles(),
new JvmPackageMappingProvider(myEnvironment)).getFactory(); new JvmPackageFacadeProvider(myEnvironment)).getFactory();
File kotlinOut = JetTestUtils.tmpDir(toString()); File kotlinOut = JetTestUtils.tmpDir(toString());
OutputUtilsPackage.writeAllTo(classFileFactory, kotlinOut); OutputUtilsPackage.writeAllTo(classFileFactory, kotlinOut);
@@ -35,7 +35,7 @@ import org.jetbrains.kotlin.resolve.BindingTrace;
import org.jetbrains.kotlin.resolve.DescriptorUtils; import org.jetbrains.kotlin.resolve.DescriptorUtils;
import org.jetbrains.kotlin.resolve.TopDownAnalysisMode; import org.jetbrains.kotlin.resolve.TopDownAnalysisMode;
import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM; import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM;
import org.jetbrains.kotlin.resolve.lazy.JvmPackageMappingProvider; import org.jetbrains.kotlin.cli.jvm.compiler.JvmPackageFacadeProvider;
import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil; import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil;
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedClassDescriptor; import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedClassDescriptor;
import org.jetbrains.kotlin.test.ConfigurationKind; import org.jetbrains.kotlin.test.ConfigurationKind;
@@ -156,7 +156,7 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir {
environment.getSourceFiles(), environment.getSourceFiles(),
trace, trace,
TopDownAnalysisMode.TopLevelDeclarations, TopDownAnalysisMode.TopLevelDeclarations,
new JvmPackageMappingProvider(environment) new JvmPackageFacadeProvider(environment)
); );
PackageViewDescriptor packageView = moduleContext.getModule().getPackage(TEST_PACKAGE_FQNAME); PackageViewDescriptor packageView = moduleContext.getModule().getPackage(TEST_PACKAGE_FQNAME);
@@ -35,7 +35,6 @@ import org.jetbrains.kotlin.resolve.BindingContext;
import org.jetbrains.kotlin.resolve.BindingTrace; import org.jetbrains.kotlin.resolve.BindingTrace;
import org.jetbrains.kotlin.resolve.DescriptorUtils; import org.jetbrains.kotlin.resolve.DescriptorUtils;
import org.jetbrains.kotlin.resolve.jvm.kotlinSignature.TypeTransformingVisitor; import org.jetbrains.kotlin.resolve.jvm.kotlinSignature.TypeTransformingVisitor;
import org.jetbrains.kotlin.resolve.lazy.JvmPackageMappingProvider;
import org.jetbrains.kotlin.resolve.lazy.LazyResolveTestUtil; import org.jetbrains.kotlin.resolve.lazy.LazyResolveTestUtil;
import org.jetbrains.kotlin.resolve.scopes.JetScope; import org.jetbrains.kotlin.resolve.scopes.JetScope;
@@ -23,7 +23,7 @@ import com.intellij.openapi.util.io.FileUtil
import org.jetbrains.kotlin.cli.common.output.outputUtils.writeAllTo import org.jetbrains.kotlin.cli.common.output.outputUtils.writeAllTo
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.codegen.GenerationUtils import org.jetbrains.kotlin.codegen.GenerationUtils
import org.jetbrains.kotlin.resolve.lazy.JvmPackageMappingProvider import org.jetbrains.kotlin.cli.jvm.compiler.JvmPackageFacadeProvider
import org.jetbrains.kotlin.test.JetTestUtils import org.jetbrains.kotlin.test.JetTestUtils
import org.jetbrains.kotlin.test.TestCaseWithTmpdir import org.jetbrains.kotlin.test.TestCaseWithTmpdir
import org.jetbrains.kotlin.utils.join import org.jetbrains.kotlin.utils.join
@@ -38,7 +38,7 @@ import org.jetbrains.kotlin.name.Name;
import org.jetbrains.kotlin.psi.JetFile; import org.jetbrains.kotlin.psi.JetFile;
import org.jetbrains.kotlin.resolve.BindingContext; import org.jetbrains.kotlin.resolve.BindingContext;
import org.jetbrains.kotlin.resolve.BindingTrace; import org.jetbrains.kotlin.resolve.BindingTrace;
import org.jetbrains.kotlin.resolve.lazy.JvmPackageMappingProvider; import org.jetbrains.kotlin.cli.jvm.compiler.JvmPackageFacadeProvider;
import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil; import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil;
import org.jetbrains.kotlin.resolve.lazy.LazyResolveTestUtil; import org.jetbrains.kotlin.resolve.lazy.LazyResolveTestUtil;
import org.jetbrains.kotlin.test.ConfigurationKind; import org.jetbrains.kotlin.test.ConfigurationKind;
@@ -141,7 +141,7 @@ public final class LoadDescriptorUtil {
} }
}); });
AnalysisResult result = JvmResolveUtil.analyzeFilesWithJavaIntegrationAndCheckForErrors( AnalysisResult result = JvmResolveUtil.analyzeFilesWithJavaIntegrationAndCheckForErrors(
jetCoreEnvironment.getProject(), jetFiles, new JvmPackageMappingProvider(jetCoreEnvironment)); jetCoreEnvironment.getProject(), jetFiles, new JvmPackageFacadeProvider(jetCoreEnvironment));
return new JetFilesAndAnalysisResult(jetFiles, result); return new JetFilesAndAnalysisResult(jetFiles, result);
} }
@@ -38,7 +38,7 @@ import org.jetbrains.kotlin.resolve.CompilerEnvironment
import org.jetbrains.kotlin.resolve.descriptorUtil.module import org.jetbrains.kotlin.resolve.descriptorUtil.module
import org.jetbrains.kotlin.resolve.jvm.JvmAnalyzerFacade import org.jetbrains.kotlin.resolve.jvm.JvmAnalyzerFacade
import org.jetbrains.kotlin.resolve.jvm.JvmPlatformParameters import org.jetbrains.kotlin.resolve.jvm.JvmPlatformParameters
import org.jetbrains.kotlin.resolve.lazy.JvmPackageMappingProvider import org.jetbrains.kotlin.cli.jvm.compiler.JvmPackageFacadeProvider
import org.jetbrains.kotlin.test.JetTestUtils import org.jetbrains.kotlin.test.JetTestUtils
import org.jetbrains.kotlin.types.ErrorUtils import org.jetbrains.kotlin.types.ErrorUtils
import org.junit.Assert import org.junit.Assert
@@ -67,7 +67,7 @@ public class MultiModuleJavaAnalysisCustomTest : UsefulTestCase() {
modules.first { it._name == moduleName } modules.first { it._name == moduleName }
}, },
CompilerEnvironment, CompilerEnvironment,
packageMappingProviderFactory = { a, b -> JvmPackageMappingProvider(environment)} packageFacadeProviderFactory = { a, b -> JvmPackageFacadeProvider(environment) }
) )
performChecks(resolverForProject, modules) performChecks(resolverForProject, modules)
@@ -20,9 +20,10 @@ import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.analyzer.AnalysisResult; import org.jetbrains.kotlin.analyzer.AnalysisResult;
import org.jetbrains.kotlin.cli.jvm.compiler.CliLightClassGenerationSupport; import org.jetbrains.kotlin.cli.jvm.compiler.CliLightClassGenerationSupport;
import org.jetbrains.kotlin.cli.jvm.compiler.JvmPackageFacadeProvider;
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment; import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment;
import org.jetbrains.kotlin.context.ModuleContext; import org.jetbrains.kotlin.context.ModuleContext;
import org.jetbrains.kotlin.load.java.lazy.PackageMappingProvider; import org.jetbrains.kotlin.descriptors.PackageFacadeProvider;
import org.jetbrains.kotlin.psi.JetFile; import org.jetbrains.kotlin.psi.JetFile;
import org.jetbrains.kotlin.resolve.AnalyzingUtils; import org.jetbrains.kotlin.resolve.AnalyzingUtils;
import org.jetbrains.kotlin.resolve.BindingTrace; import org.jetbrains.kotlin.resolve.BindingTrace;
@@ -36,11 +37,11 @@ public class JvmResolveUtil {
public static String TEST_MODULE_NAME = "java-integration-test"; public static String TEST_MODULE_NAME = "java-integration-test";
@NotNull @NotNull
public static AnalysisResult analyzeOneFileWithJavaIntegrationAndCheckForErrors(@NotNull JetFile file) { public static AnalysisResult analyzeOneFileWithJavaIntegrationAndCheckForErrors(@NotNull JetFile file) {
return analyzeOneFileWithJavaIntegrationAndCheckForErrors(file, PackageMappingProvider.EMPTY); return analyzeOneFileWithJavaIntegrationAndCheckForErrors(file, PackageFacadeProvider.EMPTY);
} }
@NotNull @NotNull
public static AnalysisResult analyzeOneFileWithJavaIntegrationAndCheckForErrors(@NotNull JetFile file, @NotNull PackageMappingProvider provider) { public static AnalysisResult analyzeOneFileWithJavaIntegrationAndCheckForErrors(@NotNull JetFile file, @NotNull PackageFacadeProvider provider) {
AnalyzingUtils.checkForSyntacticErrors(file); AnalyzingUtils.checkForSyntacticErrors(file);
AnalysisResult analysisResult = analyzeOneFileWithJavaIntegration(file, provider); AnalysisResult analysisResult = analyzeOneFileWithJavaIntegration(file, provider);
@@ -52,17 +53,17 @@ public class JvmResolveUtil {
@NotNull @NotNull
public static AnalysisResult analyzeOneFileWithJavaIntegration(@NotNull JetFile file, @NotNull KotlinCoreEnvironment environment) { public static AnalysisResult analyzeOneFileWithJavaIntegration(@NotNull JetFile file, @NotNull KotlinCoreEnvironment environment) {
return analyzeOneFileWithJavaIntegration(file, new JvmPackageMappingProvider(environment)); return analyzeOneFileWithJavaIntegration(file, new JvmPackageFacadeProvider(environment));
} }
@NotNull @NotNull
public static AnalysisResult analyzeOneFileWithJavaIntegration(@NotNull JetFile file, @NotNull PackageMappingProvider provider) { public static AnalysisResult analyzeOneFileWithJavaIntegration(@NotNull JetFile file, @NotNull PackageFacadeProvider provider) {
return analyzeFilesWithJavaIntegration(file.getProject(), Collections.singleton(file), provider); return analyzeFilesWithJavaIntegration(file.getProject(), Collections.singleton(file), provider);
} }
@NotNull @NotNull
public static AnalysisResult analyzeOneFileWithJavaIntegration(@NotNull JetFile file) { public static AnalysisResult analyzeOneFileWithJavaIntegration(@NotNull JetFile file) {
return analyzeOneFileWithJavaIntegration(file, PackageMappingProvider.EMPTY); return analyzeOneFileWithJavaIntegration(file, PackageFacadeProvider.EMPTY);
} }
@NotNull @NotNull
@@ -70,20 +71,20 @@ public class JvmResolveUtil {
@NotNull Project project, @NotNull Project project,
@NotNull Collection<JetFile> files @NotNull Collection<JetFile> files
) { ) {
return analyzeFilesWithJavaIntegrationAndCheckForErrors(project, files, PackageMappingProvider.EMPTY); return analyzeFilesWithJavaIntegrationAndCheckForErrors(project, files, PackageFacadeProvider.EMPTY);
} }
@NotNull @NotNull
public static AnalysisResult analyzeFilesWithJavaIntegrationAndCheckForErrors( public static AnalysisResult analyzeFilesWithJavaIntegrationAndCheckForErrors(
@NotNull Project project, @NotNull Project project,
@NotNull Collection<JetFile> files, @NotNull Collection<JetFile> files,
@NotNull PackageMappingProvider packageMappingProvider @NotNull PackageFacadeProvider packageFacadeProvider
) { ) {
for (JetFile file : files) { for (JetFile file : files) {
AnalyzingUtils.checkForSyntacticErrors(file); AnalyzingUtils.checkForSyntacticErrors(file);
} }
AnalysisResult analysisResult = analyzeFilesWithJavaIntegration(project, files, packageMappingProvider); AnalysisResult analysisResult = analyzeFilesWithJavaIntegration(project, files, packageFacadeProvider);
AnalyzingUtils.throwExceptionOnErrors(analysisResult.getBindingContext()); AnalyzingUtils.throwExceptionOnErrors(analysisResult.getBindingContext());
@@ -96,20 +97,21 @@ public class JvmResolveUtil {
@NotNull Collection<JetFile> files, @NotNull Collection<JetFile> files,
@NotNull KotlinCoreEnvironment environment @NotNull KotlinCoreEnvironment environment
) { ) {
return analyzeFilesWithJavaIntegration(project, files, new JvmPackageMappingProvider(environment)); return analyzeFilesWithJavaIntegration(project, files, new JvmPackageFacadeProvider(environment));
} }
@NotNull @NotNull
public static AnalysisResult analyzeFilesWithJavaIntegration( public static AnalysisResult analyzeFilesWithJavaIntegration(
@NotNull Project project, @NotNull Project project,
@NotNull Collection<JetFile> files, @NotNull Collection<JetFile> files,
@NotNull PackageMappingProvider packageMappingProvider @NotNull PackageFacadeProvider packageFacadeProvider
) { ) {
ModuleContext moduleContext = TopDownAnalyzerFacadeForJVM.createContextWithSealedModule(project, TEST_MODULE_NAME); ModuleContext moduleContext = TopDownAnalyzerFacadeForJVM.createContextWithSealedModule(project, TEST_MODULE_NAME);
BindingTrace trace = new CliLightClassGenerationSupport.CliBindingTrace(); BindingTrace trace = new CliLightClassGenerationSupport.CliBindingTrace();
return TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegrationWithCustomContext(moduleContext, files, trace, null, null, packageMappingProvider); return TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegrationWithCustomContext(moduleContext, files, trace, null, null,
packageFacadeProvider);
} }
} }
@@ -20,10 +20,10 @@ import com.google.common.collect.Sets;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.cli.jvm.compiler.CliLightClassGenerationSupport; import org.jetbrains.kotlin.cli.jvm.compiler.CliLightClassGenerationSupport;
import org.jetbrains.kotlin.cli.jvm.compiler.JvmPackageFacadeProvider;
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment; import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment;
import org.jetbrains.kotlin.context.ModuleContext; import org.jetbrains.kotlin.context.ModuleContext;
import org.jetbrains.kotlin.descriptors.ModuleDescriptor; import org.jetbrains.kotlin.descriptors.ModuleDescriptor;
import org.jetbrains.kotlin.load.java.lazy.PackageMappingProvider;
import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.name.Name;
import org.jetbrains.kotlin.name.SpecialNames; import org.jetbrains.kotlin.name.SpecialNames;
import org.jetbrains.kotlin.psi.JetFile; import org.jetbrains.kotlin.psi.JetFile;
@@ -62,7 +62,7 @@ public class LazyResolveTestUtil {
TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegrationNoIncremental( TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegrationNoIncremental(
moduleContext, sourceFiles, trace, TopDownAnalysisMode.TopLevelDeclarations, moduleContext, sourceFiles, trace, TopDownAnalysisMode.TopLevelDeclarations,
new JvmPackageMappingProvider(environment) new JvmPackageFacadeProvider(environment)
); );
return moduleContext.getModule(); return moduleContext.getModule();
@@ -26,7 +26,7 @@ import org.jetbrains.kotlin.frontend.java.di.createContainerForTopDownAnalyzerFo
import org.jetbrains.kotlin.incremental.components.LookupTracker import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.jvm.compiler.LoadDescriptorUtil import org.jetbrains.kotlin.jvm.compiler.LoadDescriptorUtil
import org.jetbrains.kotlin.load.java.JvmAnnotationNames import org.jetbrains.kotlin.load.java.JvmAnnotationNames
import org.jetbrains.kotlin.load.java.lazy.PackageMappingProvider import org.jetbrains.kotlin.descriptors.PackageFacadeProvider
import org.jetbrains.kotlin.load.java.structure.reflect.classId import org.jetbrains.kotlin.load.java.structure.reflect.classId
import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM
import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory
@@ -60,7 +60,7 @@ public abstract class AbstractLocalClassProtoTest : TestCaseWithTmpdir() {
val container = createContainerForTopDownAnalyzerForJvm( val container = createContainerForTopDownAnalyzerForJvm(
moduleContext, CliLightClassGenerationSupport.NoScopeRecordCliBindingTrace(), moduleContext, CliLightClassGenerationSupport.NoScopeRecordCliBindingTrace(),
providerFactory, GlobalSearchScope.allScope(environment.project), LookupTracker.DO_NOTHING, PackageMappingProvider.EMPTY providerFactory, GlobalSearchScope.allScope(environment.project), LookupTracker.DO_NOTHING, PackageFacadeProvider.EMPTY
) )
moduleContext.initializeModuleContents(container.javaDescriptorResolver.packageFragmentProvider) moduleContext.initializeModuleContents(container.javaDescriptorResolver.packageFragmentProvider)
@@ -66,7 +66,6 @@ import org.jetbrains.kotlin.psi.JetFile;
import org.jetbrains.kotlin.resolve.BindingContext; import org.jetbrains.kotlin.resolve.BindingContext;
import org.jetbrains.kotlin.resolve.BindingTrace; import org.jetbrains.kotlin.resolve.BindingTrace;
import org.jetbrains.kotlin.resolve.diagnostics.Diagnostics; import org.jetbrains.kotlin.resolve.diagnostics.Diagnostics;
import org.jetbrains.kotlin.resolve.lazy.JvmPackageMappingProvider;
import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil; import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil;
import org.jetbrains.kotlin.resolve.lazy.LazyResolveTestUtil; import org.jetbrains.kotlin.resolve.lazy.LazyResolveTestUtil;
import org.jetbrains.kotlin.storage.LockBasedStorageManager; import org.jetbrains.kotlin.storage.LockBasedStorageManager;
@@ -30,8 +30,7 @@ import org.jetbrains.kotlin.utils.emptyOrSingletonList
public class LazyJavaPackageFragmentProvider( public class LazyJavaPackageFragmentProvider(
components: JavaResolverComponents, components: JavaResolverComponents,
module: ModuleDescriptor, module: ModuleDescriptor,
reflectionTypes: ReflectionTypes, reflectionTypes: ReflectionTypes
packageMapper: PackageMappingProvider
) : PackageFragmentProvider { ) : PackageFragmentProvider {
private val c = private val c =
@@ -42,7 +41,7 @@ public class LazyJavaPackageFragmentProvider(
fqName -> fqName ->
val jPackage = c.components.finder.findPackage(fqName) val jPackage = c.components.finder.findPackage(fqName)
if (jPackage != null) { if (jPackage != null) {
LazyJavaPackageFragment(c, jPackage, packageMapper) LazyJavaPackageFragment(c, jPackage)
} }
else null else null
} }
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.load.java.lazy
import org.jetbrains.kotlin.builtins.ReflectionTypes import org.jetbrains.kotlin.builtins.ReflectionTypes
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.descriptors.PackageFacadeProvider
import org.jetbrains.kotlin.load.java.JavaClassFinder import org.jetbrains.kotlin.load.java.JavaClassFinder
import org.jetbrains.kotlin.load.java.components.ExternalAnnotationResolver import org.jetbrains.kotlin.load.java.components.ExternalAnnotationResolver
import org.jetbrains.kotlin.load.java.components.ExternalSignatureResolver import org.jetbrains.kotlin.load.java.components.ExternalSignatureResolver
@@ -45,7 +46,8 @@ class JavaResolverComponents(
val javaPropertyInitializerEvaluator: JavaPropertyInitializerEvaluator, val javaPropertyInitializerEvaluator: JavaPropertyInitializerEvaluator,
val samConversionResolver: SamConversionResolver, val samConversionResolver: SamConversionResolver,
val sourceElementFactory: JavaSourceElementFactory, val sourceElementFactory: JavaSourceElementFactory,
val moduleClassResolver: ModuleClassResolver val moduleClassResolver: ModuleClassResolver,
val packageMapper: PackageFacadeProvider
) )
open class LazyJavaResolverContext( open class LazyJavaResolverContext(
@@ -19,9 +19,7 @@ package org.jetbrains.kotlin.load.java.lazy.descriptors
import org.jetbrains.kotlin.descriptors.SourceElement import org.jetbrains.kotlin.descriptors.SourceElement
import org.jetbrains.kotlin.descriptors.impl.PackageFragmentDescriptorImpl import org.jetbrains.kotlin.descriptors.impl.PackageFragmentDescriptorImpl
import org.jetbrains.kotlin.load.java.lazy.LazyJavaResolverContext import org.jetbrains.kotlin.load.java.lazy.LazyJavaResolverContext
import org.jetbrains.kotlin.load.java.structure.JavaClass import org.jetbrains.kotlin.load.java.structure.JavaClass
import org.jetbrains.kotlin.load.java.lazy.PackageMappingProvider
import org.jetbrains.kotlin.load.java.structure.JavaPackage import org.jetbrains.kotlin.load.java.structure.JavaPackage
import org.jetbrains.kotlin.load.kotlin.KotlinJvmBinarySourceElement import org.jetbrains.kotlin.load.kotlin.KotlinJvmBinarySourceElement
import org.jetbrains.kotlin.resolve.scopes.DecapitalizedAnnotationScope import org.jetbrains.kotlin.resolve.scopes.DecapitalizedAnnotationScope
@@ -29,8 +27,7 @@ import org.jetbrains.kotlin.resolve.scopes.JetScope
class LazyJavaPackageFragment( class LazyJavaPackageFragment(
private val c: LazyJavaResolverContext, private val c: LazyJavaResolverContext,
private val jPackage: JavaPackage, private val jPackage: JavaPackage
val packageMapper: PackageMappingProvider
) : PackageFragmentDescriptorImpl(c.module, jPackage.getFqName()) { ) : PackageFragmentDescriptorImpl(c.module, jPackage.getFqName()) {
val scope: LazyJavaPackageScope by lazy { LazyJavaPackageScope(c, jPackage, this) } val scope: LazyJavaPackageScope by lazy { LazyJavaPackageScope(c, jPackage, this) }
// Just a temporary hack to inject deprecated decapitalized annotation // Just a temporary hack to inject deprecated decapitalized annotation
@@ -50,41 +50,19 @@ public class LazyJavaPackageScope(
public val kotlinBinaryClasses: List<KotlinJvmBinaryClass> public val kotlinBinaryClasses: List<KotlinJvmBinaryClass>
init { init {
val pakage = jPackage.getFqName().asString().replace('.', '/') val files = c.components.packageMapper.findPackageFacades(jPackage.getFqName().asString().replace('.', '/'))
val files = containingDeclaration.packageMapper.findPackageMembers(pakage)
val packageClassId = PackageClassUtils.getPackageClassId(packageFragment.fqName).packageFqName val packageClassId = PackageClassUtils.getPackageClassId(packageFragment.fqName).packageFqName
val notFound = arrayListOf<String>() kotlinBinaryClasses = files.map {
val classFiles = files.map {
val classId = ClassId(packageClassId, Name.identifierNoValidate(it.substringAfterLast("/"))) val classId = ClassId(packageClassId, Name.identifierNoValidate(it.substringAfterLast("/")))
val findKotlinClass = c.components.kotlinClassFinder.findKotlinClass(classId) c.components.kotlinClassFinder.findKotlinClass(classId)
if (findKotlinClass == null) { }.filterNotNull()
notFound.add("$classId")
}
findKotlinClass
}
kotlinBinaryClasses = classFiles.filterNotNull()
if (kotlinBinaryClasses.size() != classFiles.size()) {
println("package: $pakage")
println("files: " + files.join())
println("not found: " + notFound.join())
//assert(kotlinBinaryClasses.size() == classFiles.size(), "${kotlinBinaryClasses.size()} != ${classFiles.size()}")
}
} }
private val deserializedPackageScope = c.storageManager.createLazyValue { private val deserializedPackageScope = c.storageManager.createLazyValue {
val kotlinBinaryClass = kotlinBinaryClass
if (kotlinBinaryClasses.isEmpty()) if (kotlinBinaryClasses.isEmpty())
JetScope.Empty JetScope.Empty
else { else {
c.components.deserializedDescriptorResolver.createKotlinNewPackageScope(packageFragment, kotlinBinaryClasses)
//if(!kotlinBinaryClasses.isEmpty()) {
c.components.deserializedDescriptorResolver.createKotlinNewPackageScope(packageFragment, kotlinBinaryClasses)
//print("deserializing " + packageFragment.getName())
//}
// val jetScope = c.deserializedDescriptorResolver.createKotlinPackageScope(packageFragment, kotlinBinaryClass) ?: JetScope.Empty
// jetScope
} }
} }
@@ -40,13 +40,13 @@ public class ModuleMapping(val moduleMapping: String) {
} }
} }
public class PackageFacades(val internalName: String) { public class PackageFacades(val packageInternalName: String) {
val parts = linkedSetOf<String>() val parts = linkedSetOf<String>()
fun serialize(out: Writer) { fun serialize(out: Writer) {
for (i in parts) { for (i in parts) {
out.write("$internalName->$i\n") out.write("$packageInternalName->$i\n")
} }
} }
@@ -55,7 +55,7 @@ public class PackageFacades(val internalName: String) {
return false; return false;
} }
if (other.internalName != internalName) { if (other.packageInternalName != packageInternalName) {
return false; return false;
} }
@@ -73,6 +73,6 @@ public class PackageFacades(val internalName: String) {
} }
override fun hashCode(): Int { override fun hashCode(): Int {
return internalName.hashCode() / 3 + parts.size() / 3+ (parts.firstOrNull()?.hashCode() ?: 0) /3 return packageInternalName.hashCode() / 3 + parts.size() / 3 + (parts.firstOrNull()?.hashCode() ?: 0) / 3
} }
} }
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.kotlin.load.java.components.* import org.jetbrains.kotlin.load.java.components.*
import org.jetbrains.kotlin.load.java.lazy.JavaResolverComponents import org.jetbrains.kotlin.load.java.lazy.JavaResolverComponents
import org.jetbrains.kotlin.load.java.lazy.LazyJavaPackageFragmentProvider import org.jetbrains.kotlin.load.java.lazy.LazyJavaPackageFragmentProvider
import org.jetbrains.kotlin.load.java.lazy.PackageMappingProvider import org.jetbrains.kotlin.descriptors.PackageFacadeProvider
import org.jetbrains.kotlin.load.java.lazy.SingleModuleClassResolver import org.jetbrains.kotlin.load.java.lazy.SingleModuleClassResolver
import org.jetbrains.kotlin.load.java.reflect.ReflectJavaClassFinder import org.jetbrains.kotlin.load.java.reflect.ReflectJavaClassFinder
import org.jetbrains.kotlin.load.java.structure.JavaPropertyInitializerEvaluator import org.jetbrains.kotlin.load.java.structure.JavaPropertyInitializerEvaluator
@@ -55,12 +55,11 @@ public class RuntimeModuleData private constructor(public val deserialization: D
val globalJavaResolverContext = JavaResolverComponents( val globalJavaResolverContext = JavaResolverComponents(
storageManager, ReflectJavaClassFinder(classLoader), reflectKotlinClassFinder, deserializedDescriptorResolver, storageManager, ReflectJavaClassFinder(classLoader), reflectKotlinClassFinder, deserializedDescriptorResolver,
ExternalAnnotationResolver.EMPTY, ExternalSignatureResolver.DO_NOTHING, RuntimeErrorReporter, JavaResolverCache.EMPTY, ExternalAnnotationResolver.EMPTY, ExternalSignatureResolver.DO_NOTHING, RuntimeErrorReporter, JavaResolverCache.EMPTY,
JavaPropertyInitializerEvaluator.DoNothing, SamConversionResolver, RuntimeSourceElementFactory, singleModuleClassResolver JavaPropertyInitializerEvaluator.DoNothing, SamConversionResolver, RuntimeSourceElementFactory, singleModuleClassResolver,
if (moduleName == null) PackageFacadeProvider.EMPTY else RuntimePackageFacadeProvider(moduleName, classLoader)
) )
println("moduleName $moduleName")
val lazyJavaPackageFragmentProvider = val lazyJavaPackageFragmentProvider =
LazyJavaPackageFragmentProvider(globalJavaResolverContext, module, ReflectionTypes(module), LazyJavaPackageFragmentProvider(globalJavaResolverContext, module, ReflectionTypes(module))
if (moduleName == null) PackageMappingProvider.EMPTY else RuntimePackageMappingProvider(moduleName, classLoader))
val javaDescriptorResolver = JavaDescriptorResolver(lazyJavaPackageFragmentProvider, module) val javaDescriptorResolver = JavaDescriptorResolver(lazyJavaPackageFragmentProvider, module)
val javaClassDataFinder = JavaClassDataFinder(reflectKotlinClassFinder, deserializedDescriptorResolver) val javaClassDataFinder = JavaClassDataFinder(reflectKotlinClassFinder, deserializedDescriptorResolver)
val binaryClassAnnotationAndConstantLoader = BinaryClassAnnotationAndConstantLoaderImpl(module, storageManager, reflectKotlinClassFinder, RuntimeErrorReporter) val binaryClassAnnotationAndConstantLoader = BinaryClassAnnotationAndConstantLoaderImpl(module, storageManager, reflectKotlinClassFinder, RuntimeErrorReporter)
@@ -16,37 +16,33 @@
package org.jetbrains.kotlin.load.kotlin.reflect package org.jetbrains.kotlin.load.kotlin.reflect
import org.jetbrains.kotlin.load.java.lazy.PackageMappingProvider import org.jetbrains.kotlin.descriptors.PackageFacadeProvider
import org.jetbrains.kotlin.load.kotlin.ModuleMapping import org.jetbrains.kotlin.load.kotlin.ModuleMapping
import org.jetbrains.kotlin.load.kotlin.PackageFacades import org.jetbrains.kotlin.load.kotlin.PackageFacades
import java.io.ByteArrayOutputStream import java.io.ByteArrayOutputStream
class RuntimePackageMappingProvider(val moduleName: String, val classLoader : ClassLoader) : PackageMappingProvider { class RuntimePackageFacadeProvider(val moduleName: String, val classLoader : ClassLoader) : PackageFacadeProvider {
val mapping: ModuleMapping by lazy { val mapping: ModuleMapping by lazy {
print("finding metainf for $moduleName")
val resourceAsStream = classLoader.getResourceAsStream("META-INF/$moduleName.kotlin_module") ?: return@lazy ModuleMapping("") val resourceAsStream = classLoader.getResourceAsStream("META-INF/$moduleName.kotlin_module") ?: return@lazy ModuleMapping("")
print("OK")
try { try {
val out = ByteArrayOutputStream(4096); val out = ByteArrayOutputStream(4096)
val buffer = ByteArray(4096); val buffer = ByteArray(4096)
while (true) { while (true) {
val r = resourceAsStream.read(buffer); val r = resourceAsStream.read(buffer)
if (r == -1) break; if (r == -1) break
out.write(buffer, 0, r); out.write(buffer, 0, r)
} }
val ret = out.toByteArray(); val ret = out.toByteArray()
return@lazy ModuleMapping(String(ret, "UTF-8")) return@lazy ModuleMapping(String(ret, "UTF-8"))
} finally { } finally {
resourceAsStream.close() resourceAsStream.close()
} }
} }
override fun findPackageMembers(packageName: String): List<String> { override fun findPackageFacades(packageInternalName: String): List<String> {
print("finding $packageName") return mapping.package2MiniFacades.getOrElse (packageInternalName, { PackageFacades("default") }).parts.toList()
return mapping.package2MiniFacades.getOrElse (packageName, { PackageFacades("default") }).parts.toList()
} }
} }
@@ -14,15 +14,15 @@
* limitations under the License. * limitations under the License.
*/ */
package org.jetbrains.kotlin.load.java.lazy package org.jetbrains.kotlin.descriptors
interface PackageMappingProvider { interface PackageFacadeProvider {
fun findPackageMembers(packageName: String): List<String> fun findPackageFacades(packageInternalName: String): List<String>
companion object { companion object {
val EMPTY = object : PackageMappingProvider { val EMPTY = object : PackageFacadeProvider {
override fun findPackageMembers(packageName: String): List<String> { override fun findPackageFacades(packageInternalName: String): List<String> {
return emptyList() return emptyList()
} }
} }
@@ -19,13 +19,13 @@ package org.jetbrains.kotlin.idea.caches.resolve
import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.search.GlobalSearchScope
import com.intellij.util.indexing.FileBasedIndex import com.intellij.util.indexing.FileBasedIndex
import org.jetbrains.kotlin.idea.vfilefinder.KotlinModuleMappingIndex import org.jetbrains.kotlin.idea.vfilefinder.KotlinModuleMappingIndex
import org.jetbrains.kotlin.load.java.lazy.PackageMappingProvider import org.jetbrains.kotlin.descriptors.PackageFacadeProvider
import org.jetbrains.kotlin.load.kotlin.PackageFacades import org.jetbrains.kotlin.load.kotlin.PackageFacades
public class IDEPackageMappingProvider(val scope: GlobalSearchScope) : PackageMappingProvider { public class IDEPackageFacadeProvider(val scope: GlobalSearchScope) : PackageFacadeProvider {
override fun findPackageMembers(packageName: String): List<String> { override fun findPackageFacades(packageInternalName: String): List<String> {
val values: MutableList<PackageFacades> = FileBasedIndex.getInstance().getValues(KotlinModuleMappingIndex.KEY, packageName, scope) val values: MutableList<PackageFacades> = FileBasedIndex.getInstance().getValues(KotlinModuleMappingIndex.KEY, packageInternalName, scope)
return values.flatMap { it.parts }.distinct() return values.flatMap { it.parts }.distinct()
} }
} }
@@ -29,7 +29,7 @@ import org.jetbrains.kotlin.frontend.di.createContainerForLazyResolve
import org.jetbrains.kotlin.idea.framework.KotlinJavaScriptLibraryDetectionUtil import org.jetbrains.kotlin.idea.framework.KotlinJavaScriptLibraryDetectionUtil
import org.jetbrains.kotlin.js.analyze.TopDownAnalyzerFacadeForJS import org.jetbrains.kotlin.js.analyze.TopDownAnalyzerFacadeForJS
import org.jetbrains.kotlin.js.resolve.JsPlatform import org.jetbrains.kotlin.js.resolve.JsPlatform
import org.jetbrains.kotlin.load.java.lazy.PackageMappingProvider import org.jetbrains.kotlin.descriptors.PackageFacadeProvider
import org.jetbrains.kotlin.resolve.BindingTraceContext import org.jetbrains.kotlin.resolve.BindingTraceContext
import org.jetbrains.kotlin.resolve.TargetEnvironment import org.jetbrains.kotlin.resolve.TargetEnvironment
import org.jetbrains.kotlin.resolve.lazy.ResolveSession import org.jetbrains.kotlin.resolve.lazy.ResolveSession
@@ -47,7 +47,7 @@ public object JsAnalyzerFacade : AnalyzerFacade<PlatformAnalysisParameters>() {
platformParameters: PlatformAnalysisParameters, platformParameters: PlatformAnalysisParameters,
targetEnvironment: TargetEnvironment, targetEnvironment: TargetEnvironment,
resolverForProject: ResolverForProject<M>, resolverForProject: ResolverForProject<M>,
packageMappingProvider: PackageMappingProvider packageFacadeProvider: PackageFacadeProvider
): ResolverForModule { ): ResolverForModule {
val (syntheticFiles, moduleContentScope) = moduleContent val (syntheticFiles, moduleContentScope) = moduleContent
val project = moduleContext.project val project = moduleContext.project
@@ -64,7 +64,7 @@ fun createModuleResolverProvider(
val resolverForProject = analyzerFacade.setupResolverForProject( val resolverForProject = analyzerFacade.setupResolverForProject(
globalContext.withProject(project), modulesToCreateResolversFor, modulesContent, globalContext.withProject(project), modulesToCreateResolversFor, modulesContent,
jvmPlatformParameters, IdeaEnvironment, delegateResolver, jvmPlatformParameters, IdeaEnvironment, delegateResolver,
{ (m, c) -> IDEPackageMappingProvider(c.moduleContentScope) } { (m, c) -> IDEPackageFacadeProvider(c.moduleContentScope) }
) )
return resolverForProject return resolverForProject
} }
@@ -66,7 +66,7 @@ public object KotlinModuleMappingIndex : FileBasedIndexExtension<String, Package
} }
override fun save(out: DataOutput, value: PackageFacades?) { override fun save(out: DataOutput, value: PackageFacades?) {
out.writeUTF(value!!.internalName) out.writeUTF(value!!.packageInternalName)
out.writeInt(value.parts.size()) out.writeInt(value.parts.size())
value.parts.forEach { out.writeUTF(it) } value.parts.forEach { out.writeUTF(it) }
} }
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.load.kotlin.VirtualFileFinder
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.resolve.BindingTraceContext import org.jetbrains.kotlin.resolve.BindingTraceContext
import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM import org.jetbrains.kotlin.resolve.jvm.TopDownAnalyzerFacadeForJVM
import org.jetbrains.kotlin.load.java.lazy.PackageMappingProvider import org.jetbrains.kotlin.descriptors.PackageFacadeProvider
public class DecompiledTextConsistencyTest : TextConsistencyBaseTest() { public class DecompiledTextConsistencyTest : TextConsistencyBaseTest() {
@@ -42,7 +42,7 @@ public class DecompiledTextConsistencyTest : TextConsistencyBaseTest() {
override fun getModuleDescriptor(): ModuleDescriptor = override fun getModuleDescriptor(): ModuleDescriptor =
TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegrationWithCustomContext( TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegrationWithCustomContext(
TopDownAnalyzerFacadeForJVM.createContextWithSealedModule(getProject(), "test"), TopDownAnalyzerFacadeForJVM.createContextWithSealedModule(getProject(), "test"),
listOf(), BindingTraceContext(), null, null, PackageMappingProvider.EMPTY listOf(), BindingTraceContext(), null, null, PackageFacadeProvider.EMPTY
).moduleDescriptor ).moduleDescriptor
override fun getProjectDescriptor() = object : JetWithJdkAndRuntimeLightProjectDescriptor() { override fun getProjectDescriptor() = object : JetWithJdkAndRuntimeLightProjectDescriptor() {