aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Kotlin/DocumentationBuilder.kt5
-rw-r--r--src/Kotlin/KotlinLanguageService.kt4
-rw-r--r--src/Model/DocumentationNode.kt1
-rw-r--r--test/data/format/htmlEscaping.html2
-rw-r--r--test/data/format/nullability.kt5
-rw-r--r--test/data/format/nullability.md20
-rw-r--r--test/src/format/MarkdownFormatTest.kt6
7 files changed, 41 insertions, 2 deletions
diff --git a/src/Kotlin/DocumentationBuilder.kt b/src/Kotlin/DocumentationBuilder.kt
index d8933087..3b7f25d6 100644
--- a/src/Kotlin/DocumentationBuilder.kt
+++ b/src/Kotlin/DocumentationBuilder.kt
@@ -224,13 +224,16 @@ class DocumentationBuilder(val session: ResolveSession,
return
val classifierDescriptor = jetType.getConstructor().getDeclarationDescriptor()
val name = when (classifierDescriptor) {
- is Named -> classifierDescriptor.getName().asString() + if (jetType.isMarkedNullable()) "?" else ""
+ is Named -> classifierDescriptor.getName().asString()
else -> "<anonymous>"
}
val node = DocumentationNode(name, Content.Empty, kind)
if (prefix != "") {
node.appendTextNode(prefix, Kind.Modifier)
}
+ if (jetType.isMarkedNullable()) {
+ node.appendTextNode("?", Kind.NullabilityModifier)
+ }
if (classifierDescriptor != null && !classifierDescriptor.isBoringBuiltinClass()) {
link(node, classifierDescriptor)
}
diff --git a/src/Kotlin/KotlinLanguageService.kt b/src/Kotlin/KotlinLanguageService.kt
index 4b43fb88..855745e0 100644
--- a/src/Kotlin/KotlinLanguageService.kt
+++ b/src/Kotlin/KotlinLanguageService.kt
@@ -114,6 +114,10 @@ class KotlinLanguageService : LanguageService {
}
symbol(">")
}
+ val nullabilityModifier = node.details(DocumentationNode.Kind.NullabilityModifier).singleOrNull()
+ if (nullabilityModifier != null) {
+ symbol(nullabilityModifier.name)
+ }
}
private fun ContentBlock.renderModifier(node: DocumentationNode) {
diff --git a/src/Model/DocumentationNode.kt b/src/Model/DocumentationNode.kt
index 3fc1198c..c9373849 100644
--- a/src/Model/DocumentationNode.kt
+++ b/src/Model/DocumentationNode.kt
@@ -91,6 +91,7 @@ public open class DocumentationNode(val name: String,
Exception
Modifier
+ NullabilityModifier
Module
diff --git a/test/data/format/htmlEscaping.html b/test/data/format/htmlEscaping.html
index 52c69239..a485c08f 100644
--- a/test/data/format/htmlEscaping.html
+++ b/test/data/format/htmlEscaping.html
@@ -6,7 +6,7 @@
<a href="test/index">test</a>&nbsp;/&nbsp;<a href="test/x">x</a><br/>
<br/>
<h1>x</h1>
-<code><span class="keyword">fun </span><span class="symbol">&lt;</span><span class="identifier">T</span><span class="symbol">&gt;</span> <span class="identifier">x</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><span class="identifier">T?</span></code><br/>
+<code><span class="keyword">fun </span><span class="symbol">&lt;</span><span class="identifier">T</span><span class="symbol">&gt;</span> <span class="identifier">x</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><span class="identifier">T</span><span class="symbol">?</span></code><br/>
<p>Special characters: &lt; is "less than", &gt; is "greater than", &amp; is "ampersand"</p>
<br/>
<br/>
diff --git a/test/data/format/nullability.kt b/test/data/format/nullability.kt
new file mode 100644
index 00000000..d1d4545b
--- /dev/null
+++ b/test/data/format/nullability.kt
@@ -0,0 +1,5 @@
+class C<T> {
+ fun foo(): Comparable<T>? {
+ return null
+ }
+}
diff --git a/test/data/format/nullability.md b/test/data/format/nullability.md
new file mode 100644
index 00000000..ee50a0a5
--- /dev/null
+++ b/test/data/format/nullability.md
@@ -0,0 +1,20 @@
+[test](test/index) / [C](test/-c/index)
+
+
+# C
+
+`class C&lt;T&gt;`
+
+
+
+### Constructors
+
+
+| [&lt;init&gt;](test/-c/-init-) | `C()` |
+
+
+### Functions
+
+
+| [foo](test/-c/foo) | `fun foo(): Comparable&lt;T&gt;?` |
+
diff --git a/test/src/format/MarkdownFormatTest.kt b/test/src/format/MarkdownFormatTest.kt
index 0452645a..7164fdee 100644
--- a/test/src/format/MarkdownFormatTest.kt
+++ b/test/src/format/MarkdownFormatTest.kt
@@ -142,4 +142,10 @@ public class MarkdownFormatTest {
markdownService.appendNodes(tempLocation, output, model.members.single().members)
}
}
+
+ Test fun nullability() {
+ verifyOutput("test/data/format/nullability.kt", ".md") { model, output ->
+ markdownService.appendNodes(tempLocation, output, model.members.single().members)
+ }
+ }
}