diff --git a/java/java-impl/src/com/intellij/psi/impl/JavaPsiImplementationHelperImpl.java b/java/java-impl/src/com/intellij/psi/impl/JavaPsiImplementationHelperImpl.java
index 8b30b996bfe2..b8389a2f4fa9 100644
--- a/java/java-impl/src/com/intellij/psi/impl/JavaPsiImplementationHelperImpl.java
+++ b/java/java-impl/src/com/intellij/psi/impl/JavaPsiImplementationHelperImpl.java
@@ -187,18 +187,19 @@ public class JavaPsiImplementationHelperImpl extends JavaPsiImplementationHelper
MemberOrderService service = ServiceManager.getService(MemberOrderService.class);
PsiElement anchor = service.getAnchor(member, settings.getCommonSettings(JavaLanguage.INSTANCE), aClass);
- if (anchor != null && PsiTreeUtil.skipSiblingsForward(anchor, PsiWhiteSpace.class) == aClass.getRBrace()) {
- // Given member should be inserted as the last child.
- return aClass.getRBrace();
+ PsiElement newAnchor = skipWhitespaces(aClass, anchor);
+ if (newAnchor != null) {
+ return newAnchor;
}
-
+
if (anchor != null && anchor != aClass) {
anchor = anchor.getNextSibling();
while (anchor instanceof PsiJavaToken && (anchor.getText().equals(",") || anchor.getText().equals(";"))) {
anchor = anchor.getNextSibling();
}
if (anchor != null) {
- return anchor;
+ newAnchor = skipWhitespaces(aClass, anchor);
+ return newAnchor != null ? newAnchor : anchor;
}
}
@@ -215,7 +216,15 @@ public class JavaPsiImplementationHelperImpl extends JavaPsiImplementationHelper
return aClass.getRBrace();
}
-
+
+ private static PsiElement skipWhitespaces(PsiClass aClass, PsiElement anchor) {
+ if (anchor != null && PsiTreeUtil.skipSiblingsForward(anchor, PsiWhiteSpace.class) == aClass.getRBrace()) {
+ // Given member should be inserted as the last child.
+ return aClass.getRBrace();
+ }
+ return null;
+ }
+
// TODO remove as soon as an arrangement sub-system is provided for groovy.
public static int getMemberOrderWeight(PsiElement member, CodeStyleSettings settings) {
if (member instanceof PsiField) {
diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorFromCall/afterIncompleteEnum1.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorFromCall/afterIncompleteEnum1.java
new file mode 100644
index 000000000000..7abef7964c58
--- /dev/null
+++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorFromCall/afterIncompleteEnum1.java
@@ -0,0 +1,8 @@
+// "Create Constructor" "true"
+public enum ReportType {
+ AGING("Aging"),;
+
+ ReportType(String aging) {
+ //To change body of created methods use File | Settings | File Templates.
+ }
+}
\ No newline at end of file
diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorFromCall/beforeIncompleteEnum1.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorFromCall/beforeIncompleteEnum1.java
new file mode 100644
index 000000000000..6b67821d00ce
--- /dev/null
+++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createConstructorFromCall/beforeIncompleteEnum1.java
@@ -0,0 +1,4 @@
+// "Create Constructor" "true"
+public enum ReportType {
+ AGING("Aging"),
+}
\ No newline at end of file