Skip to content

KaLibraryFallbackDependenciesModule

A module which stands in for the unknown dependencies of a KaLibraryModule and KaLibrarySourceModule.

Files in library (source) modules can be resolved with the Analysis API. From such a resolvable point of view, the Analysis API needs to find symbols which are defined in the library's dependencies. However, the dependencies with which a library was originally compiled are often not known.

As a replacement for precise dependencies, fallback dependencies cover all libraries in the project except for the specific dependentLibrary. This allows resolving symbols defined in the dependencies of the library. In most cases, while not perfectly precise, this approach resolves the correct symbols.

The fallback dependencies module's baseContentScope should be the scope of the binary files of all libraries excluding dependentLibrary. Source files must not be included. Additionally, the module should have the same targetPlatform as dependentLibrary.

KaLibraryFallbackDependenciesModule is not resolvable and thus cannot be a use-site module of an analyze call. It should not be returned by KaModuleProvider.getModule.

The content of the fallback dependencies module is filtered by the target platform in exactly the same way as KaLibraryModules. Please see the KDoc of KaLibraryModule for more information.

Properties

baseContentScope

abstract val baseContentScope: GlobalSearchScope

A base content scope of the module, which is not yet refined by extension and restriction scopes provided by KotlinContentScopeRefiner.

Note that baseContentScope doesn't represent the actual content scope of the current module. To get a content scope of the module, contentScope should be used instead.

baseContextModuleOrSelf

compilerPluginGeneratedDeclarations

Declarations generated by compiler plugins for this module, not including the generated declarations for dependencies of this module.

contentScope

abstract val contentScope: GlobalSearchScope

Represents the content scope of a current module, i.e., a GlobalSearchScope which determines all the files that are contained in the module.

This scope should be lazily built from baseContentScope using KotlinContentScopeRefiner extension points.

dependentLibrary

The KaLibraryModule which relies on these fallback dependencies.

Both the dependentLibrary and its KaLibrarySourceModule may depend on this same fallback dependencies module. There is no separate fallback dependencies module for the library source module.

directDependsOnDependencies

The module's dependsOn dependencies.

A dependsOn dependency expresses that the current module can provide actual declarations for expect declarations from the dependency module, as well as see internal symbols of the dependency module. As such, dependsOn dependencies are a Kotlin Multiplatform concept.

dependsOn dependencies in general are transitive, but the resulting list is not a transitive closure. To get all transitive dependsOn dependencies, transitiveDependsOnDependencies should be used. The list also does not include the current module.

directFriendDependencies

The module's friend dependencies. Friend dependencies allow the current module to use internal symbols from the dependency module.

The resulting list is not transitive and does not include the current module.

directRegularDependencies

The module's regular dependencies. Regular dependencies allow the current module to use symbols from the dependency module.

The resulting list is not transitive and does not include the current module.

isResolvable

Whether the given KaModule can be the use-site module of an analyze call. A module which is not resolvable will be rejected by analyze with an exception.

All modules returned by KaModuleProvider.getModule are guaranteed to be resolvable. By extension, all possible use-site PsiElements are also part of resolvable modules. As such, module resolvability is normally not a concern of an Analysis API user.

moduleDescription

abstract val moduleDescription: String

A human-readable description of the module, such as "main sources of module 'analysis-api'".

project

abstract val project: Project

The Project to which the module belongs.

All the module's dependencies should belong to the same Project as the module itself.

stableModuleName

A stable binary name of module from the Kotlin point of view. Having a correct module name is critical for internal-visibility mangling.

NOTE: stableModuleName will be removed in the future and replaced with a platform interface service.

targetPlatform

abstract val targetPlatform: TargetPlatform

A platform which the module represents (e.g, JVM, JS, Native).

See also

  • TargetPlatform

transitiveDependsOnDependencies

A list of directDependsOnDependencies and all of their own dependsOn dependencies (directly and indirectly), sorted topologically with the nearest dependencies first in the list. The list does not include the current module.

Functions

allDirectDependencies

allDirectDependenciesOfType

A list of all modules of type M that the given module directly depends on.

See also

directDependsOnDependenciesOfType

A list of all modules of type M that the given module directly depends on with a depends-on dependency.

See also

directFriendDependenciesOfType

A list of all modules of type M that the given module directly depends on with a friend dependency.

See also

directRegularDependenciesOfType

A list of all modules of type M that the given module directly depends on with a regular dependency.

See also