mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
detect generated parameter name ignoring prefixes (e.g. in case of overriding library) (IDEA-144961)
This commit is contained in:
@@ -30,12 +30,10 @@ import com.intellij.openapi.util.Condition;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.CodeStyleManager;
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
|
||||
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
|
||||
import com.intellij.psi.codeStyle.VariableKind;
|
||||
import com.intellij.psi.codeStyle.*;
|
||||
import com.intellij.psi.impl.PsiImplUtil;
|
||||
import com.intellij.psi.impl.light.LightTypeElement;
|
||||
import com.intellij.psi.impl.source.codeStyle.JavaCodeStyleManagerImpl;
|
||||
import com.intellij.psi.impl.source.tree.PsiWhiteSpaceImpl;
|
||||
import com.intellij.psi.javadoc.PsiDocComment;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
@@ -507,7 +505,12 @@ public class GenerateMembersUtil {
|
||||
}
|
||||
|
||||
private static boolean isBaseNameGenerated(JavaCodeStyleManager csManager, PsiType parameterType, String paramName) {
|
||||
return Arrays.asList(csManager.suggestVariableName(VariableKind.PARAMETER, null, null, parameterType).names).contains(paramName);
|
||||
if (Arrays.asList(csManager.suggestVariableName(VariableKind.PARAMETER, null, null, parameterType).names).contains(paramName)) {
|
||||
return true;
|
||||
}
|
||||
final String typeName = JavaCodeStyleManagerImpl.getTypeName(parameterType);
|
||||
return typeName != null &&
|
||||
NameUtil.getSuggestionsByName(typeName, "", "", false, false, parameterType instanceof PsiArrayType).contains(paramName);
|
||||
}
|
||||
|
||||
private static PsiType substituteType(final PsiSubstitutor substitutor, final PsiType type, @NotNull PsiTypeParameterListOwner owner) {
|
||||
|
||||
+2
-2
@@ -323,7 +323,7 @@ public class JavaCodeStyleManagerImpl extends JavaCodeStyleManager {
|
||||
}
|
||||
String name = map.nameByType(longTypeName);
|
||||
if (name != null && isIdentifier(name)) {
|
||||
return new String[]{name};
|
||||
return getSuggestionsByName(name, variableKind, type instanceof PsiArrayType, correctKeywords);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -413,7 +413,7 @@ public class JavaCodeStyleManagerImpl extends JavaCodeStyleManager {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static String getTypeName(@NotNull PsiType type) {
|
||||
public static String getTypeName(@NotNull PsiType type) {
|
||||
return getTypeName(type, true);
|
||||
}
|
||||
|
||||
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
interface IntFunction<T> {
|
||||
int apply(T t);
|
||||
}
|
||||
|
||||
class A implements IntFunction<String> {
|
||||
public int apply(String inS) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
interface IntFunction<T> {
|
||||
int apply(T t);
|
||||
}
|
||||
|
||||
class A implements IntFunction<String> {
|
||||
<caret>
|
||||
}
|
||||
@@ -21,7 +21,6 @@ import com.intellij.codeInsight.generation.OverrideImplementUtil;
|
||||
import com.intellij.codeInsight.generation.PsiMethodMember;
|
||||
import com.intellij.codeInsight.intention.impl.ImplementAbstractMethodHandler;
|
||||
import com.intellij.lang.java.JavaLanguage;
|
||||
import com.intellij.openapi.actionSystem.impl.SimpleDataContext;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettings;
|
||||
@@ -87,6 +86,18 @@ public class OverrideImplement15Test extends LightCodeInsightTestCase {
|
||||
}
|
||||
}
|
||||
|
||||
public void testOverridingLibraryFunctionWithConfiguredParameterPrefix() throws Exception {
|
||||
CodeStyleSettings codeStyleSettings = CodeStyleSettingsManager.getSettings(getProject()).clone();
|
||||
try {
|
||||
codeStyleSettings.PARAMETER_NAME_PREFIX = "in";
|
||||
CodeStyleSettingsManager.getInstance(getProject()).setTemporarySettings(codeStyleSettings);
|
||||
doTest(false);
|
||||
}
|
||||
finally {
|
||||
CodeStyleSettingsManager.getInstance(getProject()).dropTemporarySettings();
|
||||
}
|
||||
}
|
||||
|
||||
public void testLongParameterList() {
|
||||
CodeStyleSettings codeStyleSettings = CodeStyleSettingsManager.getSettings(getProject()).clone();
|
||||
try {
|
||||
@@ -110,7 +121,7 @@ public class OverrideImplement15Test extends LightCodeInsightTestCase {
|
||||
PsiClass psiClass = PsiTreeUtil.getParentOfType(context, PsiClass.class);
|
||||
assert psiClass != null;
|
||||
|
||||
final Collection<MethodSignature> signatures = OverrideImplementUtil.getMethodSignaturesToOverride(psiClass);
|
||||
final Collection<MethodSignature> signatures = OverrideImplementExploreUtil.getMethodSignaturesToOverride(psiClass);
|
||||
final Collection<String> strings = ContainerUtil.map(signatures, FunctionUtil.string());
|
||||
|
||||
assertTrue(strings.toString(), strings.contains("HierarchicalMethodSignatureImpl: A([PsiType:String])"));
|
||||
|
||||
Reference in New Issue
Block a user