aboutsummaryrefslogtreecommitdiff
path: root/kotlin-analysis
diff options
context:
space:
mode:
Diffstat (limited to 'kotlin-analysis')
-rw-r--r--kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/AnalysisEnvironment.kt53
1 files changed, 33 insertions, 20 deletions
diff --git a/kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/AnalysisEnvironment.kt b/kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/AnalysisEnvironment.kt
index e8db48a2..909bc0c9 100644
--- a/kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/AnalysisEnvironment.kt
+++ b/kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/AnalysisEnvironment.kt
@@ -30,6 +30,7 @@ import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
import org.jetbrains.kotlin.cli.common.config.ContentRoot
import org.jetbrains.kotlin.cli.common.config.KotlinSourceRoot
import org.jetbrains.kotlin.cli.common.config.addKotlinSourceRoot
+import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
import org.jetbrains.kotlin.cli.jvm.compiler.JvmPackagePartProvider
@@ -74,7 +75,7 @@ import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices
import org.jetbrains.kotlin.resolve.konan.platform.NativePlatformAnalyzerServices
import java.io.File
import org.jetbrains.kotlin.konan.file.File as KFile
-
+import org.jetbrains.kotlin.library.KLIB_FILE_EXTENSION
const val JAR_SEPARATOR = "!/"
@@ -289,23 +290,32 @@ class AnalysisEnvironment(val messageCollector: MessageCollector, val analysisPl
val analyzerServices = analysisPlatform.analyzerServices()
return buildMap {
- classpath.forEach { libraryFile ->
- val kotlinLibrary = resolveSingleFileKlib(
- libraryFile = KFile(libraryFile.absolutePath),
- strategy = ToolingSingleFileKlibResolveStrategy
- )
-
- if (kotlinLibrary.getCompatibilityInfo().isCompatible) {
- // exists, is KLIB, has compatible format
- put(
- libraryFile.absolutePath,
- if (analysisPlatform == Platform.native)
- DokkaNativeKlibLibraryInfo(kotlinLibrary, analyzerServices, dependencyResolver)
- else
- DokkaJsKlibLibraryInfo(kotlinLibrary, analyzerServices, dependencyResolver)
- )
+ classpath
+ .filter { it.isDirectory || (it.extension == "jar" || it.extension == KLIB_FILE_EXTENSION) }
+ .forEach { libraryFile ->
+ try {
+ val kotlinLibrary = resolveSingleFileKlib(
+ libraryFile = KFile(libraryFile.absolutePath),
+ strategy = ToolingSingleFileKlibResolveStrategy
+ )
+
+ if (kotlinLibrary.getCompatibilityInfo().isCompatible) {
+ // exists, is KLIB, has compatible format
+ put(
+ libraryFile.absolutePath,
+ if (analysisPlatform == Platform.native) DokkaNativeKlibLibraryInfo(
+ kotlinLibrary,
+ analyzerServices,
+ dependencyResolver
+ )
+ else DokkaJsKlibLibraryInfo(kotlinLibrary, analyzerServices, dependencyResolver)
+ )
+ }
+ } catch (e: Throwable) {
+ configuration.getNotNull(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY)
+ .report(CompilerMessageSeverity.WARNING, "Can not resolve KLIB. " + e.message)
+ }
}
- }
}
}
@@ -487,7 +497,8 @@ class AnalysisEnvironment(val messageCollector: MessageCollector, val analysisPl
* Classpath for this environment.
*/
val classpath: List<File>
- get() = configuration.jvmClasspathRoots
+ get() = configuration.jvmClasspathRoots + configuration.getList(JSConfigurationKeys.LIBRARIES)
+ .mapNotNull { File(it) }
/**
* Adds list of paths to classpath.
@@ -496,8 +507,9 @@ class AnalysisEnvironment(val messageCollector: MessageCollector, val analysisPl
fun addClasspath(paths: List<File>) {
if (analysisPlatform == Platform.js) {
configuration.addAll(JSConfigurationKeys.LIBRARIES, paths.map { it.absolutePath })
+ } else {
+ configuration.addJvmClasspathRoots(paths)
}
- configuration.addJvmClasspathRoots(paths)
}
/**
@@ -507,8 +519,9 @@ class AnalysisEnvironment(val messageCollector: MessageCollector, val analysisPl
fun addClasspath(path: File) {
if (analysisPlatform == Platform.js) {
configuration.add(JSConfigurationKeys.LIBRARIES, path.absolutePath)
+ } else {
+ configuration.addJvmClasspathRoot(path)
}
- configuration.addJvmClasspathRoot(path)
}
/**