Skip to content

Commit

Permalink
Record classes are now handled the same as normal classes
Browse files Browse the repository at this point in the history
also 2 Tests were added which test the bugfix
  • Loading branch information
jannisCode committed Dec 3, 2024
1 parent 324bdfd commit ec081ec
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,47 @@ public class Foo {
assertEquals(3, fParameterNameCodeMiningProvider.provideCodeMinings(viewer, new NullProgressMonitor()).get().size());
}

@Test
public void testRecordClasses() 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 testRecordClasses2() throws Exception {
String contents= """
public class Ant {
record Ca (int size, int color){
}
Ca c = new Ca(0,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(2, fParameterNameCodeMiningProvider.provideCodeMinings(viewer, new NullProgressMonitor()).get().size());
}

@Test
public void testVarargs() throws Exception {
String contents= """
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 ec081ec

Please sign in to comment.