aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--integration-tests/gradle/projects/it-js-ir-0/build.gradle.kts1
-rw-r--r--integration-tests/gradle/projects/it-js-ir-0/src/main/kotlin/RootPackageClass.kt8
-rw-r--r--kotlin-analysis/src/main/kotlin/org/jetbrains/dokka/analysis/AnalysisEnvironment.kt53
3 files changed, 41 insertions, 21 deletions
diff --git a/integration-tests/gradle/projects/it-js-ir-0/build.gradle.kts b/integration-tests/gradle/projects/it-js-ir-0/build.gradle.kts
index 39c58305..6f949766 100644
--- a/integration-tests/gradle/projects/it-js-ir-0/build.gradle.kts
+++ b/integration-tests/gradle/projects/it-js-ir-0/build.gradle.kts
@@ -14,5 +14,6 @@ kotlin {
dependencies {
implementation(kotlin("stdlib"))
+ implementation(npm("is-sorted", "1.0.5"))
implementation("org.jetbrains.kotlin-wrappers:kotlin-react-router-dom:${properties["dokka_it_react_kotlin_version"]}")
} \ No newline at end of file
diff --git a/integration-tests/gradle/projects/it-js-ir-0/src/main/kotlin/RootPackageClass.kt b/integration-tests/gradle/projects/it-js-ir-0/src/main/kotlin/RootPackageClass.kt
index 222ecb7e..b93e180e 100644
--- a/integration-tests/gradle/projects/it-js-ir-0/src/main/kotlin/RootPackageClass.kt
+++ b/integration-tests/gradle/projects/it-js-ir-0/src/main/kotlin/RootPackageClass.kt
@@ -12,4 +12,10 @@ class RootPackageClass {
val description = "I do live in the root package!"
}
-fun RComponent<*, *>.params() = URLSearchParams() \ No newline at end of file
+fun RComponent<*, *>.params() = URLSearchParams()
+
+fun test(list: MutableList<Int>) = "list"
+
+@JsModule("is-sorted")
+@JsNonModule
+external fun <T> sorted(a: Array<T>): Boolean \ No newline at end of file
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)
}
/**