From a6d3ae518f2f7b7fa569d755ff986319fc9a11c3 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Sun, 13 Oct 2024 15:58:28 +0200 Subject: [PATCH] Java: pushing down nested class from interface to class should add `static` modifier (IDEA-241036) GitOrigin-RevId: 9b6541f85a1ea73a3debe088ff32899db79aade4 --- .../memberPushDown/JavaPushDownDelegate.java | 5 ++++- .../pushDown/InterfaceInnerClassToClass.java | 10 ++++++++++ .../pushDown/InterfaceInnerClassToClass_after.java | 11 +++++++++++ .../pushDown/InterfaceInnerRecordToClass.java | 10 ++++++++++ .../pushDown/InterfaceInnerRecordToClass_after.java | 11 +++++++++++ .../com/intellij/java/refactoring/PushDownTest.java | 4 +++- 6 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 java/java-tests/testData/refactoring/pushDown/InterfaceInnerClassToClass.java create mode 100644 java/java-tests/testData/refactoring/pushDown/InterfaceInnerClassToClass_after.java create mode 100644 java/java-tests/testData/refactoring/pushDown/InterfaceInnerRecordToClass.java create mode 100644 java/java-tests/testData/refactoring/pushDown/InterfaceInnerRecordToClass_after.java diff --git a/java/java-impl-refactorings/src/com/intellij/refactoring/memberPushDown/JavaPushDownDelegate.java b/java/java-impl-refactorings/src/com/intellij/refactoring/memberPushDown/JavaPushDownDelegate.java index 16eca961b9b1..42e690e92359 100644 --- a/java/java-impl-refactorings/src/com/intellij/refactoring/memberPushDown/JavaPushDownDelegate.java +++ b/java/java-impl-refactorings/src/com/intellij/refactoring/memberPushDown/JavaPushDownDelegate.java @@ -303,9 +303,12 @@ public class JavaPushDownDelegate extends PushDownDelegateTopic { + } +} + +abstract class Message implements IMessage { + public static void main(String[] args) { + new Topic(); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/pushDown/InterfaceInnerClassToClass_after.java b/java/java-tests/testData/refactoring/pushDown/InterfaceInnerClassToClass_after.java new file mode 100644 index 000000000000..efae41344b6c --- /dev/null +++ b/java/java-tests/testData/refactoring/pushDown/InterfaceInnerClassToClass_after.java @@ -0,0 +1,11 @@ +interface IMessage { +} + +abstract class Message implements IMessage { + public static void main(String[] args) { + new Topic(); + } + + public static class Topic { + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/pushDown/InterfaceInnerRecordToClass.java b/java/java-tests/testData/refactoring/pushDown/InterfaceInnerRecordToClass.java new file mode 100644 index 000000000000..0201c0f5ae87 --- /dev/null +++ b/java/java-tests/testData/refactoring/pushDown/InterfaceInnerRecordToClass.java @@ -0,0 +1,10 @@ +interface IMessage { + record Topic() { + } +} + +abstract class Message implements IMessage { + public static void main(String[] args) { + new Topic(); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/pushDown/InterfaceInnerRecordToClass_after.java b/java/java-tests/testData/refactoring/pushDown/InterfaceInnerRecordToClass_after.java new file mode 100644 index 000000000000..63c24b027d3d --- /dev/null +++ b/java/java-tests/testData/refactoring/pushDown/InterfaceInnerRecordToClass_after.java @@ -0,0 +1,11 @@ +interface IMessage { +} + +abstract class Message implements IMessage { + public static void main(String[] args) { + new Topic(); + } + + public record Topic() { + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/refactoring/PushDownTest.java b/java/java-tests/testSrc/com/intellij/java/refactoring/PushDownTest.java index 1912a21c9c86..cdc03c2da957 100644 --- a/java/java-tests/testSrc/com/intellij/java/refactoring/PushDownTest.java +++ b/java/java-tests/testSrc/com/intellij/java/refactoring/PushDownTest.java @@ -1,4 +1,4 @@ -// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.java.refactoring; import com.intellij.codeInsight.TargetElementUtil; @@ -68,6 +68,8 @@ public class PushDownTest extends LightRefactoringTestCase { public void testDefaultMethodToClassKeepAbstract() { doTestImplements(true); } public void testInterfaceStaticMethodToInterface() { doTest(); } public void testInterfaceStaticMethodToClass() { doTest(); } + public void testInterfaceInnerRecordToClass() { doTest(); } + public void testInterfaceInnerClassToClass() { doTest(); } public void testThisSuperExpressions() {doTest();} public void testMethodsInheritedFromSuper() {doTest();} public void testMethodsInheritedFromSuper1() {doTest();}