aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/src/main/kotlin/model/Documentable.kt31
-rw-r--r--core/src/main/kotlin/model/documentableProperties.kt4
-rw-r--r--core/src/main/kotlin/transformers/documentation/PreMergeDocumentableTransformer.kt4
-rw-r--r--core/src/test/kotlin/model/DocumentableTest.kt5
-rw-r--r--plugins/base/src/main/kotlin/transformers/documentables/ActualTypealiasAdder.kt4
-rw-r--r--plugins/base/src/main/kotlin/transformers/documentables/DefaultDocumentableMerger.kt7
-rw-r--r--plugins/base/src/main/kotlin/transformers/documentables/DeprecatedDocumentableFilterTransformer.kt144
-rw-r--r--plugins/base/src/main/kotlin/transformers/documentables/DocumentableVisibilityFilterTransformer.kt179
-rw-r--r--plugins/base/src/main/kotlin/transformers/documentables/ReportUndocumentedTransformer.kt2
-rw-r--r--plugins/base/src/main/kotlin/transformers/documentables/SuppressedDocumentableFilterTransformer.kt2
-rw-r--r--plugins/base/src/main/kotlin/transformers/pages/sourcelinks/SourceLinksTransformer.kt6
-rw-r--r--plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt37
-rw-r--r--plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt6
-rw-r--r--plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/pages/JavadocPageNodes.kt6
-rw-r--r--plugins/kotlin-as-java/src/main/kotlin/converters/KotlinToJavaConverter.kt6
15 files changed, 183 insertions, 260 deletions
diff --git a/core/src/main/kotlin/model/Documentable.kt b/core/src/main/kotlin/model/Documentable.kt
index 0ffc2f84..2efaf539 100644
--- a/core/src/main/kotlin/model/Documentable.kt
+++ b/core/src/main/kotlin/model/Documentable.kt
@@ -26,7 +26,7 @@ abstract class Documentable : WithChildren<Documentable> {
typealias SourceSetDependent<T> = Map<DokkaSourceSet, T>
-interface WithExpectActual {
+interface WithSources {
val sources: SourceSetDependent<DocumentableSource>
}
@@ -79,11 +79,15 @@ interface WithSupertypes {
val supertypes: SourceSetDependent<List<TypeConstructorWithKind>>
}
-interface Callable : WithVisibility, WithType, WithAbstraction, WithExpectActual {
+interface WithIsExpectActual {
+ val isExpectActual: Boolean
+}
+
+interface Callable : WithVisibility, WithType, WithAbstraction, WithSources {
val receiver: DParameter?
}
-sealed class DClasslike : Documentable(), WithScope, WithVisibility, WithExpectActual
+sealed class DClasslike : Documentable(), WithScope, WithVisibility, WithSources, WithIsExpectActual
data class DModule(
override val name: String,
@@ -143,9 +147,10 @@ data class DClass(
override val expectPresentInSet: DokkaSourceSet?,
override val modifier: SourceSetDependent<Modifier>,
override val sourceSets: Set<DokkaSourceSet>,
+ override val isExpectActual: Boolean,
override val extra: PropertyContainer<DClass> = PropertyContainer.empty()
) : DClasslike(), WithAbstraction, WithCompanion, WithConstructors, WithGenerics, WithSupertypes,
- WithExtraProperties<DClass> {
+ WithExtraProperties<DClass>, WithIsExpectActual {
override val children: List<Documentable>
get() = (functions + properties + classlikes + constructors)
@@ -168,8 +173,9 @@ data class DEnum(
override val constructors: List<DFunction>,
override val supertypes: SourceSetDependent<List<TypeConstructorWithKind>>,
override val sourceSets: Set<DokkaSourceSet>,
+ override val isExpectActual: Boolean,
override val extra: PropertyContainer<DEnum> = PropertyContainer.empty()
-) : DClasslike(), WithCompanion, WithConstructors, WithSupertypes, WithExtraProperties<DEnum> {
+) : DClasslike(), WithCompanion, WithConstructors, WithSupertypes, WithExtraProperties<DEnum>, WithIsExpectActual {
override val children: List<Documentable>
get() = (entries + functions + properties + classlikes + constructors)
@@ -207,8 +213,9 @@ data class DFunction(
override val receiver: DParameter?,
override val modifier: SourceSetDependent<Modifier>,
override val sourceSets: Set<DokkaSourceSet>,
+ override val isExpectActual: Boolean,
override val extra: PropertyContainer<DFunction> = PropertyContainer.empty()
-) : Documentable(), Callable, WithGenerics, WithExtraProperties<DFunction> {
+) : Documentable(), Callable, WithGenerics, WithExtraProperties<DFunction>, WithIsExpectActual {
override val children: List<Documentable>
get() = parameters
@@ -229,8 +236,9 @@ data class DInterface(
override val generics: List<DTypeParameter>,
override val supertypes: SourceSetDependent<List<TypeConstructorWithKind>>,
override val sourceSets: Set<DokkaSourceSet>,
+ override val isExpectActual: Boolean,
override val extra: PropertyContainer<DInterface> = PropertyContainer.empty()
-) : DClasslike(), WithCompanion, WithGenerics, WithSupertypes, WithExtraProperties<DInterface> {
+) : DClasslike(), WithCompanion, WithGenerics, WithSupertypes, WithExtraProperties<DInterface>, WithIsExpectActual {
override val children: List<Documentable>
get() = (functions + properties + classlikes)
@@ -249,8 +257,9 @@ data class DObject(
override val visibility: SourceSetDependent<Visibility>,
override val supertypes: SourceSetDependent<List<TypeConstructorWithKind>>,
override val sourceSets: Set<DokkaSourceSet>,
+ override val isExpectActual: Boolean,
override val extra: PropertyContainer<DObject> = PropertyContainer.empty()
-) : DClasslike(), WithSupertypes, WithExtraProperties<DObject> {
+) : DClasslike(), WithSupertypes, WithExtraProperties<DObject>, WithIsExpectActual {
override val children: List<Documentable>
get() = (functions + properties + classlikes)
@@ -271,8 +280,9 @@ data class DAnnotation(
override val constructors: List<DFunction>,
override val generics: List<DTypeParameter>,
override val sourceSets: Set<DokkaSourceSet>,
+ override val isExpectActual: Boolean,
override val extra: PropertyContainer<DAnnotation> = PropertyContainer.empty()
-) : DClasslike(), WithCompanion, WithConstructors, WithExtraProperties<DAnnotation>, WithGenerics {
+) : DClasslike(), WithCompanion, WithConstructors, WithExtraProperties<DAnnotation>, WithGenerics, WithIsExpectActual {
override val children: List<Documentable>
get() = (functions + properties + classlikes + constructors)
@@ -293,8 +303,9 @@ data class DProperty(
override val modifier: SourceSetDependent<Modifier>,
override val sourceSets: Set<DokkaSourceSet>,
override val generics: List<DTypeParameter>,
+ override val isExpectActual: Boolean,
override val extra: PropertyContainer<DProperty> = PropertyContainer.empty()
-) : Documentable(), Callable, WithExtraProperties<DProperty>, WithGenerics {
+) : Documentable(), Callable, WithExtraProperties<DProperty>, WithGenerics, WithIsExpectActual {
override val children: List<Nothing>
get() = emptyList()
diff --git a/core/src/main/kotlin/model/documentableProperties.kt b/core/src/main/kotlin/model/documentableProperties.kt
index 823b88a0..2845c7fc 100644
--- a/core/src/main/kotlin/model/documentableProperties.kt
+++ b/core/src/main/kotlin/model/documentableProperties.kt
@@ -25,7 +25,3 @@ data class ImplementedInterfaces(val interfaces: SourceSetDependent<List<TypeCon
override val key: ExtraProperty.Key<Documentable, *> = ImplementedInterfaces
}
-
-object IsExpectActual: ExtraProperty<WithExpectActual>, ExtraProperty.Key<WithExpectActual, IsExpectActual> {
- override val key: ExtraProperty.Key<WithExpectActual, IsExpectActual> = this
-} \ No newline at end of file
diff --git a/core/src/main/kotlin/transformers/documentation/PreMergeDocumentableTransformer.kt b/core/src/main/kotlin/transformers/documentation/PreMergeDocumentableTransformer.kt
index df568c7e..60769e9b 100644
--- a/core/src/main/kotlin/transformers/documentation/PreMergeDocumentableTransformer.kt
+++ b/core/src/main/kotlin/transformers/documentation/PreMergeDocumentableTransformer.kt
@@ -4,7 +4,7 @@ import org.jetbrains.dokka.DokkaConfiguration.DokkaSourceSet
import org.jetbrains.dokka.DokkaConfiguration.PackageOptions
import org.jetbrains.dokka.model.DModule
import org.jetbrains.dokka.model.Documentable
-import org.jetbrains.dokka.model.WithExpectActual
+import org.jetbrains.dokka.model.WithSources
interface PreMergeDocumentableTransformer {
operator fun invoke(modules: List<DModule>): List<DModule>
@@ -32,5 +32,5 @@ fun PreMergeDocumentableTransformer.perPackageOptions(documentable: Documentable
.firstOrNull { packageOptions -> packageName.startsWith(packageOptions.prefix) }
}
-fun <T> PreMergeDocumentableTransformer.source(documentable: T) where T : Documentable, T : WithExpectActual =
+fun <T> PreMergeDocumentableTransformer.source(documentable: T) where T : Documentable, T : WithSources =
checkNotNull(documentable.sources[sourceSet(documentable)])
diff --git a/core/src/test/kotlin/model/DocumentableTest.kt b/core/src/test/kotlin/model/DocumentableTest.kt
index a801d549..0652831c 100644
--- a/core/src/test/kotlin/model/DocumentableTest.kt
+++ b/core/src/test/kotlin/model/DocumentableTest.kt
@@ -26,6 +26,7 @@ class DocumentableTest {
sources = emptyMap(),
sourceSets = emptySet(),
supertypes = emptyMap(),
+ isExpectActual = false,
functions = listOf(
DFunction(
dri = DRI(),
@@ -41,6 +42,7 @@ class DocumentableTest {
type = Void,
receiver = null,
isConstructor = false,
+ isExpectActual = false,
parameters = listOf(
DParameter(
dri = DRI(),
@@ -76,6 +78,7 @@ class DocumentableTest {
type = Void,
receiver = null,
isConstructor = false,
+ isExpectActual = false,
parameters = listOf(
DParameter(
dri = DRI(),
@@ -105,4 +108,4 @@ class DocumentableTest {
dClass.withDescendants().map { it.name }.toList()
)
}
-} \ No newline at end of file
+}
diff --git a/plugins/base/src/main/kotlin/transformers/documentables/ActualTypealiasAdder.kt b/plugins/base/src/main/kotlin/transformers/documentables/ActualTypealiasAdder.kt
index 1b65fc22..1fb7b960 100644
--- a/plugins/base/src/main/kotlin/transformers/documentables/ActualTypealiasAdder.kt
+++ b/plugins/base/src/main/kotlin/transformers/documentables/ActualTypealiasAdder.kt
@@ -62,7 +62,7 @@ class ActualTypealiasAdder : DocumentableTransformer {
private fun <T> addActualTypeAlias(
elements: Iterable<T>,
typealiases: Map<DRI, DTypeAlias>
- ): List<T> where T : DClasslike, T : WithExtraProperties<T>, T : WithExpectActual =
+ ): List<T> where T : DClasslike, T : WithExtraProperties<T>, T : WithSources =
elements.map { element ->
if (element.expectPresentInSet != null) {
typealiases[element.dri]?.let { ta ->
@@ -81,4 +81,4 @@ class ActualTypealiasAdder : DocumentableTransformer {
element
}
}
-} \ No newline at end of file
+}
diff --git a/plugins/base/src/main/kotlin/transformers/documentables/DefaultDocumentableMerger.kt b/plugins/base/src/main/kotlin/transformers/documentables/DefaultDocumentableMerger.kt
index 6e288c01..a7cd171e 100644
--- a/plugins/base/src/main/kotlin/transformers/documentables/DefaultDocumentableMerger.kt
+++ b/plugins/base/src/main/kotlin/transformers/documentables/DefaultDocumentableMerger.kt
@@ -79,10 +79,7 @@ internal class DefaultDocumentableMerger(val context: DokkaContext) : Documentab
private fun <T> mergeExpectActual(
elements: List<T>,
reducer: (T, T) -> T
- ): List<T> where T : Documentable, T : WithExpectActual {
-
- fun T.isExpectActual(): Boolean =
- this.safeAs<WithExtraProperties<T>>().let { it != null && it.extra[IsExpectActual] != null }
+ ): List<T> where T : Documentable, T : WithSources {
fun mergeClashingElements(elements: List<Pair<T, Set<DokkaConfiguration.DokkaSourceSet>>>): List<T> =
elements.groupBy { it.first.name }.values.flatMap { listOfDocumentableToSSIds ->
@@ -147,7 +144,7 @@ internal class DefaultDocumentableMerger(val context: DokkaContext) : Documentab
return elements.partition {
- it.isExpectActual()
+ (it as? WithIsExpectActual)?.isExpectActual ?: false
}.let { (expectActuals, notExpectActuals) ->
notExpectActuals.map { it to it.sourceSets }
.groupBy { it.first.dri }.values.flatMap(::mergeClashingElements) +
diff --git a/plugins/base/src/main/kotlin/transformers/documentables/DeprecatedDocumentableFilterTransformer.kt b/plugins/base/src/main/kotlin/transformers/documentables/DeprecatedDocumentableFilterTransformer.kt
index 6a6231c5..aab7c6ba 100644
--- a/plugins/base/src/main/kotlin/transformers/documentables/DeprecatedDocumentableFilterTransformer.kt
+++ b/plugins/base/src/main/kotlin/transformers/documentables/DeprecatedDocumentableFilterTransformer.kt
@@ -35,12 +35,8 @@ class DeprecatedDocumentableFilterTransformer(val context: DokkaContext) : PreMe
filterPackages(original.packages).let { (modified, packages) ->
if (!modified) original
else
- DModule(
- original.name,
- packages = packages,
- documentation = original.documentation,
- sourceSets = original.sourceSets,
- extra = original.extra
+ original.copy(
+ packages = packages
)
}
@@ -65,16 +61,10 @@ class DeprecatedDocumentableFilterTransformer(val context: DokkaContext) : PreMe
!modified -> pckg
else -> {
packagesListChanged = true
- DPackage(
- pckg.dri,
- functions,
- properties,
- classlikes,
- pckg.typealiases,
- pckg.documentation,
- pckg.expectPresentInSet,
- pckg.sourceSets,
- pckg.extra
+ pckg.copy(
+ functions = functions,
+ properties = properties,
+ classlikes = classlikes
)
}
}
@@ -98,16 +88,10 @@ class DeprecatedDocumentableFilterTransformer(val context: DokkaContext) : PreMe
private fun filterEnumEntries(entries: List<DEnumEntry>) =
entries.filter { it.isAllowedInPackage() }.map { entry ->
- DEnumEntry(
- entry.dri,
- entry.name,
- entry.documentation,
- entry.expectPresentInSet,
- filterFunctions(entry.functions).second,
- filterProperties(entry.properties).second,
- filterClasslikes(entry.classlikes).second,
- entry.sourceSets,
- entry.extra
+ entry.copy(
+ functions = filterFunctions(entry.functions).second,
+ properties = filterProperties(entry.properties).second,
+ classlikes = filterClasslikes(entry.classlikes).second,
)
}
@@ -125,122 +109,70 @@ class DeprecatedDocumentableFilterTransformer(val context: DokkaContext) : PreMe
}
}.map { classlike ->
fun helper(): DClasslike = when (classlike) {
- is DClass -> DClass(
- classlike.dri,
- classlike.name,
- filterFunctions(classlike.constructors).let {
+ is DClass -> classlike.copy(
+ constructors = filterFunctions(classlike.constructors).let {
modified = modified || it.first; it.second
},
- filterFunctions(classlike.functions).let {
+ functions = filterFunctions(classlike.functions).let {
modified = modified || it.first; it.second
},
- filterProperties(classlike.properties).let {
+ properties = filterProperties(classlike.properties).let {
modified = modified || it.first; it.second
},
- filterClasslikes(classlike.classlikes).let {
+ classlikes = filterClasslikes(classlike.classlikes).let {
modified = modified || it.first; it.second
- },
- classlike.sources,
- classlike.visibility,
- classlike.companion,
- classlike.generics,
- classlike.supertypes,
- classlike.documentation,
- classlike.expectPresentInSet,
- classlike.modifier,
- classlike.sourceSets,
- classlike.extra
+ }
)
- is DAnnotation -> DAnnotation(
- classlike.name,
- classlike.dri,
- classlike.documentation,
- classlike.expectPresentInSet,
- classlike.sources,
- filterFunctions(classlike.functions).let {
+ is DAnnotation -> classlike.copy(
+ functions = filterFunctions(classlike.functions).let {
modified = modified || it.first; it.second
},
- filterProperties(classlike.properties).let {
+ properties = filterProperties(classlike.properties).let {
modified = modified || it.first; it.second
},
- filterClasslikes(classlike.classlikes).let {
+ classlikes = filterClasslikes(classlike.classlikes).let {
modified = modified || it.first; it.second
},
- classlike.visibility,
- classlike.companion,
- filterFunctions(classlike.constructors).let {
+ constructors = filterFunctions(classlike.constructors).let {
modified = modified || it.first; it.second
- },
- classlike.generics,
- classlike.sourceSets,
- classlike.extra
+ }
)
- is DEnum -> DEnum(
- classlike.dri,
- classlike.name,
- filterEnumEntries(classlike.entries),
- classlike.documentation,
- classlike.expectPresentInSet,
- classlike.sources,
- filterFunctions(classlike.functions).let {
+ is DEnum -> classlike.copy(
+ entries = filterEnumEntries(classlike.entries),
+ functions = filterFunctions(classlike.functions).let {
modified = modified || it.first; it.second
},
- filterProperties(classlike.properties).let {
+ properties = filterProperties(classlike.properties).let {
modified = modified || it.first; it.second
},
- filterClasslikes(classlike.classlikes).let {
+ classlikes = filterClasslikes(classlike.classlikes).let {
modified = modified || it.first; it.second
},
- classlike.visibility,
- classlike.companion,
- filterFunctions(classlike.constructors).let {
+ constructors = filterFunctions(classlike.constructors).let {
modified = modified || it.first; it.second
},
- classlike.supertypes,
- classlike.sourceSets,
- classlike.extra
)
- is DInterface -> DInterface(
- classlike.dri,
- classlike.name,
- classlike.documentation,
- classlike.expectPresentInSet,
- classlike.sources,
- filterFunctions(classlike.functions).let {
+ is DInterface -> classlike.copy(
+ functions = filterFunctions(classlike.functions).let {
modified = modified || it.first; it.second
},
- filterProperties(classlike.properties).let {
+ properties = filterProperties(classlike.properties).let {
modified = modified || it.first; it.second
},
- filterClasslikes(classlike.classlikes).let {
+ classlikes = filterClasslikes(classlike.classlikes).let {
modified = modified || it.first; it.second
- },
- classlike.visibility,
- classlike.companion,
- classlike.generics,
- classlike.supertypes,
- classlike.sourceSets,
- classlike.extra
+ }
)
- is DObject -> DObject(
- classlike.name,
- classlike.dri,
- classlike.documentation,
- classlike.expectPresentInSet,
- classlike.sources,
- filterFunctions(classlike.functions).let {
+ is DObject -> classlike.copy(
+ functions = filterFunctions(classlike.functions).let {
modified = modified || it.first; it.second
},
- filterProperties(classlike.properties).let {
+ properties = filterProperties(classlike.properties).let {
modified = modified || it.first; it.second
},
- filterClasslikes(classlike.classlikes).let {
+ classlikes = filterClasslikes(classlike.classlikes).let {
modified = modified || it.first; it.second
- },
- classlike.visibility,
- classlike.supertypes,
- classlike.sourceSets,
- classlike.extra
+ }
)
}
helper()
diff --git a/plugins/base/src/main/kotlin/transformers/documentables/DocumentableVisibilityFilterTransformer.kt b/plugins/base/src/main/kotlin/transformers/documentables/DocumentableVisibilityFilterTransformer.kt
index ff05beed..9b024a0b 100644
--- a/plugins/base/src/main/kotlin/transformers/documentables/DocumentableVisibilityFilterTransformer.kt
+++ b/plugins/base/src/main/kotlin/transformers/documentables/DocumentableVisibilityFilterTransformer.kt
@@ -122,21 +122,13 @@ class DocumentableVisibilityFilterTransformer(val context: DokkaContext) : PreMe
) =
functions.transform(additionalCondition) { original, filteredPlatforms ->
with(original) {
- DFunction(
- dri,
- name,
- isConstructor,
- parameters,
- documentation.filtered(filteredPlatforms),
- expectPresentInSet.filtered(filteredPlatforms),
- sources.filtered(filteredPlatforms),
- visibility.filtered(filteredPlatforms),
- type,
- generics.mapNotNull { it.filter(filteredPlatforms) },
- receiver,
- modifier,
- filteredPlatforms,
- extra
+ copy(
+ documentation = documentation.filtered(filteredPlatforms),
+ expectPresentInSet = expectPresentInSet.filtered(filteredPlatforms),
+ sources = sources.filtered(filteredPlatforms),
+ visibility = visibility.filtered(filteredPlatforms),
+ generics = generics.mapNotNull { it.filter(filteredPlatforms) },
+ sourceSets = filteredPlatforms,
)
}
}
@@ -151,21 +143,13 @@ class DocumentableVisibilityFilterTransformer(val context: DokkaContext) : PreMe
): Pair<Boolean, List<DProperty>> =
properties.transform(additionalCondition, ::hasVisibleAccessorsForPlatform) { original, filteredPlatforms ->
with(original) {
- DProperty(
- dri,
- name,
- documentation.filtered(filteredPlatforms),
- expectPresentInSet.filtered(filteredPlatforms),
- sources.filtered(filteredPlatforms),
- visibility.filtered(filteredPlatforms),
- type,
- receiver,
- setter,
- getter,
- modifier,
- filteredPlatforms,
- generics.mapNotNull { it.filter(filteredPlatforms) },
- extra
+ copy(
+ documentation = documentation.filtered(filteredPlatforms),
+ expectPresentInSet = expectPresentInSet.filtered(filteredPlatforms),
+ sources = sources.filtered(filteredPlatforms),
+ visibility = visibility.filtered(filteredPlatforms),
+ sourceSets = filteredPlatforms,
+ generics = generics.mapNotNull { it.filter(filteredPlatforms) },
)
}
}
@@ -235,86 +219,69 @@ class DocumentableVisibilityFilterTransformer(val context: DokkaContext) : PreMe
classlikesListChanged = classlikesListChanged || modified
when {
!modified -> this
- this is DClass -> DClass(
- dri,
- name,
- constructors,
- functions,
- properties,
- classlikes,
- sources.filtered(filteredPlatforms),
- visibility.filtered(filteredPlatforms),
- companion,
- generics,
- supertypes.filtered(filteredPlatforms),
- documentation.filtered(filteredPlatforms),
- expectPresentInSet.filtered(filteredPlatforms),
- modifier,
- filteredPlatforms,
- extra
+ this is DClass -> copy(
+ constructors = constructors,
+ functions = functions,
+ properties = properties,
+ classlikes = classlikes,
+ sources = sources.filtered(filteredPlatforms),
+ visibility = visibility.filtered(filteredPlatforms),
+ companion = companion,
+ generics = generics,
+ supertypes = supertypes.filtered(filteredPlatforms),
+ documentation = documentation.filtered(filteredPlatforms),
+ expectPresentInSet = expectPresentInSet.filtered(filteredPlatforms),
+ sourceSets = filteredPlatforms
)
- this is DAnnotation -> DAnnotation(
- name,
- dri,
- documentation.filtered(filteredPlatforms),
- expectPresentInSet.filtered(filteredPlatforms),
- sources.filtered(filteredPlatforms),
- functions,
- properties,
- classlikes,
- visibility.filtered(filteredPlatforms),
- companion,
- constructors,
- generics,
- filteredPlatforms,
- extra
+ this is DAnnotation -> copy(
+ documentation = documentation.filtered(filteredPlatforms),
+ expectPresentInSet = expectPresentInSet.filtered(filteredPlatforms),
+ sources = sources.filtered(filteredPlatforms),
+ functions = functions,
+ properties = properties,
+ classlikes = classlikes,
+ visibility = visibility.filtered(filteredPlatforms),
+ companion = companion,
+ constructors = constructors,
+ generics = generics,
+ sourceSets = filteredPlatforms
)
- this is DEnum -> DEnum(
- dri,
- name,
- enumEntries,
- documentation.filtered(filteredPlatforms),
- expectPresentInSet.filtered(filteredPlatforms),
- sources.filtered(filteredPlatforms),
- functions,
- properties,
- classlikes,
- visibility.filtered(filteredPlatforms),
- companion,
- constructors,
- supertypes.filtered(filteredPlatforms),
- filteredPlatforms,
- extra
+ this is DEnum -> copy(
+ entries = enumEntries,
+ documentation = documentation.filtered(filteredPlatforms),
+ expectPresentInSet = expectPresentInSet.filtered(filteredPlatforms),
+ sources = sources.filtered(filteredPlatforms),
+ functions = functions,
+ properties = properties,
+ classlikes = classlikes,
+ visibility = visibility.filtered(filteredPlatforms),
+ companion = companion,
+ constructors = constructors,
+ supertypes = supertypes.filtered(filteredPlatforms),
+ sourceSets = filteredPlatforms
)
- this is DInterface -> DInterface(
- dri,
- name,
- documentation.filtered(filteredPlatforms),
- expectPresentInSet.filtered(filteredPlatforms),
- sources.filtered(filteredPlatforms),
- functions,
- properties,
- classlikes,
- visibility.filtered(filteredPlatforms),
- companion,
- generics,
- supertypes.filtered(filteredPlatforms),
- filteredPlatforms,
- extra
+ this is DInterface -> copy(
+ documentation = documentation.filtered(filteredPlatforms),
+ expectPresentInSet = expectPresentInSet.filtered(filteredPlatforms),
+ sources = sources.filtered(filteredPlatforms),
+ functions = functions,
+ properties = properties,
+ classlikes = classlikes,
+ visibility = visibility.filtered(filteredPlatforms),
+ companion = companion,
+ generics = generics,
+ supertypes = supertypes.filtered(filteredPlatforms),
+ sourceSets = filteredPlatforms
)
- this is DObject -> DObject(
- name,
- dri,
- documentation.filtered(filteredPlatforms),
- expectPresentInSet.filtered(filteredPlatforms),
- sources.filtered(filteredPlatforms),
- functions,
- properties,
- classlikes,
- visibility,
- supertypes.filtered(filteredPlatforms),
- filteredPlatforms,
- extra
+ this is DObject -> copy(
+ documentation = documentation.filtered(filteredPlatforms),
+ expectPresentInSet = expectPresentInSet.filtered(filteredPlatforms),
+ sources = sources.filtered(filteredPlatforms),
+ functions = functions,
+ properties = properties,
+ classlikes = classlikes,
+ supertypes = supertypes.filtered(filteredPlatforms),
+ sourceSets = filteredPlatforms
)
else -> null
}
diff --git a/plugins/base/src/main/kotlin/transformers/documentables/ReportUndocumentedTransformer.kt b/plugins/base/src/main/kotlin/transformers/documentables/ReportUndocumentedTransformer.kt
index ddc0cd37..2608d9ba 100644
--- a/plugins/base/src/main/kotlin/transformers/documentables/ReportUndocumentedTransformer.kt
+++ b/plugins/base/src/main/kotlin/transformers/documentables/ReportUndocumentedTransformer.kt
@@ -129,7 +129,7 @@ internal class ReportUndocumentedTransformer : DocumentableTransformer {
private fun callableMemberDescriptorOrNull(
documentable: Documentable, sourceSet: DokkaSourceSet
): CallableMemberDescriptor? {
- if (documentable is WithExpectActual) {
+ if (documentable is WithSources) {
return documentable.sources[sourceSet]
.safeAs<DescriptorDocumentableSource>()?.descriptor
.safeAs()
diff --git a/plugins/base/src/main/kotlin/transformers/documentables/SuppressedDocumentableFilterTransformer.kt b/plugins/base/src/main/kotlin/transformers/documentables/SuppressedDocumentableFilterTransformer.kt
index 7febabbb..b066e69b 100644
--- a/plugins/base/src/main/kotlin/transformers/documentables/SuppressedDocumentableFilterTransformer.kt
+++ b/plugins/base/src/main/kotlin/transformers/documentables/SuppressedDocumentableFilterTransformer.kt
@@ -42,7 +42,7 @@ class SuppressedDocumentableFilterTransformer(val context: DokkaContext) : PreMe
}
private fun isSuppressed(documentable: Documentable): Boolean {
- if (documentable !is WithExpectActual) return false
+ if (documentable !is WithSources) return false
val sourceFile = File(source(documentable).path).absoluteFile
return sourceSet(documentable).suppressedFiles.any { suppressedFile ->
sourceFile.startsWith(suppressedFile.absoluteFile)
diff --git a/plugins/base/src/main/kotlin/transformers/pages/sourcelinks/SourceLinksTransformer.kt b/plugins/base/src/main/kotlin/transformers/pages/sourcelinks/SourceLinksTransformer.kt
index 8f6f09fb..76bf0067 100644
--- a/plugins/base/src/main/kotlin/transformers/pages/sourcelinks/SourceLinksTransformer.kt
+++ b/plugins/base/src/main/kotlin/transformers/pages/sourcelinks/SourceLinksTransformer.kt
@@ -8,7 +8,7 @@ import org.jetbrains.dokka.model.DocumentableSource
import org.jetbrains.dokka.DokkaConfiguration.DokkaSourceSet
import org.jetbrains.dokka.analysis.DescriptorDocumentableSource
import org.jetbrains.dokka.analysis.PsiDocumentableSource
-import org.jetbrains.dokka.model.WithExpectActual
+import org.jetbrains.dokka.model.WithSources
import org.jetbrains.dokka.model.toDisplaySourceSets
import org.jetbrains.dokka.pages.*
import org.jetbrains.dokka.plugability.DokkaContext
@@ -23,7 +23,7 @@ class SourceLinksTransformer(val context: DokkaContext, val builder: PageContent
override fun invoke(input: RootPageNode) =
input.transformContentPagesTree { node ->
when (val documentable = node.documentable) {
- is WithExpectActual -> resolveSources(documentable)
+ is WithSources -> resolveSources(documentable)
.takeIf { it.isNotEmpty() }
?.let { node.addSourcesContent(it) }
?: node
@@ -34,7 +34,7 @@ class SourceLinksTransformer(val context: DokkaContext, val builder: PageContent
private fun getSourceLinks() = context.configuration.sourceSets
.flatMap { it.sourceLinks.map { sl -> SourceLink(sl, it) } }
- private fun resolveSources(documentable: WithExpectActual) = documentable.sources
+ private fun resolveSources(documentable: WithSources) = documentable.sources
.mapNotNull { entry ->
getSourceLinks().find { File(entry.value.path).startsWith(it.path) && it.sourceSetData == entry.key }?.let {
Pair(
diff --git a/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt b/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt
index 57d4f151..5e6f8f20 100644
--- a/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt
+++ b/plugins/base/src/main/kotlin/translators/descriptors/DefaultDescriptorToDocumentableTranslator.kt
@@ -158,11 +158,12 @@ private class DokkaDescriptorVisitor(
generics = descriptor.declaredTypeParameters.map { it.toVariantTypeParameter() },
companion = descriptor.companion(driWithPlatform),
sourceSets = setOf(sourceSet),
- extra = PropertyContainer.withAll<DInterface>(
+ isExpectActual = (isExpect || isActual),
+ extra = PropertyContainer.withAll(
descriptor.additionalExtras().toSourceSetDependent().toAdditionalModifiers(),
descriptor.getAnnotations().toSourceSetDependent().toAnnotations(),
ImplementedInterfaces(info.allImplementedInterfaces.toSourceSetDependent())
- ).let { if (isExpect || isActual) it + IsExpectActual else it }
+ )
)
}
@@ -186,11 +187,12 @@ private class DokkaDescriptorVisitor(
supertypes = info.supertypes.toSourceSetDependent(),
documentation = info.docs,
sourceSets = setOf(sourceSet),
- extra = PropertyContainer.withAll<DObject>(
+ isExpectActual = (isExpect || isActual),
+ extra = PropertyContainer.withAll(
descriptor.additionalExtras().toSourceSetDependent().toAdditionalModifiers(),
descriptor.getAnnotations().toSourceSetDependent().toAnnotations(),
ImplementedInterfaces(info.allImplementedInterfaces.toSourceSetDependent())
- ).let { if (isExpect || isActual) it + IsExpectActual else it }
+ )
)
}
@@ -216,11 +218,12 @@ private class DokkaDescriptorVisitor(
documentation = info.docs,
companion = descriptor.companion(driWithPlatform),
sourceSets = setOf(sourceSet),
- extra = PropertyContainer.withAll<DEnum>(
+ isExpectActual = (isExpect || isActual),
+ extra = PropertyContainer.withAll(
descriptor.additionalExtras().toSourceSetDependent().toAdditionalModifiers(),
descriptor.getAnnotations().toSourceSetDependent().toAnnotations(),
ImplementedInterfaces(info.allImplementedInterfaces.toSourceSetDependent())
- ).let { if (isExpect || isActual) it + IsExpectActual else it }
+ )
)
}
@@ -261,10 +264,11 @@ private class DokkaDescriptorVisitor(
properties = scope.properties(driWithPlatform),
expectPresentInSet = sourceSet.takeIf { isExpect },
sourceSets = setOf(sourceSet),
- extra = PropertyContainer.withAll<DAnnotation>(
+ isExpectActual = (isExpect || isActual),
+ extra = PropertyContainer.withAll(
descriptor.additionalExtras().toSourceSetDependent().toAdditionalModifiers(),
descriptor.getAnnotations().toSourceSetDependent().toAnnotations()
- ).let { if (isExpect || isActual) it + IsExpectActual else it },
+ ),
companion = descriptor.companionObjectDescriptor?.let { objectDescriptor(it, driWithPlatform) },
visibility = descriptor.visibility.toDokkaVisibility().toSourceSetDependent(),
generics = descriptor.declaredTypeParameters.map { it.toVariantTypeParameter() },
@@ -303,11 +307,12 @@ private class DokkaDescriptorVisitor(
modifier = descriptor.modifier().toSourceSetDependent(),
companion = descriptor.companion(driWithPlatform),
sourceSets = setOf(sourceSet),
+ isExpectActual = (isExpect || isActual),
extra = PropertyContainer.withAll<DClass>(
descriptor.additionalExtras().toSourceSetDependent().toAdditionalModifiers(),
descriptor.getAnnotations().toSourceSetDependent().toAnnotations(),
ImplementedInterfaces(info.allImplementedInterfaces.toSourceSetDependent())
- ).let { if (isExpect || isActual) it + IsExpectActual else it }
+ )
)
}
@@ -337,11 +342,12 @@ private class DokkaDescriptorVisitor(
expectPresentInSet = sourceSet.takeIf { isExpect },
sourceSets = setOf(sourceSet),
generics = descriptor.typeParameters.map { it.toVariantTypeParameter() },
+ isExpectActual = (isExpect || isActual),
extra = PropertyContainer.withAll(
(descriptor.additionalExtras() + descriptor.getAnnotationsWithBackingField()
.toAdditionalExtras()).toSet().toSourceSetDependent().toAdditionalModifiers(),
descriptor.getAnnotationsWithBackingField().toSourceSetDependent().toAnnotations()
- ).let { if (isExpect || isActual) it + IsExpectActual else it }
+ )
)
}
@@ -376,11 +382,12 @@ private class DokkaDescriptorVisitor(
modifier = descriptor.modifier().toSourceSetDependent(),
type = descriptor.returnType!!.toBound(),
sourceSets = setOf(sourceSet),
- extra = PropertyContainer.withAll<DFunction>(
+ isExpectActual = (isExpect || isActual),
+ extra = PropertyContainer.withAll(
InheritedFunction(inheritedFrom.toSourceSetDependent()),
descriptor.additionalExtras().toSourceSetDependent().toAdditionalModifiers(),
descriptor.getAnnotations().toSourceSetDependent().toAnnotations()
- ).let { if (isExpect || isActual) it + IsExpectActual else it }
+ )
)
}
@@ -421,6 +428,7 @@ private class DokkaDescriptorVisitor(
modifier = descriptor.modifier().toSourceSetDependent(),
generics = descriptor.typeParameters.map { it.toVariantTypeParameter() },
sourceSets = setOf(sourceSet),
+ isExpectActual = (isExpect || isActual),
extra = PropertyContainer.withAll<DFunction>(
descriptor.additionalExtras().toSourceSetDependent().toAdditionalModifiers(),
descriptor.getAnnotations().toSourceSetDependent().toAnnotations()
@@ -428,7 +436,7 @@ private class DokkaDescriptorVisitor(
if (descriptor.isPrimary) {
it + PrimaryConstructorExtra
} else it
- }.let { if (isExpect || isActual) it + IsExpectActual else it }
+ }
)
}
@@ -501,10 +509,11 @@ private class DokkaDescriptorVisitor(
},
sources = descriptor.createSources(),
sourceSets = setOf(sourceSet),
+ isExpectActual = (isExpect || isActual),
extra = PropertyContainer.withAll<DFunction>(
descriptor.additionalExtras().toSourceSetDependent().toAdditionalModifiers(),
descriptor.getAnnotations().toSourceSetDependent().toAnnotations()
- ).let { if (isExpect || isActual) it + IsExpectActual else it }
+ )
)
}
diff --git a/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt b/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt
index 30e46404..c413f5c8 100644
--- a/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt
+++ b/plugins/base/src/main/kotlin/translators/psi/DefaultPsiToDocumentableTranslator.kt
@@ -204,6 +204,7 @@ class DefaultPsiToDocumentableTranslator(
constructors.map { parseFunction(it, true) },
mapTypeParameters(dri),
setOf(sourceSetData),
+ false,
PropertyContainer.withAll(
implementedInterfacesExtra,
annotations.toList().toListOfAnnotations().toSourceSetDependent()
@@ -241,6 +242,7 @@ class DefaultPsiToDocumentableTranslator(
constructors.map { parseFunction(it, true) },
ancestors,
setOf(sourceSetData),
+ false,
PropertyContainer.withAll(
implementedInterfacesExtra, annotations.toList().toListOfAnnotations().toSourceSetDependent()
.toAnnotations()
@@ -260,6 +262,7 @@ class DefaultPsiToDocumentableTranslator(
mapTypeParameters(dri),
ancestors,
setOf(sourceSetData),
+ false,
PropertyContainer.withAll(
implementedInterfacesExtra, annotations.toList().toListOfAnnotations().toSourceSetDependent()
.toAnnotations()
@@ -281,6 +284,7 @@ class DefaultPsiToDocumentableTranslator(
null,
modifiers,
setOf(sourceSetData),
+ false,
PropertyContainer.withAll(
implementedInterfacesExtra, annotations.toList().toListOfAnnotations().toSourceSetDependent()
.toAnnotations()
@@ -323,6 +327,7 @@ class DefaultPsiToDocumentableTranslator(
null,
psi.getModifier().toSourceSetDependent(),
setOf(sourceSetData),
+ false,
psi.additionalExtras().let {
PropertyContainer.withAll(
InheritedFunction(inheritedFrom.toSourceSetDependent()),
@@ -454,6 +459,7 @@ class DefaultPsiToDocumentableTranslator(
psi.getModifier().toSourceSetDependent(),
setOf(sourceSetData),
emptyList(),
+ false,
psi.additionalExtras().let {
PropertyContainer.withAll<DProperty>(
it.toSourceSetDependent().toAdditionalModifiers(),
diff --git a/plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/pages/JavadocPageNodes.kt b/plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/pages/JavadocPageNodes.kt
index 2f26ea79..7433b46e 100644
--- a/plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/pages/JavadocPageNodes.kt
+++ b/plugins/javadoc/src/main/kotlin/org/jetbrains/dokka/javadoc/pages/JavadocPageNodes.kt
@@ -473,7 +473,7 @@ class TreeViewPage(
listOf(psi to l) + l.flatMap { gatherPsiClasses(it) }
}
- val psiInheritanceTree = documentables.flatMap { (_, v) -> (v as? WithExpectActual)?.sources?.values.orEmpty() }
+ val psiInheritanceTree = documentables.flatMap { (_, v) -> (v as? WithSources)?.sources?.values.orEmpty() }
.filterIsInstance<PsiDocumentableSource>().mapNotNull { it.psi as? PsiClass }.flatMap(::gatherPsiClasses)
.flatMap { entry -> entry.second.map { it to entry.first } }
.let {
@@ -547,9 +547,9 @@ class TreeViewPage(
}
private fun Documentable?.descriptorForPlatform(platform: Platform = Platform.jvm) =
- (this as? WithExpectActual).descriptorForPlatform(platform)
+ (this as? WithSources).descriptorForPlatform(platform)
- private fun WithExpectActual?.descriptorForPlatform(platform: Platform = Platform.jvm) = this?.let {
+ private fun WithSources?.descriptorForPlatform(platform: Platform = Platform.jvm) = this?.let {
it.sources.entries.find { it.key.analysisPlatform == platform }?.value?.let { it as? DescriptorDocumentableSource }?.descriptor as? ClassDescriptor
}
diff --git a/plugins/kotlin-as-java/src/main/kotlin/converters/KotlinToJavaConverter.kt b/plugins/kotlin-as-java/src/main/kotlin/converters/KotlinToJavaConverter.kt
index 3fd9cf18..e0ac3c40 100644
--- a/plugins/kotlin-as-java/src/main/kotlin/converters/KotlinToJavaConverter.kt
+++ b/plugins/kotlin-as-java/src/main/kotlin/converters/KotlinToJavaConverter.kt
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType
import java.lang.IllegalStateException
-private fun <T : WithExpectActual> List<T>.groupedByLocation() =
+private fun <T : WithSources> List<T>.groupedByLocation() =
map { it.sources to it }
.groupBy({ (location, _) ->
location.let {
@@ -25,7 +25,7 @@ private fun <T : WithExpectActual> List<T>.groupedByLocation() =
internal fun DPackage.asJava(): DPackage {
@Suppress("UNCHECKED_CAST")
- val syntheticClasses = ((properties + functions) as List<WithExpectActual>)
+ val syntheticClasses = ((properties + functions) as List<WithSources>)
.groupedByLocation()
.map { (syntheticClassName, nodes) ->
DClass(
@@ -50,6 +50,7 @@ internal fun DPackage.asJava(): DPackage {
documentation = emptyMap(),
modifier = sourceSets.map { it to JavaModifier.Final }.toMap(),
sourceSets = sourceSets,
+ isExpectActual = false,
extra = PropertyContainer.empty()
)
}
@@ -218,6 +219,7 @@ internal fun DObject.asJava(): DObject = copy(
receiver = null,
generics = emptyList(),
expectPresentInSet = expectPresentInSet,
+ isExpectActual = false,
extra = PropertyContainer.withAll(sourceSets.map {
mapOf(it to setOf(ExtraModifiers.JavaOnlyModifiers.Static)).toAdditionalModifiers()
})