Improve rendering of modifiers in DescriptorRenderer

* Use bold font to render all modifiers
* Render 'external' according to the style guide, right after modality
This commit is contained in:
Alexander Udalov
2017-07-20 19:26:16 +03:00
parent f01e0ef335
commit 472959aca1
37 changed files with 102 additions and 163 deletions
@@ -15,7 +15,7 @@ package foo {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@kotlin.js.JsNonModule public external open class B {
@kotlin.js.JsNonModule public open external class B {
public constructor B()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun foo(): kotlin.Int
@@ -5,7 +5,7 @@ package foo {
@kotlin.js.JsNonModule public external val baz: kotlin.Int
@kotlin.js.JsModule(import = "foo") public external fun foo(): kotlin.Int
@kotlin.js.JsModule(import = "A") public external final class A {
@kotlin.js.JsModule(import = "A") public final external class A {
public constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
@@ -13,7 +13,7 @@ package foo {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@kotlin.js.JsModule(import = "B") public external open class B {
@kotlin.js.JsModule(import = "B") public open external class B {
public constructor B()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun foo(): kotlin.Int
@@ -37,7 +37,7 @@ package bar {
public inline fun </*0*/ reified T> boo(/*0*/ x: T): kotlin.Unit
public fun box(): kotlin.Unit
public external final class DerivedB : foo.B {
public final external class DerivedB : foo.B {
public constructor DerivedB()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*1*/ /*fake_override*/ fun foo(): kotlin.Int
@@ -4,7 +4,7 @@ package bar {
public inline fun </*0*/ reified T> boo(/*0*/ x: T): kotlin.Unit
public fun box(): kotlin.Unit
public external final class DerivedB : foo.B {
public final external class DerivedB : foo.B {
public constructor DerivedB()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*1*/ /*fake_override*/ fun foo(): kotlin.Int
@@ -25,7 +25,7 @@ package foo {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@kotlin.js.JsNonModule public external open class B {
@kotlin.js.JsNonModule public open external class B {
public constructor B()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun foo(): kotlin.Int
@@ -1,6 +1,6 @@
package
public external open class A {
public open external class A {
public constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open fun f(/*0*/ x: kotlin.Int): kotlin.Unit
@@ -1,6 +1,6 @@
package
public external final class A {
public final external class A {
public constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
@@ -10,7 +10,7 @@ public external fun f(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String = ...): kotlin
public external fun foo(): kotlin.Int
public external fun g(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String = ...): kotlin.Unit
public external final class C {
public final external class C {
public constructor C()
public final fun bar(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -1,6 +1,6 @@
package
public external open class Base {
public open external class Base {
public constructor Base(/*0*/ x: kotlin.Int)
public constructor Base(/*0*/ x: kotlin.String)
public constructor Base(/*0*/ x: kotlin.String, /*1*/ y: kotlin.String)
@@ -9,7 +9,7 @@ public external open class Base {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public external open class Derived1 : Base {
public open external class Derived1 : Base {
public constructor Derived1()
public constructor Derived1(/*0*/ x: kotlin.Byte)
public constructor Derived1(/*0*/ x: kotlin.String)
@@ -19,7 +19,7 @@ public external open class Derived1 : Base {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public external open class Derived2 : Base {
public open external class Derived2 : Base {
public constructor Derived2()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
@@ -2,7 +2,7 @@ package
public external val topLevelProp: kotlin.String
public external final class A : I {
public final external class A : I {
public constructor A()
public final var mutableProp: kotlin.String
public final val prop: kotlin.String
@@ -1,6 +1,6 @@
package
public external final enum class E : kotlin.Enum<E> {
public final external enum class E : kotlin.Enum<E> {
enum entry X
enum entry Y
@@ -8,14 +8,14 @@ public external fun bar(/*0*/ vararg f: kotlin.Int.() -> kotlin.Int /*kotlin.Arr
public external fun baz(): kotlin.Int.() -> kotlin.Int
public external fun foo(/*0*/ f: kotlin.Int.() -> kotlin.Int): kotlin.Unit
public external final class A {
public final external class A {
public constructor A(/*0*/ f: kotlin.Int.() -> kotlin.Int)
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public external final data class B {
public final external data class B {
public constructor B(/*0*/ a: kotlin.Int.() -> kotlin.Int, /*1*/ b: kotlin.Int.() -> kotlin.Int)
public final val a: kotlin.Int.() -> kotlin.Int
public final var b: kotlin.Int.() -> kotlin.Int
@@ -7,28 +7,28 @@ public open class A {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public external open class B {
public open external class B {
public constructor B()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public external final class C : A {
public final external class C : A {
public constructor C()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public external final class D : B, I {
public final external class D : B, I {
public constructor D()
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
}
public external final enum class E : kotlin.Enum<E> {
public final external enum class E : kotlin.Enum<E> {
enum entry X
private constructor E()
@@ -45,7 +45,7 @@ public external final enum class E : kotlin.Enum<E> {
public final /*synthesized*/ fun values(): kotlin.Array<E>
}
public external final enum class F : kotlin.Enum<F>, I {
public final external enum class F : kotlin.Enum<F>, I {
enum entry X
private constructor F()
@@ -4,7 +4,7 @@ public external val bar: kotlin.Int
public external val baz: kotlin.Int
public external inline fun foo(): kotlin.Unit
public external final class A {
public final external class A {
public constructor A()
public final val bar: kotlin.Int
public final val baz: kotlin.Int
@@ -4,7 +4,7 @@ public inline fun A.foo(/*0*/ x: kotlin.Int): kotlin.String
public operator inline fun A.get(/*0*/ x: kotlin.Int): kotlin.String
public operator inline fun A.B.get(/*0*/ x: kotlin.Int): kotlin.String
public external final class A {
public final external class A {
public constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
@@ -1,6 +1,6 @@
package
public external final class C {
public final external class C {
public constructor C()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
@@ -14,7 +14,7 @@ public external final class C {
}
}
public external final enum class E : kotlin.Enum<E> {
public final external enum class E : kotlin.Enum<E> {
enum entry X
private constructor E()
@@ -1,6 +1,6 @@
package
public external final class A {
public final external class A {
public constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@kotlin.js.nativeGetter public final fun foo(/*0*/ a: kotlin.Double): kotlin.String?
@@ -20,7 +20,7 @@ public external final class A {
}
}
public external final class B {
public final external class B {
public constructor B()
@kotlin.js.nativeGetter public final val foo: kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -50,7 +50,7 @@ public external final class B {
}
}
public external final class C {
public final external class C {
public constructor C()
@kotlin.js.nativeGetter public final fun bar(/*0*/ a: kotlin.String): kotlin.Int
@kotlin.js.nativeGetter public final fun baz(/*0*/ a: kotlin.String = ...): kotlin.Int?
@@ -1,6 +1,6 @@
package
public external final class A {
public final external class A {
public constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
@@ -1,6 +1,6 @@
package
public external final class A {
public final external class A {
public constructor A()
@kotlin.js.nativeInvoke public final val foo: kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -1,6 +1,6 @@
package
public external final class A {
public final external class A {
public constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
@@ -1,6 +1,6 @@
package
public external final class A {
public final external class A {
public constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@kotlin.js.nativeSetter public final fun foo(/*0*/ a: kotlin.Int, /*1*/ v: kotlin.String): kotlin.Unit
@@ -24,7 +24,7 @@ public external final class A {
}
}
public external final class B {
public final external class B {
public constructor B()
@kotlin.js.nativeSetter public final val foo: kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -54,7 +54,7 @@ public external final class B {
}
}
public external final class C {
public final external class C {
public constructor C()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@kotlin.js.nativeSetter public final fun foo(/*0*/ a: kotlin.Number, /*1*/ v: kotlin.String = ...): kotlin.String
@@ -1,6 +1,6 @@
package
public external final class A {
public final external class A {
public constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
@@ -20,7 +20,7 @@ public final class TopLevel {
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public external final class A {
public final external class A {
public constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
@@ -35,7 +35,7 @@ public final class TopLevel {
}
}
public external final class TopLevelNative {
public final external class TopLevelNative {
public constructor TopLevelNative()
public final val x: kotlin.String
public external final val y: kotlin.String
@@ -45,7 +45,7 @@ public external final class TopLevelNative {
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public external final class A {
public final external class A {
public constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
@@ -5,7 +5,7 @@ public external val boo: kotlin.Int
public external fun bar(): kotlin.Unit
public external fun foo(): kotlin.Unit
public external final class C {
public final external class C {
public constructor C()
public final val baz: kotlin.Int
public final val boo: kotlin.Int
@@ -3,7 +3,7 @@ package
@kotlin.js.nativeSetter public fun kotlin.String.bar(/*0*/ n: kotlin.Int, /*1*/ v: kotlin.Any): kotlin.Unit
@kotlin.js.nativeSetter public fun kotlin.String.foo(/*0*/ n: kotlin.Int, /*1*/ v: kotlin.Any): kotlin.Unit
public external final class C {
public final external class C {
public constructor C()
@kotlin.js.nativeSetter public final fun bar(/*0*/ d: kotlin.Double, /*1*/ v: kotlin.Any): kotlin.Any
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -1,6 +1,6 @@
package
public external open class A {
public open external class A {
public constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open fun f(/*0*/ x: kotlin.Int = ...): kotlin.Unit
@@ -24,7 +24,7 @@ public final class BB : A {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public external final class C : A {
public final external class C : A {
public constructor C()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ fun f(/*0*/ x: kotlin.Int = ...): kotlin.Unit
@@ -32,7 +32,7 @@ public external final class C : A {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public external open class D {
public open external class D {
public constructor D()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open fun f(/*0*/ x: kotlin.Int): kotlin.Unit
@@ -56,7 +56,7 @@ public final class F : D, I {
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
}
public external final class G : D, I {
public final external class G : D, I {
public constructor G()
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*2*/ fun f(/*0*/ x: kotlin.Int = ...): kotlin.Unit
@@ -100,7 +100,7 @@ public open class X {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public external open class XE {
public open external class XE {
public constructor XE()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun f(/*0*/ x: kotlin.Int): kotlin.Unit
@@ -116,7 +116,7 @@ public final class Y : X, I {
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
}
public external final class YE : XE, I {
public final external class YE : XE, I {
public constructor YE()
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final override /*2*/ /*fake_override*/ fun f(/*0*/ x: kotlin.Int = ...): kotlin.Unit
@@ -1,6 +1,6 @@
package
public external final class C {
public final external class C {
public constructor C()
private final val b: kotlin.String
private final var c: kotlin.Float
@@ -23,7 +23,7 @@ public external object O {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public external final class Outer {
public final external class Outer {
public constructor Outer()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
@@ -1,6 +1,6 @@
package
public external final class C {
public final external class C {
public constructor C(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String)
public final val y: kotlin.String
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -4,7 +4,7 @@ public fun bar(): kotlin.Unit
public inline fun </*0*/ reified T> foo(/*0*/ x: T): kotlin.Unit
public operator inline fun </*0*/ reified T> C.plus(/*0*/ other: T): C
public external final class C : I {
public final external class C : I {
public constructor C()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
@@ -2,7 +2,7 @@ package
public external fun foo(/*0*/ a: kotlin.String): kotlin.Int
public external final class Bar {
public final external class Bar {
public constructor Bar(/*0*/ b: kotlin.Int, /*1*/ c: kotlin.Char)
public final fun baz(/*0*/ d: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -2,7 +2,7 @@ package
@kotlin.js.nativeGetter public fun kotlin.Int.foo(/*0*/ a: kotlin.String): kotlin.Int?
public external final class Bar {
public final external class Bar {
public constructor Bar(/*0*/ b: kotlin.Int, /*1*/ c: kotlin.Char)
@kotlin.js.nativeGetter public final fun baz(/*0*/ d: kotlin.Int): kotlin.Any?
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -2,7 +2,7 @@ package
@kotlin.js.nativeInvoke public fun kotlin.Int.foo(/*0*/ a: kotlin.String): kotlin.Int
public external final class Bar {
public final external class Bar {
public constructor Bar(/*0*/ b: kotlin.Int, /*1*/ c: kotlin.Char)
@kotlin.js.nativeInvoke public final fun baz(/*0*/ d: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -2,7 +2,7 @@ package
@kotlin.js.nativeSetter public fun kotlin.Int.foo(/*0*/ a: kotlin.String, /*1*/ v: kotlin.Int): kotlin.Int
public external final class Bar {
public final external class Bar {
public constructor Bar(/*0*/ b: kotlin.Int, /*1*/ c: kotlin.Char)
@kotlin.js.nativeSetter public final fun baz(/*0*/ d: kotlin.Int, /*1*/ v: kotlin.Int): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -3,7 +3,7 @@ package
public val x: kotlin.Int
public val B.x: kotlin.Int
public external final annotation class A : kotlin.Annotation {
public final external annotation class A : kotlin.Annotation {
public constructor A(/*0*/ x: kotlin.Int)
public final val x: kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -26,7 +26,7 @@ public final class C {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public external final class D {
public final external class D {
public constructor D()
public final val a: kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -34,7 +34,7 @@ public external final class D {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
public external final data class E {
public final external data class E {
public constructor E(/*0*/ x: kotlin.Int)
public final val x: kotlin.Int
public final operator /*synthesized*/ fun component1(): kotlin.Int
@@ -1,6 +1,6 @@
package
@X public external final class A {
@X public final external class A {
public constructor A()
@X public final val p: kotlin.Int
public final val r: kotlin.Int
@@ -10,7 +10,7 @@ package
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
@Y public external final class B {
@Y public final external class B {
public constructor B()
@Y public final val p: kotlin.Int
public final val r: kotlin.Int
@@ -2,7 +2,7 @@ package
public external val foo: kotlin.Int = 23
public external final class A {
public final external class A {
public constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
@@ -16,7 +16,7 @@ public final class B {
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public external final class A {
public final external class A {
public constructor A()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
@@ -59,14 +59,14 @@ internal class DescriptorRendererImpl(
private fun renderKeyword(keyword: String): String {
when (textFormat) {
RenderingFormat.PLAIN -> return keyword
RenderingFormat.HTML -> return "<b>" + keyword + "</b>"
RenderingFormat.HTML -> return "<b>$keyword</b>"
}
}
private fun renderError(keyword: String): String {
when (textFormat) {
RenderingFormat.PLAIN -> return keyword
RenderingFormat.HTML -> return "<font color=red><b>" + keyword + "</b></font>"
RenderingFormat.HTML -> return "<font color=red><b>$keyword</b></font>"
}
}
@@ -213,7 +213,7 @@ internal class DescriptorRendererImpl(
val kotlinCollectionsPrefix = classifierNamePolicy.renderClassifier(builtIns.collection, this).substringBefore("Collection")
val mutablePrefix = "Mutable"
// java.util.List<Foo> -> (Mutable)List<Foo!>!
val simpleCollection = replacePrefixes(lowerRendered, kotlinCollectionsPrefix + mutablePrefix, upperRendered, kotlinCollectionsPrefix, kotlinCollectionsPrefix + "(" + mutablePrefix + ")")
val simpleCollection = replacePrefixes(lowerRendered, kotlinCollectionsPrefix + mutablePrefix, upperRendered, kotlinCollectionsPrefix, "$kotlinCollectionsPrefix($mutablePrefix)")
if (simpleCollection != null) return simpleCollection
// java.util.Map.Entry<Foo, Bar> -> (Mutable)Map.(Mutable)Entry<Foo!, Bar!>!
val mutableEntry = replacePrefixes(lowerRendered, kotlinCollectionsPrefix + "MutableMap.MutableEntry", upperRendered, kotlinCollectionsPrefix + "Map.Entry", kotlinCollectionsPrefix + "(Mutable)Map.(Mutable)Entry")
@@ -324,9 +324,7 @@ internal class DescriptorRendererImpl(
if (needParenthesis) append("(")
if (type.isSuspendFunctionType) {
append("suspend ") // anything special about modifier?
}
renderModifier(this, type.isSuspendFunctionType, "suspend")
if (receiverType != null) {
val surroundReceiver = shouldRenderAsPrettyFunctionType(receiverType) && !receiverType.isMarkedNullable ||
@@ -463,40 +461,13 @@ internal class DescriptorRendererImpl(
}
private fun renderModality(modality: Modality, builder: StringBuilder) {
if (DescriptorRendererModifier.MODALITY !in modifiers) return
val keyword = modality.name.toLowerCase()
builder.append(renderKeyword(keyword)).append(" ")
}
private fun renderHeader(isHeader: Boolean, builder: StringBuilder) {
if (DescriptorRendererModifier.HEADER !in modifiers) return
if (isHeader) {
builder.append(renderKeyword("header")).append(" ")
}
}
private fun renderImpl(isImpl: Boolean, builder: StringBuilder) {
if (DescriptorRendererModifier.IMPL !in modifiers) return
if (isImpl) {
builder.append(renderKeyword("impl")).append(" ")
}
}
private fun renderInner(isInner: Boolean, builder: StringBuilder) {
if (DescriptorRendererModifier.INNER !in modifiers) return
if (isInner) {
builder.append(renderKeyword("inner")).append(" ")
}
}
private fun renderData(isData: Boolean, builder: StringBuilder) {
if (DescriptorRendererModifier.DATA !in modifiers || !isData) return
builder.append(renderKeyword("data")).append(" ")
renderModifier(builder, DescriptorRendererModifier.MODALITY in modifiers, modality.name.toLowerCase())
}
private fun renderModalityForCallable(callable: CallableMemberDescriptor, builder: StringBuilder) {
if (!DescriptorUtils.isTopLevelDeclaration(callable) || callable.modality != Modality.FINAL) {
if (overridesSomething(callable) && overrideRenderingPolicy == OverrideRenderingPolicy.RENDER_OVERRIDE && callable.modality == Modality.OPEN) {
if (overrideRenderingPolicy == OverrideRenderingPolicy.RENDER_OVERRIDE && callable.modality == Modality.OPEN &&
overridesSomething(callable)) {
return
}
renderModality(callable.modality, builder)
@@ -507,7 +478,7 @@ internal class DescriptorRendererImpl(
if (DescriptorRendererModifier.OVERRIDE !in modifiers) return
if (overridesSomething(callableMember)) {
if (overrideRenderingPolicy != OverrideRenderingPolicy.RENDER_OPEN) {
builder.append("override ")
renderModifier(builder, true, "override")
if (verbose) {
builder.append("/*").append(callableMember.overriddenDescriptors.size).append("*/ ")
}
@@ -522,45 +493,31 @@ internal class DescriptorRendererImpl(
}
}
private fun renderCallableModifiers(descriptor: CallableMemberDescriptor, builder: StringBuilder) {
renderExternal(descriptor, builder)
if (descriptor.isHeader) {
builder.append("header ")
}
if (descriptor.isImpl) {
builder.append("impl ")
private fun renderModifier(builder: StringBuilder, value: Boolean, modifier: String) {
if (value) {
builder.append(renderKeyword(modifier))
builder.append(" ")
}
}
private fun renderExternal(memberDescriptor: MemberDescriptor, builder: StringBuilder) {
if (memberDescriptor.isExternal) {
builder.append("external ")
}
}
private fun renderLateInit(propertyDescriptor: PropertyDescriptor, builder: StringBuilder) {
if (propertyDescriptor.isLateInit) {
builder.append("lateinit ")
}
private fun renderMemberModifiers(descriptor: MemberDescriptor, builder: StringBuilder) {
renderModifier(builder, descriptor.isExternal, "external")
renderModifier(builder, DescriptorRendererModifier.HEADER in modifiers && descriptor.isHeader, "header")
renderModifier(builder, DescriptorRendererModifier.IMPL in modifiers && descriptor.isImpl, "impl")
}
private fun renderAdditionalModifiers(functionDescriptor: FunctionDescriptor, builder: StringBuilder) {
if (functionDescriptor.isOperator && (functionDescriptor.overriddenDescriptors.none { it.isOperator } || alwaysRenderModifiers)) {
builder.append("operator ")
}
if (functionDescriptor.isInfix && (functionDescriptor.overriddenDescriptors.none { it.isInfix } || alwaysRenderModifiers)) {
builder.append("infix ")
}
renderCallableModifiers(functionDescriptor, builder)
if (functionDescriptor.isInline) {
builder.append("inline ")
}
if (functionDescriptor.isTailrec) {
builder.append("tailrec ")
}
if (functionDescriptor.isSuspend) {
builder.append("suspend ")
}
val isOperator =
functionDescriptor.isOperator && (functionDescriptor.overriddenDescriptors.none { it.isOperator } || alwaysRenderModifiers)
val isInfix =
functionDescriptor.isInfix && (functionDescriptor.overriddenDescriptors.none { it.isInfix } || alwaysRenderModifiers)
renderModifier(builder, isOperator, "operator")
renderModifier(builder, isInfix, "infix")
renderMemberModifiers(functionDescriptor, builder)
renderModifier(builder, functionDescriptor.isInline, "inline")
renderModifier(builder, functionDescriptor.isTailrec, "tailrec")
renderModifier(builder, functionDescriptor.isSuspend, "suspend")
}
override fun render(declarationDescriptor: DeclarationDescriptor): String {
@@ -584,13 +541,9 @@ internal class DescriptorRendererImpl(
builder.append("/*").append(typeParameter.index).append("*/ ")
}
if (typeParameter.isReified) {
builder.append(renderKeyword("reified")).append(" ")
}
renderModifier(builder, typeParameter.isReified, "reified")
val variance = typeParameter.variance.label
if (!variance.isEmpty()) {
builder.append(renderKeyword(variance)).append(" ")
}
renderModifier(builder, variance.isNotEmpty(), variance)
builder.renderAnnotations(typeParameter)
@@ -793,14 +746,8 @@ internal class DescriptorRendererImpl(
}
builder.renderAnnotations(valueParameter)
if (valueParameter.isCrossinline) {
builder.append("crossinline ")
}
if (valueParameter.isNoinline) {
builder.append("noinline ")
}
renderModifier(builder, valueParameter.isCrossinline, "crossinline")
renderModifier(builder, valueParameter.isNoinline, "noinline")
renderVariable(valueParameter, includeName, builder, topLevel)
@@ -822,9 +769,7 @@ internal class DescriptorRendererImpl(
val varargElementType = (variable as? ValueParameterDescriptor)?.varargElementType
val typeToRender = varargElementType ?: realType
if (varargElementType != null) {
builder.append(renderKeyword("vararg")).append(" ")
}
renderModifier(builder, varargElementType != null, "vararg")
if (topLevel && !startFromName) {
renderValVarPrefix(variable, builder)
}
@@ -848,15 +793,11 @@ internal class DescriptorRendererImpl(
if (!startFromDeclarationKeyword) {
builder.renderAnnotations(property)
renderVisibility(property.visibility, builder)
if (property.isConst) {
builder.append("const ")
}
renderCallableModifiers(property, builder)
renderModifier(builder, property.isConst, "const")
renderMemberModifiers(property, builder)
renderModalityForCallable(property, builder)
renderOverride(property, builder)
renderLateInit(property, builder)
renderModifier(builder, property.isLateInit, "lateinit")
renderMemberKind(property, builder)
}
renderValVarPrefix(property, builder)
@@ -914,15 +855,13 @@ internal class DescriptorRendererImpl(
if (!isEnumEntry) {
renderVisibility(klass.visibility, builder)
}
renderExternal(klass, builder)
if (!(klass.kind == ClassKind.INTERFACE && klass.modality == Modality.ABSTRACT ||
klass.kind.isSingleton && klass.modality == Modality.FINAL)) {
renderModality(klass.modality, builder)
}
renderHeader(klass.isHeader, builder)
renderImpl(klass.isImpl, builder)
renderInner(klass.isInner, builder)
renderData(klass.isData, builder)
renderMemberModifiers(klass, builder)
renderModifier(builder, DescriptorRendererModifier.INNER in modifiers && klass.isInner, "inner")
renderModifier(builder, DescriptorRendererModifier.DATA in modifiers && klass.isData, "data")
renderClassKindPrefix(klass, builder)
}
@@ -946,7 +885,7 @@ internal class DescriptorRendererImpl(
builder.append(" ")
builder.renderAnnotations(primaryConstructor)
renderVisibility(primaryConstructor.visibility, builder)
builder.append("constructor")
builder.append(renderKeyword("constructor"))
renderValueParameters(primaryConstructor.valueParameters, primaryConstructor.hasSynthesizedParameterNames(), builder)
}
}
@@ -1000,7 +939,7 @@ internal class DescriptorRendererImpl(
}
private fun renderAccessorModifiers(descriptor: PropertyAccessorDescriptor, builder: StringBuilder) {
renderCallableModifiers(descriptor, builder)
renderMemberModifiers(descriptor, builder)
}
/* STUPID DISPATCH-ONLY VISITOR */
+1 -1
View File
@@ -2,4 +2,4 @@ fun test() {
listOf(1, 2, 4).<caret>filter { it > 0 }
}
//INFO: <pre><b>public</b> inline <b>fun</b> &lt;T&gt; <a href="psi_element://kotlin.collections.Iterable">Iterable</a>&lt;<a href="psi_element://kotlin.collections.filter.T">T</a>&gt;.filter(predicate: (<a href="psi_element://kotlin.collections.filter.T">T</a>) &rarr; Boolean): <a href="psi_element://kotlin.collections.List">List</a>&lt;<a href="psi_element://kotlin.collections.filter.T">T</a>&gt; <i>defined in</i> kotlin.collections <i>in file</i> CollectionsKt.class</pre><p>Returns a list containing only elements matching the given <a href="psi_element://predicate">predicate</a>.</p>
//INFO: <pre><b>public</b> <b>inline</b> <b>fun</b> &lt;T&gt; <a href="psi_element://kotlin.collections.Iterable">Iterable</a>&lt;<a href="psi_element://kotlin.collections.filter.T">T</a>&gt;.filter(predicate: (<a href="psi_element://kotlin.collections.filter.T">T</a>) &rarr; Boolean): <a href="psi_element://kotlin.collections.List">List</a>&lt;<a href="psi_element://kotlin.collections.filter.T">T</a>&gt; <i>defined in</i> kotlin.collections <i>in file</i> CollectionsKt.class</pre><p>Returns a list containing only elements matching the given <a href="psi_element://predicate">predicate</a>.</p>