From 4019ebe20786059fdce5b25c7cf6d746a083eef3 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Wed, 25 May 2022 07:35:00 +0200 Subject: Support matching lambda expressions with @Pattern --- .../gradle/remap/pattern/TestLambdaExpression.kt | 90 ++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 src/test/kotlin/com/replaymod/gradle/remap/pattern/TestLambdaExpression.kt (limited to 'src/test/kotlin') diff --git a/src/test/kotlin/com/replaymod/gradle/remap/pattern/TestLambdaExpression.kt b/src/test/kotlin/com/replaymod/gradle/remap/pattern/TestLambdaExpression.kt new file mode 100644 index 0000000..dc45492 --- /dev/null +++ b/src/test/kotlin/com/replaymod/gradle/remap/pattern/TestLambdaExpression.kt @@ -0,0 +1,90 @@ +package com.replaymod.gradle.remap.pattern + +import com.replaymod.gradle.remap.util.TestData +import io.kotest.matchers.shouldBe +import org.junit.jupiter.api.Disabled +import org.junit.jupiter.api.Test + +class TestLambdaExpression { + @Test + fun `should find simply lambda expression`() { + TestData.remap(""" + class Test { + private void test() { + a.pkg.A.supplier(() -> "test"); + } + } + """.trimIndent(), """ + @remap.Pattern + private void pattern(String str) { + return a.pkg.A.supplier(() -> str); + } + """.trimIndent(), """ + @remap.Pattern + private void pattern(String str) { + return matched(str); + } + """.trimIndent()) shouldBe """ + class Test { + private void test() { + matched("test"); + } + } + """.trimIndent() + } + + @Test + fun `should find lambda expression with bound arguments`() { + TestData.remap(""" + class Test { + private void test() { + a.pkg.A.function(str -> str + "test"); + } + } + """.trimIndent(), """ + @remap.Pattern + private void pattern(String str) { + return a.pkg.A.function(s -> s + str); + } + """.trimIndent(), """ + @remap.Pattern + private void pattern(String str) { + return matched(str); + } + """.trimIndent()) shouldBe """ + class Test { + private void test() { + matched("test"); + } + } + """.trimIndent() + } + + @Test + @Disabled("Not yet implemented. Requires more complex replacement scheme.") + fun `should preserve bound lambda argument names`() { + TestData.remap(""" + class Test { + private void test() { + a.pkg.A.function(str -> str + "test"); + } + } + """.trimIndent(), """ + @remap.Pattern + private void pattern(String str) { + return a.pkg.A.function(s -> s + str); + } + """.trimIndent(), """ + @remap.Pattern + private void pattern(String str) { + return matched(s -> s + str); + } + """.trimIndent()) shouldBe """ + class Test { + private void test() { + matched(str -> str + "test"); + } + } + """.trimIndent() + } +} \ No newline at end of file -- cgit