Render header/impl on properties in tests and diagnostic messages
As a side effect, header/impl and some other modifiers on functions are now rendered in a different, more natural, order
This commit is contained in:
+2
-2
@@ -3,7 +3,7 @@ package
|
||||
|
||||
public final header annotation class Anno : kotlin.Annotation {
|
||||
public constructor Anno(/*0*/ prop: kotlin.String)
|
||||
public final val prop: kotlin.String
|
||||
public header final val prop: kotlin.String
|
||||
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
|
||||
@@ -50,7 +50,7 @@ package
|
||||
|
||||
public final impl annotation class Anno : kotlin.Annotation {
|
||||
public constructor Anno(/*0*/ prop: kotlin.String)
|
||||
public final val prop: kotlin.String
|
||||
public impl final val prop: kotlin.String
|
||||
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
|
||||
|
||||
+3
-3
@@ -3,7 +3,7 @@ package
|
||||
|
||||
public final header class Foo {
|
||||
public constructor Foo()
|
||||
public final val foo: kotlin.String
|
||||
public header final val foo: kotlin.String
|
||||
public final header fun bar(/*0*/ x: 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
|
||||
@@ -16,7 +16,7 @@ package
|
||||
|
||||
public final impl class Foo {
|
||||
public constructor Foo()
|
||||
public final val foo: kotlin.String = "JVM"
|
||||
public impl final val foo: kotlin.String = "JVM"
|
||||
public final impl fun bar(/*0*/ x: 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
|
||||
@@ -29,7 +29,7 @@ package
|
||||
|
||||
public final impl class Foo {
|
||||
public constructor Foo()
|
||||
public final val foo: kotlin.String = "JS"
|
||||
public impl final val foo: kotlin.String = "JS"
|
||||
public final impl fun bar(/*0*/ x: 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
|
||||
|
||||
Vendored
+3
-3
@@ -4,9 +4,9 @@ public final header class Foo {
|
||||
public constructor Foo()
|
||||
public constructor Foo(/*0*/ s: kotlin.String)
|
||||
public constructor Foo(/*0*/ constructorProperty: kotlin.String, /*1*/ constructorParameter: kotlin.String)
|
||||
public final val constructorProperty: kotlin.String
|
||||
public final var getSet: kotlin.String
|
||||
public final val prop: kotlin.String = "no"
|
||||
public header final val constructorProperty: kotlin.String
|
||||
public header final var getSet: kotlin.String
|
||||
public header final val prop: kotlin.String = "no"
|
||||
public final header fun defaultArg(/*0*/ value: kotlin.String = ...): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public final header fun functionWithBody(/*0*/ x: kotlin.Int): kotlin.Int
|
||||
|
||||
+6
-6
@@ -10,7 +10,7 @@ public final header class Bar {
|
||||
|
||||
public final header class Baz {
|
||||
public constructor Baz(/*0*/ w: kotlin.collections.List<kotlin.String>)
|
||||
public final val w: kotlin.collections.List<kotlin.String>
|
||||
public header final val w: kotlin.collections.List<kotlin.String>
|
||||
public final operator header fun component1(): kotlin.collections.List<kotlin.String>
|
||||
public open header override /*1*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open header override /*1*/ fun hashCode(): kotlin.Int
|
||||
@@ -19,8 +19,8 @@ public final header class Baz {
|
||||
|
||||
public final header class Foo {
|
||||
public constructor Foo(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String)
|
||||
public final val x: kotlin.Int
|
||||
public final val y: kotlin.String
|
||||
public header final val x: kotlin.Int
|
||||
public header final val y: kotlin.String
|
||||
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
|
||||
@@ -42,7 +42,7 @@ public final impl data class Bar {
|
||||
|
||||
public final impl data class Baz {
|
||||
public constructor Baz(/*0*/ w: kotlin.collections.List<kotlin.String>)
|
||||
public final val w: kotlin.collections.List<kotlin.String>
|
||||
public impl final val w: kotlin.collections.List<kotlin.String>
|
||||
public final operator /*synthesized*/ fun component1(): kotlin.collections.List<kotlin.String>
|
||||
public final /*synthesized*/ fun copy(/*0*/ w: kotlin.collections.List<kotlin.String> = ...): Baz
|
||||
public open override /*1*/ /*synthesized*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
@@ -52,8 +52,8 @@ public final impl data class Baz {
|
||||
|
||||
public final impl data class Foo {
|
||||
public constructor Foo(/*0*/ x: kotlin.Int, /*1*/ y: kotlin.String)
|
||||
public final val x: kotlin.Int
|
||||
public final val y: kotlin.String
|
||||
public impl final val x: kotlin.Int
|
||||
public impl final val y: kotlin.String
|
||||
public final operator /*synthesized*/ fun component1(): kotlin.Int
|
||||
public final operator /*synthesized*/ fun component2(): kotlin.String
|
||||
public final /*synthesized*/ fun copy(/*0*/ x: kotlin.Int = ..., /*1*/ y: kotlin.String = ...): Foo
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ public fun foo(): kotlin.Unit
|
||||
|
||||
public final class Outer {
|
||||
public constructor Outer()
|
||||
public final val bar: kotlin.Int
|
||||
public header final val bar: kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public final header fun foo(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
|
||||
+2
-2
@@ -12,7 +12,7 @@ public header fun kotlin.String.unaryMinus(): kotlin.String
|
||||
package
|
||||
|
||||
public external impl fun external(): kotlin.Unit
|
||||
public inline impl fun inline(): kotlin.Unit
|
||||
public tailrec impl fun tailrec(): kotlin.Unit
|
||||
public impl inline fun inline(): kotlin.Unit
|
||||
public impl tailrec fun tailrec(): kotlin.Unit
|
||||
public infix impl fun kotlin.String.and(/*0*/ other: kotlin.String): kotlin.String
|
||||
public operator impl fun kotlin.String.unaryMinus(): kotlin.String
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
// -- Module: <m1-common> --
|
||||
package
|
||||
|
||||
public inline header fun inlineFun(): kotlin.Unit
|
||||
public header inline fun inlineFun(): kotlin.Unit
|
||||
public header fun nonInlineFun(): kotlin.Unit
|
||||
|
||||
|
||||
@@ -15,5 +15,5 @@ public impl fun nonInlineFun(): kotlin.Unit
|
||||
// -- Module: <m3-js> --
|
||||
package
|
||||
|
||||
public inline impl fun inlineFun(): kotlin.Unit
|
||||
public inline impl fun nonInlineFun(): kotlin.Unit
|
||||
public impl inline fun inlineFun(): kotlin.Unit
|
||||
public impl inline fun nonInlineFun(): kotlin.Unit
|
||||
|
||||
Vendored
+14
-14
@@ -1,19 +1,19 @@
|
||||
package
|
||||
|
||||
public val backingFieldVal: kotlin.String = "no"
|
||||
public var backingFieldVar: kotlin.String
|
||||
public const val constVal: kotlin.Int
|
||||
public val customAccessorVal: kotlin.String
|
||||
public var customAccessorVar: kotlin.String
|
||||
public val delegated: kotlin.String
|
||||
public val justVal: kotlin.String
|
||||
public var justVar: kotlin.String
|
||||
public lateinit var lateinitVar: kotlin.String
|
||||
public val valWithGet: kotlin.String
|
||||
public var varWithGetSet: kotlin.String
|
||||
public var varWithPlatformGetSet: kotlin.String
|
||||
public val kotlin.String.extensionVal: kotlin.Unit
|
||||
public var </*0*/ T> T.genericExtensionVar: T
|
||||
public header val backingFieldVal: kotlin.String = "no"
|
||||
public header var backingFieldVar: kotlin.String
|
||||
public const header val constVal: kotlin.Int
|
||||
public header val customAccessorVal: kotlin.String
|
||||
public header var customAccessorVar: kotlin.String
|
||||
public header val delegated: kotlin.String
|
||||
public header val justVal: kotlin.String
|
||||
public header var justVar: kotlin.String
|
||||
public header lateinit var lateinitVar: kotlin.String
|
||||
public header val valWithGet: kotlin.String
|
||||
public header var varWithGetSet: kotlin.String
|
||||
public header var varWithPlatformGetSet: kotlin.String
|
||||
public header val kotlin.String.extensionVal: kotlin.Unit
|
||||
public header var </*0*/ T> T.genericExtensionVar: T
|
||||
public fun test(): kotlin.String
|
||||
|
||||
public object Delegate {
|
||||
|
||||
+3
-3
@@ -1,16 +1,16 @@
|
||||
// -- Module: <m1-common> --
|
||||
package
|
||||
|
||||
public var foo: kotlin.String
|
||||
public header var foo: kotlin.String
|
||||
|
||||
|
||||
// -- Module: <m2-jvm> --
|
||||
package
|
||||
|
||||
public var foo: kotlin.String
|
||||
public impl var foo: kotlin.String
|
||||
|
||||
|
||||
// -- Module: <m3-js> --
|
||||
package
|
||||
|
||||
public var foo: kotlin.String
|
||||
public impl var foo: kotlin.String
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
package
|
||||
|
||||
public val bar2: kotlin.Int
|
||||
public impl val bar2: kotlin.Int
|
||||
public impl fun foo2(): kotlin.Int
|
||||
|
||||
public impl interface Baz2 {
|
||||
|
||||
@@ -73,13 +73,13 @@ public header fun f10()
|
||||
^
|
||||
compiler/testData/multiplatform/incompatibleCallables/common.kt:26:1: error: header declaration 'f14' has no implementation in module
|
||||
The following declaration is incompatible because some type parameter is reified in one declaration and non-reified in the other:
|
||||
public inline impl fun <reified X> f14(): Unit
|
||||
public impl inline fun <reified X> f14(): Unit
|
||||
|
||||
header inline fun <X> f14()
|
||||
^
|
||||
compiler/testData/multiplatform/incompatibleCallables/common.kt:27:1: error: header declaration 'f15' has no implementation in module
|
||||
The following declaration is incompatible because some type parameter is reified in one declaration and non-reified in the other:
|
||||
public inline impl fun <Y> f15(): Unit
|
||||
public impl inline fun <Y> f15(): Unit
|
||||
|
||||
header inline fun <reified Y> f15()
|
||||
^
|
||||
@@ -103,25 +103,25 @@ header fun f18(s: Array<out String>)
|
||||
^
|
||||
compiler/testData/multiplatform/incompatibleCallables/common.kt:33:1: error: header declaration 'f19' has no implementation in module
|
||||
The following declaration is incompatible because parameter modifiers are different (vararg, coroutine, crossinline, noinline):
|
||||
public inline impl fun f19(s: () -> Unit): Unit
|
||||
public impl inline fun f19(s: () -> Unit): Unit
|
||||
|
||||
header inline fun f19(crossinline s: () -> Unit)
|
||||
^
|
||||
compiler/testData/multiplatform/incompatibleCallables/common.kt:34:1: error: header declaration 'f20' has no implementation in module
|
||||
The following declaration is incompatible because parameter modifiers are different (vararg, coroutine, crossinline, noinline):
|
||||
public inline impl fun f20(crossinline s: () -> Unit): Unit
|
||||
public impl inline fun f20(crossinline s: () -> Unit): Unit
|
||||
|
||||
header inline fun f20(s: () -> Unit)
|
||||
^
|
||||
compiler/testData/multiplatform/incompatibleCallables/common.kt:35:1: error: header declaration 'f21' has no implementation in module
|
||||
The following declaration is incompatible because parameter modifiers are different (vararg, coroutine, crossinline, noinline):
|
||||
public inline impl fun f21(s: () -> Unit): Unit
|
||||
public impl inline fun f21(s: () -> Unit): Unit
|
||||
|
||||
header inline fun f21(noinline s: () -> Unit)
|
||||
^
|
||||
compiler/testData/multiplatform/incompatibleCallables/common.kt:36:1: error: header declaration 'f22' has no implementation in module
|
||||
The following declaration is incompatible because parameter modifiers are different (vararg, coroutine, crossinline, noinline):
|
||||
public inline impl fun f22(noinline s: () -> Unit): Unit
|
||||
public impl inline fun f22(noinline s: () -> Unit): Unit
|
||||
|
||||
header inline fun f22(s: () -> Unit)
|
||||
^
|
||||
|
||||
@@ -7,13 +7,13 @@ Exit code: COMPILATION_ERROR
|
||||
Output:
|
||||
compiler/testData/multiplatform/incompatibleProperties/common.kt:1:1: error: header declaration 'pval' has no implementation in module
|
||||
The following declaration is incompatible because property kinds are different (val vs var):
|
||||
public var pval: String
|
||||
public impl var pval: String
|
||||
|
||||
header val pval: String
|
||||
^
|
||||
compiler/testData/multiplatform/incompatibleProperties/common.kt:2:1: error: header declaration 'pvar' has no implementation in module
|
||||
The following declaration is incompatible because property kinds are different (val vs var):
|
||||
public val pvar: String
|
||||
public impl val pvar: String
|
||||
|
||||
header var pvar: String
|
||||
^
|
||||
|
||||
@@ -522,6 +522,16 @@ 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 renderExternal(memberDescriptor: MemberDescriptor, builder: StringBuilder) {
|
||||
if (memberDescriptor.isExternal) {
|
||||
builder.append("external ")
|
||||
@@ -541,7 +551,7 @@ internal class DescriptorRendererImpl(
|
||||
if (functionDescriptor.isInfix && (functionDescriptor.overriddenDescriptors.none { it.isInfix } || alwaysRenderModifiers)) {
|
||||
builder.append("infix ")
|
||||
}
|
||||
renderExternal(functionDescriptor, builder)
|
||||
renderCallableModifiers(functionDescriptor, builder)
|
||||
if (functionDescriptor.isInline) {
|
||||
builder.append("inline ")
|
||||
}
|
||||
@@ -551,12 +561,6 @@ internal class DescriptorRendererImpl(
|
||||
if (functionDescriptor.isSuspend) {
|
||||
builder.append("suspend ")
|
||||
}
|
||||
if (functionDescriptor.isHeader) {
|
||||
builder.append("header ")
|
||||
}
|
||||
if (functionDescriptor.isImpl) {
|
||||
builder.append("impl ")
|
||||
}
|
||||
}
|
||||
|
||||
override fun render(declarationDescriptor: DeclarationDescriptor): String {
|
||||
@@ -849,7 +853,7 @@ internal class DescriptorRendererImpl(
|
||||
builder.append("const ")
|
||||
}
|
||||
|
||||
renderExternal(property, builder)
|
||||
renderCallableModifiers(property, builder)
|
||||
renderModalityForCallable(property, builder)
|
||||
renderOverride(property, builder)
|
||||
renderLateInit(property, builder)
|
||||
@@ -997,7 +1001,7 @@ internal class DescriptorRendererImpl(
|
||||
}
|
||||
|
||||
private fun renderAccessorModifiers(descriptor: PropertyAccessorDescriptor, builder: StringBuilder) {
|
||||
renderExternal(descriptor, builder)
|
||||
renderCallableModifiers(descriptor, builder)
|
||||
}
|
||||
|
||||
/* STUPID DISPATCH-ONLY VISITOR */
|
||||
|
||||
Reference in New Issue
Block a user