aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/src/main/kotlin/model/Documentable.kt17
-rw-r--r--core/src/main/kotlin/model/aditionalExtras.kt10
-rw-r--r--core/src/main/kotlin/model/extraModifiers.kt60
3 files changed, 65 insertions, 22 deletions
diff --git a/core/src/main/kotlin/model/Documentable.kt b/core/src/main/kotlin/model/Documentable.kt
index b808e09c..a7dd0919 100644
--- a/core/src/main/kotlin/model/Documentable.kt
+++ b/core/src/main/kotlin/model/Documentable.kt
@@ -367,23 +367,6 @@ enum class FunctionModifiers {
NONE, FUNCTION, EXTENSION
}
-enum class ExtraModifiers {
- STATIC, INLINE, INFIX, SUSPEND, REIFIED, CROSSINLINE, NOINLINE,
- OVERRIDE, DATA, CONST, EXTERNAL, INNER, LATEINIT, OPERATOR, TAILREC, VARARG,
- NATIVE, SYNCHRONIZED, STRICTFP, TRANSIENT, VOLATILE, TRANSITIVE;
-
- companion object {
- val kotlinOnlyModifiers = setOf(
- INLINE, INFIX, EXTERNAL, SUSPEND, REIFIED, CROSSINLINE, NOINLINE, OVERRIDE, DATA, CONST, INNER, LATEINIT, OPERATOR,
- TAILREC, VARARG
- )
-
- val javaOnlyModifiers = setOf(
- STATIC, NATIVE, SYNCHRONIZED, STRICTFP, TRANSIENT, VOLATILE, TRANSITIVE
- )
- }
-}
-
private fun String.shorten(maxLength: Int) = lineSequence().first().let {
if (it.length != length || it.length > maxLength) it.take(maxLength - 3) + "..." else it
}
diff --git a/core/src/main/kotlin/model/aditionalExtras.kt b/core/src/main/kotlin/model/aditionalExtras.kt
index 05b88f48..2b9d481f 100644
--- a/core/src/main/kotlin/model/aditionalExtras.kt
+++ b/core/src/main/kotlin/model/aditionalExtras.kt
@@ -39,11 +39,11 @@ class Annotations(val content: List<Annotation>) : ExtraProperty<Documentable> {
}
sealed class AnnotationParameterValue
-class AnnotationValue(val annotation: Annotations.Annotation) : AnnotationParameterValue()
-class ArrayValue(val value: List<AnnotationParameterValue>) : AnnotationParameterValue()
-class EnumValue(val enumName: String, val enumDri: DRI) : AnnotationParameterValue()
-class ClassValue(val className: String, val classDRI: DRI) : AnnotationParameterValue() // TODO Investigate if KtClassValue can be parameter of annotation
-class StringValue(val value: String) : AnnotationParameterValue()
+data class AnnotationValue(val annotation: Annotations.Annotation) : AnnotationParameterValue()
+data class ArrayValue(val value: List<AnnotationParameterValue>) : AnnotationParameterValue()
+data class EnumValue(val enumName: String, val enumDri: DRI) : AnnotationParameterValue()
+data class ClassValue(val className: String, val classDRI: DRI) : AnnotationParameterValue()
+data class StringValue(val value: String) : AnnotationParameterValue()
object PrimaryConstructorExtra : ExtraProperty<DFunction>, ExtraProperty.Key<DFunction, PrimaryConstructorExtra> {
diff --git a/core/src/main/kotlin/model/extraModifiers.kt b/core/src/main/kotlin/model/extraModifiers.kt
new file mode 100644
index 00000000..093ce62a
--- /dev/null
+++ b/core/src/main/kotlin/model/extraModifiers.kt
@@ -0,0 +1,60 @@
+package org.jetbrains.dokka.model
+
+sealed class ExtraModifiers(val name: String) {
+
+ sealed class KotlinOnlyModifiers(name: String) : ExtraModifiers(name) {
+ object Inline : KotlinOnlyModifiers("inline")
+ object Infix : KotlinOnlyModifiers("infix")
+ object External : KotlinOnlyModifiers("external")
+ object Suspend : KotlinOnlyModifiers("suspend")
+ object Reified : KotlinOnlyModifiers("reified")
+ object CrossInline : KotlinOnlyModifiers("crossinline")
+ object NoInline : KotlinOnlyModifiers("noinline")
+ object Override : KotlinOnlyModifiers("override")
+ object Data : KotlinOnlyModifiers("data")
+ object Const : KotlinOnlyModifiers("const")
+ object Inner : KotlinOnlyModifiers("inner")
+ object LateInit : KotlinOnlyModifiers("lateinit")
+ object Operator : KotlinOnlyModifiers("operator")
+ object TailRec : KotlinOnlyModifiers("tailrec")
+ object VarArg : KotlinOnlyModifiers("vararg")
+ }
+
+ sealed class JavaOnlyModifiers(name: String) : ExtraModifiers(name) {
+ object Static : JavaOnlyModifiers("static")
+ object Native : JavaOnlyModifiers("native")
+ object Synchronized : JavaOnlyModifiers("synchronized")
+ object StrictFP : JavaOnlyModifiers("strictfp")
+ object Transient : JavaOnlyModifiers("transient")
+ object Volatile : JavaOnlyModifiers("volatile")
+ object Transitive : JavaOnlyModifiers("transitive")
+ }
+
+ companion object {
+ fun valueOf(str: String) = when(str) {
+ "inline" -> KotlinOnlyModifiers.Inline
+ "infix" -> KotlinOnlyModifiers.Infix
+ "external" -> KotlinOnlyModifiers.External
+ "suspend" -> KotlinOnlyModifiers.Suspend
+ "reified" -> KotlinOnlyModifiers.Reified
+ "crossinline" -> KotlinOnlyModifiers.CrossInline
+ "noinline" -> KotlinOnlyModifiers.NoInline
+ "override" -> KotlinOnlyModifiers.Override
+ "data" -> KotlinOnlyModifiers.Data
+ "const" -> KotlinOnlyModifiers.Const
+ "inner" -> KotlinOnlyModifiers.Inner
+ "lateinit" -> KotlinOnlyModifiers.LateInit
+ "operator" -> KotlinOnlyModifiers.Operator
+ "tailrec" -> KotlinOnlyModifiers.TailRec
+ "vararg" -> KotlinOnlyModifiers.VarArg
+ "static" -> JavaOnlyModifiers.Static
+ "native" -> JavaOnlyModifiers.Native
+ "synchronized" -> JavaOnlyModifiers.Synchronized
+ "strictfp" -> JavaOnlyModifiers.StrictFP
+ "transient" -> JavaOnlyModifiers.Transient
+ "volatile" -> JavaOnlyModifiers.Volatile
+ "transitive" -> JavaOnlyModifiers.Transitive
+ else -> throw IllegalArgumentException("There is no Extra Modifier for given name $str")
+ }
+ }
+} \ No newline at end of file