mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-13 21:55:01 +07:00
introduce parameter object: copy javadoc for constructor from included params only (IDEA-108187)
This commit is contained in:
+12
@@ -26,6 +26,7 @@ import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.CodeStyleManager;
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
|
||||
import com.intellij.psi.codeStyle.VariableKind;
|
||||
import com.intellij.psi.impl.source.javadoc.PsiDocParamRef;
|
||||
import com.intellij.psi.javadoc.PsiDocComment;
|
||||
import com.intellij.psi.javadoc.PsiDocTag;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
@@ -40,6 +41,7 @@ import com.intellij.refactoring.introduceparameterobject.usageInfo.*;
|
||||
import com.intellij.refactoring.util.*;
|
||||
import com.intellij.usageView.UsageInfo;
|
||||
import com.intellij.usageView.UsageViewDescriptor;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.VisibilityUtil;
|
||||
import com.intellij.util.containers.MultiMap;
|
||||
@@ -312,6 +314,16 @@ public class IntroduceParameterObjectProcessor extends FixableUsagesRefactoringP
|
||||
for (PsiDocTag paramTag : paramTags) {
|
||||
final PsiElement[] dataElements = paramTag.getDataElements();
|
||||
if (dataElements.length > 0) {
|
||||
if (dataElements[0] instanceof PsiDocParamRef) {
|
||||
final PsiReference reference = dataElements[0].getReference();
|
||||
if (reference != null) {
|
||||
final PsiElement resolve = reference.resolve();
|
||||
if (resolve instanceof PsiParameter) {
|
||||
final int parameterIndex = method.getParameterList().getParameterIndex((PsiParameter)resolve);
|
||||
if (ArrayUtil.find(paramsToMerge, parameterIndex) < 0) continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
mergedTags.add((PsiDocTag)paramTag.copy());
|
||||
}
|
||||
}
|
||||
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
class Test {
|
||||
/**
|
||||
* foo comment
|
||||
* @param param
|
||||
* @param s1 long1 description1
|
||||
*/
|
||||
void foo(Param param, String s1) {
|
||||
bar(param.getS(), s1);
|
||||
}
|
||||
|
||||
void bar(String s, String s1){}
|
||||
|
||||
private static class Param {
|
||||
private final String s;
|
||||
|
||||
/**
|
||||
* @param s long description
|
||||
*/
|
||||
private Param(String s) {
|
||||
this.s = s;
|
||||
}
|
||||
|
||||
public String getS() {
|
||||
return s;
|
||||
}
|
||||
}
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
class Test {
|
||||
/**
|
||||
* foo comment
|
||||
* @param s long description
|
||||
* @param s1 long1 description1
|
||||
*/
|
||||
void foo(String s, String s1) {
|
||||
bar(s, s1);
|
||||
}
|
||||
|
||||
void bar(String s, String s1){}
|
||||
}
|
||||
@@ -149,6 +149,24 @@ public class IntroduceParameterObjectTest extends MultiFileTestCase{
|
||||
});
|
||||
}
|
||||
|
||||
public void testCopyJavadoc1() throws Exception {
|
||||
doTest(false, true, new Function<PsiMethod, VariableData[]>() {
|
||||
@Override
|
||||
public VariableData[] fun(PsiMethod method) {
|
||||
final PsiParameter[] parameters = method.getParameterList().getParameters();
|
||||
|
||||
final VariableData[] datas = new VariableData[parameters.length - 1];
|
||||
for (int i = 0; i < parameters.length - 1; i++) {
|
||||
PsiParameter parameter = parameters[i];
|
||||
datas[i] = new VariableData(parameter);
|
||||
datas[i].name = parameter.getName();
|
||||
datas[i].passAsParameter = true;
|
||||
}
|
||||
return datas;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void testTypeParametersWithChosenSubtype() throws Exception {
|
||||
doTest(false, true, new Function<PsiMethod, VariableData[]>() {
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user