diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaGenerateMemberCompletionContributor.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaGenerateMemberCompletionContributor.java index a0ccfae07fe6..b7067ba29343 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaGenerateMemberCompletionContributor.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaGenerateMemberCompletionContributor.java @@ -35,6 +35,7 @@ import com.intellij.util.VisibilityUtil; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.java.generate.exception.GenerateCodeException; import javax.swing.*; import java.util.ArrayList; @@ -90,8 +91,11 @@ public class JavaGenerateMemberCompletionContributor { if (field instanceof PsiEnumConstant) continue; List prototypes = ContainerUtil.newSmartList(); - Collections.addAll(prototypes, GetterSetterPrototypeProvider.generateGetterSetters(field, true)); - Collections.addAll(prototypes, GetterSetterPrototypeProvider.generateGetterSetters(field, false)); + try { + Collections.addAll(prototypes, GetterSetterPrototypeProvider.generateGetterSetters(field, true, false)); + Collections.addAll(prototypes, GetterSetterPrototypeProvider.generateGetterSetters(field, false, false)); + } + catch (GenerateCodeException ignore) { } for (final PsiMethod prototype : prototypes) { if (parent.findMethodBySignature(prototype, false) == null && addedSignatures.add(prototype.getSignature(PsiSubstitutor.EMPTY))) { Icon icon = prototype.getIcon(Iconable.ICON_FLAG_VISIBILITY); diff --git a/java/java-impl/src/com/intellij/codeInsight/generation/GenerateMembersUtil.java b/java/java-impl/src/com/intellij/codeInsight/generation/GenerateMembersUtil.java index efefd1859c8b..c54333d4c1b1 100644 --- a/java/java-impl/src/com/intellij/codeInsight/generation/GenerateMembersUtil.java +++ b/java/java-impl/src/com/intellij/codeInsight/generation/GenerateMembersUtil.java @@ -701,7 +701,7 @@ public class GenerateMembersUtil { return generatePrototype(field, result); } - @Nullable + @NotNull private static PsiMethod generatePrototype(@NotNull PsiField field, PsiMethod result) { return setVisibility(field, annotateOnOverrideImplement(field.getContainingClass(), result)); } diff --git a/java/java-impl/src/com/intellij/codeInsight/generation/GetterSetterPrototypeProvider.java b/java/java-impl/src/com/intellij/codeInsight/generation/GetterSetterPrototypeProvider.java index 3f0e679bd553..379536d45bb8 100644 --- a/java/java-impl/src/com/intellij/codeInsight/generation/GetterSetterPrototypeProvider.java +++ b/java/java-impl/src/com/intellij/codeInsight/generation/GetterSetterPrototypeProvider.java @@ -52,14 +52,14 @@ public abstract class GetterSetterPrototypeProvider { public static PsiMethod[] generateGetterSetters(PsiField field, boolean generateGetter, - boolean invalidTemplate) { + boolean ignoreInvalidTemplate) { for (GetterSetterPrototypeProvider provider : Extensions.getExtensions(EP_NAME)) { if (provider.canGeneratePrototypeFor(field)) { return generateGetter ? provider.generateGetters(field) : provider.generateSetters(field); } } - return new PsiMethod[]{generateGetter ? GenerateMembersUtil.generateGetterPrototype(field, invalidTemplate) : - GenerateMembersUtil.generateSetterPrototype(field, invalidTemplate)}; + return new PsiMethod[]{generateGetter ? GenerateMembersUtil.generateGetterPrototype(field, ignoreInvalidTemplate) : + GenerateMembersUtil.generateSetterPrototype(field, ignoreInvalidTemplate)}; } public static boolean isReadOnlyProperty(PsiField field) { diff --git a/java/java-psi-api/src/com/intellij/psi/util/PropertyUtil.java b/java/java-psi-api/src/com/intellij/psi/util/PropertyUtil.java index 33d8b7063f13..b8b1bee5cbab 100644 --- a/java/java-psi-api/src/com/intellij/psi/util/PropertyUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/util/PropertyUtil.java @@ -452,50 +452,44 @@ public class PropertyUtil { VariableKind kind = codeStyleManager.getVariableKind(field); String propertyName = codeStyleManager.variableNameToPropertyName(name, kind); String setName = suggestSetterName(field); - try { - PsiMethod setMethod = factory - .createMethodFromText(factory.createMethod(setName, returnSelf ? factory.createType(containingClass) : PsiType.VOID).getText(), - field); - String parameterName = codeStyleManager.propertyNameToVariableName(propertyName, VariableKind.PARAMETER); - PsiParameter param = factory.createParameter(parameterName, field.getType()); + PsiMethod setMethod = factory + .createMethodFromText(factory.createMethod(setName, returnSelf ? factory.createType(containingClass) : PsiType.VOID).getText(), + field); + String parameterName = codeStyleManager.propertyNameToVariableName(propertyName, VariableKind.PARAMETER); + PsiParameter param = factory.createParameter(parameterName, field.getType()); - NullableNotNullManager.getInstance(project).copyNullableOrNotNullAnnotation(field, param); + NullableNotNullManager.getInstance(project).copyNullableOrNotNullAnnotation(field, param); - setMethod.getParameterList().add(param); - PsiUtil.setModifierProperty(setMethod, PsiModifier.PUBLIC, true); - PsiUtil.setModifierProperty(setMethod, PsiModifier.STATIC, isStatic); + setMethod.getParameterList().add(param); + PsiUtil.setModifierProperty(setMethod, PsiModifier.PUBLIC, true); + PsiUtil.setModifierProperty(setMethod, PsiModifier.STATIC, isStatic); - @NonNls StringBuilder buffer = new StringBuilder(); - buffer.append("{\n"); - if (name.equals(parameterName)) { - if (!isStatic) { - buffer.append("this."); - } - else { - String className = containingClass.getName(); - if (className != null) { - buffer.append(className); - buffer.append("."); - } + @NonNls StringBuilder buffer = new StringBuilder(); + buffer.append("{\n"); + if (name.equals(parameterName)) { + if (!isStatic) { + buffer.append("this."); + } + else { + String className = containingClass.getName(); + if (className != null) { + buffer.append(className); + buffer.append("."); } } - buffer.append(name); - buffer.append("="); - buffer.append(parameterName); - buffer.append(";\n"); - if (returnSelf) { - buffer.append("return this;\n"); - } - buffer.append("}"); - PsiCodeBlock body = factory.createCodeBlockFromText(buffer.toString(), null); - setMethod.getBody().replace(body); - setMethod = (PsiMethod)CodeStyleManager.getInstance(project).reformat(setMethod); - return setMethod; } - catch (IncorrectOperationException e) { - LOG.error(e); - return null; + buffer.append(name); + buffer.append("="); + buffer.append(parameterName); + buffer.append(";\n"); + if (returnSelf) { + buffer.append("return this;\n"); } + buffer.append("}"); + PsiCodeBlock body = factory.createCodeBlockFromText(buffer.toString(), null); + setMethod.getBody().replace(body); + setMethod = (PsiMethod)CodeStyleManager.getInstance(project).reformat(setMethod); + return setMethod; } /** @deprecated use {@link NullableNotNullManager#copyNullableOrNotNullAnnotation(PsiModifierListOwner, PsiModifierListOwner)} (to be removed in IDEA 17) */