Add "expectedBy" to module descriptor and use it in checker

Now ExpectActualDeclarationChecker in IDE context
uses common module descriptors for relevant checks.
Compiler still uses own module instead (see comment in checker)
So #KT-21771 Fixed
This commit is contained in:
Mikhail Glukhikh
2017-12-12 17:22:35 +03:00
parent 78136fbb07
commit 3f500a1655
16 changed files with 93 additions and 11 deletions
@@ -40,6 +40,8 @@ interface ModuleDescriptor : DeclarationDescriptor {
*/
val allDependencyModules: List<ModuleDescriptor>
val expectedByModule: ModuleDescriptor?
fun <T> getCapability(capability: Capability<T>): T?
class Capability<T>(val name: String) {
@@ -66,6 +66,9 @@ class ModuleDescriptorImpl @JvmOverloads constructor(
override val allDependencyModules: List<ModuleDescriptor>
get() = this.dependencies.sure { "Dependencies of module $id were not set" }.allDependencies.filter { it != this }
override val expectedByModule: ModuleDescriptor?
get() = this.dependencies.sure { "Dependencies of module $id were not set" }.expectedByDependency
override fun getPackage(fqName: FqName): PackageViewDescriptor {
assertValid()
return packages(fqName)
@@ -104,11 +107,11 @@ class ModuleDescriptorImpl @JvmOverloads constructor(
}
fun setDependencies(descriptors: List<ModuleDescriptorImpl>) {
setDependencies(ModuleDependenciesImpl(descriptors, emptySet()))
setDependencies(descriptors, emptySet())
}
fun setDependencies(descriptors: List<ModuleDescriptorImpl>, friends: Set<ModuleDescriptorImpl>) {
setDependencies(ModuleDependenciesImpl(descriptors, friends))
setDependencies(ModuleDependenciesImpl(descriptors, friends, null))
}
override fun shouldSeeInternalsOf(targetModule: ModuleDescriptor): Boolean {
@@ -147,9 +150,11 @@ class ModuleDescriptorImpl @JvmOverloads constructor(
interface ModuleDependencies {
val allDependencies: List<ModuleDescriptorImpl>
val modulesWhoseInternalsAreVisible: Set<ModuleDescriptorImpl>
val expectedByDependency: ModuleDescriptorImpl?
}
class ModuleDependenciesImpl(
override val allDependencies: List<ModuleDescriptorImpl>,
override val modulesWhoseInternalsAreVisible: Set<ModuleDescriptorImpl>
override val allDependencies: List<ModuleDescriptorImpl>,
override val modulesWhoseInternalsAreVisible: Set<ModuleDescriptorImpl>,
override val expectedByDependency: ModuleDescriptorImpl?
) : ModuleDependencies
@@ -85,6 +85,12 @@ public class ErrorUtils {
return emptyList();
}
@Nullable
@Override
public ModuleDescriptor getExpectedByModule() {
return null;
}
@Override
public <R, D> R accept(@NotNull DeclarationDescriptorVisitor<R, D> visitor, D data) {
return null;