KaDanglingFileModule¶
@SubclassOptInRequired(markerClass = [KaPlatformInterface::class])
interface KaDanglingFileModule : KaModule
A module for a dangling file. Such files are usually temporary and are stored in-memory.
Dangling files may be created for various purposes, such as: a code fragment for the evaluator, a sandbox for testing code modification applicability, and so on.
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.
baseContextModule¶
The non-dangling module that represents the base context of the KaDanglingFileModule, skipping any context modules which are themselves KaDanglingFileModules.
When a dangling file is a code fragment, the dangling file module may itself have a dangling file module as a context. baseContextModule can be used to find the non-dangling context at the base of the chain.
See also
baseContextModuleOrSelf¶
The KaModule's baseContextModule, or the module itself if it's not a KaDanglingFileModule.
compilerPluginGeneratedDeclarations¶
context(session: KaSession)
val KaModule.compilerPluginGeneratedDeclarations: KaCompilerPluginGeneratedDeclarations
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.
contextModule¶
abstract val contextModule: KaModule
The module against which files are analyzed.
directDependsOnDependencies¶
abstract val directDependsOnDependencies: List<KaModule>
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¶
abstract val directFriendDependencies: List<KaModule>
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¶
abstract val directRegularDependencies: List<KaModule>
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.
files¶
All dangling files analyzed together, as a single module.
Throws an exception when the files are no longer valid (see isValid).
isCodeFragment¶
abstract val isCodeFragment: Boolean
Whether at least one of the files is a code fragment.
This is useful to recognize code fragments when their PSI was collected.
isResolvable¶
val KaModule.isResolvable: Boolean
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.
isStable¶
Whether the dangling file module supports partial invalidation on PSI modifications. The sessions for such modules can be cached for a longer time.
For a dangling file module to be stable, its context module must also be stable. Otherwise, cache inconsistencies may occur.
In more detail, caches for unstable dangling file modules are invalidated after any PSI modification, while stable dangling file modules react to modification events. A stable module with an unstable context risks cache inconsistencies, as the context module's invalidation scope is much broader.
isValid¶
moduleDescription¶
open override 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.
resolutionMode¶
abstract val resolutionMode: KaDanglingFileResolutionMode
The mode which determines how references to non-local declarations in the dangling file are resolved.
stableModuleName¶
open val stableModuleName: String?
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¶
abstract val transitiveDependsOnDependencies: List<KaModule>
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¶
A list of all modules that the given module directly depends on.
See also
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