diff --git a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt b/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt index 46daef06483..5055a50ed3c 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/analyzer/AnalyzerFacade.kt @@ -28,7 +28,10 @@ import org.jetbrains.kotlin.container.ComponentProvider import org.jetbrains.kotlin.context.ModuleContext import org.jetbrains.kotlin.context.ProjectContext import org.jetbrains.kotlin.context.withModule -import org.jetbrains.kotlin.descriptors.* +import org.jetbrains.kotlin.descriptors.ModuleDescriptor +import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor +import org.jetbrains.kotlin.descriptors.PackageFragmentProvider +import org.jetbrains.kotlin.descriptors.PackagePartProvider import org.jetbrains.kotlin.descriptors.impl.LazyModuleDependencies import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl import org.jetbrains.kotlin.name.FqName @@ -164,17 +167,14 @@ abstract class AnalyzerFacade { delegateResolver: ResolverForProject = EmptyResolverForProject(), packagePartProviderFactory: (M, ModuleContent) -> PackagePartProvider = { _, _ -> PackagePartProvider.Empty }, firstDependency: M? = null, - modulePlatforms: (M) -> MultiTargetPlatform?, - moduleSources: (M) -> SourceKind = { SourceKind.NONE } + modulePlatforms: (M) -> MultiTargetPlatform? ): ResolverForProject { val storageManager = projectContext.storageManager fun createResolverForProject(): ResolverForProjectImpl { val descriptorByModule = HashMap() - modules.forEach { - module -> + modules.forEach { module -> descriptorByModule[module] = - ModuleDescriptorImpl(module.name, storageManager, builtIns(module), - modulePlatforms(module), moduleSources(module), module.capabilities) + ModuleDescriptorImpl(module.name, storageManager, builtIns(module), modulePlatforms(module), module.capabilities) } return ResolverForProjectImpl(debugName, descriptorByModule, delegateResolver) } diff --git a/compiler/tests-common/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTest.kt b/compiler/tests-common/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTest.kt index 30c89147a64..7988d7f8a7b 100644 --- a/compiler/tests-common/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTest.kt +++ b/compiler/tests-common/org/jetbrains/kotlin/checkers/AbstractDiagnosticsTest.kt @@ -32,7 +32,10 @@ import org.jetbrains.kotlin.context.ModuleContext import org.jetbrains.kotlin.context.SimpleGlobalContext import org.jetbrains.kotlin.context.withModule import org.jetbrains.kotlin.context.withProject -import org.jetbrains.kotlin.descriptors.* +import org.jetbrains.kotlin.descriptors.DeclarationDescriptor +import org.jetbrains.kotlin.descriptors.ModuleDescriptor +import org.jetbrains.kotlin.descriptors.PackagePartProvider +import org.jetbrains.kotlin.descriptors.PackageViewDescriptor import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl import org.jetbrains.kotlin.diagnostics.Diagnostic @@ -468,10 +471,7 @@ abstract class AbstractDiagnosticsTest : BaseDiagnosticsTest() { val platform = if (nameSuffix.isEmpty()) null else if (nameSuffix == "common") MultiTargetPlatform.Common else MultiTargetPlatform.Specific(nameSuffix.toUpperCase()) - return ModuleDescriptorImpl( - Name.special("<$moduleName>"), storageManager, JvmBuiltIns(storageManager), - platform, SourceKind.TEST - ) + return ModuleDescriptorImpl(Name.special("<$moduleName>"), storageManager, JvmBuiltIns(storageManager), platform) } protected open fun createSealedModule(storageManager: StorageManager): ModuleDescriptorImpl = diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/ModuleDescriptor.kt b/core/descriptors/src/org/jetbrains/kotlin/descriptors/ModuleDescriptor.kt index 0872d4a64a1..7b71ab6b0a2 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/ModuleDescriptor.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/ModuleDescriptor.kt @@ -26,8 +26,6 @@ interface ModuleDescriptor : DeclarationDescriptor { val builtIns: KotlinBuiltIns - val sourceKind: SourceKind - fun shouldSeeInternalsOf(targetModule: ModuleDescriptor): Boolean override fun substitute(substitutor: TypeSubstitutor): ModuleDescriptor { diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/SourceKind.kt b/core/descriptors/src/org/jetbrains/kotlin/descriptors/SourceKind.kt deleted file mode 100644 index d44b7b2b9cb..00000000000 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/SourceKind.kt +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Copyright 2010-2016 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.descriptors - -enum class SourceKind { - NONE, - PRODUCTION, - TEST -} \ No newline at end of file diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/ModuleDescriptorImpl.kt b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/ModuleDescriptorImpl.kt index f4ddc21585e..e45e5853d8c 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/ModuleDescriptorImpl.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/ModuleDescriptorImpl.kt @@ -17,12 +17,13 @@ package org.jetbrains.kotlin.descriptors.impl import org.jetbrains.kotlin.builtins.KotlinBuiltIns -import org.jetbrains.kotlin.descriptors.* +import org.jetbrains.kotlin.descriptors.ModuleDescriptor +import org.jetbrains.kotlin.descriptors.PackageFragmentProvider +import org.jetbrains.kotlin.descriptors.PackageViewDescriptor import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.MultiTargetPlatform -import org.jetbrains.kotlin.resolve.getMultiTargetPlatform import org.jetbrains.kotlin.storage.StorageManager import org.jetbrains.kotlin.utils.sure import java.lang.IllegalArgumentException @@ -33,7 +34,6 @@ class ModuleDescriptorImpl @JvmOverloads constructor( override val builtIns: KotlinBuiltIns, // May be null in compiler context, should be not-null in IDE context multiTargetPlatform: MultiTargetPlatform? = null, - override val sourceKind: SourceKind = SourceKind.NONE, capabilities: Map, Any?> = emptyMap() ) : DeclarationDescriptorImpl(Annotations.EMPTY, moduleName), ModuleDescriptor { init { diff --git a/core/descriptors/src/org/jetbrains/kotlin/types/ErrorUtils.java b/core/descriptors/src/org/jetbrains/kotlin/types/ErrorUtils.java index acb4e46c9e9..68204588938 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/types/ErrorUtils.java +++ b/core/descriptors/src/org/jetbrains/kotlin/types/ErrorUtils.java @@ -46,16 +46,10 @@ import static kotlin.collections.CollectionsKt.emptyList; import static kotlin.collections.CollectionsKt.joinToString; public class ErrorUtils { - private static final ModuleDescriptor ERROR_MODULE; + static { ERROR_MODULE = new ModuleDescriptor() { - @NotNull - @Override - public SourceKind getSourceKind() { - return SourceKind.NONE; - } - @Nullable @Override public T getCapability(@NotNull Capability capability) { diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ModuleDependencyMapper.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ModuleDependencyMapper.kt index 1e8c41be748..6f43ea8c1bb 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ModuleDependencyMapper.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/ModuleDependencyMapper.kt @@ -29,7 +29,6 @@ import org.jetbrains.kotlin.analyzer.ResolverForProject import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.context.GlobalContextImpl import org.jetbrains.kotlin.context.withProject -import org.jetbrains.kotlin.descriptors.SourceKind import org.jetbrains.kotlin.idea.project.AnalyzerFacadeProvider import org.jetbrains.kotlin.idea.project.IdeaEnvironment import org.jetbrains.kotlin.idea.project.TargetPlatformDetector @@ -87,15 +86,7 @@ fun createModuleResolverProvider( modulePlatforms = { moduleInfo -> val module = (moduleInfo as? ModuleSourceInfo)?.module module?.let { TargetPlatformDetector.getPlatform(module).multiTargetPlatform } - }, - moduleSources = { moduleInfo -> - when (moduleInfo) { - is ModuleProductionSourceInfo -> SourceKind.PRODUCTION - is ModuleTestSourceInfo -> SourceKind.TEST - else -> SourceKind.NONE - } } - ) } diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/DeclaredHeaderMarker.kt b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/DeclaredHeaderMarker.kt index a272a8f4964..3192fdd7083 100644 --- a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/DeclaredHeaderMarker.kt +++ b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/DeclaredHeaderMarker.kt @@ -17,7 +17,10 @@ package org.jetbrains.kotlin.idea.highlighter.markers import com.intellij.psi.NavigatablePsiElement +import org.jetbrains.kotlin.analyzer.ModuleInfo import org.jetbrains.kotlin.descriptors.* +import org.jetbrains.kotlin.idea.caches.resolve.ModuleProductionSourceInfo +import org.jetbrains.kotlin.idea.caches.resolve.ModuleTestSourceInfo import org.jetbrains.kotlin.idea.caches.resolve.findModuleDescriptor import org.jetbrains.kotlin.idea.core.toDescriptor import org.jetbrains.kotlin.psi.KtDeclaration @@ -26,9 +29,21 @@ import org.jetbrains.kotlin.resolve.MultiTargetPlatform import org.jetbrains.kotlin.resolve.checkers.HeaderImplDeclarationChecker import org.jetbrains.kotlin.resolve.getMultiTargetPlatform -fun ModuleDescriptor.commonModuleOrNull() = allDependencyModules.filter { - it.getMultiTargetPlatform() == MultiTargetPlatform.Common && it.sourceKind == sourceKind -}.firstOrNull() +fun ModuleDescriptor.commonModuleOrNull(): ModuleDescriptor? { + val sourceKind = sourceKind + return allDependencyModules.firstOrNull { dependency -> + dependency.getMultiTargetPlatform() == MultiTargetPlatform.Common && dependency.sourceKind == sourceKind + } +} + +private val ModuleDescriptor.sourceKind: SourceKind + get() = when (getCapability(ModuleInfo.Capability)) { + is ModuleProductionSourceInfo -> SourceKind.PRODUCTION + is ModuleTestSourceInfo -> SourceKind.TEST + else -> SourceKind.NONE + } + +private enum class SourceKind { NONE, PRODUCTION, TEST } fun ModuleDescriptor.hasDeclarationOf(descriptor: MemberDescriptor) = declarationOf(descriptor) != null