Skip to content

Commit edd5195

Browse files
authored
Avoid calling analyze on built-ins (#3200)
Otherwise, `Caused by: org.jetbrains.kotlin.utils.exceptions.KotlinIllegalArgumentExceptionWithAttachments: Unexpected class org.jetbrains.kotlin.analysis.project.structure.KtBuiltinsModule at org.jetbrains.kotlin.analysis.low.level.api.fir.util.ExceptionUtilsKt.errorWithFirSpecificEntries(exceptionUtils.kt:50)`
1 parent 562a595 commit edd5195

File tree

2 files changed

+11
-5
lines changed

2 files changed

+11
-5
lines changed

subprojects/analysis-kotlin-symbols/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/symbols/plugin/SymbolsAnalysisPlugin.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ public class SymbolsAnalysisPlugin : DokkaPlugin() {
9393
plugin<InternalKotlinAnalysisPlugin>().documentableSourceLanguageParser providing { KotlinDocumentableSourceLanguageParser() }
9494
}
9595
internal val symbolFullClassHierarchyBuilder by extending {
96-
plugin<InternalKotlinAnalysisPlugin>().fullClassHierarchyBuilder providing { SymbolFullClassHierarchyBuilder() }
96+
plugin<InternalKotlinAnalysisPlugin>().fullClassHierarchyBuilder providing ::SymbolFullClassHierarchyBuilder
9797
}
9898

9999
internal val symbolSyntheticDocumentableDetector by extending {

subprojects/analysis-kotlin-symbols/src/main/kotlin/org/jetbrains/dokka/analysis/kotlin/symbols/services/SymbolFullClassHierarchyBuilder.kt

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,18 @@ import org.jetbrains.kotlin.analysis.api.types.KtType
1616
import org.jetbrains.dokka.analysis.kotlin.internal.ClassHierarchy
1717
import org.jetbrains.dokka.analysis.kotlin.internal.FullClassHierarchyBuilder
1818
import org.jetbrains.dokka.analysis.kotlin.internal.Supertypes
19+
import org.jetbrains.dokka.analysis.kotlin.symbols.plugin.SymbolsAnalysisPlugin
20+
import org.jetbrains.dokka.plugability.DokkaContext
21+
import org.jetbrains.dokka.plugability.plugin
22+
import org.jetbrains.dokka.plugability.querySingle
1923
import org.jetbrains.kotlin.psi.KtClassOrObject
2024
import java.util.concurrent.ConcurrentHashMap
2125

2226

23-
internal class SymbolFullClassHierarchyBuilder : FullClassHierarchyBuilder {
24-
override suspend fun build(module: DModule): ClassHierarchy {
27+
internal class SymbolFullClassHierarchyBuilder(val context: DokkaContext) : FullClassHierarchyBuilder {
28+
private val kotlinAnalysis = context.plugin<SymbolsAnalysisPlugin>().querySingle { kotlinAnalysis }
29+
30+
override suspend fun build(module: DModule): ClassHierarchy {
2531
val map = module.sourceSets.associateWith { ConcurrentHashMap<DRI, List<DRI>>() }
2632
module.packages.forEach { visitDocumentable(it, map) }
2733
return map
@@ -41,7 +47,7 @@ internal class SymbolFullClassHierarchyBuilder : FullClassHierarchyBuilder {
4147

4248
if (supersMap[dri] == null) {
4349
supersMap[dri] = supertypesDriWithKType.map { it.first }
44-
supertypesDriWithKType.forEach{ collectSupertypesFromKtType(it, supersMap) }
50+
supertypesDriWithKType.forEach { collectSupertypesFromKtType(it, supersMap) }
4551
}
4652
}
4753

@@ -73,7 +79,7 @@ internal class SymbolFullClassHierarchyBuilder : FullClassHierarchyBuilder {
7379
documentable.sources.forEach { (sourceSet, source) ->
7480
if (source is KtPsiDocumentableSource) {
7581
(source.psi as? KtClassOrObject)?.let { psi ->
76-
analyze(psi) {
82+
analyze(kotlinAnalysis[sourceSet].mainModule) {
7783
val type = psi.getNamedClassOrObjectSymbol()?.buildSelfClassType() ?: return@analyze
7884
hierarchy[sourceSet]?.let { collectSupertypesFromKtType(documentable.dri to type, it) }
7985
}

0 commit comments

Comments
 (0)