### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core.tests.model Index: src/org/eclipse/jdt/core/tests/model/CreateMembersTests.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/CreateMembersTests.java,v retrieving revision 1.16 diff -u -r1.16 CreateMembersTests.java --- src/org/eclipse/jdt/core/tests/model/CreateMembersTests.java 8 Jun 2006 13:09:32 -0000 1.16 +++ src/org/eclipse/jdt/core/tests/model/CreateMembersTests.java 12 Jun 2008 13:36:50 -0000 @@ -151,4 +151,19 @@ "}"; assertSourceEquals("Unexpected source", expectedSource, type.getSource()); } + + // https://bugs.eclipse.org/bugs/show_bug.cgi?id=95480 + public void test007() throws Exception { + JavaModelException expected = null; + try { + IType type = getCompilationUnit("CreateMembers/src/E.java").getType("E"); + type.createType("class Member {}", type.getField("E1"), false/*don't force*/, null/*no progress*/); + } catch (JavaModelException e) { + expected = e; + } + assertExceptionEquals( + "Unexpected exception", + "Invalid sibling: E1 [in E [in E.java [in [in src [in CreateMembers]]]]]", + expected); + } } #P org.eclipse.jdt.core Index: model/org/eclipse/jdt/internal/core/CreateTypeOperation.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/CreateTypeOperation.java,v retrieving revision 1.31 diff -u -r1.31 CreateTypeOperation.java --- model/org/eclipse/jdt/internal/core/CreateTypeOperation.java 27 May 2008 23:40:18 -0000 1.31 +++ model/org/eclipse/jdt/internal/core/CreateTypeOperation.java 12 Jun 2008 13:36:51 -0000 @@ -102,6 +102,20 @@ } return JavaModelStatus.VERIFIED_OK; } +public IJavaModelStatus verify() { + IJavaModelStatus status = super.verify(); + if (!status.isOK()) + return status; + try { + IJavaElement parent = getParentElement(); + if (this.anchorElement != null && this.anchorElement.getElementType() == IJavaElement.FIELD + && parent.getElementType() == IJavaElement.TYPE && ((IType)parent).isEnum()) + return new JavaModelStatus(IJavaModelStatusConstants.INVALID_SIBLING, this.anchorElement); + } catch (JavaModelException e) { + return e.getJavaModelStatus(); + } + return JavaModelStatus.VERIFIED_OK; +} private String getASTNodeName() { return ((AbstractTypeDeclaration) this.createdNode).getName().getIdentifier(); }