diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ObjectLiteralToLambdaIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/ObjectLiteralToLambdaIntention.kt index f51223fefc8..3a2a8b76c2b 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ObjectLiteralToLambdaIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ObjectLiteralToLambdaIntention.kt @@ -150,14 +150,14 @@ class ObjectLiteralToLambdaIntention : SelfTargetingRangeIntention + val endOffset = (replacedByPointer.callee.parent as? KtCallExpression)?.typeArgumentList?.endOffset + ?: replacedByPointer.callee.endOffset + ShortenReferences.DEFAULT.process(replacedByPointer.containingKtFile, replacedByPointer.startOffset, endOffset) + } } } + + private val KtExpression.callee + get() = getCalleeExpressionIfAny() as KtNameReferenceExpression } private data class Data( diff --git a/nj2k/testData/newJ2k/objectLiteral/kt-36149.java b/nj2k/testData/newJ2k/objectLiteral/kt-36149.java new file mode 100644 index 00000000000..aa3bf234b3f --- /dev/null +++ b/nj2k/testData/newJ2k/objectLiteral/kt-36149.java @@ -0,0 +1,28 @@ +// Stubbed from Android Activity +class Activity { + public final void runOnUiThread(Runnable action) { + action.run(); + } +} + +public class Foo { + private Activity activity; + + public void foo() { + synchronized (this) { + activity.runOnUiThread(new Runnable() { + public void run() { + } + }); + } + } + + public void bar() { + synchronized (this) { + activity.runOnUiThread(new Runnable() { + public void run() { + } + }); + } + } +} \ No newline at end of file diff --git a/nj2k/testData/newJ2k/objectLiteral/kt-36149.kt b/nj2k/testData/newJ2k/objectLiteral/kt-36149.kt new file mode 100644 index 00000000000..4d6565d129b --- /dev/null +++ b/nj2k/testData/newJ2k/objectLiteral/kt-36149.kt @@ -0,0 +1,21 @@ +// Stubbed from Android Activity +internal class Activity { + fun runOnUiThread(action: Runnable) { + action.run() + } +} + +class Foo { + private val activity: Activity? = null + fun foo() { + synchronized(this) { + activity!!.runOnUiThread(Runnable { }) + } + } + + fun bar() { + synchronized(this) { + activity!!.runOnUiThread(Runnable { }) + } + } +} diff --git a/nj2k/testData/newJ2k/objectLiteral/kt-36152.external.java b/nj2k/testData/newJ2k/objectLiteral/kt-36152.external.java new file mode 100644 index 00000000000..6e82bab8d22 --- /dev/null +++ b/nj2k/testData/newJ2k/objectLiteral/kt-36152.external.java @@ -0,0 +1,15 @@ +// Stubbed class from 'androidx.preference:preference:1.1.0' +public class Preference { + + public interface OnPreferenceClickListener { + boolean onPreferenceClick(Preference preference); + } + + @SuppressWarnings("unused") + public OnPreferenceClickListener getOnPreferenceClickListener() { + return null; + } + + public void setOnPreferenceClickListener(OnPreferenceClickListener onPreferenceClickListener) { + } +} \ No newline at end of file diff --git a/nj2k/testData/newJ2k/objectLiteral/kt-36152.java b/nj2k/testData/newJ2k/objectLiteral/kt-36152.java new file mode 100644 index 00000000000..8b21253ec89 --- /dev/null +++ b/nj2k/testData/newJ2k/objectLiteral/kt-36152.java @@ -0,0 +1,15 @@ +public class Foo { + public void foo(Preference l, Preference pm) { + l.setOnPreferenceClickListener((p) -> true); + + pm.setOnPreferenceClickListener(new OnPreferenceClickListener() { + public boolean onPreferenceClick(Preference preference) { + return true; + } + }); + } + + private void bar(Preference l) { + l.setOnPreferenceClickListener((p) -> true); + } +} \ No newline at end of file diff --git a/nj2k/testData/newJ2k/objectLiteral/kt-36152.kt b/nj2k/testData/newJ2k/objectLiteral/kt-36152.kt new file mode 100644 index 00000000000..683d01b0ba0 --- /dev/null +++ b/nj2k/testData/newJ2k/objectLiteral/kt-36152.kt @@ -0,0 +1,12 @@ +import Preference.OnPreferenceClickListener + +class Foo { + fun foo(l: Preference, pm: Preference) { + l.onPreferenceClickListener = OnPreferenceClickListener { p: Preference? -> true } + pm.onPreferenceClickListener = OnPreferenceClickListener { true } + } + + private fun bar(l: Preference) { + l.onPreferenceClickListener = OnPreferenceClickListener { p: Preference? -> true } + } +} diff --git a/nj2k/tests/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverterSingleFileTestGenerated.java b/nj2k/tests/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverterSingleFileTestGenerated.java index 9226cabf185..c3ed07702b0 100644 --- a/nj2k/tests/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverterSingleFileTestGenerated.java +++ b/nj2k/tests/org/jetbrains/kotlin/nj2k/NewJavaToKotlinConverterSingleFileTestGenerated.java @@ -4061,6 +4061,16 @@ public class NewJavaToKotlinConverterSingleFileTestGenerated extends AbstractNew KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("nj2k/testData/newJ2k/objectLiteral"), Pattern.compile("^([^\\.]+)\\.java$"), null, true); } + @TestMetadata("kt-36149.java") + public void testKt_36149() throws Exception { + runTest("nj2k/testData/newJ2k/objectLiteral/kt-36149.java"); + } + + @TestMetadata("kt-36152.java") + public void testKt_36152() throws Exception { + runTest("nj2k/testData/newJ2k/objectLiteral/kt-36152.java"); + } + @TestMetadata("MyFrame.java") public void testMyFrame() throws Exception { runTest("nj2k/testData/newJ2k/objectLiteral/MyFrame.java");