Skip to content

Commit ef8ba7e

Browse files
committed
F2 rename of Lombok @Singular attribute does nothing
Signed-off-by: Snjezana Peco <snjezana.peco@redhat.com>
1 parent 3e36308 commit ef8ba7e

File tree

3 files changed

+40
-1
lines changed
  • org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal
  • org.eclipse.jdt.ls.tests

3 files changed

+40
-1
lines changed

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/JDTUtils.java

+9-1
Original file line numberDiff line numberDiff line change
@@ -992,7 +992,15 @@ public static IJavaElement[] findElementsAtSelection(ITypeRoot unit, int line, i
992992
return null;
993993
}
994994
if (offset > -1) {
995-
return unit.codeSelect(offset, 0);
995+
IJavaElement[] elements = unit.codeSelect(offset, 0);
996+
if (elements == null || elements.length == 0) {
997+
IJavaElement element = unit.getElementAt(offset);
998+
if (element != null) {
999+
return new IJavaElement[] { element };
1000+
}
1001+
} else {
1002+
return elements;
1003+
}
9961004
}
9971005
return null;
9981006
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package org.sample;
2+
import java.util.List;
3+
import lombok.Builder;
4+
import lombok.Getter;
5+
import lombok.Singular;
6+
@Builder
7+
@Getter
8+
public class Test2 {
9+
@Singular("singular")
10+
List<String> singulars;
11+
List<String> normals;
12+
}

org.eclipse.jdt.ls.tests/src/org/eclipse/jdt/ls/core/internal/handlers/RenameHandlerTest.java

+19
Original file line numberDiff line numberDiff line change
@@ -593,6 +593,25 @@ public void testRenameTypeLombok() throws Exception {
593593
assertEquals(expected, TextEditUtil.apply(source, edit.getChanges().get(JDTUtils.toURI(cu))));
594594
}
595595

596+
// this test should pass when starting with -javaagent:<lombok_jar> (-javagent:~/.m2/repository/org/projectlombok/lombok/1.18.28/lombok-1.18.28.jar)
597+
// https://github.com/redhat-developer/vscode-java/issues/3203
598+
@Test
599+
public void testLombokSingular() throws Exception {
600+
when(preferenceManager.getPreferences().isImportMavenEnabled()).thenReturn(true);
601+
importProjects("maven/mavenlombok");
602+
IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("mavenlombok");
603+
IFile file = project.getFile("src/main/java/org/sample/Test2.java");
604+
assertTrue(file.exists());
605+
ICompilationUnit cu = JavaCore.createCompilationUnitFrom(file);
606+
Position pos = new Position(9, 18);
607+
String source = cu.getSource();
608+
String expected = source.replace("singulars", "singulars2");
609+
WorkspaceEdit edit = getRenameEdit(cu, pos, "singulars2");
610+
assertNotNull(edit);
611+
assertEquals(1, edit.getChanges().size());
612+
assertEquals(expected, TextEditUtil.apply(source, edit.getChanges().get(JDTUtils.toURI(cu))));
613+
}
614+
596615
// this test should pass when starting with -javaagent:<lombok_jar> (-javagent:~/.m2/repository/org/projectlombok/lombok/1.18.28/lombok-1.18.28.jar)
597616
// https://github.com/redhat-developer/vscode-java/issues/2805
598617
@Test

0 commit comments

Comments
 (0)