From a36f06345620aefe15feafc9ceffa7ed88b9d4b9 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Wed, 12 Mar 2025 12:45:02 +0100 Subject: [PATCH] Java: add test for renaming record component with non-physical accessor (IJ-CR-157393) GitOrigin-RevId: e88f2f4fc950c169d932220c48148a82e4c5bd34 --- .../afterRecordNonPhysicalAccessor.java | 7 ++++++ .../beforeRecordNonPhysicalAccessor.java | 7 ++++++ .../java/refactoring/RenameFieldTest.java | 22 +++++++++++++++++++ 3 files changed, 36 insertions(+) create mode 100644 java/java-tests/testData/refactoring/renameField/afterRecordNonPhysicalAccessor.java create mode 100644 java/java-tests/testData/refactoring/renameField/beforeRecordNonPhysicalAccessor.java diff --git a/java/java-tests/testData/refactoring/renameField/afterRecordNonPhysicalAccessor.java b/java/java-tests/testData/refactoring/renameField/afterRecordNonPhysicalAccessor.java new file mode 100644 index 000000000000..26f3490401b4 --- /dev/null +++ b/java/java-tests/testData/refactoring/renameField/afterRecordNonPhysicalAccessor.java @@ -0,0 +1,7 @@ +package some.internal.pkg; + +record Hello( + int hello, + int bar, + int baz +) {} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/renameField/beforeRecordNonPhysicalAccessor.java b/java/java-tests/testData/refactoring/renameField/beforeRecordNonPhysicalAccessor.java new file mode 100644 index 000000000000..d140c4717a5e --- /dev/null +++ b/java/java-tests/testData/refactoring/renameField/beforeRecordNonPhysicalAccessor.java @@ -0,0 +1,7 @@ +package some.internal.pkg; + +record Hello( + int foo, + int bar, + int baz +) {} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/refactoring/RenameFieldTest.java b/java/java-tests/testSrc/com/intellij/java/refactoring/RenameFieldTest.java index cf9e4051da95..096198a2cbb9 100644 --- a/java/java-tests/testSrc/com/intellij/java/refactoring/RenameFieldTest.java +++ b/java/java-tests/testSrc/com/intellij/java/refactoring/RenameFieldTest.java @@ -4,12 +4,15 @@ package com.intellij.java.refactoring; import com.intellij.JavaTestUtil; import com.intellij.application.options.CodeStyle; import com.intellij.codeInsight.TargetElementUtil; +import com.intellij.codeInsight.template.impl.TemplateManagerImpl; +import com.intellij.codeInsight.template.impl.TemplateState; import com.intellij.lang.java.JavaLanguage; import com.intellij.openapi.actionSystem.DataContext; import com.intellij.openapi.editor.ex.EditorEx; import com.intellij.pom.java.JavaFeature; import com.intellij.psi.PsiElement; import com.intellij.refactoring.rename.*; +import com.intellij.refactoring.rename.inplace.MemberInplaceRenameHandler; import com.intellij.refactoring.rename.naming.AutomaticRenamerFactory; import com.intellij.testFramework.IdeaTestUtil; import org.jetbrains.annotations.NonNls; @@ -112,6 +115,25 @@ public class RenameFieldTest extends LightRefactoringTestCase { doTest("baz"); } + public void testRecordNonPhysicalAccessor() { + String testName = getTestName(false); + configureByFile("/refactoring/renameField/before" + testName + ".java"); + TemplateManagerImpl.setTemplateTesting(getTestRootDisposable()); + PsiElement element = TargetElementUtil.findTargetElement(getEditor(), TargetElementUtil.ELEMENT_NAME_ACCEPTED); + + assertNotNull(element); + try { + new MemberInplaceRenameHandler().doRename(element, getEditor(), null); + type("hello"); + } + finally { + TemplateState state = TemplateManagerImpl.getTemplateState(getEditor()); + assertNotNull(state); + state.gotoEnd(false); + } + checkResultByFile("/refactoring/renameField/after" + testName + ".java"); + } + public void testFieldOnlyInImplicitClass() { IdeaTestUtil.withLevel(getModule(), JavaFeature.IMPLICIT_CLASSES.getMinimumLevel(), () -> { String suffix = getTestName(false);