/* * Copyright 2014-2023 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. */ package org.jetbrains.dokka.model import org.jetbrains.dokka.DokkaConfiguration.DokkaSourceSet import org.jetbrains.dokka.links.DRI import org.jetbrains.dokka.model.properties.ExtraProperty import org.jetbrains.dokka.model.properties.MergeStrategy public data class InheritedMember(val inheritedFrom: SourceSetDependent) : ExtraProperty { public companion object : ExtraProperty.Key { override fun mergeStrategyFor(left: InheritedMember, right: InheritedMember): MergeStrategy = MergeStrategy.Replace( InheritedMember(left.inheritedFrom + right.inheritedFrom) ) } public fun isInherited(sourceSetDependent: DokkaSourceSet): Boolean = inheritedFrom[sourceSetDependent] != null override val key: ExtraProperty.Key = InheritedMember } public data class ImplementedInterfaces(val interfaces: SourceSetDependent>) : ExtraProperty { public companion object : ExtraProperty.Key { override fun mergeStrategyFor(left: ImplementedInterfaces, right: ImplementedInterfaces): MergeStrategy = MergeStrategy.Replace(ImplementedInterfaces(left.interfaces + right.interfaces)) } override val key: ExtraProperty.Key = ImplementedInterfaces } public data class ExceptionInSupertypes(val exceptions: SourceSetDependent>): ExtraProperty { public companion object : ExtraProperty.Key { override fun mergeStrategyFor(left: ExceptionInSupertypes, right: ExceptionInSupertypes): MergeStrategy = MergeStrategy.Replace(ExceptionInSupertypes(left.exceptions + right.exceptions)) } override val key: ExtraProperty.Key = ExceptionInSupertypes } public object ObviousMember : ExtraProperty, ExtraProperty.Key { override val key: ExtraProperty.Key = this } /** * Whether this [DProperty] is `var` or `val`, should be present both in Kotlin and in Java properties * * In case of properties that came from `Java`, [IsVar] is added if * the java field has no accessors at all (plain field) or has a setter */ public object IsVar : ExtraProperty, ExtraProperty.Key { override val key: ExtraProperty.Key = this } public data class IsAlsoParameter(val inSourceSets: List) : ExtraProperty { public companion object : ExtraProperty.Key { override fun mergeStrategyFor(left: IsAlsoParameter, right: IsAlsoParameter): MergeStrategy = MergeStrategy.Replace(IsAlsoParameter(left.inSourceSets + right.inSourceSets)) } override val key: ExtraProperty.Key = IsAlsoParameter } public data class CheckedExceptions(val exceptions: SourceSetDependent>) : ExtraProperty, ExtraProperty.Key { public companion object : ExtraProperty.Key { override fun mergeStrategyFor(left: CheckedExceptions, right: CheckedExceptions): MergeStrategy = MergeStrategy.Replace(CheckedExceptions(left.exceptions + right.exceptions)) } override val key: ExtraProperty.Key = CheckedExceptions }