| Summary: | Duplicate delegate methods generated | ||
|---|---|---|---|
| Product: | z_Archived | Reporter: | Konstantin Komissarchik <konstantin> |
| Component: | Sapphire | Assignee: | Konstantin Komissarchik <konstantin> |
| Status: | CLOSED FIXED | QA Contact: | |
| Severity: | normal | ||
| Priority: | P3 | CC: | ling.hao |
| Version: | unspecified | ||
| Target Milestone: | --- | ||
| Hardware: | All | ||
| OS: | All | ||
| Whiteboard: | |||
Fixed. Test case Misc0005 covers this now. Verify via unit test. |
If a developer wishes to override a delegated method in an extending model element, we might see code structure like the following: @GenerateImpl public interface ICreateProjectOp extends IExecutableModelElement { ... // *** Method : execute *** @DelegateImplementation( CreateProjectOpMethods.class ) Status execute( ProgressMonitor monitor ); } @GenerateImpl public interface ICreateWebProjectOp extends ICreateProjectOp { ... // *** Method : execute *** @DelegateImplementation( CreateWebProjectOpMethods.class ) Status execute( ProgressMonitor monitor ); } Due to the bug in the impl class generator, the generated CreateWebProjectOp class will have the following two methods: public Status execute( final ProgressMonitor monitor ) { synchronized( root() ) { return CreateProjectOpMethods.execute( this, monitor ); } } public Status execute( final ProgressMonitor monitor ) { synchronized( root() ) { return CreateWebProjectOpMethods.execute( this, monitor ); } } This doesn't compile. The expected behavior would be to generate just the second method.