Project: JDT
Bug 230189 [api tooling] Extending an @noimplement interface should not be an error
Reported: 2008-05-05 08:02:49 | Status: verified fixed

Build ID: I20080502-0100 (Eclipse 3.4M7) Consider following rather common scenario: /** @noimplement Do not implement directly. Extend abstract base Foo instead. */ public interface IFoo { //... } public abstract class Foo implements IFoo { //... } With following client code: interface IFooBar extends IFoo { public void bar(); } class MyFooBar extends Foo implements IFooBar { public void bar(); } In this case, the client code legally implements IFoo, because it does so by extending abstract base Foo. This scenario should not be flagged as an error: Just extending an interface does not introduce any binary compatibility issues. But currently the API Tooling flags IFooBar extends IFoo as an error.

Files changed in fix:
org.eclipse.jdt.core.manipulation/refactoring/org/eclipse/jdt/core/refactoring/IJavaRefactorings.java org.eclipse.jdt.junit.core/src/org/eclipse/jdt/junit/model/ITestCaseElement.java org.eclipse.jdt.junit.core/src/org/eclipse/jdt/junit/model/ITestElement.java org.eclipse.jdt.junit.core/src/org/eclipse/jdt/junit/model/ITestElementContainer.java org.eclipse.jdt.junit.core/src/org/eclipse/jdt/junit/model/ITestRunSession.java org.eclipse.jdt.junit.core/src/org/eclipse/jdt/junit/model/ITestSuiteElement.java org.eclipse.jdt.junit/src/org/eclipse/jdt/junit/model/ITestCaseElement.java org.eclipse.jdt.junit/src/org/eclipse/jdt/junit/model/ITestElement.java org.eclipse.jdt.junit/src/org/eclipse/jdt/junit/model/ITestElementContainer.java org.eclipse.jdt.junit/src/org/eclipse/jdt/junit/model/ITestRunSession.java org.eclipse.jdt.junit/src/org/eclipse/jdt/junit/model/ITestSuiteElement.java org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/IContextMenuConstants.java org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/IJavaElementSearchConstants.java org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/IPackagesViewPart.java org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/ISharedImages.java org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/ITypeHierarchyViewPart.java org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/IWorkingCopyManager.java org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/IWorkingCopyManagerExtension.java org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/IWorkingCopyProvider.java org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/actions/IJavaEditorActionDefinitionIds.java org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/dialogs/ITypeInfoRequestor.java org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/dialogs/ITypeSelectionComponent.java org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/refactoring/IRefactoringProcessorIds.java org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/search/ISearchRequestor.java org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/text/IJavaColorConstants.java org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/text/java/IInvocationContext.java org.eclipse.jdt.ui/ui/org/eclipse/jdt/ui/text/java/IProblemLocation.java org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/IRefactoringCoreStatusCodes.java org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/IUndoManager.java org.eclipse.ltk.core.refactoring/src/org/eclipse/ltk/core/refactoring/history/IRefactoringHistoryService.java org.eclipse.ltk.ui.refactoring/src/org/eclipse/ltk/ui/refactoring/IRefactoringUIStatusCodes.java org.eclipse.ltk.ui.refactoring/src/org/eclipse/ltk/ui/refactoring/history/IRefactoringHistoryControl.java org.eclipse.ltk.ui.refactoring/src/org/eclipse/ltk/ui/refactoring/history/ISortableRefactoringHistoryControl.java