Infrastructure change: each header module now knows implementing modules list
This commit is contained in:
@@ -49,6 +49,8 @@ interface ModuleDescriptor : DeclarationDescriptor {
|
|||||||
*/
|
*/
|
||||||
val allDependentModules: List<ModuleDescriptor>
|
val allDependentModules: List<ModuleDescriptor>
|
||||||
|
|
||||||
|
val allImplementingModules: Set<ModuleDescriptor>
|
||||||
|
|
||||||
fun <T> getCapability(capability: Capability<T>): T?
|
fun <T> getCapability(capability: Capability<T>): T?
|
||||||
|
|
||||||
class Capability<T>(val name: String) {
|
class Capability<T>(val name: String) {
|
||||||
|
|||||||
@@ -52,6 +52,8 @@ class ModuleDescriptorImpl @JvmOverloads constructor(
|
|||||||
override val allDependentModules: List<ModuleDescriptor>
|
override val allDependentModules: List<ModuleDescriptor>
|
||||||
get() = this.dependencies.sure { "Dependencies of module $id were not set" }.allDependencies.filter { it != this }
|
get() = this.dependencies.sure { "Dependencies of module $id were not set" }.allDependencies.filter { it != this }
|
||||||
|
|
||||||
|
override val allImplementingModules: MutableSet<ModuleDescriptor> = mutableSetOf()
|
||||||
|
|
||||||
override fun getPackage(fqName: FqName): PackageViewDescriptor = packages(fqName)
|
override fun getPackage(fqName: FqName): PackageViewDescriptor = packages(fqName)
|
||||||
|
|
||||||
override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection<FqName> {
|
override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection<FqName> {
|
||||||
@@ -79,6 +81,12 @@ class ModuleDescriptorImpl @JvmOverloads constructor(
|
|||||||
fun setDependencies(dependencies: ModuleDependencies) {
|
fun setDependencies(dependencies: ModuleDependencies) {
|
||||||
assert(this.dependencies == null) { "Dependencies of $id were already set" }
|
assert(this.dependencies == null) { "Dependencies of $id were already set" }
|
||||||
this.dependencies = dependencies
|
this.dependencies = dependencies
|
||||||
|
if (platformKind == PlatformKind.DEFAULT) return
|
||||||
|
for (dependentModule in allDependentModules) {
|
||||||
|
if (dependentModule.platformKind != PlatformKind.DEFAULT) continue
|
||||||
|
if (dependentModule.sourceKind != sourceKind) continue
|
||||||
|
(dependentModule as? ModuleDescriptorImpl)?.allImplementingModules?.add(this)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setDependencies(vararg descriptors: ModuleDescriptorImpl) {
|
fun setDependencies(vararg descriptors: ModuleDescriptorImpl) {
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ import java.util.Collections;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import static java.util.Collections.emptySet;
|
||||||
import static kotlin.collections.CollectionsKt.emptyList;
|
import static kotlin.collections.CollectionsKt.emptyList;
|
||||||
import static kotlin.collections.CollectionsKt.joinToString;
|
import static kotlin.collections.CollectionsKt.joinToString;
|
||||||
|
|
||||||
@@ -97,6 +98,12 @@ public class ErrorUtils {
|
|||||||
return emptyList();
|
return emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public Set<ModuleDescriptor> getAllImplementingModules() {
|
||||||
|
return emptySet();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <R, D> R accept(@NotNull DeclarationDescriptorVisitor<R, D> visitor, D data) {
|
public <R, D> R accept(@NotNull DeclarationDescriptorVisitor<R, D> visitor, D data) {
|
||||||
return null;
|
return null;
|
||||||
@@ -205,13 +212,13 @@ public class ErrorUtils {
|
|||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public Set<Name> getFunctionNames() {
|
public Set<Name> getFunctionNames() {
|
||||||
return Collections.emptySet();
|
return emptySet();
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public Set<Name> getVariableNames() {
|
public Set<Name> getVariableNames() {
|
||||||
return Collections.emptySet();
|
return emptySet();
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
Reference in New Issue
Block a user