| Summary: | Using an annotation record as a type on a field causes class cast exception | ||
|---|---|---|---|
| Product: | z_Archived | Reporter: | Paul Harmon <pharmon> |
| Component: | EDT | Assignee: | Project Inbox <edt.mofmodel-inbox> |
| Status: | CLOSED FIXED | QA Contact: | |
| Severity: | normal | ||
| Priority: | P1 | ||
| Version: | unspecified | ||
| Target Milestone: | --- | ||
| Hardware: | PC | ||
| OS: | Windows XP | ||
| Whiteboard: | |||
I have fixed this and added code to prevent the use of an annotation as a type of a field outside of another annotation record definition works now |
compile the following testcase (note that the type ID is an annotation) handler Parent type Entity id int {@ID}; orphan orphan; end handler orphan type Entity field1 id; end will produce a stacktrace: Exception in thread "main" org.eclipse.edt.compiler.internal.core.builder.BuildException: java.lang.ClassCastException: org.eclipse.edt.mof.egl.lookup.ProxyPart incompatible with org.eclipse.edt.mof.EClass at org.eclipse.edt.compiler.AbstractProcessingQueue.process(AbstractProcessingQueue.java:189) at org.eclipse.edt.compiler.AbstractProcessingQueue.process(AbstractProcessingQueue.java:154) at org.eclipse.edt.compiler.tools.EGLC.compile(EGLC.java:135) at org.eclipse.edt.compiler.tools.EGL2IR.compile(EGL2IR.java:89) at org.eclipse.edt.compiler.tools.EGL2IR.main(EGL2IR.java:54) at org.eclipse.edt.compiler.tools.EGL2IR.main(EGL2IR.java:47) Caused by: java.lang.ClassCastException: org.eclipse.edt.mof.egl.lookup.ProxyPart incompatible with org.eclipse.edt.mof.EClass at org.eclipse.edt.compiler.internal.egl2mof.Egl2MofBase.mofValueFrom(Egl2MofBase.java:730) at org.eclipse.edt.compiler.internal.egl2mof.Egl2MofBase.mofValueFrom(Egl2MofBase.java:695) at org.eclipse.edt.compiler.internal.egl2mof.Egl2MofMember.processSettings(Egl2MofMember.java:498) at org.eclipse.edt.compiler.internal.egl2mof.Egl2Mof.processSettings(Egl2Mof.java:1) at org.eclipse.edt.compiler.internal.egl2mof.Egl2MofMember.addInitializers(Egl2MofMember.java:816) at org.eclipse.edt.compiler.internal.egl2mof.Egl2Mof.addInitializers(Egl2Mof.java:1) at org.eclipse.edt.compiler.internal.egl2mof.Egl2MofMember.addInitializers(Egl2MofMember.java:786) at org.eclipse.edt.compiler.internal.egl2mof.Egl2Mof.addInitializers(Egl2Mof.java:1) at org.eclipse.edt.compiler.internal.egl2mof.Egl2MofMember.visit(Egl2MofMember.java:133) at org.eclipse.edt.compiler.internal.egl2mof.Egl2Mof.visit(Egl2Mof.java:1) at org.eclipse.edt.compiler.core.ast.ClassDataDeclaration.accept(ClassDataDeclaration.java:88) at org.eclipse.edt.compiler.internal.egl2mof.Egl2MofPart.handleContents(Egl2MofPart.java:679) at org.eclipse.edt.compiler.internal.egl2mof.Egl2MofPart.defaultHandleVisitPart(Egl2MofPart.java:384) at org.eclipse.edt.compiler.internal.egl2mof.Egl2MofPart.visit(Egl2MofPart.java:199) at org.eclipse.edt.compiler.internal.egl2mof.Egl2Mof.visit(Egl2Mof.java:1) at org.eclipse.edt.compiler.core.ast.Handler.accept(Handler.java:55) at org.eclipse.edt.compiler.internal.egl2mof.Egl2Mof.convert(Egl2Mof.java:160) at org.eclipse.edt.compiler.Processor.createIRFromBoundAST2(Processor.java:164) at org.eclipse.edt.compiler.Processor.level03Compile(Processor.java:120) at org.eclipse.edt.compiler.AbstractProcessingQueue.process(AbstractProcessingQueue.java:171) ... 5 more