From 278e682595b8030529f0b8a5248ff39688cb9d1e Mon Sep 17 00:00:00 2001 From: Michael Bogdanov Date: Tue, 7 Oct 2014 15:46:44 +0400 Subject: [PATCH] Obsolete KT-3285: "A receiver of type ... is required" when using extension functions #KT-5467 Obsolete --- .../codegen/box/extensionFunctions/kt3285.kt | 32 +++++++++++++++++++ .../BlackBoxCodegenTestGenerated.java | 6 ++++ 2 files changed, 38 insertions(+) create mode 100644 compiler/testData/codegen/box/extensionFunctions/kt3285.kt diff --git a/compiler/testData/codegen/box/extensionFunctions/kt3285.kt b/compiler/testData/codegen/box/extensionFunctions/kt3285.kt new file mode 100644 index 00000000000..c5d34fa47c1 --- /dev/null +++ b/compiler/testData/codegen/box/extensionFunctions/kt3285.kt @@ -0,0 +1,32 @@ +var sayResult = "" + +class NoiseMaker { + fun say(str: String) { sayResult += str } +} + +fun noiseMaker(f: NoiseMaker.() -> Unit) { + val noiseMaker = NoiseMaker() + noiseMaker.f() +} + +abstract class Pet { + fun NoiseMaker.playWith(friend: T) { + say("Playing with " + friend) + } + + abstract fun play(): Unit +} + +class Doggy(): Pet() { + override fun play() = noiseMaker { + say("Time to play! ") + playWith("my owner!") + } +} + +fun box(): String { + Doggy().play() + if (sayResult != "Time to play! Playing with my owner!") return "fail: $result" + + return "OK" +} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java index a02447e4082..4ae4149b782 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java @@ -2783,6 +2783,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { doTest(fileName); } + @TestMetadata("kt3285.kt") + public void testKt3285() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/box/extensionFunctions/kt3285.kt"); + doTest(fileName); + } + @TestMetadata("kt3298.kt") public void testKt3298() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/box/extensionFunctions/kt3298.kt");