diff --git a/compiler/testData/diagnostics/tests/ShiftFunctionTypes.txt b/compiler/testData/diagnostics/tests/ShiftFunctionTypes.txt index cbbb26b245f..9cfaa240c38 100644 --- a/compiler/testData/diagnostics/tests/ShiftFunctionTypes.txt +++ b/compiler/testData/diagnostics/tests/ShiftFunctionTypes.txt @@ -17,7 +17,7 @@ internal abstract class XXX { internal abstract val a15: kotlin.Int?.(kotlin.Int) -> kotlin.Int internal abstract val a152: kotlin.Int?.(kotlin.Int) -> kotlin.Int internal abstract val a16: (kotlin.Int) -> (kotlin.Int) -> kotlin.Int - internal abstract val a17: (kotlin.Int) -> kotlin.Int.(kotlin.Int) -> kotlin.Int + internal abstract val a17: ((kotlin.Int) -> kotlin.Int).(kotlin.Int) -> kotlin.Int internal abstract val a18: (kotlin.Int) -> (kotlin.Int) -> kotlin.Int internal abstract val a19: ((kotlin.Int) -> kotlin.Int) -> kotlin.Int internal abstract val a2: n.B @@ -42,7 +42,7 @@ internal abstract class YYY { internal abstract val a15: kotlin.Int?.(kotlin.Int) -> kotlin.Int internal abstract val a152: kotlin.Int?.(kotlin.Int) -> kotlin.Int internal abstract val a16: (kotlin.Int) -> (kotlin.Int) -> kotlin.Int - internal abstract val a17: (kotlin.Int) -> kotlin.Int.(kotlin.Int) -> kotlin.Int + internal abstract val a17: ((kotlin.Int) -> kotlin.Int).(kotlin.Int) -> kotlin.Int internal abstract val a18: (kotlin.Int) -> (kotlin.Int) -> kotlin.Int internal abstract val a19: ((kotlin.Int) -> kotlin.Int) -> kotlin.Int internal abstract val a7: (A) -> n.B diff --git a/compiler/testData/diagnostics/tests/functionLiterals/DeprecatedSyntax.txt b/compiler/testData/diagnostics/tests/functionLiterals/DeprecatedSyntax.txt index 21186bb1cbf..35c152541ca 100644 --- a/compiler/testData/diagnostics/tests/functionLiterals/DeprecatedSyntax.txt +++ b/compiler/testData/diagnostics/tests/functionLiterals/DeprecatedSyntax.txt @@ -12,7 +12,7 @@ internal val parenthesizedParameters2: (???) -> kotlin.Unit internal val receiver: kotlin.Int.() -> kotlin.Unit internal val receiverAndReturnType: kotlin.Int.() -> kotlin.Int internal val receiverAndReturnTypeWithParameter: kotlin.Int.(kotlin.Int) -> kotlin.Int -internal val receiverWithFunctionType: (kotlin.Int) -> kotlin.Int.() -> kotlin.Unit +internal val receiverWithFunctionType: ((kotlin.Int) -> kotlin.Int).() -> kotlin.Unit internal val receiverWithParameter: kotlin.Int.(???) -> kotlin.Unit internal val returnType: () -> kotlin.Int internal val returnTypeWithParameter: (kotlin.Int) -> kotlin.Int diff --git a/compiler/testData/renderer/FunctionTypes.kt b/compiler/testData/renderer/FunctionTypes.kt index 832df262d39..250d5ddb7de 100644 --- a/compiler/testData/renderer/FunctionTypes.kt +++ b/compiler/testData/renderer/FunctionTypes.kt @@ -19,6 +19,9 @@ var v10: GF class GEF: @extension Function1 var v11: GEF +var v12: (() -> Unit).() -> Unit +var v13: (() -> Unit)?.() -> Unit + //internal var v1: () -> kotlin.Unit defined in root package //internal var v2: (kotlin.Int) -> kotlin.Int defined in root package //internal var v3: (kotlin.Int, kotlin.String) -> kotlin.String defined in root package @@ -42,3 +45,5 @@ var v11: GEF // defined in GEF // defined in GEF //internal var v11: GEF defined in root package +//internal var v12: (() -> kotlin.Unit).() -> kotlin.Unit defined in root package +//internal var v13: (() -> kotlin.Unit)?.() -> kotlin.Unit defined in root package diff --git a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt index 9f19a58cc00..ab7d7987ab7 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.kt @@ -288,7 +288,14 @@ internal class DescriptorRendererImpl( val receiverType = KotlinBuiltIns.getReceiverType(type) if (receiverType != null) { + val surroundReceiver = shouldRenderAsPrettyFunctionType(receiverType) && !receiverType.isMarkedNullable() + if (surroundReceiver) { + append("(") + } append(renderNormalizedType(receiverType)) + if (surroundReceiver) { + append(")") + } append(".") }