Skip to content

Commit

Permalink
Code mining: handle Record classes like normal classes (#1822)
Browse files Browse the repository at this point in the history
also 1 Test was added which tests the bugfix
  • Loading branch information
jannisCode authored Dec 6, 2024
1 parent 9887b92 commit 44356af
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -380,6 +380,27 @@ public void testBug549126() throws Exception {
assertEquals(2, fParameterNameCodeMiningProvider.provideCodeMinings(viewer, new NullProgressMonitor()).get().size());
}

@Test
public void testRecordConstructorOneParameter() throws Exception {
String contents= """
public class Ant {
record Ca (int size){
}
Ca c = new Ca(0);
}
""";
ICompilationUnit compilationUnit= fPackage.createCompilationUnit("Ant.java", contents, true, new NullProgressMonitor());
JavaEditor editor= (JavaEditor) EditorUtility.openInEditor(compilationUnit);
fParameterNameCodeMiningProvider.setContext(editor);
JavaSourceViewer viewer= (JavaSourceViewer)editor.getViewer();
waitReconciled(viewer);

assertEquals(0, fParameterNameCodeMiningProvider.provideCodeMinings(viewer, new NullProgressMonitor()).get().size());
}

@Test
public void testRecordConstructorOK() throws Exception {
String contents= "import java.util.Map;\n"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ protected void collectParameterNamesCodeMinings(IMethod method, List<?> argument

protected void collectParameterNamesCodeMinings(IMethodBinding mbinding, List<?> arguments, boolean isVarArgs) {
// synthetic method of a record
if (mbinding.getDeclaringClass().isRecord()) {
if (mbinding.getDeclaringClass().isRecord() && !skipParameterNamesCodeMinings(mbinding)) {
String[] parameterNames= mbinding.getParameterNames();
for (int i= 0; i < Math.min(arguments.size(), parameterNames.length); i++) {
if (!skipParameterNameCodeMining(parameterNames, arguments, i)) {
Expand Down Expand Up @@ -168,6 +168,10 @@ private boolean skipParameterNamesCodeMinings(IMethod method) {
return method.getNumberOfParameters() <= 1;
}

private boolean skipParameterNamesCodeMinings(IMethodBinding methodBinding) {
return methodBinding.getParameterNames().length <= 1;
}

private boolean skipParameterNamesCodeMinings(IMethod method, String[] parameterNames) {
IPreferenceStore store= JavaPlugin.getDefault().getPreferenceStore();
boolean filter= store.getBoolean(PreferenceConstants.EDITOR_JAVA_CODEMINING_DEFAULT_FILTER_FOR_PARAMETER_NAMES);
Expand Down

0 comments on commit 44356af

Please sign in to comment.