Community
Participate
Working Groups
Using N20041103 Trying to create an enum which implements abstract methods from an interface brings up the following error: "Creation of element failed. Attempt to add child of incompatible type" With the following stack trace: !ENTRY org.eclipse.jdt.ui 4 10001 2004-11-04 18:56:08.554 !MESSAGE Internal Error !STACK 0 java.lang.reflect.InvocationTargetException at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:303) at org.eclipse.jface.wizard.WizardDialog.run(WizardDialog.java:824) at org.eclipse.jdt.internal.ui.wizards.NewElementWizard.performFinish(NewElementWizard.java:115) at org.eclipse.jdt.internal.ui.wizards.NewEnumCreationWizard.performFinish(NewEnumCreationWizard.java:63) at org.eclipse.jface.wizard.WizardDialog.finishPressed(WizardDialog.java:670) at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:342) at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:543) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:89) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:800) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2794) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2448) at org.eclipse.jface.window.Window.runEventLoop(Window.java:707) at org.eclipse.jface.window.Window.open(Window.java:685) at org.eclipse.jdt.internal.ui.wizards.AbstractOpenWizardAction.run(AbstractOpenWizardAction.java:159) at org.eclipse.jface.action.Action.runWithEvent(Action.java:988) at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:946) at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:896) at org.eclipse.jface.action.ActionContributionItem$7.handleEvent(ActionContributionItem.java:810) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:800) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2794) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2448) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1443) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1414) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:271) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:144) at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:102) at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:335) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:273) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:129) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.eclipse.core.launcher.Main.basicRun(Main.java:185) at org.eclipse.core.launcher.Main.run(Main.java:704) at org.eclipse.core.launcher.Main.main(Main.java:688) Caused by: org.eclipse.jdt.core.jdom.DOMException: Attempt to add child of incompatible type at org.eclipse.jdt.internal.core.jdom.DOMNode.basicAddChild(DOMNode.java:350) at org.eclipse.jdt.internal.core.jdom.DOMNode.addChild(DOMNode.java:262) at org.eclipse.jdt.internal.core.CreateElementInCUOperation.insertDOMNode(CreateElementInCUOperation.java:282) at org.eclipse.jdt.internal.core.CreateTypeMemberOperation.generateNewCompilationUnitDOM(CreateTypeMemberOperation.java:74) at org.eclipse.jdt.internal.core.CreateElementInCUOperation.executeOperation(CreateElementInCUOperation.java:139) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:700) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1676) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:744) at org.eclipse.jdt.internal.core.SourceType.createMethod(SourceType.java:139) at org.eclipse.jdt.ui.wizards.NewTypeWizardPage.createInheritedMethods(NewTypeWizardPage.java:1943) at org.eclipse.jdt.ui.wizards.NewEnumWizardPage.createTypeMembers(NewEnumWizardPage.java:207) at org.eclipse.jdt.ui.wizards.NewTypeWizardPage.createType(NewTypeWizardPage.java:1574) at org.eclipse.jdt.internal.ui.wizards.NewEnumCreationWizard.finishPage(NewEnumCreationWizard.java:55) at org.eclipse.jdt.internal.ui.wizards.NewElementWizard$2.run(NewElementWizard.java:108) at org.eclipse.jdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:34) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:700) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1676) at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3536) at org.eclipse.jdt.internal.ui.actions.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:65) at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:105) Root exception: org.eclipse.jdt.core.jdom.DOMException: Attempt to add child of incompatible type at org.eclipse.jdt.internal.core.jdom.DOMNode.basicAddChild(DOMNode.java:350) at org.eclipse.jdt.internal.core.jdom.DOMNode.addChild(DOMNode.java:262) at org.eclipse.jdt.internal.core.CreateElementInCUOperation.insertDOMNode(CreateElementInCUOperation.java:282) at org.eclipse.jdt.internal.core.CreateTypeMemberOperation.generateNewCompilationUnitDOM(CreateTypeMemberOperation.java:74) at org.eclipse.jdt.internal.core.CreateElementInCUOperation.executeOperation(CreateElementInCUOperation.java:139) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:700) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1676) at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:744) at org.eclipse.jdt.internal.core.SourceType.createMethod(SourceType.java:139) at org.eclipse.jdt.ui.wizards.NewTypeWizardPage.createInheritedMethods(NewTypeWizardPage.java:1943) at org.eclipse.jdt.ui.wizards.NewEnumWizardPage.createTypeMembers(NewEnumWizardPage.java:207) at org.eclipse.jdt.ui.wizards.NewTypeWizardPage.createType(NewTypeWizardPage.java:1574) at org.eclipse.jdt.internal.ui.wizards.NewEnumCreationWizard.finishPage(NewEnumCreationWizard.java:55) at org.eclipse.jdt.internal.ui.wizards.NewElementWizard$2.run(NewElementWizard.java:108) at org.eclipse.jdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:34) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:700) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1676) at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3536) at org.eclipse.jdt.internal.ui.actions.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:65) at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:105)
The workaround is to set the workspace compiler preference to be 1.5. You can then add the implemented method. It doesn't handle the fact that the method needs to be added after the enum constant. So it doesn't add the extra semi-colon required. I think this should be fixed by use DOM/AST inside the jdt/core operations.
Is it ok now?
*** This bug has been marked as a duplicate of 77894 ***