From e9ab5d88150323067672661d37f8d7f8b146311d Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Fri, 27 Oct 2017 03:46:49 +0300 Subject: #228: Correctly render multiline indented code blocks Fix #228 --- core/testdata/format/indentedCodeBlock.html | 17 +++++++++++++++++ core/testdata/format/indentedCodeBlock.kt | 10 ++++++++++ core/testdata/format/indentedCodeBlock.md | 14 ++++++++++++++ 3 files changed, 41 insertions(+) create mode 100644 core/testdata/format/indentedCodeBlock.html create mode 100644 core/testdata/format/indentedCodeBlock.kt create mode 100644 core/testdata/format/indentedCodeBlock.md (limited to 'core/testdata') diff --git a/core/testdata/format/indentedCodeBlock.html b/core/testdata/format/indentedCodeBlock.html new file mode 100644 index 00000000..1ccf800a --- /dev/null +++ b/core/testdata/format/indentedCodeBlock.html @@ -0,0 +1,17 @@ + + + +foo - test + + +test / foo
+
+

foo

+ +fun foo(): Unit +

Create a new Foo value as follows:

+
    val foo = Foo.create {
+        type { "ABC" }
+    }
+ + diff --git a/core/testdata/format/indentedCodeBlock.kt b/core/testdata/format/indentedCodeBlock.kt new file mode 100644 index 00000000..19c5365b --- /dev/null +++ b/core/testdata/format/indentedCodeBlock.kt @@ -0,0 +1,10 @@ +/** + * Create a new Foo value as follows: + * + * val foo = Foo.create { + * type { "ABC" } + * } + */ +fun foo() { + +} \ No newline at end of file diff --git a/core/testdata/format/indentedCodeBlock.md b/core/testdata/format/indentedCodeBlock.md new file mode 100644 index 00000000..515bfee3 --- /dev/null +++ b/core/testdata/format/indentedCodeBlock.md @@ -0,0 +1,14 @@ +[test](test/index) / [foo](test/foo) + +# foo + +`fun foo(): Unit` + +Create a new Foo value as follows: + +``` + val foo = Foo.create { + type { "ABC" } + } +``` + -- cgit From 694d51d7bb5a5900fb30d201a8d675cec0f5e92b Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Sat, 4 Nov 2017 02:09:16 +0300 Subject: Fix Can't find node by signature in asJava mode fixes #205 --- core/testdata/javadoc/companionMethodReference.kt | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 core/testdata/javadoc/companionMethodReference.kt (limited to 'core/testdata') diff --git a/core/testdata/javadoc/companionMethodReference.kt b/core/testdata/javadoc/companionMethodReference.kt new file mode 100644 index 00000000..499e4492 --- /dev/null +++ b/core/testdata/javadoc/companionMethodReference.kt @@ -0,0 +1,13 @@ +package foo + + +/** + * Linking to [test] + */ +class TestClass { + + companion object { + + @JvmStatic fun test(arg: String) {} + } +} \ No newline at end of file -- cgit From ec40a94e76d33fb77c58e2b4fe8b9aa150885f0a Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Tue, 14 Nov 2017 16:33:41 +0300 Subject: Handle indent correctly, Add tests for assertTrue/False samples --- core/testdata/format/website-html/sampleWithAsserts.html | 7 +++++++ core/testdata/format/website-html/sampleWithAsserts.kt | 5 +++++ 2 files changed, 12 insertions(+) (limited to 'core/testdata') diff --git a/core/testdata/format/website-html/sampleWithAsserts.html b/core/testdata/format/website-html/sampleWithAsserts.html index e70d37c9..11a3a626 100644 --- a/core/testdata/format/website-html/sampleWithAsserts.html +++ b/core/testdata/format/website-html/sampleWithAsserts.html @@ -9,7 +9,14 @@ fun main(args: Array<String>) { //sampleStart println(a()) // Hello, Work println("a() == b() is ${a() == b()}") // true +// A eq B +println("a() == b() is ${a() == b()}") // true // readSomeFile(File("some.txt")) // reading file now will fail // readSomeFile(File("some.txt")) // will fail with FileNotFoundException + +fun indented() { + // A neq B + println("a() != b() is ${a() != b()}") // false +} //sampleEnd } diff --git a/core/testdata/format/website-html/sampleWithAsserts.kt b/core/testdata/format/website-html/sampleWithAsserts.kt index f5b03eb8..b3bce11d 100644 --- a/core/testdata/format/website-html/sampleWithAsserts.kt +++ b/core/testdata/format/website-html/sampleWithAsserts.kt @@ -22,6 +22,11 @@ fun readSomeFile(f: File) { fun sample() { assertPrints(a(), "Hello, Work") assertTrue(a() == b()) + assertTrue(a() == b(), "A eq B") assertFails("reading file now") { readSomeFile(File("some.txt")) } assertFailsWith { readSomeFile(File("some.txt")) } + + fun indented() { + assertFalse(a() != b(), "A neq B") + } } \ No newline at end of file -- cgit From 0298076ba9cf22b70b6c85846ad555e201ee95ee Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Mon, 20 Nov 2017 22:38:11 +0300 Subject: Support receiver reference --- core/testdata/format/receiverReference.kt | 6 ++++++ core/testdata/format/receiverReference.md | 6 ++++++ 2 files changed, 12 insertions(+) create mode 100644 core/testdata/format/receiverReference.kt create mode 100644 core/testdata/format/receiverReference.md (limited to 'core/testdata') diff --git a/core/testdata/format/receiverReference.kt b/core/testdata/format/receiverReference.kt new file mode 100644 index 00000000..3e6e2056 --- /dev/null +++ b/core/testdata/format/receiverReference.kt @@ -0,0 +1,6 @@ +/** + * Prints [this] + */ +fun String.some() { + println(this) +} \ No newline at end of file diff --git a/core/testdata/format/receiverReference.md b/core/testdata/format/receiverReference.md new file mode 100644 index 00000000..1584b2b1 --- /dev/null +++ b/core/testdata/format/receiverReference.md @@ -0,0 +1,6 @@ +[test](test/index) / [kotlin.String](test/kotlin.-string/index) + +### Extensions for kotlin.String + +| [some](test/kotlin.-string/some) | `fun String.some(): Unit`
Prints [this](test/kotlin.-string/some/-this-) | + -- cgit From 80bde3cb243b324df162a16d23f9dfd3e0ab2597 Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Tue, 21 Nov 2017 15:05:04 +0300 Subject: Fix find node by signature when linking to extension with Type Param --- core/testdata/format/extensionScope.kt | 14 ++++++++++++++ core/testdata/format/extensionScope.md | 8 ++++++++ 2 files changed, 22 insertions(+) create mode 100644 core/testdata/format/extensionScope.kt create mode 100644 core/testdata/format/extensionScope.md (limited to 'core/testdata') diff --git a/core/testdata/format/extensionScope.kt b/core/testdata/format/extensionScope.kt new file mode 100644 index 00000000..9f3130b8 --- /dev/null +++ b/core/testdata/format/extensionScope.kt @@ -0,0 +1,14 @@ +/** + * Test class with Type-parameter + */ +class Foo + +/** + * Some extension on Foo + */ +fun Foo.ext() {} + +/** + * Correct link: [Foo.ext] + */ +fun test() {} \ No newline at end of file diff --git a/core/testdata/format/extensionScope.md b/core/testdata/format/extensionScope.md new file mode 100644 index 00000000..3515ed84 --- /dev/null +++ b/core/testdata/format/extensionScope.md @@ -0,0 +1,8 @@ +[test](test/index) / [test](test/test) + +# test + +`fun test(): Unit` + +Correct link: [Foo.ext](test/ext) + -- cgit From ebcea5c3ad6248c5a02adc5740103a23a5108c58 Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Tue, 21 Nov 2017 15:24:32 +0300 Subject: Fix find node by signature when referencing type parameter --- core/testdata/format/annotatedTypeParameter.md | 2 +- core/testdata/format/extensionFunctionParameter.md | 2 +- core/testdata/format/genericInheritedExtensions.md | 6 +++--- core/testdata/format/htmlEscaping.html | 2 +- core/testdata/format/nullability.md | 2 +- core/testdata/format/parameterAnchor.html | 2 +- core/testdata/format/receiverParameterTypeBound.md | 2 +- core/testdata/format/summarizeSignatures.md | 2 +- core/testdata/format/typeAliases.md | 4 ++-- core/testdata/format/typeAliases.package.md | 4 ++-- core/testdata/format/typeParameterBounds.md | 2 +- core/testdata/format/typeParameterReference.kt | 6 ++++++ core/testdata/format/typeParameterReference.md | 8 ++++++++ core/testdata/format/typeProjectionVariance.md | 2 +- 14 files changed, 30 insertions(+), 16 deletions(-) create mode 100644 core/testdata/format/typeParameterReference.kt create mode 100644 core/testdata/format/typeParameterReference.md (limited to 'core/testdata') diff --git a/core/testdata/format/annotatedTypeParameter.md b/core/testdata/format/annotatedTypeParameter.md index 0aa1b9d7..aa8b8592 100644 --- a/core/testdata/format/annotatedTypeParameter.md +++ b/core/testdata/format/annotatedTypeParameter.md @@ -2,4 +2,4 @@ # containsAll -`fun containsAll(elements: Collection<@UnsafeVariance E>): @UnsafeVariance E` \ No newline at end of file +`fun containsAll(elements: Collection<@UnsafeVariance `[`E`](test/contains-all#E)`>): @UnsafeVariance `[`E`](test/contains-all#E) \ No newline at end of file diff --git a/core/testdata/format/extensionFunctionParameter.md b/core/testdata/format/extensionFunctionParameter.md index b459d49e..501d731d 100644 --- a/core/testdata/format/extensionFunctionParameter.md +++ b/core/testdata/format/extensionFunctionParameter.md @@ -2,4 +2,4 @@ # apply -`inline fun T.apply(f: T.() -> Unit): T` \ No newline at end of file +`inline fun `[`T`](test/apply#T)`.apply(f: `[`T`](test/apply#T)`.() -> Unit): `[`T`](test/apply#T) \ No newline at end of file diff --git a/core/testdata/format/genericInheritedExtensions.md b/core/testdata/format/genericInheritedExtensions.md index a3091aeb..163ff0c9 100644 --- a/core/testdata/format/genericInheritedExtensions.md +++ b/core/testdata/format/genericInheritedExtensions.md @@ -2,7 +2,7 @@ # Bar -`class Bar : `[`Foo`](test/-foo/index)`` +`class Bar : `[`Foo`](test/-foo/index)`<`[`T`](test/-bar/index#T)`>` ### Constructors @@ -10,6 +10,6 @@ ### Extension Functions -| [first](test/first) | `fun `[`Foo`](test/-foo/index)`.first(): Unit` | -| [second](test/second) | `fun `[`Bar`](test/-bar/index)`.second(): Unit` | +| [first](test/first) | `fun `[`Foo`](test/-foo/index)`<`[`T`](test/first#T)`>.first(): Unit` | +| [second](test/second) | `fun `[`Bar`](test/-bar/index)`<`[`T`](test/second#T)`>.second(): Unit` | diff --git a/core/testdata/format/htmlEscaping.html b/core/testdata/format/htmlEscaping.html index fd9a3235..17d48161 100644 --- a/core/testdata/format/htmlEscaping.html +++ b/core/testdata/format/htmlEscaping.html @@ -8,7 +8,7 @@

x

-fun <T> x(): T? +fun <T> x(): T?

Special characters: < is "less than", > is "greater than", & is "ampersand"

diff --git a/core/testdata/format/nullability.md b/core/testdata/format/nullability.md index 6a4c3761..014eb485 100644 --- a/core/testdata/format/nullability.md +++ b/core/testdata/format/nullability.md @@ -10,5 +10,5 @@ ### Functions -| [foo](test/-c/foo) | `fun foo(): Comparable?` | +| [foo](test/-c/foo) | `fun foo(): Comparable<`[`T`](test/-c/index#T)`>?` | diff --git a/core/testdata/format/parameterAnchor.html b/core/testdata/format/parameterAnchor.html index ecb89fe6..3ffcf595 100644 --- a/core/testdata/format/parameterAnchor.html +++ b/core/testdata/format/parameterAnchor.html @@ -8,7 +8,7 @@

processFiles

-fun <T> processFiles(processor: () -> T): List<T> +fun <T> processFiles(processor: () -> T): List<T>

Runs processor for each file and collects its results into single list

Parameters

diff --git a/core/testdata/format/receiverParameterTypeBound.md b/core/testdata/format/receiverParameterTypeBound.md index 8a8c4220..9c767449 100644 --- a/core/testdata/format/receiverParameterTypeBound.md +++ b/core/testdata/format/receiverParameterTypeBound.md @@ -10,5 +10,5 @@ ### Extension Functions -| [xyzzy](test/xyzzy) | `fun T.xyzzy(): Unit` | +| [xyzzy](test/xyzzy) | `fun `[`T`](test/xyzzy#T)`.xyzzy(): Unit` | diff --git a/core/testdata/format/summarizeSignatures.md b/core/testdata/format/summarizeSignatures.md index d37f2301..c1830fb5 100644 --- a/core/testdata/format/summarizeSignatures.md +++ b/core/testdata/format/summarizeSignatures.md @@ -10,5 +10,5 @@ ### Functions -| [foo](test/kotlin/foo) | `fun any_array.foo(predicate: (T) -> Boolean): Boolean`
Returns true if foo. | +| [foo](test/kotlin/foo) | `fun any_array.foo(predicate: (`[`T`](test/kotlin/foo#T)`) -> Boolean): Boolean`
Returns true if foo. | diff --git a/core/testdata/format/typeAliases.md b/core/testdata/format/typeAliases.md index 55e9317e..2a813c32 100644 --- a/core/testdata/format/typeAliases.md +++ b/core/testdata/format/typeAliases.md @@ -30,11 +30,11 @@ # H -`typealias H = `[`C`](test/-c/index)``[test](test/index) / [I](test/-i) +`typealias H = `[`C`](test/-c/index)`<`[`T`](test/-h#T)`>`[test](test/index) / [I](test/-i) # I -`typealias I = `[`H`](test/-h)``[test](test/index) / [J](test/-j) +`typealias I = `[`H`](test/-h)`<`[`T`](test/-i#T)`>`[test](test/index) / [J](test/-j) # J diff --git a/core/testdata/format/typeAliases.package.md b/core/testdata/format/typeAliases.package.md index 0eff1ed5..9407588b 100644 --- a/core/testdata/format/typeAliases.package.md +++ b/core/testdata/format/typeAliases.package.md @@ -14,8 +14,8 @@ | [E](test/-e) | `typealias E = `[`D`](test/-d) | | [F](test/-f) | `typealias F = (`[`A`](test/-a/index)`) -> `[`B`](test/-b/index) | | [G](test/-g) | `typealias G = `[`C`](test/-c/index)`<`[`A`](test/-a/index)`>` | -| [H](test/-h) | `typealias H = `[`C`](test/-c/index)`` | -| [I](test/-i) | `typealias I = `[`H`](test/-h)`` | +| [H](test/-h) | `typealias H = `[`C`](test/-c/index)`<`[`T`](test/-h#T)`>` | +| [I](test/-i) | `typealias I = `[`H`](test/-h)`<`[`T`](test/-i#T)`>` | | [J](test/-j) | `typealias J = `[`H`](test/-h)`<`[`A`](test/-a/index)`>` | | [K](test/-k) | `typealias K = `[`H`](test/-h)`<`[`J`](test/-j)`>` | | [L](test/-l) | `typealias L = (`[`K`](test/-k)`, `[`B`](test/-b/index)`) -> `[`J`](test/-j) | diff --git a/core/testdata/format/typeParameterBounds.md b/core/testdata/format/typeParameterBounds.md index 58df82a3..8f369ed6 100644 --- a/core/testdata/format/typeParameterBounds.md +++ b/core/testdata/format/typeParameterBounds.md @@ -2,7 +2,7 @@ # generic -`fun generic(): Unit` +`fun generic(): Unit` generic function diff --git a/core/testdata/format/typeParameterReference.kt b/core/testdata/format/typeParameterReference.kt new file mode 100644 index 00000000..f196112d --- /dev/null +++ b/core/testdata/format/typeParameterReference.kt @@ -0,0 +1,6 @@ +/** + * Correct ref to [T] + */ +fun T.tt() { + println("T.tt") +} \ No newline at end of file diff --git a/core/testdata/format/typeParameterReference.md b/core/testdata/format/typeParameterReference.md new file mode 100644 index 00000000..ea49d48a --- /dev/null +++ b/core/testdata/format/typeParameterReference.md @@ -0,0 +1,8 @@ +[test](test/index) / [tt](test/tt) + +# tt + +`fun `[`T`](test/tt#T)`.tt(): Unit` + +Correct ref to [T](test/tt#T) + diff --git a/core/testdata/format/typeProjectionVariance.md b/core/testdata/format/typeProjectionVariance.md index 5b8fc190..072b9fc7 100644 --- a/core/testdata/format/typeProjectionVariance.md +++ b/core/testdata/format/typeProjectionVariance.md @@ -2,5 +2,5 @@ ### Extensions for kotlin.Array -| [foo](test/kotlin.-array/foo) | `fun Array.foo(): Unit` | +| [foo](test/kotlin.-array/foo) | `fun Array.foo(): Unit` | -- cgit From b6d79cf83917e6a8c843209df3ffa7d9e54d0917 Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Tue, 21 Nov 2017 17:18:25 +0300 Subject: Do not suppress Companions when it's extends/implements something --- core/testdata/format/inheritedCompanionObjectProperties.md | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'core/testdata') diff --git a/core/testdata/format/inheritedCompanionObjectProperties.md b/core/testdata/format/inheritedCompanionObjectProperties.md index b3b3230e..db764ff0 100644 --- a/core/testdata/format/inheritedCompanionObjectProperties.md +++ b/core/testdata/format/inheritedCompanionObjectProperties.md @@ -4,6 +4,10 @@ `class C : `[`A`](test/-a/index) +### Types + +| [Companion](test/-c/-companion/index) | `companion object Companion : `[`B`](test/-b/index) | + ### Constructors | [<init>](test/-c/-init-) | `C()` | -- cgit From 46af59cc658e4f56b6d2909ab4dc93f43af77dc2 Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Tue, 21 Nov 2017 18:58:06 +0300 Subject: Auto-expand type-aliases excluded from documentation --- core/testdata/format/notPublishedTypeAliasAutoExpansion.kt | 13 +++++++++++++ core/testdata/format/notPublishedTypeAliasAutoExpansion.md | 9 +++++++++ 2 files changed, 22 insertions(+) create mode 100644 core/testdata/format/notPublishedTypeAliasAutoExpansion.kt create mode 100644 core/testdata/format/notPublishedTypeAliasAutoExpansion.md (limited to 'core/testdata') diff --git a/core/testdata/format/notPublishedTypeAliasAutoExpansion.kt b/core/testdata/format/notPublishedTypeAliasAutoExpansion.kt new file mode 100644 index 00000000..1f29e110 --- /dev/null +++ b/core/testdata/format/notPublishedTypeAliasAutoExpansion.kt @@ -0,0 +1,13 @@ + +class A +class B + + +internal typealias TA = A +private typealias TB = B + +/** + * Correct ref [TA] + * Correct ref [TB] + */ +fun foo() {} \ No newline at end of file diff --git a/core/testdata/format/notPublishedTypeAliasAutoExpansion.md b/core/testdata/format/notPublishedTypeAliasAutoExpansion.md new file mode 100644 index 00000000..9e0f1560 --- /dev/null +++ b/core/testdata/format/notPublishedTypeAliasAutoExpansion.md @@ -0,0 +1,9 @@ +[test](test/index) / [foo](test/foo) + +# foo + +`fun foo(): Unit` + +Correct ref [TA](test/-a/index) +Correct ref [TB](test/-b/index) + -- cgit From 454b4a4c8490a04fcfe17309596c6316cd321113 Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Tue, 21 Nov 2017 19:46:20 +0300 Subject: Fix suppressing of companion when it implements some interface --- core/testdata/format/companionImplements.kt | 9 +++++++++ core/testdata/format/companionImplements.md | 16 ++++++++++++++++ 2 files changed, 25 insertions(+) create mode 100644 core/testdata/format/companionImplements.kt create mode 100644 core/testdata/format/companionImplements.md (limited to 'core/testdata') diff --git a/core/testdata/format/companionImplements.kt b/core/testdata/format/companionImplements.kt new file mode 100644 index 00000000..154ef9b1 --- /dev/null +++ b/core/testdata/format/companionImplements.kt @@ -0,0 +1,9 @@ + +interface Bar + +/** + * Correct ref [Foo.Companion] + */ +class Foo { + companion object : Bar +} \ No newline at end of file diff --git a/core/testdata/format/companionImplements.md b/core/testdata/format/companionImplements.md new file mode 100644 index 00000000..8a93ed6b --- /dev/null +++ b/core/testdata/format/companionImplements.md @@ -0,0 +1,16 @@ +[test](test/index) / [Foo](test/-foo/index) + +# Foo + +`class Foo` + +Correct ref [Foo.Companion](test/-foo/-companion) + +### Types + +| [Companion](test/-foo/-companion) | `companion object Companion : `[`Bar`](test/-bar) | + +### Constructors + +| [<init>](test/-foo/-init-) | `Foo()`
Correct ref [Foo.Companion](test/-foo/-companion) | + -- cgit From f941d6adefa71d2b3b1cc69120edf7eae70187ba Mon Sep 17 00:00:00 2001 From: Chris Rankin Date: Fri, 6 Oct 2017 14:14:09 +0100 Subject: Add new "suppress" per-package option. --- core/testdata/packages/classInPackage.kt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 core/testdata/packages/classInPackage.kt (limited to 'core/testdata') diff --git a/core/testdata/packages/classInPackage.kt b/core/testdata/packages/classInPackage.kt new file mode 100644 index 00000000..b22273af --- /dev/null +++ b/core/testdata/packages/classInPackage.kt @@ -0,0 +1,3 @@ +package simple.name + +class Foo {} -- cgit From 46e6c270c4100bcca0cc376791bd515b07483fa6 Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Wed, 29 Nov 2017 20:00:22 +0300 Subject: Add test for wide range since kotlin versions --- core/testdata/format/sinceKotlinWide.kt | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 core/testdata/format/sinceKotlinWide.kt (limited to 'core/testdata') diff --git a/core/testdata/format/sinceKotlinWide.kt b/core/testdata/format/sinceKotlinWide.kt new file mode 100644 index 00000000..fa1eb7de --- /dev/null +++ b/core/testdata/format/sinceKotlinWide.kt @@ -0,0 +1,11 @@ +/** + * Useful + */ +@SinceKotlin("1.1") +class `Since1.1` + +/** + * Useful also + */ +@SinceKotlin("1.2") +class `Since1.2` \ No newline at end of file -- cgit From 880fb1095e1b6881ff4e891553de0cc9b92e3167 Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Thu, 30 Nov 2017 19:03:02 +0300 Subject: Add missing test data --- core/testdata/format/sinceKotlinWide.package.md | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 core/testdata/format/sinceKotlinWide.package.md (limited to 'core/testdata') diff --git a/core/testdata/format/sinceKotlinWide.package.md b/core/testdata/format/sinceKotlinWide.package.md new file mode 100644 index 00000000..f683b178 --- /dev/null +++ b/core/testdata/format/sinceKotlinWide.package.md @@ -0,0 +1,11 @@ +[test](test/index) + +## Package <root> + +**Platform and version requirements:** Kotlin 1.1+ + +### Types + +| [Since1.1](test/-since1.1/index)
(Kotlin 1.1) | `class Since1.1`
Useful | +| [Since1.2](test/-since1.2/index)
(Kotlin 1.2) | `class Since1.2`
Useful also | + -- cgit