diff --git a/compiler/testData/diagnostics/tests/inline/assignment.txt b/compiler/testData/diagnostics/tests/inline/assignment.txt index 722ed0cee82..d975038c69f 100644 --- a/compiler/testData/diagnostics/tests/inline/assignment.txt +++ b/compiler/testData/diagnostics/tests/inline/assignment.txt @@ -1,4 +1,4 @@ package kotlin.inline() internal fun inlineFunWithInvoke(/*0*/ s: (kotlin.Int) -> kotlin.Unit, /*1*/ ext: kotlin.Int.(kotlin.Int) -> kotlin.Unit): kotlin.Unit -kotlin.inline() internal fun (kotlin.Int) -> kotlin.Unit.inlineExt(): kotlin.Unit +kotlin.inline() internal fun ((kotlin.Int) -> kotlin.Unit).inlineExt(): kotlin.Unit diff --git a/compiler/testData/diagnostics/tests/inline/binaryExpressions/andOr.txt b/compiler/testData/diagnostics/tests/inline/binaryExpressions/andOr.txt index c3f34fa8320..7086e07959f 100644 --- a/compiler/testData/diagnostics/tests/inline/binaryExpressions/andOr.txt +++ b/compiler/testData/diagnostics/tests/inline/binaryExpressions/andOr.txt @@ -2,4 +2,4 @@ package kotlin.inline() internal fun inlineFunWithInvoke(/*0*/ s: (kotlin.Int) -> kotlin.Unit, /*1*/ ext: kotlin.Int.(kotlin.Int) -> kotlin.Unit): kotlin.Unit kotlin.inline() internal fun inlineFunWithInvokeNonInline(/*0*/ kotlin.noinline() s: (kotlin.Int) -> kotlin.Unit, /*1*/ ext: kotlin.Int.(kotlin.Int) -> kotlin.Unit): kotlin.Unit -kotlin.inline() internal fun (kotlin.Int) -> kotlin.Unit.inlineExt(): kotlin.Unit +kotlin.inline() internal fun ((kotlin.Int) -> kotlin.Unit).inlineExt(): kotlin.Unit diff --git a/compiler/testData/diagnostics/tests/inline/binaryExpressions/arrayAccess.txt b/compiler/testData/diagnostics/tests/inline/binaryExpressions/arrayAccess.txt index a25a3178c3a..cd3a400834b 100644 --- a/compiler/testData/diagnostics/tests/inline/binaryExpressions/arrayAccess.txt +++ b/compiler/testData/diagnostics/tests/inline/binaryExpressions/arrayAccess.txt @@ -2,7 +2,7 @@ package kotlin.inline() internal fun inlineFunWithInvoke(/*0*/ s: (T) -> U, /*1*/ ext: T.(U) -> V): kotlin.Unit kotlin.inline() internal fun inlineFunWithInvoke(/*0*/ s: (T, U) -> V, /*1*/ ext: T.(U, V) -> W): kotlin.Unit -kotlin.inline() internal fun (T) -> U.get(/*0*/ index: kotlin.Int): kotlin.Unit -internal fun (T, U) -> V.get(/*0*/ index: kotlin.Int): kotlin.Unit -kotlin.inline() internal fun T.(U) -> V.get(/*0*/ index: kotlin.Int): kotlin.Unit -internal fun T.(U, V) -> W.get(/*0*/ index: kotlin.Int): kotlin.Unit +kotlin.inline() internal fun ((T) -> U).get(/*0*/ index: kotlin.Int): kotlin.Unit +internal fun ((T, U) -> V).get(/*0*/ index: kotlin.Int): kotlin.Unit +kotlin.inline() internal fun (T.(U) -> V).get(/*0*/ index: kotlin.Int): kotlin.Unit +internal fun (T.(U, V) -> W).get(/*0*/ index: kotlin.Int): kotlin.Unit diff --git a/compiler/testData/diagnostics/tests/inline/binaryExpressions/assignment.txt b/compiler/testData/diagnostics/tests/inline/binaryExpressions/assignment.txt index 464a557d4bc..4122f843d8a 100644 --- a/compiler/testData/diagnostics/tests/inline/binaryExpressions/assignment.txt +++ b/compiler/testData/diagnostics/tests/inline/binaryExpressions/assignment.txt @@ -1,9 +1,9 @@ package kotlin.inline() internal fun inlineFunWithInvoke(/*0*/ s: (T) -> U, /*1*/ ext: T.(U) -> V): kotlin.Unit -internal fun (T) -> U.minusAssign(/*0*/ p: (T) -> U): kotlin.Unit -internal fun T.(U) -> V.minusAssign(/*0*/ ext: T.(U) -> V): kotlin.Unit -kotlin.inline() internal fun (T) -> U.modAssign(/*0*/ p: (T) -> U): () -> kotlin.Unit -kotlin.inline() internal fun T.(U) -> V.modAssign(/*0*/ ext: T.(U) -> V): () -> kotlin.Unit -kotlin.inline() internal fun (T) -> U.plusAssign(/*0*/ p: (T) -> U): kotlin.Unit -kotlin.inline() internal fun T.(U) -> V.plusAssign(/*0*/ ext: T.(U) -> V): kotlin.Unit +internal fun ((T) -> U).minusAssign(/*0*/ p: (T) -> U): kotlin.Unit +internal fun (T.(U) -> V).minusAssign(/*0*/ ext: T.(U) -> V): kotlin.Unit +kotlin.inline() internal fun ((T) -> U).modAssign(/*0*/ p: (T) -> U): () -> kotlin.Unit +kotlin.inline() internal fun (T.(U) -> V).modAssign(/*0*/ ext: T.(U) -> V): () -> kotlin.Unit +kotlin.inline() internal fun ((T) -> U).plusAssign(/*0*/ p: (T) -> U): kotlin.Unit +kotlin.inline() internal fun (T.(U) -> V).plusAssign(/*0*/ ext: T.(U) -> V): kotlin.Unit diff --git a/compiler/testData/diagnostics/tests/inline/binaryExpressions/comparison.txt b/compiler/testData/diagnostics/tests/inline/binaryExpressions/comparison.txt index 35babe1a9d5..1c5bdffb5ef 100644 --- a/compiler/testData/diagnostics/tests/inline/binaryExpressions/comparison.txt +++ b/compiler/testData/diagnostics/tests/inline/binaryExpressions/comparison.txt @@ -2,7 +2,7 @@ package kotlin.inline() internal fun inlineFunWithInvoke(/*0*/ s: (T) -> U, /*1*/ ext: T.(U) -> V): kotlin.Unit kotlin.inline() internal fun inlineFunWithInvoke(/*0*/ s: (T, U) -> V, /*1*/ ext: T.(U, V) -> W): kotlin.Unit -kotlin.inline() internal fun (T) -> U.compareTo(/*0*/ p: (T) -> U): kotlin.Int -internal fun (T, U) -> V.compareTo(/*0*/ index: (T, U) -> V): kotlin.Int -kotlin.inline() internal fun T.(U) -> V.compareTo(/*0*/ index: T.(U) -> V): kotlin.Int -internal fun T.(U, V) -> W.compareTo(/*0*/ index: T.(U, V) -> W): kotlin.Int +kotlin.inline() internal fun ((T) -> U).compareTo(/*0*/ p: (T) -> U): kotlin.Int +internal fun ((T, U) -> V).compareTo(/*0*/ index: (T, U) -> V): kotlin.Int +kotlin.inline() internal fun (T.(U) -> V).compareTo(/*0*/ index: T.(U) -> V): kotlin.Int +internal fun (T.(U, V) -> W).compareTo(/*0*/ index: T.(U, V) -> W): kotlin.Int diff --git a/compiler/testData/diagnostics/tests/inline/binaryExpressions/componentAccess.txt b/compiler/testData/diagnostics/tests/inline/binaryExpressions/componentAccess.txt index 8a82912c64f..16d2badc80c 100644 --- a/compiler/testData/diagnostics/tests/inline/binaryExpressions/componentAccess.txt +++ b/compiler/testData/diagnostics/tests/inline/binaryExpressions/componentAccess.txt @@ -2,11 +2,11 @@ package kotlin.inline() internal fun inlineFunWithInvoke(/*0*/ s: (T) -> U, /*1*/ ext: T.(U) -> V): kotlin.Unit kotlin.inline() internal fun inlineFunWithInvoke(/*0*/ s: (T, U) -> V, /*1*/ ext: T.(U, V) -> W): kotlin.Unit -kotlin.inline() internal fun (T) -> U.component1(): kotlin.Int -internal fun (T, U) -> V.component1(): kotlin.Int -kotlin.inline() internal fun T.(U) -> V.component1(): kotlin.Int -internal fun T.(U, V) -> W.component1(): kotlin.Int -kotlin.inline() internal fun (T) -> U.component2(): kotlin.Int -internal fun (T, U) -> V.component2(): kotlin.Int -kotlin.inline() internal fun T.(U) -> V.component2(): kotlin.Int -internal fun T.(U, V) -> W.component2(): kotlin.Int +kotlin.inline() internal fun ((T) -> U).component1(): kotlin.Int +internal fun ((T, U) -> V).component1(): kotlin.Int +kotlin.inline() internal fun (T.(U) -> V).component1(): kotlin.Int +internal fun (T.(U, V) -> W).component1(): kotlin.Int +kotlin.inline() internal fun ((T) -> U).component2(): kotlin.Int +internal fun ((T, U) -> V).component2(): kotlin.Int +kotlin.inline() internal fun (T.(U) -> V).component2(): kotlin.Int +internal fun (T.(U, V) -> W).component2(): kotlin.Int diff --git a/compiler/testData/diagnostics/tests/inline/binaryExpressions/contains.txt b/compiler/testData/diagnostics/tests/inline/binaryExpressions/contains.txt index 466bdc0c0fd..b3f89bf2e78 100644 --- a/compiler/testData/diagnostics/tests/inline/binaryExpressions/contains.txt +++ b/compiler/testData/diagnostics/tests/inline/binaryExpressions/contains.txt @@ -2,7 +2,7 @@ package kotlin.inline() internal fun inlineFunWithInvoke(/*0*/ s: (T) -> U, /*1*/ ext: T.(U) -> V): kotlin.Unit kotlin.inline() internal fun inlineFunWithInvoke(/*0*/ s: (T, U) -> U, /*1*/ ext: T.(U, U) -> V): kotlin.Unit -kotlin.inline() internal fun (T) -> U.contains(/*0*/ p: (T) -> U): kotlin.Boolean -internal fun (T, U) -> V.contains(/*0*/ p: (T, U) -> V): kotlin.Boolean -kotlin.inline() internal fun T.(U) -> V.contains(/*0*/ ext: T.(U) -> V): kotlin.Boolean -internal fun T.(U, V) -> W.contains(/*0*/ ext: T.(U, V) -> W): kotlin.Boolean +kotlin.inline() internal fun ((T) -> U).contains(/*0*/ p: (T) -> U): kotlin.Boolean +internal fun ((T, U) -> V).contains(/*0*/ p: (T, U) -> V): kotlin.Boolean +kotlin.inline() internal fun (T.(U) -> V).contains(/*0*/ ext: T.(U) -> V): kotlin.Boolean +internal fun (T.(U, V) -> W).contains(/*0*/ ext: T.(U, V) -> W): kotlin.Boolean diff --git a/compiler/testData/diagnostics/tests/inline/binaryExpressions/mathOperations.txt b/compiler/testData/diagnostics/tests/inline/binaryExpressions/mathOperations.txt index b26d6240acd..9719185cd1f 100644 --- a/compiler/testData/diagnostics/tests/inline/binaryExpressions/mathOperations.txt +++ b/compiler/testData/diagnostics/tests/inline/binaryExpressions/mathOperations.txt @@ -2,9 +2,9 @@ package kotlin.inline() internal fun inlineFunWithInvoke(/*0*/ s: (T) -> U, /*1*/ ext: T.(U) -> V): kotlin.Unit kotlin.inline() internal fun inlineFunWithInvoke(/*0*/ s: (T) -> U, /*1*/ ext: T.(U) -> V): kotlin.Unit -internal fun (T) -> U.minus(/*0*/ p: (T) -> U): kotlin.Unit -internal fun T.(U) -> V.minus(/*0*/ p: T.(U) -> V): kotlin.Unit -kotlin.inline() internal fun (T) -> U.plus(/*0*/ p: (T) -> U): kotlin.Unit -kotlin.inline() internal fun T.(U) -> V.plus(/*0*/ p: T.(U) -> V): kotlin.Unit -kotlin.inline() internal fun (T) -> U.submit(): kotlin.Unit -kotlin.inline() internal fun T.(U) -> V.submit(): kotlin.Unit +internal fun ((T) -> U).minus(/*0*/ p: (T) -> U): kotlin.Unit +internal fun (T.(U) -> V).minus(/*0*/ p: T.(U) -> V): kotlin.Unit +kotlin.inline() internal fun ((T) -> U).plus(/*0*/ p: (T) -> U): kotlin.Unit +kotlin.inline() internal fun (T.(U) -> V).plus(/*0*/ p: T.(U) -> V): kotlin.Unit +kotlin.inline() internal fun ((T) -> U).submit(): kotlin.Unit +kotlin.inline() internal fun (T.(U) -> V).submit(): kotlin.Unit diff --git a/compiler/testData/diagnostics/tests/inline/binaryExpressions/rangeTo.txt b/compiler/testData/diagnostics/tests/inline/binaryExpressions/rangeTo.txt index 3aac7041213..04e89a6625e 100644 --- a/compiler/testData/diagnostics/tests/inline/binaryExpressions/rangeTo.txt +++ b/compiler/testData/diagnostics/tests/inline/binaryExpressions/rangeTo.txt @@ -2,7 +2,7 @@ package kotlin.inline() internal fun inlineFunWithInvoke(/*0*/ s: (T) -> U, /*1*/ ext: T.(U) -> V): kotlin.Unit kotlin.inline() internal fun inlineFunWithInvoke(/*0*/ s: (T, U) -> U, /*1*/ ext: T.(U, U) -> V): kotlin.Unit -kotlin.inline() internal fun (T) -> U.rangeTo(/*0*/ p: (T) -> U): kotlin.Range -internal fun (T, U) -> V.rangeTo(/*0*/ p: (T, U) -> V): kotlin.Range -kotlin.inline() internal fun T.(U) -> V.rangeTo(/*0*/ ext: T.(U) -> V): kotlin.Range -internal fun T.(U, V) -> W.rangeTo(/*0*/ ext: T.(U, V) -> W): kotlin.Range +kotlin.inline() internal fun ((T) -> U).rangeTo(/*0*/ p: (T) -> U): kotlin.Range +internal fun ((T, U) -> V).rangeTo(/*0*/ p: (T, U) -> V): kotlin.Range +kotlin.inline() internal fun (T.(U) -> V).rangeTo(/*0*/ ext: T.(U) -> V): kotlin.Range +internal fun (T.(U, V) -> W).rangeTo(/*0*/ ext: T.(U, V) -> W): kotlin.Range diff --git a/compiler/testData/diagnostics/tests/inline/capture.txt b/compiler/testData/diagnostics/tests/inline/capture.txt index 8efddebac26..40cfa21eac4 100644 --- a/compiler/testData/diagnostics/tests/inline/capture.txt +++ b/compiler/testData/diagnostics/tests/inline/capture.txt @@ -4,6 +4,6 @@ kotlin.inline() internal fun inlineFunWithInvoke(/*0*/ s: (kotlin.Int) -> kotlin kotlin.inline() internal fun inlineFunWithInvokeNonInline(/*0*/ kotlin.noinline() s: (kotlin.Int) -> kotlin.Unit): kotlin.Unit kotlin.inline() internal fun inlineFunWrongExtension(/*0*/ s: (kotlin.Int) -> kotlin.Unit): kotlin.Unit kotlin.inline() internal fun testExtension(/*0*/ s: (kotlin.Int) -> kotlin.Unit): kotlin.Unit -kotlin.inline() internal fun (kotlin.Int) -> kotlin.Unit.inlineExt(): kotlin.Unit -kotlin.inline() internal fun (kotlin.Int) -> kotlin.Unit.inlineExt2(/*0*/ p: kotlin.Int): kotlin.Unit -internal fun (kotlin.Int) -> kotlin.Unit.noInlineExt(/*0*/ p: kotlin.Int): kotlin.Unit +kotlin.inline() internal fun ((kotlin.Int) -> kotlin.Unit).inlineExt(): kotlin.Unit +kotlin.inline() internal fun ((kotlin.Int) -> kotlin.Unit).inlineExt2(/*0*/ p: kotlin.Int): kotlin.Unit +internal fun ((kotlin.Int) -> kotlin.Unit).noInlineExt(/*0*/ p: kotlin.Int): kotlin.Unit diff --git a/compiler/testData/diagnostics/tests/inline/extensionOnFunction.txt b/compiler/testData/diagnostics/tests/inline/extensionOnFunction.txt index bf4492f5a86..d88063f6192 100644 --- a/compiler/testData/diagnostics/tests/inline/extensionOnFunction.txt +++ b/compiler/testData/diagnostics/tests/inline/extensionOnFunction.txt @@ -3,6 +3,6 @@ package kotlin.inline() internal fun inlineFunNoInline(/*0*/ kotlin.noinline() s: (kotlin.Int) -> kotlin.Unit): kotlin.Unit kotlin.inline() internal fun inlineFunWrongExtension(/*0*/ s: (kotlin.Int) -> kotlin.Unit): kotlin.Unit kotlin.inline() internal fun testExtension(/*0*/ s: (kotlin.Int) -> kotlin.Unit): kotlin.Unit -kotlin.inline() internal fun (kotlin.Int) -> kotlin.Unit.inlineExt(): kotlin.Unit -kotlin.inline() internal fun (kotlin.Int) -> kotlin.Unit.inlineExt2(/*0*/ p: kotlin.Int): kotlin.Unit -internal fun (kotlin.Int) -> kotlin.Unit.noInlineExt(/*0*/ p: kotlin.Int): kotlin.Unit +kotlin.inline() internal fun ((kotlin.Int) -> kotlin.Unit).inlineExt(): kotlin.Unit +kotlin.inline() internal fun ((kotlin.Int) -> kotlin.Unit).inlineExt2(/*0*/ p: kotlin.Int): kotlin.Unit +internal fun ((kotlin.Int) -> kotlin.Unit).noInlineExt(/*0*/ p: kotlin.Int): kotlin.Unit diff --git a/compiler/testData/diagnostics/tests/inline/invoke.txt b/compiler/testData/diagnostics/tests/inline/invoke.txt index c3f34fa8320..7086e07959f 100644 --- a/compiler/testData/diagnostics/tests/inline/invoke.txt +++ b/compiler/testData/diagnostics/tests/inline/invoke.txt @@ -2,4 +2,4 @@ package kotlin.inline() internal fun inlineFunWithInvoke(/*0*/ s: (kotlin.Int) -> kotlin.Unit, /*1*/ ext: kotlin.Int.(kotlin.Int) -> kotlin.Unit): kotlin.Unit kotlin.inline() internal fun inlineFunWithInvokeNonInline(/*0*/ kotlin.noinline() s: (kotlin.Int) -> kotlin.Unit, /*1*/ ext: kotlin.Int.(kotlin.Int) -> kotlin.Unit): kotlin.Unit -kotlin.inline() internal fun (kotlin.Int) -> kotlin.Unit.inlineExt(): kotlin.Unit +kotlin.inline() internal fun ((kotlin.Int) -> kotlin.Unit).inlineExt(): kotlin.Unit diff --git a/compiler/testData/diagnostics/tests/inline/nullabilityOperations.txt b/compiler/testData/diagnostics/tests/inline/nullabilityOperations.txt index 4656ca7dec3..f5c8c93dd43 100644 --- a/compiler/testData/diagnostics/tests/inline/nullabilityOperations.txt +++ b/compiler/testData/diagnostics/tests/inline/nullabilityOperations.txt @@ -1,5 +1,5 @@ package kotlin.inline() internal fun submit(/*0*/ action: (kotlin.Int) -> kotlin.Int): kotlin.Unit -kotlin.inline() internal fun (kotlin.Int) -> kotlin.Int.submit(): kotlin.Unit +kotlin.inline() internal fun ((kotlin.Int) -> kotlin.Int).submit(): kotlin.Unit kotlin.inline() internal fun kotlin.String.submit(/*0*/ action: (kotlin.Int) -> kotlin.Int): kotlin.Unit diff --git a/compiler/testData/diagnostics/tests/inline/parenthesized.txt b/compiler/testData/diagnostics/tests/inline/parenthesized.txt index f8697afe2f0..75919fb9e05 100644 --- a/compiler/testData/diagnostics/tests/inline/parenthesized.txt +++ b/compiler/testData/diagnostics/tests/inline/parenthesized.txt @@ -3,4 +3,4 @@ package kotlin.inline() internal fun inlineFunWithInvoke(/*0*/ s: (kotlin.Int) -> kotlin.Unit): kotlin.Unit kotlin.inline() internal fun inlineFunWithInvoke2(/*0*/ s: (kotlin.Int) -> kotlin.Unit): kotlin.Unit kotlin.inline() internal fun propagation(/*0*/ s: (kotlin.Int) -> kotlin.Unit): kotlin.Unit -kotlin.inline() internal fun (kotlin.Int) -> kotlin.Unit.inlineExt(): kotlin.Unit +kotlin.inline() internal fun ((kotlin.Int) -> kotlin.Unit).inlineExt(): kotlin.Unit diff --git a/compiler/testData/diagnostics/tests/inline/propagation.txt b/compiler/testData/diagnostics/tests/inline/propagation.txt index a93b33b5897..1ccb2604d33 100644 --- a/compiler/testData/diagnostics/tests/inline/propagation.txt +++ b/compiler/testData/diagnostics/tests/inline/propagation.txt @@ -6,5 +6,5 @@ kotlin.inline() internal fun inlineFunWithInvokeClosureNoinline(/*0*/ kotlin.noi kotlin.inline() internal fun inlineFunWithInvokeNonInline(/*0*/ kotlin.noinline() s: (kotlin.Int) -> kotlin.Unit, /*1*/ kotlin.noinline() ext: kotlin.Int.(kotlin.Int) -> kotlin.Unit): kotlin.Unit kotlin.inline() internal fun subInline(/*0*/ s: (kotlin.Int) -> kotlin.Unit, /*1*/ ext: kotlin.Int.(kotlin.Int) -> kotlin.Unit): kotlin.Unit internal fun subNoInline(/*0*/ s: (kotlin.Int) -> kotlin.Unit, /*1*/ ext: kotlin.Int.(kotlin.Int) -> kotlin.Unit): kotlin.Unit -kotlin.inline() internal fun (kotlin.Int) -> kotlin.Unit.inlineExt(/*0*/ ext: kotlin.Int.(kotlin.Int) -> kotlin.Unit): kotlin.Unit -kotlin.inline() internal fun (kotlin.Int) -> kotlin.Unit.inlineExtWithClosure(/*0*/ ext: kotlin.Int.(kotlin.Int) -> kotlin.Unit): kotlin.Unit +kotlin.inline() internal fun ((kotlin.Int) -> kotlin.Unit).inlineExt(/*0*/ ext: kotlin.Int.(kotlin.Int) -> kotlin.Unit): kotlin.Unit +kotlin.inline() internal fun ((kotlin.Int) -> kotlin.Unit).inlineExtWithClosure(/*0*/ ext: kotlin.Int.(kotlin.Int) -> kotlin.Unit): kotlin.Unit diff --git a/compiler/testData/diagnostics/tests/inline/recursion.txt b/compiler/testData/diagnostics/tests/inline/recursion.txt index a832f7256ad..84767ffa046 100644 --- a/compiler/testData/diagnostics/tests/inline/recursion.txt +++ b/compiler/testData/diagnostics/tests/inline/recursion.txt @@ -2,6 +2,6 @@ package kotlin.inline() internal fun inlineFun(/*0*/ s: (kotlin.Int) -> kotlin.Unit): kotlin.Unit kotlin.inline() internal fun inlineFun(/*0*/ s: T): kotlin.Unit -kotlin.inline() internal fun (T) -> V.inc(): (T) -> V -kotlin.inline() internal fun () -> T.inlineExt(): kotlin.Unit -kotlin.inline() internal fun (T) -> V.not(): kotlin.Boolean +kotlin.inline() internal fun ((T) -> V).inc(): (T) -> V +kotlin.inline() internal fun (() -> T).inlineExt(): kotlin.Unit +kotlin.inline() internal fun ((T) -> V).not(): kotlin.Boolean diff --git a/compiler/testData/diagnostics/tests/inline/returns.txt b/compiler/testData/diagnostics/tests/inline/returns.txt index 249edc694e3..6c9c1736e8f 100644 --- a/compiler/testData/diagnostics/tests/inline/returns.txt +++ b/compiler/testData/diagnostics/tests/inline/returns.txt @@ -4,5 +4,5 @@ kotlin.inline() internal fun inlineFun(/*0*/ s: (kotlin.Int) -> kotlin.Unit): (k kotlin.inline() internal fun inlineFun2(/*0*/ s: (kotlin.Int) -> kotlin.Unit): (kotlin.Int) -> kotlin.Unit kotlin.inline() internal fun inlineFunWithExt(/*0*/ ext: kotlin.Int.(kotlin.Int) -> kotlin.Unit): kotlin.Int.(kotlin.Int) -> kotlin.Unit kotlin.inline() internal fun inlineFunWithExt2(/*0*/ ext: kotlin.Int.(kotlin.Int) -> kotlin.Unit): kotlin.Int.(kotlin.Int) -> kotlin.Unit -kotlin.inline() internal fun (kotlin.Int) -> kotlin.Unit.inlineExt(): (kotlin.Int) -> kotlin.Unit -kotlin.inline() internal fun (kotlin.Int) -> kotlin.Unit.inlineExt2(): (kotlin.Int) -> kotlin.Unit +kotlin.inline() internal fun ((kotlin.Int) -> kotlin.Unit).inlineExt(): (kotlin.Int) -> kotlin.Unit +kotlin.inline() internal fun ((kotlin.Int) -> kotlin.Unit).inlineExt2(): (kotlin.Int) -> kotlin.Unit diff --git a/compiler/testData/diagnostics/tests/inline/sam.txt b/compiler/testData/diagnostics/tests/inline/sam.txt index ca1af1f7cb3..2a147626fe5 100644 --- a/compiler/testData/diagnostics/tests/inline/sam.txt +++ b/compiler/testData/diagnostics/tests/inline/sam.txt @@ -3,7 +3,7 @@ package public /*synthesized*/ fun Run(/*0*/ function: () -> kotlin.Int): Run kotlin.inline() internal fun inlineFunWithInvoke(/*0*/ s: (kotlin.Int) -> kotlin.Unit, /*1*/ ext: kotlin.Int.(kotlin.Int) -> kotlin.Unit): kotlin.Unit kotlin.inline() internal fun inlineFunWithInvokeNonInline(/*0*/ kotlin.noinline() s: (kotlin.Int) -> kotlin.Unit, /*1*/ ext: kotlin.Int.(kotlin.Int) -> kotlin.Unit): kotlin.Unit -kotlin.inline() internal fun (kotlin.Int) -> kotlin.Unit.inlineExt(): kotlin.Unit +kotlin.inline() internal fun ((kotlin.Int) -> kotlin.Unit).inlineExt(): kotlin.Unit public trait Run { public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean diff --git a/compiler/testData/diagnostics/tests/inline/typed.txt b/compiler/testData/diagnostics/tests/inline/typed.txt index badee89a560..8b98c40ed5c 100644 --- a/compiler/testData/diagnostics/tests/inline/typed.txt +++ b/compiler/testData/diagnostics/tests/inline/typed.txt @@ -2,4 +2,4 @@ package kotlin.inline() internal fun inlineFunWithInvoke(/*0*/ s: (kotlin.Int) -> kotlin.Unit): kotlin.Unit kotlin.inline() internal fun inlineFunWithInvoke2(/*0*/ s: (kotlin.Int) -> kotlin.Unit): kotlin.Unit -kotlin.inline() internal fun (kotlin.Int) -> kotlin.Unit.inlineExt(): kotlin.Unit +kotlin.inline() internal fun ((kotlin.Int) -> kotlin.Unit).inlineExt(): kotlin.Unit diff --git a/compiler/testData/diagnostics/tests/inline/unaryExpressions/mathOperation.txt b/compiler/testData/diagnostics/tests/inline/unaryExpressions/mathOperation.txt index 7df800daa90..1924d0606cf 100644 --- a/compiler/testData/diagnostics/tests/inline/unaryExpressions/mathOperation.txt +++ b/compiler/testData/diagnostics/tests/inline/unaryExpressions/mathOperation.txt @@ -1,12 +1,12 @@ package kotlin.inline() internal fun inlineFunWithInvoke(/*0*/ s: (T) -> V, /*1*/ ext: T.(T) -> V): kotlin.Unit -internal fun (T) -> V.dec(): (T) -> V -internal fun T.(T) -> V.dec(): T.(T) -> V -kotlin.inline() internal fun (T) -> V.inc(): (T) -> V -kotlin.inline() internal fun T.(T) -> V.inc(): T.(T) -> V -kotlin.inline() internal fun (T) -> V.inlineFunWithInvoke(): kotlin.Unit -internal fun (T) -> V.minus(): (T) -> V -internal fun T.(T) -> V.minus(): kotlin.Unit -kotlin.inline() internal fun (T) -> V.plus(): (T) -> V -kotlin.inline() internal fun T.(T) -> V.plus(): kotlin.Unit +internal fun ((T) -> V).dec(): (T) -> V +internal fun (T.(T) -> V).dec(): T.(T) -> V +kotlin.inline() internal fun ((T) -> V).inc(): (T) -> V +kotlin.inline() internal fun (T.(T) -> V).inc(): T.(T) -> V +kotlin.inline() internal fun ((T) -> V).inlineFunWithInvoke(): kotlin.Unit +internal fun ((T) -> V).minus(): (T) -> V +internal fun (T.(T) -> V).minus(): kotlin.Unit +kotlin.inline() internal fun ((T) -> V).plus(): (T) -> V +kotlin.inline() internal fun (T.(T) -> V).plus(): kotlin.Unit diff --git a/compiler/testData/diagnostics/tests/inline/unaryExpressions/notOperation.txt b/compiler/testData/diagnostics/tests/inline/unaryExpressions/notOperation.txt index 4b37a589143..f6850f5b83f 100644 --- a/compiler/testData/diagnostics/tests/inline/unaryExpressions/notOperation.txt +++ b/compiler/testData/diagnostics/tests/inline/unaryExpressions/notOperation.txt @@ -2,7 +2,7 @@ package kotlin.inline() internal fun inlineFunWithInvoke(/*0*/ s: (T) -> V, /*1*/ ext: T.(T) -> V): kotlin.Unit kotlin.inline() internal fun inlineFunWithInvoke(/*0*/ s: (T, U) -> V, /*1*/ ext: T.(T, U) -> V): kotlin.Unit -kotlin.inline() internal fun (T) -> V.not(): kotlin.Boolean -internal fun (T, U) -> V.not(): kotlin.Boolean -kotlin.inline() internal fun T.(T) -> V.not(): kotlin.Boolean -internal fun T.(U, V) -> W.not(): kotlin.Boolean +kotlin.inline() internal fun ((T) -> V).not(): kotlin.Boolean +internal fun ((T, U) -> V).not(): kotlin.Boolean +kotlin.inline() internal fun (T.(T) -> V).not(): kotlin.Boolean +internal fun (T.(U, V) -> W).not(): kotlin.Boolean diff --git a/compiler/testData/diagnostics/tests/inline/vararg.txt b/compiler/testData/diagnostics/tests/inline/vararg.txt index d6e17f86f85..365572f0256 100644 --- a/compiler/testData/diagnostics/tests/inline/vararg.txt +++ b/compiler/testData/diagnostics/tests/inline/vararg.txt @@ -3,4 +3,4 @@ package kotlin.inline() internal fun inlineFun(/*0*/ s: (kotlin.Int) -> kotlin.Unit, /*1*/ kotlin.noinline() b: (kotlin.Int) -> kotlin.Unit): kotlin.Unit kotlin.inline() internal fun subInline(/*0*/ vararg s: (kotlin.Int) -> kotlin.Unit /*kotlin.Array<(kotlin.Int) -> kotlin.Unit>*/): kotlin.Unit internal fun subNoInline(/*0*/ vararg s: (kotlin.Int) -> kotlin.Unit /*kotlin.Array<(kotlin.Int) -> kotlin.Unit>*/): kotlin.Unit -kotlin.inline() internal fun (kotlin.Int) -> kotlin.Unit.inlineExt(/*0*/ s: (kotlin.Int) -> kotlin.Unit, /*1*/ kotlin.noinline() b: (kotlin.Int) -> kotlin.Unit): kotlin.Unit +kotlin.inline() internal fun ((kotlin.Int) -> kotlin.Unit).inlineExt(/*0*/ s: (kotlin.Int) -> kotlin.Unit, /*1*/ kotlin.noinline() b: (kotlin.Int) -> kotlin.Unit): kotlin.Unit diff --git a/compiler/testData/renderer/FunctionTypesInSignature.kt b/compiler/testData/renderer/FunctionTypesInSignature.kt new file mode 100644 index 00000000000..464242ab462 --- /dev/null +++ b/compiler/testData/renderer/FunctionTypesInSignature.kt @@ -0,0 +1,42 @@ +package test + +fun Function0.f1(f: Function0): Function0 { +} + +fun (() -> Unit).f2(f: Function0) : Function0 { +} + +fun ((() -> Unit) -> Unit).f3(f: Function0>) : Function0> { +} + +fun Function0<() -> Unit>.f4(f: (() -> Unit, () -> Unit) -> Unit): Function1<() -> Unit, () -> Unit> { +} + +fun Function0<(() -> Unit) -> (() -> Unit)>.f5() { +} + +fun Function0<(() -> Unit) -> (() -> Unit)>?.f6() { +} + +fun ((Int) -> Unit)?.f7() { +} + +fun (T.(Int) -> Unit).f8() { +} + +val Function0<(() -> Unit) -> (() -> Unit)>.p: Unit = Unit +//package test +//internal fun (() -> kotlin.Unit).f1(f: () -> kotlin.Unit): () -> kotlin.Int defined in test +//value-parameter val f: () -> kotlin.Unit defined in test.f1 +//internal fun (() -> kotlin.Unit).f2(f: () -> kotlin.Unit): () -> kotlin.Int defined in test +//value-parameter val f: () -> kotlin.Unit defined in test.f2 +//internal fun ((() -> kotlin.Unit) -> kotlin.Unit).f3(f: () -> () -> kotlin.Unit): () -> () -> kotlin.Int defined in test +//value-parameter val f: () -> () -> kotlin.Unit defined in test.f3 +//internal fun (() -> () -> kotlin.Unit).f4(f: (() -> kotlin.Unit, () -> kotlin.Unit) -> kotlin.Unit): (() -> kotlin.Unit) -> () -> kotlin.Unit defined in test +//value-parameter val f: (() -> kotlin.Unit, () -> kotlin.Unit) -> kotlin.Unit defined in test.f4 +//internal fun (() -> (() -> kotlin.Unit) -> () -> kotlin.Unit).f5(): kotlin.Unit defined in test +//internal fun (() -> (() -> kotlin.Unit) -> () -> kotlin.Unit)?.f6(): kotlin.Unit defined in test +//internal fun ((kotlin.Int) -> kotlin.Unit)?.f7(): kotlin.Unit defined in test +//internal fun (T.(kotlin.Int) -> kotlin.Unit).f8(): kotlin.Unit defined in test +// defined in test.f8 +//internal val (() -> (() -> kotlin.Unit) -> () -> kotlin.Unit).p: kotlin.Unit defined in test \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveDescriptorRendererTestGenerated.java b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveDescriptorRendererTestGenerated.java index 86da5f92765..0be0643d5ee 100644 --- a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveDescriptorRendererTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveDescriptorRendererTestGenerated.java @@ -60,6 +60,12 @@ public class LazyResolveDescriptorRendererTestGenerated extends AbstractLazyReso doTest(fileName); } + @TestMetadata("FunctionTypesInSignature.kt") + public void testFunctionTypesInSignature() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/renderer/FunctionTypesInSignature.kt"); + doTest(fileName); + } + @TestMetadata("GlobalFunctions.kt") public void testGlobalFunctions() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/renderer/GlobalFunctions.kt"); diff --git a/compiler/tests/org/jetbrains/jet/renderer/DescriptorRendererTest.java b/compiler/tests/org/jetbrains/jet/renderer/DescriptorRendererTest.java index 3199c39909c..3352f781de7 100644 --- a/compiler/tests/org/jetbrains/jet/renderer/DescriptorRendererTest.java +++ b/compiler/tests/org/jetbrains/jet/renderer/DescriptorRendererTest.java @@ -82,6 +82,10 @@ public class DescriptorRendererTest extends JetLiteFixture { doTest(); } + public void testFunctionTypesInSignature() throws IOException { + doTest(); + } + @Override protected String getTestDataPath() { return JetTestCaseBuilder.getTestDataPathBase() + "/renderer"; diff --git a/core/descriptors/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java b/core/descriptors/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java index be7d7c77cb5..dcba8c921be 100644 --- a/core/descriptors/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java +++ b/core/descriptors/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java @@ -350,12 +350,16 @@ public class DescriptorRendererImpl implements DescriptorRenderer { if (type.isError()) { return renderDefaultType(type); } - if (KotlinBuiltIns.getInstance().isExactFunctionOrExtensionFunctionType(type) && prettyFunctionTypes) { + if (shouldRenderAsPrettyFunctionType(type)) { return renderFunctionType(type); } return renderDefaultType(type); } + private boolean shouldRenderAsPrettyFunctionType(@NotNull JetType type) { + return KotlinBuiltIns.getInstance().isExactFunctionOrExtensionFunctionType(type) && prettyFunctionTypes; + } + @NotNull private String renderFlexibleType(@NotNull JetType type) { JetType lower = TypesPackage.flexibility(type).getLowerBound(); @@ -767,7 +771,12 @@ public class DescriptorRendererImpl implements DescriptorRenderer { private void renderReceiver(CallableDescriptor callableDescriptor, StringBuilder builder) { ReceiverParameterDescriptor receiver = callableDescriptor.getExtensionReceiverParameter(); if (receiver != null) { - builder.append(escape(renderType(receiver.getType()))).append("."); + JetType type = receiver.getType(); + String result = escape(renderType(type)); + if (shouldRenderAsPrettyFunctionType(type) && !TypeUtils.isNullableType(type)) { + result = "(" + result + ")"; + } + builder.append(result).append("."); } }