Skip to content

Commit c6bfb02

Browse files
committed
Move JsAnalyzerFacade to ide-common module to enable its use in Dokka
1 parent 0a24bf1 commit c6bfb02

File tree

4 files changed

+39
-7
lines changed

4 files changed

+39
-7
lines changed

idea/ide-common/ide-common.iml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,7 @@
2121
<orderEntry type="library" name="intellij-core" level="project" />
2222
<orderEntry type="module" module-name="frontend.java" />
2323
<orderEntry type="module" module-name="util" />
24+
<orderEntry type="module" module-name="js.frontend" />
25+
<orderEntry type="module" module-name="js.serializer" />
2426
</component>
2527
</module>

idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/JsAnalyzerFacade.kt renamed to idea/ide-common/src/org/jetbrains/kotlin/caches/resolve/JsAnalyzerFacade.kt

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,9 @@
1616

1717
package org.jetbrains.kotlin.idea.caches.resolve
1818

19-
import com.intellij.openapi.roots.OrderRootType
2019
import com.intellij.psi.search.GlobalSearchScope
21-
import com.intellij.util.PathUtil
2220
import org.jetbrains.kotlin.analyzer.*
21+
import org.jetbrains.kotlin.caches.resolve.LibraryModuleInfo
2322
import org.jetbrains.kotlin.config.CompilerConfiguration
2423
import org.jetbrains.kotlin.config.languageVersionSettings
2524
import org.jetbrains.kotlin.container.get
@@ -28,7 +27,6 @@ import org.jetbrains.kotlin.descriptors.PackagePartProvider
2827
import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider
2928
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
3029
import org.jetbrains.kotlin.frontend.di.createContainerForLazyResolve
31-
import org.jetbrains.kotlin.idea.framework.KotlinJavaScriptLibraryDetectionUtil
3230
import org.jetbrains.kotlin.js.resolve.JsPlatform
3331
import org.jetbrains.kotlin.resolve.BindingTraceContext
3432
import org.jetbrains.kotlin.resolve.TargetEnvironment
@@ -73,9 +71,9 @@ object JsAnalyzerFacade : AnalyzerFacade<PlatformAnalysisParameters>() {
7371
)
7472
var packageFragmentProvider = container.get<ResolveSession>().packageFragmentProvider
7573

76-
if (moduleInfo is LibraryInfo && KotlinJavaScriptLibraryDetectionUtil.isKotlinJavaScriptLibrary(moduleInfo.library)) {
77-
val providers = moduleInfo.library.getFiles(OrderRootType.CLASSES)
78-
.flatMap { KotlinJavascriptMetadataUtils.loadMetadata(PathUtil.getLocalPath(it)!!) }
74+
if (moduleInfo is LibraryModuleInfo && moduleInfo.isJsLibrary()) {
75+
val providers = moduleInfo.getLibraryRoots()
76+
.flatMap { KotlinJavascriptMetadataUtils.loadMetadata(it) }
7977
.filter { it.version.isCompatible() }
8078
.mapNotNull {
8179
KotlinJavascriptSerializationUtil.readModule(
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
/*
2+
* Copyright 2010-2017 JetBrains s.r.o.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package org.jetbrains.kotlin.caches.resolve
18+
19+
import org.jetbrains.kotlin.analyzer.ModuleInfo
20+
21+
interface LibraryModuleInfo : ModuleInfo {
22+
fun isJsLibrary(): Boolean
23+
fun getLibraryRoots(): Collection<String>
24+
}

idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IdeaModuleInfos.kt

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,12 @@ import com.intellij.openapi.vfs.VirtualFile
2727
import com.intellij.psi.search.GlobalSearchScope
2828
import com.intellij.psi.util.CachedValueProvider
2929
import com.intellij.psi.util.CachedValuesManager
30+
import com.intellij.util.PathUtil
3031
import com.intellij.util.SmartList
3132
import org.jetbrains.kotlin.analyzer.ModuleInfo
33+
import org.jetbrains.kotlin.caches.resolve.LibraryModuleInfo
3234
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
35+
import org.jetbrains.kotlin.idea.framework.KotlinJavaScriptLibraryDetectionUtil
3336
import org.jetbrains.kotlin.idea.util.isInSourceContentWithoutInjected
3437
import org.jetbrains.kotlin.name.Name
3538
import org.jetbrains.kotlin.resolve.jvm.GlobalSearchScopeWithModuleSources
@@ -174,7 +177,7 @@ private class ModuleTestSourceScope(module: Module) : ModuleSourceScope(module)
174177
override fun toString() = "ModuleTestSourceScope($module)"
175178
}
176179

177-
open class LibraryInfo(val project: Project, val library: Library) : IdeaModuleInfo {
180+
open class LibraryInfo(val project: Project, val library: Library) : IdeaModuleInfo, LibraryModuleInfo {
178181
override val moduleOrigin: ModuleOrigin
179182
get() = ModuleOrigin.LIBRARY
180183

@@ -197,6 +200,11 @@ open class LibraryInfo(val project: Project, val library: Library) : IdeaModuleI
197200
return result.toList()
198201
}
199202

203+
override fun isJsLibrary(): Boolean = KotlinJavaScriptLibraryDetectionUtil.isKotlinJavaScriptLibrary(library)
204+
205+
override fun getLibraryRoots(): Collection<String> =
206+
library.getFiles(OrderRootType.CLASSES).map(PathUtil::getLocalPath).filterNotNull()
207+
200208
override fun toString() = "LibraryInfo(libraryName=${library.name})"
201209

202210
override fun equals(other: Any?): Boolean {

0 commit comments

Comments
 (0)