Skip to content

Commit

Permalink
Fix setup js deps (#2258)
Browse files Browse the repository at this point in the history
* Add checker of KLIB resolving

* Fix setup of JS deps in `AnalysisEnvironment`

* Update JS integration test
  • Loading branch information
vmishenev authored Dec 17, 2021
1 parent 702c102 commit 17cd417
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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"]}")
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,10 @@ class RootPackageClass {
val description = "I do live in the root package!"
}

fun RComponent<*, *>.params() = URLSearchParams()
fun RComponent<*, *>.params() = URLSearchParams()

fun test(list: MutableList<Int>) = "list"

@JsModule("is-sorted")
@JsNonModule
external fun <T> sorted(a: Array<T>): Boolean
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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 = "!/"

Expand Down Expand Up @@ -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)
}
}
}
}
}

Expand Down Expand Up @@ -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.
Expand All @@ -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)
}

/**
Expand All @@ -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)
}

/**
Expand Down

0 comments on commit 17cd417

Please sign in to comment.