Recreate module descriptors for affected modules only on a change
This commit is contained in:
@@ -48,4 +48,6 @@ interface ModuleDescriptor : DeclarationDescriptor {
|
||||
class Capability<T>(val name: String) {
|
||||
override fun toString() = name
|
||||
}
|
||||
|
||||
val isValid: Boolean
|
||||
}
|
||||
|
||||
@@ -47,6 +47,14 @@ class ModuleDescriptorImpl @JvmOverloads constructor(
|
||||
private var dependencies: ModuleDependencies? = null
|
||||
private var packageFragmentProviderForModuleContent: PackageFragmentProvider? = null
|
||||
|
||||
override var isValid: Boolean = true
|
||||
|
||||
private fun assertValid() {
|
||||
if (!isValid) {
|
||||
throw IllegalStateException("Accessing invalid module descriptor $this")
|
||||
}
|
||||
}
|
||||
|
||||
private val packages = storageManager.createMemoizedFunction<FqName, PackageViewDescriptor> {
|
||||
fqName: FqName -> LazyPackageViewDescriptorImpl(this, fqName, storageManager)
|
||||
}
|
||||
@@ -60,9 +68,13 @@ class ModuleDescriptorImpl @JvmOverloads constructor(
|
||||
override val allImplementingModules: Set<ModuleDescriptor>
|
||||
get() = this.dependencies.sure { "Dependencies of module $id were not set" }.allImplementingModules
|
||||
|
||||
override fun getPackage(fqName: FqName): PackageViewDescriptor = packages(fqName)
|
||||
override fun getPackage(fqName: FqName): PackageViewDescriptor {
|
||||
assertValid()
|
||||
return packages(fqName)
|
||||
}
|
||||
|
||||
override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection<FqName> {
|
||||
assertValid()
|
||||
return packageFragmentProvider.getSubPackagesOf(fqName, nameFilter)
|
||||
}
|
||||
|
||||
@@ -117,7 +129,10 @@ class ModuleDescriptorImpl @JvmOverloads constructor(
|
||||
}
|
||||
|
||||
val packageFragmentProvider: PackageFragmentProvider
|
||||
get() = packageFragmentProviderForWholeModuleWithDependencies
|
||||
get() {
|
||||
assertValid()
|
||||
return packageFragmentProviderForWholeModuleWithDependencies
|
||||
}
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
override fun <T> getCapability(capability: ModuleDescriptor.Capability<T>) = capabilities[capability] as? T
|
||||
|
||||
@@ -122,6 +122,11 @@ public class ErrorUtils {
|
||||
public KotlinBuiltIns getBuiltIns() {
|
||||
return DefaultBuiltIns.getInstance();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isValid() {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user