Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 117700 Details for
Bug 230189
[api tooling] Extending an @noimplement interface should not be an error
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
patch
230189.patch (text/plain), 130.85 KB, created by
Michael Rennie
on 2008-11-12 14:53:16 EST
(
hide
)
Description:
patch
Filename:
MIME Type:
Creator:
Michael Rennie
Created:
2008-11-12 14:53:16 EST
Size:
130.85 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.pde.api.tools.tests >Index: src/org/eclipse/pde/api/tools/builder/tests/usage/UsageTest.java >=================================================================== >RCS file: /cvsroot/eclipse/pde/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/usage/UsageTest.java,v >retrieving revision 1.2 >diff -u -r1.2 UsageTest.java >--- src/org/eclipse/pde/api/tools/builder/tests/usage/UsageTest.java 11 Sep 2008 14:51:59 -0000 1.2 >+++ src/org/eclipse/pde/api/tools/builder/tests/usage/UsageTest.java 12 Nov 2008 19:50:59 -0000 >@@ -94,7 +94,7 @@ > typename, > true, > (inc ? IncrementalProjectBuilder.INCREMENTAL_BUILD : IncrementalProjectBuilder.FULL_BUILD), >- true); >+ getExpectedProblemIds().length > 0); > } > > /** >Index: src/org/eclipse/pde/api/tools/builder/tests/usage/InterfaceUsageTests.java >=================================================================== >RCS file: /cvsroot/eclipse/pde/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/usage/InterfaceUsageTests.java,v >retrieving revision 1.3 >diff -u -r1.3 InterfaceUsageTests.java >--- src/org/eclipse/pde/api/tools/builder/tests/usage/InterfaceUsageTests.java 24 Oct 2008 16:26:19 -0000 1.3 >+++ src/org/eclipse/pde/api/tools/builder/tests/usage/InterfaceUsageTests.java 12 Nov 2008 19:50:59 -0000 >@@ -26,7 +26,6 @@ > > protected static final String INTERFACE_NAME = "InterfaceUsageInterface"; > protected static final String INNER_I_NAME = "Iinner"; >- private int pid = -1; > > /** > * Constructor >@@ -41,14 +40,15 @@ > */ > @Override > protected int getDefaultProblemId() { >- if(pid == -1) { >- pid = ApiProblemFactory.createProblemId( >- IApiProblem.CATEGORY_USAGE, >- IElementDescriptor.TYPE, >- IApiProblem.ILLEGAL_IMPLEMENT, >- IApiProblem.NO_FLAGS); >- } >- return pid; >+ return -1; >+ } >+ >+ private int getProblemId(int kind, int flags) { >+ return ApiProblemFactory.createProblemId( >+ IApiProblem.CATEGORY_USAGE, >+ IElementDescriptor.TYPE, >+ kind, >+ flags); > } > > /** >@@ -64,7 +64,7 @@ > } > > /** >- * Tests that extending an @noimplement interface properly reports the usage problems >+ * Tests that extending an @noimplement interface properly reports no usage problems > * using a full build > */ > public void testInterfaceUsageTests1F() { >@@ -72,7 +72,7 @@ > } > > /** >- * Tests that extending an @noimplement interface properly reports the usage problems >+ * Tests that extending an @noimplement interface properly reports no usage problems > * using an incremental build > */ > public void testInterfaceUsageTests1I() { >@@ -80,14 +80,8 @@ > } > > private void x1(boolean inc) { >- setExpectedProblemIds(getDefaultProblemIdSet(3)); >- String typename = "testI1"; >- setExpectedMessageArgs(new String[][] { >- {INNER_I_NAME, INNER_NAME1}, >- {INTERFACE_NAME, typename}, >- {INNER_I_NAME, OUTER_INAME} >- }); >- deployTest(typename, inc); >+ expectingNoProblems(); >+ deployTest("testI1", inc); > } > > /** >@@ -107,7 +101,11 @@ > } > > private void x2(boolean inc) { >- setExpectedProblemIds(getDefaultProblemIdSet(3)); >+ setExpectedProblemIds(new int[] { >+ getProblemId(IApiProblem.ILLEGAL_IMPLEMENT, IApiProblem.NO_FLAGS), >+ getProblemId(IApiProblem.ILLEGAL_IMPLEMENT, IApiProblem.NO_FLAGS), >+ getProblemId(IApiProblem.ILLEGAL_IMPLEMENT, IApiProblem.NO_FLAGS) >+ }); > String typename = "testI2"; > setExpectedMessageArgs(new String[][] { > {INNER_I_NAME, INNER_NAME1}, >@@ -116,4 +114,34 @@ > }); > deployTest(typename, inc); > } >+ >+ /** >+ * Tests that extending an @noextend interface properly reports the usage problems >+ * using a full build >+ */ >+ public void testIllegalExtendInterfaceF() { >+ x3(false); >+ } >+ >+ /** >+ * Tests that extending an @noextend interface properly reports the usage problems >+ * using an incremental build >+ */ >+ public void testIllegalExtendInterfaceI() { >+ x3(true); >+ } >+ >+ private void x3(boolean inc) { >+ setExpectedProblemIds(new int[] { >+ getProblemId(IApiProblem.ILLEGAL_EXTEND, IApiProblem.INDIRECT_REFERENCE), >+ getProblemId(IApiProblem.ILLEGAL_EXTEND, IApiProblem.INDIRECT_REFERENCE), >+ getProblemId(IApiProblem.ILLEGAL_EXTEND, IApiProblem.INDIRECT_REFERENCE) >+ }); >+ String typename = "testI3"; >+ setExpectedMessageArgs(new String[][] { >+ {INNER_I_NAME, INNER_NAME1}, >+ {"InterfaceUsageInterface2", typename}, >+ {INNER_I_NAME, OUTER_INAME} >+ }); >+ } > } >Index: src/org/eclipse/pde/api/tools/builder/tests/usage/ClassUsageTests.java >=================================================================== >RCS file: /cvsroot/eclipse/pde/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/usage/ClassUsageTests.java,v >retrieving revision 1.2 >diff -u -r1.2 ClassUsageTests.java >--- src/org/eclipse/pde/api/tools/builder/tests/usage/ClassUsageTests.java 24 Oct 2008 16:26:19 -0000 1.2 >+++ src/org/eclipse/pde/api/tools/builder/tests/usage/ClassUsageTests.java 12 Nov 2008 19:50:59 -0000 >@@ -47,12 +47,12 @@ > * @param kind > * @return the problem id > */ >- private int getProblemId(int kind) { >+ private int getProblemId(int kind, int flags) { > return ApiProblemFactory.createProblemId( > IApiProblem.CATEGORY_USAGE, > IElementDescriptor.TYPE, > kind, >- IApiProblem.NO_FLAGS); >+ flags); > } > > public static Test suite() { >@@ -85,10 +85,10 @@ > > private void x1(boolean inc) { > setExpectedProblemIds(new int[] { >- getProblemId(IApiProblem.ILLEGAL_EXTEND), >- getProblemId(IApiProblem.ILLEGAL_EXTEND), >- getProblemId(IApiProblem.ILLEGAL_EXTEND), >- getProblemId(IApiProblem.ILLEGAL_EXTEND) >+ getProblemId(IApiProblem.ILLEGAL_EXTEND, IApiProblem.NO_FLAGS), >+ getProblemId(IApiProblem.ILLEGAL_EXTEND, IApiProblem.NO_FLAGS), >+ getProblemId(IApiProblem.ILLEGAL_EXTEND, IApiProblem.NO_FLAGS), >+ getProblemId(IApiProblem.ILLEGAL_EXTEND, IApiProblem.NO_FLAGS) > }); > String typename = "testC1"; > setExpectedMessageArgs(new String[][] { >@@ -118,10 +118,10 @@ > > private void x2(boolean inc) { > setExpectedProblemIds(new int[] { >- getProblemId(IApiProblem.ILLEGAL_INSTANTIATE), >- getProblemId(IApiProblem.ILLEGAL_INSTANTIATE), >- getProblemId(IApiProblem.ILLEGAL_INSTANTIATE), >- getProblemId(IApiProblem.ILLEGAL_INSTANTIATE) >+ getProblemId(IApiProblem.ILLEGAL_INSTANTIATE, IApiProblem.NO_FLAGS), >+ getProblemId(IApiProblem.ILLEGAL_INSTANTIATE, IApiProblem.NO_FLAGS), >+ getProblemId(IApiProblem.ILLEGAL_INSTANTIATE, IApiProblem.NO_FLAGS), >+ getProblemId(IApiProblem.ILLEGAL_INSTANTIATE, IApiProblem.NO_FLAGS) > }); > String typename = "testC2"; > setExpectedMessageArgs(new String[][] { >@@ -132,4 +132,145 @@ > }); > deployTest(typename, inc); > } >+ >+ /** >+ * Tests that indirect illegal implementing is properly >+ * detected for one class and an extension interface using a full build >+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=230189 >+ */ >+ public void testClassIndirectImplements1F() { >+ x3(false); >+ } >+ >+ /** >+ * Tests that indirect illegal implementing is properly >+ * detected for one class and an extension interface using an incremental build >+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=230189 >+ */ >+ public void testClassIndirectImplements1I() { >+ x3(true); >+ } >+ >+ private void x3(boolean inc) { >+ setExpectedProblemIds(new int[] { >+ getProblemId(IApiProblem.ILLEGAL_IMPLEMENT, IApiProblem.INDIRECT_REFERENCE) >+ }); >+ String typename = "testC3"; >+ setExpectedMessageArgs(new String[][] { >+ {"IExtInterface1", "INoImpl1", typename}, >+ }); >+ deployTest(typename, inc); >+ } >+ >+ /** >+ * Tests that an indirect illegal implement is ignored when there is a >+ * parent class that implements the @noimplement interface using >+ * a full build >+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=230189 >+ */ >+ public void testClassIndirectImplements2F() { >+ x4(false); >+ } >+ >+ /** >+ * Tests that an indirect illegal implement is ignored when there is a >+ * parent class that implements the @noimplement interface using >+ * an incremental build >+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=230189 >+ */ >+ public void testClassIndirectImplements2I() { >+ x4(true); >+ } >+ >+ private void x4(boolean inc) { >+ expectingNoProblems(); >+ deployTest("testC4", inc); >+ } >+ >+ /** >+ * Tests that multiple indirect illegal implements are detected when there is no >+ * parent class that implements the @noimplement interfaces using >+ * a full build >+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=230189 >+ */ >+ public void testClassIndirectImplements3F() { >+ x5(false); >+ } >+ >+ /** >+ * Tests that multiple indirect illegal implements are detected when there is no >+ * parent class that implements the @noimplement interfaces using >+ * an incremental build >+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=230189 >+ */ >+ public void testClassIndirectImplements3I() { >+ x5(true); >+ } >+ >+ private void x5(boolean inc) { >+ setExpectedProblemIds(new int[] { >+ getProblemId(IApiProblem.ILLEGAL_IMPLEMENT, IApiProblem.INDIRECT_REFERENCE), >+ getProblemId(IApiProblem.ILLEGAL_IMPLEMENT, IApiProblem.INDIRECT_REFERENCE), >+ getProblemId(IApiProblem.ILLEGAL_IMPLEMENT, IApiProblem.INDIRECT_REFERENCE), >+ getProblemId(IApiProblem.ILLEGAL_IMPLEMENT, IApiProblem.INDIRECT_REFERENCE) >+ }); >+ String typename = "testC5"; >+ setExpectedMessageArgs(new String[][] { >+ {"IExtInterface1", "INoImpl1", typename}, >+ {"IExtInterface2", "INoImpl1", typename}, >+ {"IExtInterface3", "INoImpl1", typename}, >+ {"IExtInterface4", "INoImpl4", typename} >+ }); >+ deployTest(typename, inc); >+ } >+ >+ /** >+ * Tests that multiple indirect illegal implements are detected when there is a >+ * parent class that implements the @noimplement interfaces using >+ * a full build >+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=230189 >+ */ >+ public void testClassIndirectImplements4F() { >+ x6(false); >+ } >+ >+ /** >+ * Tests that multiple indirect illegal implements are detected when there is a >+ * parent class that implements the @noimplement interfaces using >+ * an incremental build >+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=230189 >+ */ >+ public void testClassIndirectImplements4I() { >+ x6(true); >+ } >+ >+ private void x6(boolean inc) { >+ expectingNoProblems(); >+ deployTest("testC6", inc); >+ } >+ >+ /** >+ * Tests that an indirect illegal implements is detected when there is a >+ * parent class N levels indirected that implements the @noimplement interfaces using >+ * a full build >+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=230189 >+ */ >+ public void testClassIndirectImplements5F() { >+ x7(false); >+ } >+ >+ /** >+ * Tests that an indirect illegal implements is detected when there is a >+ * parent class N levels indirected that implements the @noimplement interfaces using >+ * an incremental build >+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=230189 >+ */ >+ public void testClassIndirectImplements5I() { >+ x7(true); >+ } >+ >+ private void x7(boolean inc) { >+ expectingNoProblems(); >+ deployTest("testC7", inc); >+ } > } >Index: test-builder/tags/interface/test16.java >=================================================================== >RCS file: /cvsroot/eclipse/pde/apitools/org.eclipse.pde.api.tools.tests/test-builder/tags/interface/test16.java,v >retrieving revision 1.1 >diff -u -r1.1 test16.java >--- test-builder/tags/interface/test16.java 20 Jun 2008 18:10:33 -0000 1.1 >+++ test-builder/tags/interface/test16.java 12 Nov 2008 19:51:00 -0000 >@@ -14,7 +14,6 @@ > * Test unsupported tags on an interface > * @noreference > * @nooverride >- * @noextend > * @noinstantiate > */ > public interface test16 { >Index: test-builder/tags/interface/test9.java >=================================================================== >RCS file: test-builder/tags/interface/test9.java >diff -N test-builder/tags/interface/test9.java >--- test-builder/tags/interface/test9.java 20 Jun 2008 18:10:33 -0000 1.1 >+++ /dev/null 1 Jan 1970 00:00:00 -0000 >@@ -1,48 +0,0 @@ >-/******************************************************************************* >- * Copyright (c) 2008 IBM Corporation and others. >- * All rights reserved. This program and the accompanying materials >- * are made available under the terms of the Eclipse Public License v1.0 >- * which accompanies this distribution, and is available at >- * http://www.eclipse.org/legal/epl-v10.html >- * >- * Contributors: >- * IBM Corporation - initial API and implementation >- *******************************************************************************/ >-package a.b.c; >- >-/** >- * Tests invalid @noextend tags on nested inner interfaces >- * @noextend >- */ >-public interface test9 { >- >- /** >- * @noextend >- */ >- interface inner { >- >- } >- >- interface inner1 { >- /** >- * @noextend >- */ >- interface inner2 { >- >- } >- } >- >- interface inner2 { >- >- } >-} >- >-interface outer { >- >- /** >- * @noextend >- */ >- interface inner { >- >- } >-} >Index: test-builder/tags/interface/test8.java >=================================================================== >RCS file: test-builder/tags/interface/test8.java >diff -N test-builder/tags/interface/test8.java >--- test-builder/tags/interface/test8.java 20 Jun 2008 18:10:33 -0000 1.1 >+++ /dev/null 1 Jan 1970 00:00:00 -0000 >@@ -1,24 +0,0 @@ >-/******************************************************************************* >- * Copyright (c) 2008 IBM Corporation and others. >- * All rights reserved. This program and the accompanying materials >- * are made available under the terms of the Eclipse Public License v1.0 >- * which accompanies this distribution, and is available at >- * http://www.eclipse.org/legal/epl-v10.html >- * >- * Contributors: >- * IBM Corporation - initial API and implementation >- *******************************************************************************/ >-package a.b.c; >- >-/** >- * Tests an invalid @noextend tag on a member interface >- */ >-public interface test8 { >- >- /** >- * @noextend >- */ >- interface inner { >- >- } >-} >Index: test-builder/tags/interface/test19.java >=================================================================== >RCS file: /cvsroot/eclipse/pde/apitools/org.eclipse.pde.api.tools.tests/test-builder/tags/interface/test19.java,v >retrieving revision 1.1 >diff -u -r1.1 test19.java >--- test-builder/tags/interface/test19.java 20 Jun 2008 18:10:33 -0000 1.1 >+++ test-builder/tags/interface/test19.java 12 Nov 2008 19:51:00 -0000 >@@ -14,7 +14,6 @@ > * Tests invalid tags on nested inner interfaces > * @noreference > * @nooverride >- * @noextend > * @noinstantiate > */ > public interface test19 { >@@ -22,7 +21,6 @@ > /** > * @noreference > * @nooverride >- * @noextend > * @noinstantiate > */ > interface inner { >@@ -33,7 +31,6 @@ > /** > * @noreference > * @nooverride >- * @noextend > * @noinstantiate > */ > interface inner2 { >@@ -51,7 +48,6 @@ > /** > * @noreference > * @nooverride >- * @noextend > * @noinstantiate > */ > interface inner { >Index: test-builder/tags/interface/test10.java >=================================================================== >RCS file: test-builder/tags/interface/test10.java >diff -N test-builder/tags/interface/test10.java >--- test-builder/tags/interface/test10.java 20 Jun 2008 18:10:33 -0000 1.1 >+++ /dev/null 1 Jan 1970 00:00:00 -0000 >@@ -1,19 +0,0 @@ >-/******************************************************************************* >- * Copyright (c) 2008 IBM Corporation and others. >- * All rights reserved. This program and the accompanying materials >- * are made available under the terms of the Eclipse Public License v1.0 >- * which accompanies this distribution, and is available at >- * http://www.eclipse.org/legal/epl-v10.html >- * >- * Contributors: >- * IBM Corporation - initial API and implementation >- *******************************************************************************/ >- >- >-/** >- * Test unsupported @noextend tag on an interface in the default package >- * @noextend >- */ >-public interface test10 { >- >-} >Index: test-builder/tags/interface/test7.java >=================================================================== >RCS file: test-builder/tags/interface/test7.java >diff -N test-builder/tags/interface/test7.java >--- test-builder/tags/interface/test7.java 20 Jun 2008 18:10:33 -0000 1.1 >+++ /dev/null 1 Jan 1970 00:00:00 -0000 >@@ -1,25 +0,0 @@ >-/******************************************************************************* >- * Copyright (c) 2008 IBM Corporation and others. >- * All rights reserved. This program and the accompanying materials >- * are made available under the terms of the Eclipse Public License v1.0 >- * which accompanies this distribution, and is available at >- * http://www.eclipse.org/legal/epl-v10.html >- * >- * Contributors: >- * IBM Corporation - initial API and implementation >- *******************************************************************************/ >-package a.b.c; >- >-/** >- * Tests invalid @noextend tag on an outer interface >- */ >-public interface test7 { >- >-} >- >-/** >- * @noextend >- */ >-interface outer { >- >-} >Index: test-builder/tags/interface/test18.java >=================================================================== >RCS file: /cvsroot/eclipse/pde/apitools/org.eclipse.pde.api.tools.tests/test-builder/tags/interface/test18.java,v >retrieving revision 1.1 >diff -u -r1.1 test18.java >--- test-builder/tags/interface/test18.java 20 Jun 2008 18:10:33 -0000 1.1 >+++ test-builder/tags/interface/test18.java 12 Nov 2008 19:51:00 -0000 >@@ -18,7 +18,6 @@ > /** > * @noreference > * @nooverride >- * @noextend > * @noinstantiate > */ > interface inner { >Index: test-builder/tags/interface/test20.java >=================================================================== >RCS file: /cvsroot/eclipse/pde/apitools/org.eclipse.pde.api.tools.tests/test-builder/tags/interface/test20.java,v >retrieving revision 1.1 >diff -u -r1.1 test20.java >--- test-builder/tags/interface/test20.java 20 Jun 2008 18:10:33 -0000 1.1 >+++ test-builder/tags/interface/test20.java 12 Nov 2008 19:51:00 -0000 >@@ -14,7 +14,6 @@ > * Test unsupported @noreference tag on an interface in the default package > * @noreference > * @nooverride >- * @noextend > * @noinstantiate > */ > public interface test20 { >Index: test-builder/tags/interface/test17.java >=================================================================== >RCS file: /cvsroot/eclipse/pde/apitools/org.eclipse.pde.api.tools.tests/test-builder/tags/interface/test17.java,v >retrieving revision 1.1 >diff -u -r1.1 test17.java >--- test-builder/tags/interface/test17.java 20 Jun 2008 18:10:33 -0000 1.1 >+++ test-builder/tags/interface/test17.java 12 Nov 2008 19:51:00 -0000 >@@ -20,7 +20,6 @@ > /** > * @noreference > * @nooverride >- * @noextend > * @noinstantiate > */ > interface outer { >Index: test-builder/tags/interface/test6.java >=================================================================== >RCS file: test-builder/tags/interface/test6.java >diff -N test-builder/tags/interface/test6.java >--- test-builder/tags/interface/test6.java 20 Jun 2008 18:10:33 -0000 1.1 >+++ /dev/null 1 Jan 1970 00:00:00 -0000 >@@ -1,19 +0,0 @@ >-/******************************************************************************* >- * Copyright (c) 2008 IBM Corporation and others. >- * All rights reserved. This program and the accompanying materials >- * are made available under the terms of the Eclipse Public License v1.0 >- * which accompanies this distribution, and is available at >- * http://www.eclipse.org/legal/epl-v10.html >- * >- * Contributors: >- * IBM Corporation - initial API and implementation >- *******************************************************************************/ >-package a.b.c; >- >-/** >- * Test unsupported @noextend tag on an interface >- * @noextend >- */ >-public interface test6 { >- >-} >Index: src/org/eclipse/pde/api/tools/builder/tests/tags/InvalidInterfaceTagTests.java >=================================================================== >RCS file: /cvsroot/eclipse/pde/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/tags/InvalidInterfaceTagTests.java,v >retrieving revision 1.7 >diff -u -r1.7 InvalidInterfaceTagTests.java >--- src/org/eclipse/pde/api/tools/builder/tests/tags/InvalidInterfaceTagTests.java 24 Oct 2008 16:26:19 -0000 1.7 >+++ src/org/eclipse/pde/api/tools/builder/tests/tags/InvalidInterfaceTagTests.java 12 Nov 2008 19:50:59 -0000 >@@ -157,96 +157,6 @@ > } > > /** >- * Tests having an @noextend tag on an interface in package a.b.c >- * using an incremental build >- */ >- public void testInvalidInterfaceTag6I() { >- setExpectedProblemIds(getDefaultProblemSet(1)); >- deployTagTest(TESTING_PACKAGE, "test6", true, IncrementalProjectBuilder.INCREMENTAL_BUILD, true); >- } >- >- /** >- * Tests having an @noextend tag on an interface in package a.b.c >- * using a full build >- */ >- public void testInvalidInterfaceTag6F() { >- setExpectedProblemIds(getDefaultProblemSet(1)); >- deployTagTest(TESTING_PACKAGE, "test6", true, IncrementalProjectBuilder.FULL_BUILD, true); >- } >- >- /** >- * Tests having an @noextend tag on an outer interface in package a.b.c >- * using an incremental build >- */ >- public void testInvalidInterfaceTag7I() { >- setExpectedProblemIds(getDefaultProblemSet(1)); >- deployTagTest(TESTING_PACKAGE, "test7", true, IncrementalProjectBuilder.INCREMENTAL_BUILD, true); >- } >- >- /** >- * Tests having an @noextend tag on an outer interface in package a.b.c >- * using a full build >- */ >- public void testInvalidInterfaceTag7F() { >- setExpectedProblemIds(getDefaultProblemSet(1)); >- deployTagTest(TESTING_PACKAGE, "test7", true, IncrementalProjectBuilder.FULL_BUILD, true); >- } >- >- /** >- * Tests having an @noextend tag on an inner interface in package a.b.c >- * using an incremental build >- */ >- public void testInvalidInterfaceTag8I() { >- setExpectedProblemIds(getDefaultProblemSet(1)); >- deployTagTest(TESTING_PACKAGE, "test8", true, IncrementalProjectBuilder.INCREMENTAL_BUILD, true); >- } >- >- /** >- * Tests having an @noextend tag on an inner interface in package a.b.c >- * using a full build >- */ >- public void testInvalidInterfaceTag8F() { >- setExpectedProblemIds(getDefaultProblemSet(1)); >- deployTagTest(TESTING_PACKAGE, "test8", true, IncrementalProjectBuilder.FULL_BUILD, true); >- } >- >- /** >- * Tests having an @noextend tag on a variety of inner / outer / top-level interfaces in package a.b.c >- * using an incremental build >- */ >- public void testInvalidInterfaceTag9I() { >- setExpectedProblemIds(getDefaultProblemSet(4)); >- deployTagTest(TESTING_PACKAGE, "test9", true, IncrementalProjectBuilder.INCREMENTAL_BUILD, true); >- } >- >- /** >- * Tests having an @noextend tag on a variety of inner / outer / top-level interfaces in package a.b.c >- * using a full build >- */ >- public void testInvalidInterfaceTag9F() { >- setExpectedProblemIds(getDefaultProblemSet(4)); >- deployTagTest(TESTING_PACKAGE, "test9", true, IncrementalProjectBuilder.FULL_BUILD, true); >- } >- >- /** >- * Tests having an @noextend tag on an interface in the default package >- * using an incremental build >- */ >- public void testInvalidInterfaceTag10I() { >- setExpectedProblemIds(getDefaultProblemSet(1)); >- deployTagTest(TESTING_PACKAGE, "test10", true, IncrementalProjectBuilder.INCREMENTAL_BUILD, true); >- } >- >- /** >- * Tests having an @noextend tag on an interface in the default package >- * using a full build >- */ >- public void testInvalidInterfaceTag10F() { >- setExpectedProblemIds(getDefaultProblemSet(1)); >- deployTagTest(TESTING_PACKAGE, "test10", true, IncrementalProjectBuilder.FULL_BUILD, true); >- } >- >- /** > * Tests having an @nooverride tag on an interface in package a.b.c > * using an incremental build > */ >@@ -341,7 +251,7 @@ > * using an incremental build > */ > public void testInvalidInterfaceTag16I() { >- setExpectedProblemIds(getDefaultProblemSet(4)); >+ setExpectedProblemIds(getDefaultProblemSet(3)); > deployTagTest(TESTING_PACKAGE, "test16", true, IncrementalProjectBuilder.INCREMENTAL_BUILD, true); > } > >@@ -350,7 +260,7 @@ > * using a full build > */ > public void testInvalidInterfaceTag16F() { >- setExpectedProblemIds(getDefaultProblemSet(4)); >+ setExpectedProblemIds(getDefaultProblemSet(3)); > deployTagTest(TESTING_PACKAGE, "test16", true, IncrementalProjectBuilder.FULL_BUILD, true); > } > >@@ -359,7 +269,7 @@ > * using an incremental build > */ > public void testInvalidInterfaceTag17I() { >- setExpectedProblemIds(getDefaultProblemSet(4)); >+ setExpectedProblemIds(getDefaultProblemSet(3)); > deployTagTest(TESTING_PACKAGE, "test17", true, IncrementalProjectBuilder.INCREMENTAL_BUILD, true); > } > >@@ -368,7 +278,7 @@ > * using a full build > */ > public void testInvalidInterfaceTag17F() { >- setExpectedProblemIds(getDefaultProblemSet(4)); >+ setExpectedProblemIds(getDefaultProblemSet(3)); > deployTagTest(TESTING_PACKAGE, "test17", true, IncrementalProjectBuilder.FULL_BUILD, true); > } > >@@ -377,7 +287,7 @@ > * using an incremental build > */ > public void testInvalidInterfaceTag18I() { >- setExpectedProblemIds(getDefaultProblemSet(4)); >+ setExpectedProblemIds(getDefaultProblemSet(3)); > deployTagTest(TESTING_PACKAGE, "test18", true, IncrementalProjectBuilder.INCREMENTAL_BUILD, true); > } > >@@ -386,7 +296,7 @@ > * using a full build > */ > public void testInvalidInterfaceTag18F() { >- setExpectedProblemIds(getDefaultProblemSet(4)); >+ setExpectedProblemIds(getDefaultProblemSet(3)); > deployTagTest(TESTING_PACKAGE, "test18", true, IncrementalProjectBuilder.FULL_BUILD, true); > } > >@@ -395,7 +305,7 @@ > * using an incremental build > */ > public void testInvalidInterfaceTag19I() { >- setExpectedProblemIds(getDefaultProblemSet(16)); >+ setExpectedProblemIds(getDefaultProblemSet(12)); > deployTagTest(TESTING_PACKAGE, "test19", true, IncrementalProjectBuilder.INCREMENTAL_BUILD, true); > } > >@@ -404,7 +314,7 @@ > * using a full build > */ > public void testInvalidInterfaceTag19F() { >- setExpectedProblemIds(getDefaultProblemSet(16)); >+ setExpectedProblemIds(getDefaultProblemSet(12)); > deployTagTest(TESTING_PACKAGE, "test19", true, IncrementalProjectBuilder.FULL_BUILD, true); > } > >@@ -413,7 +323,7 @@ > * using an incremental build > */ > public void testInvalidInterfaceTag20I() { >- setExpectedProblemIds(getDefaultProblemSet(4)); >+ setExpectedProblemIds(getDefaultProblemSet(3)); > deployTagTest(TESTING_PACKAGE, "test20", true, IncrementalProjectBuilder.INCREMENTAL_BUILD, true); > } > >@@ -422,7 +332,7 @@ > * using a full build > */ > public void testInvalidInterfaceTag20F() { >- setExpectedProblemIds(getDefaultProblemSet(4)); >+ setExpectedProblemIds(getDefaultProblemSet(3)); > deployTagTest(TESTING_PACKAGE, "test20", true, IncrementalProjectBuilder.FULL_BUILD, true); > } > >Index: src/org/eclipse/pde/api/tools/builder/tests/tags/ValidInterfaceTagTests.java >=================================================================== >RCS file: /cvsroot/eclipse/pde/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/tags/ValidInterfaceTagTests.java,v >retrieving revision 1.5 >diff -u -r1.5 ValidInterfaceTagTests.java >--- src/org/eclipse/pde/api/tools/builder/tests/tags/ValidInterfaceTagTests.java 4 Sep 2008 14:15:57 -0000 1.5 >+++ src/org/eclipse/pde/api/tools/builder/tests/tags/ValidInterfaceTagTests.java 12 Nov 2008 19:50:59 -0000 >@@ -123,4 +123,36 @@ > public void testValidInterfaceTag5F() { > deployTagTest(TESTING_PACKAGE, "test5", false, IncrementalProjectBuilder.FULL_BUILD, true); > } >+ >+ /** >+ * Tests having an @noextend tag on an interface in package a.b.c >+ * using an incremental build >+ */ >+ public void testInvalidInterfaceTag6I() { >+ deployTagTest(TESTING_PACKAGE, "test6", true, IncrementalProjectBuilder.INCREMENTAL_BUILD, true); >+ } >+ >+ /** >+ * Tests having an @noextend tag on an interface in package a.b.c >+ * using a full build >+ */ >+ public void testInvalidInterfaceTag6F() { >+ deployTagTest(TESTING_PACKAGE, "test6", true, IncrementalProjectBuilder.FULL_BUILD, true); >+ } >+ >+ /** >+ * Tests having an @noextend tag on an outer interface in package a.b.c >+ * using an incremental build >+ */ >+ public void testInvalidInterfaceTag7I() { >+ deployTagTest(TESTING_PACKAGE, "test7", true, IncrementalProjectBuilder.INCREMENTAL_BUILD, true); >+ } >+ >+ /** >+ * Tests having an @noextend tag on an outer interface in package a.b.c >+ * using a full build >+ */ >+ public void testInvalidInterfaceTag7F() { >+ deployTagTest(TESTING_PACKAGE, "test7", true, IncrementalProjectBuilder.FULL_BUILD, true); >+ } > } >Index: src/org/eclipse/pde/api/tools/comparator/tests/FieldDeltaTests.java >=================================================================== >RCS file: /cvsroot/eclipse/pde/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/comparator/tests/FieldDeltaTests.java,v >retrieving revision 1.28 >diff -u -r1.28 FieldDeltaTests.java >--- src/org/eclipse/pde/api/tools/comparator/tests/FieldDeltaTests.java 22 Oct 2008 01:28:55 -0000 1.28 >+++ src/org/eclipse/pde/api/tools/comparator/tests/FieldDeltaTests.java 12 Nov 2008 19:50:59 -0000 >@@ -875,6 +875,35 @@ > assertTrue("Is visible", Util.isVisible(child)); > assertEquals("Wrong flag", IDelta.FIELD, child.getFlags()); > assertEquals("Wrong element type", IDelta.INTERFACE_ELEMENT_TYPE, child.getElementType()); >+ assertTrue("Should not be compatible", !DeltaProcessor.isCompatible(child)); >+ child = allLeavesDeltas[1]; >+ assertEquals("Wrong kind", IDelta.REMOVED, child.getKind()); >+ assertTrue("Is visible", Util.isVisible(child)); >+ assertEquals("Wrong flag", IDelta.FIELD, child.getFlags()); >+ assertEquals("Wrong element type", IDelta.INTERFACE_ELEMENT_TYPE, child.getElementType()); >+ assertFalse("Is compatible", DeltaProcessor.isCompatible(child)); >+ } >+ >+ /** >+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=230189 >+ */ >+ public void test71() { >+ deployBundles("test71"); >+ IApiBaseline before = getBeforeState(); >+ IApiBaseline after = getAfterState(); >+ IApiComponent beforeApiComponent = before.getApiComponent(BUNDLE_NAME); >+ assertNotNull("no api component", beforeApiComponent); >+ IApiComponent afterApiComponent = after.getApiComponent(BUNDLE_NAME); >+ assertNotNull("no api component", afterApiComponent); >+ IDelta delta = ApiComparator.compare(beforeApiComponent, afterApiComponent, before, after); >+ assertNotNull("No delta", delta); >+ IDelta[] allLeavesDeltas = collectLeaves(delta); >+ assertEquals("Wrong size", 2, allLeavesDeltas.length); >+ IDelta child = allLeavesDeltas[0]; >+ assertEquals("Wrong kind", IDelta.ADDED, child.getKind()); >+ assertTrue("Is visible", Util.isVisible(child)); >+ assertEquals("Wrong flag", IDelta.FIELD, child.getFlags()); >+ assertEquals("Wrong element type", IDelta.INTERFACE_ELEMENT_TYPE, child.getElementType()); > assertTrue("Not compatible", DeltaProcessor.isCompatible(child)); > child = allLeavesDeltas[1]; > assertEquals("Wrong kind", IDelta.REMOVED, child.getKind()); >@@ -883,6 +912,36 @@ > assertEquals("Wrong element type", IDelta.INTERFACE_ELEMENT_TYPE, child.getElementType()); > assertFalse("Is compatible", DeltaProcessor.isCompatible(child)); > } >+ >+ /** >+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=230189 >+ */ >+ public void test72() { >+ deployBundles("test72"); >+ IApiBaseline before = getBeforeState(); >+ IApiBaseline after = getAfterState(); >+ IApiComponent beforeApiComponent = before.getApiComponent(BUNDLE_NAME); >+ assertNotNull("no api component", beforeApiComponent); >+ IApiComponent afterApiComponent = after.getApiComponent(BUNDLE_NAME); >+ assertNotNull("no api component", afterApiComponent); >+ IDelta delta = ApiComparator.compare(beforeApiComponent, afterApiComponent, before, after); >+ assertNotNull("No delta", delta); >+ IDelta[] allLeavesDeltas = collectLeaves(delta); >+ assertEquals("Wrong size", 2, allLeavesDeltas.length); >+ IDelta child = allLeavesDeltas[0]; >+ assertEquals("Wrong kind", IDelta.ADDED, child.getKind()); >+ assertTrue("Is visible", Util.isVisible(child)); >+ assertEquals("Wrong flag", IDelta.FIELD, child.getFlags()); >+ assertEquals("Wrong element type", IDelta.INTERFACE_ELEMENT_TYPE, child.getElementType()); >+ assertTrue("Should not be compatible", !DeltaProcessor.isCompatible(child)); >+ child = allLeavesDeltas[1]; >+ assertEquals("Wrong kind", IDelta.REMOVED, child.getKind()); >+ assertTrue("Is visible", Util.isVisible(child)); >+ assertEquals("Wrong flag", IDelta.FIELD, child.getFlags()); >+ assertEquals("Wrong element type", IDelta.INTERFACE_ELEMENT_TYPE, child.getElementType()); >+ assertFalse("Is compatible", DeltaProcessor.isCompatible(child)); >+ } >+ > /** > * https://bugs.eclipse.org/bugs/show_bug.cgi?id=222905 > */ >Index: src/org/eclipse/pde/api/tools/comparator/tests/InterfaceDeltaTests.java >=================================================================== >RCS file: /cvsroot/eclipse/pde/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/comparator/tests/InterfaceDeltaTests.java,v >retrieving revision 1.11 >diff -u -r1.11 InterfaceDeltaTests.java >--- src/org/eclipse/pde/api/tools/comparator/tests/InterfaceDeltaTests.java 21 Oct 2008 18:59:08 -0000 1.11 >+++ src/org/eclipse/pde/api/tools/comparator/tests/InterfaceDeltaTests.java 12 Nov 2008 19:51:00 -0000 >@@ -365,10 +365,56 @@ > assertTrue("Not implement restrictions", RestrictionModifiers.isImplementRestriction(child.getRestrictions())); > assertEquals("Wrong flag", IDelta.FIELD, child.getFlags()); > assertEquals("Wrong element type", IDelta.INTERFACE_ELEMENT_TYPE, child.getElementType()); >- assertTrue("Not compatible", DeltaProcessor.isCompatible(child)); >+ assertTrue("Should not be compatible", !DeltaProcessor.isCompatible(child)); > } > > /** >+ * Addition of a field in an interface that cannot be extended >+ */ >+ public void test30() { >+ deployBundles("test30"); >+ IApiBaseline before = getBeforeState(); >+ IApiBaseline after = getAfterState(); >+ IApiComponent beforeApiComponent = before.getApiComponent(BUNDLE_NAME); >+ assertNotNull("no api component", beforeApiComponent); >+ IApiComponent afterApiComponent = after.getApiComponent(BUNDLE_NAME); >+ assertNotNull("no api component", afterApiComponent); >+ IDelta delta = ApiComparator.compare(beforeApiComponent, afterApiComponent, before, after); >+ assertNotNull("No delta", delta); >+ IDelta[] allLeavesDeltas = collectLeaves(delta); >+ assertEquals("Wrong size", 1, allLeavesDeltas.length); >+ IDelta child = allLeavesDeltas[0]; >+ assertEquals("Wrong kind", IDelta.ADDED, child.getKind()); >+ assertTrue("Not extend restrictions", RestrictionModifiers.isExtendRestriction(child.getRestrictions())); >+ assertEquals("Wrong flag", IDelta.FIELD, child.getFlags()); >+ assertEquals("Wrong element type", IDelta.INTERFACE_ELEMENT_TYPE, child.getElementType()); >+ assertTrue("Should not be compatible", !DeltaProcessor.isCompatible(child)); >+ } >+ >+ /** >+ * Addition of a field in an interface that cannot be extended >+ */ >+ public void test31() { >+ deployBundles("test31"); >+ IApiBaseline before = getBeforeState(); >+ IApiBaseline after = getAfterState(); >+ IApiComponent beforeApiComponent = before.getApiComponent(BUNDLE_NAME); >+ assertNotNull("no api component", beforeApiComponent); >+ IApiComponent afterApiComponent = after.getApiComponent(BUNDLE_NAME); >+ assertNotNull("no api component", afterApiComponent); >+ IDelta delta = ApiComparator.compare(beforeApiComponent, afterApiComponent, before, after); >+ assertNotNull("No delta", delta); >+ IDelta[] allLeavesDeltas = collectLeaves(delta); >+ assertEquals("Wrong size", 1, allLeavesDeltas.length); >+ IDelta child = allLeavesDeltas[0]; >+ assertEquals("Wrong kind", IDelta.ADDED, child.getKind()); >+ assertTrue("Not implement restrictions", RestrictionModifiers.isImplementRestriction(child.getRestrictions())); >+ assertEquals("Wrong flag", IDelta.FIELD, child.getFlags()); >+ assertEquals("Wrong element type", IDelta.INTERFACE_ELEMENT_TYPE, child.getElementType()); >+ assertTrue("Should be compatible", DeltaProcessor.isCompatible(child)); >+ } >+ >+ /** > * Addition of a field in an interface that can be implemented > */ > public void test15() { >@@ -392,7 +438,7 @@ > } > > /** >- * Move method up in hierarchy >+ * Move method up in hierarchy with noimplement only > */ > public void test16() { > deployBundles("test16"); >@@ -411,7 +457,63 @@ > assertTrue("Not implement restrictions", RestrictionModifiers.isImplementRestriction(child.getRestrictions())); > assertEquals("Wrong flag", IDelta.METHOD, child.getFlags()); > assertEquals("Wrong element type", IDelta.INTERFACE_ELEMENT_TYPE, child.getElementType()); >+ assertTrue("Method Add not compatible", !DeltaProcessor.isCompatible(child)); >+ child = allLeavesDeltas[1]; >+ assertEquals("Wrong kind", IDelta.REMOVED, child.getKind()); >+ assertEquals("Wrong flag", IDelta.METHOD_MOVED_UP, child.getFlags()); >+ assertEquals("Wrong element type", IDelta.INTERFACE_ELEMENT_TYPE, child.getElementType()); >+ assertTrue("Not compatible", DeltaProcessor.isCompatible(child)); >+ } >+ >+ /** >+ * Move method up in hierarchy with noextend only >+ */ >+ public void test32() { >+ deployBundles("test32"); >+ IApiBaseline before = getBeforeState(); >+ IApiBaseline after = getAfterState(); >+ IApiComponent beforeApiComponent = before.getApiComponent(BUNDLE_NAME); >+ assertNotNull("no api component", beforeApiComponent); >+ IApiComponent afterApiComponent = after.getApiComponent(BUNDLE_NAME); >+ assertNotNull("no api component", afterApiComponent); >+ IDelta delta = ApiComparator.compare(beforeApiComponent, afterApiComponent, before, after); >+ assertNotNull("No delta", delta); >+ IDelta[] allLeavesDeltas = collectLeaves(delta); >+ assertEquals("Wrong size", 2, allLeavesDeltas.length); >+ IDelta child = allLeavesDeltas[0]; >+ assertEquals("Wrong kind", IDelta.ADDED, child.getKind()); >+ assertTrue("Not extend restrictions", RestrictionModifiers.isExtendRestriction(child.getRestrictions())); >+ assertEquals("Wrong flag", IDelta.METHOD, child.getFlags()); >+ assertEquals("Wrong element type", IDelta.INTERFACE_ELEMENT_TYPE, child.getElementType()); >+ assertTrue("Method Add not compatible", !DeltaProcessor.isCompatible(child)); >+ child = allLeavesDeltas[1]; >+ assertEquals("Wrong kind", IDelta.REMOVED, child.getKind()); >+ assertEquals("Wrong flag", IDelta.METHOD_MOVED_UP, child.getFlags()); >+ assertEquals("Wrong element type", IDelta.INTERFACE_ELEMENT_TYPE, child.getElementType()); > assertTrue("Not compatible", DeltaProcessor.isCompatible(child)); >+ } >+ >+ /** >+ * Move method up in hierarchy with noextend and noimplement >+ */ >+ public void test33() { >+ deployBundles("test33"); >+ IApiBaseline before = getBeforeState(); >+ IApiBaseline after = getAfterState(); >+ IApiComponent beforeApiComponent = before.getApiComponent(BUNDLE_NAME); >+ assertNotNull("no api component", beforeApiComponent); >+ IApiComponent afterApiComponent = after.getApiComponent(BUNDLE_NAME); >+ assertNotNull("no api component", afterApiComponent); >+ IDelta delta = ApiComparator.compare(beforeApiComponent, afterApiComponent, before, after); >+ assertNotNull("No delta", delta); >+ IDelta[] allLeavesDeltas = collectLeaves(delta); >+ assertEquals("Wrong size", 2, allLeavesDeltas.length); >+ IDelta child = allLeavesDeltas[0]; >+ assertEquals("Wrong kind", IDelta.ADDED, child.getKind()); >+ assertTrue("Not implement restrictions", RestrictionModifiers.isImplementRestriction(child.getRestrictions())); >+ assertEquals("Wrong flag", IDelta.METHOD, child.getFlags()); >+ assertEquals("Wrong element type", IDelta.INTERFACE_ELEMENT_TYPE, child.getElementType()); >+ assertTrue("Method Add compatible", DeltaProcessor.isCompatible(child)); > child = allLeavesDeltas[1]; > assertEquals("Wrong kind", IDelta.REMOVED, child.getKind()); > assertEquals("Wrong flag", IDelta.METHOD_MOVED_UP, child.getFlags()); >@@ -673,12 +775,64 @@ > assertEquals("Wrong kind", IDelta.ADDED, child.getKind()); > assertEquals("Wrong flag", IDelta.SUPER_INTERFACE_WITH_METHODS, child.getFlags()); > assertEquals("Wrong element type", IDelta.INTERFACE_ELEMENT_TYPE, child.getElementType()); >- assertTrue("Not compatible", DeltaProcessor.isCompatible(child)); >+ assertTrue("Method Add not compatible", !DeltaProcessor.isCompatible(child)); > child = allLeavesDeltas[1]; > assertEquals("Wrong kind", IDelta.CHANGED, child.getKind()); > assertEquals("Wrong flag", IDelta.EXPANDED_SUPERINTERFACES_SET, child.getFlags()); > assertEquals("Wrong element type", IDelta.INTERFACE_ELEMENT_TYPE, child.getElementType()); >- assertTrue("Not compatible", DeltaProcessor.isCompatible(child)); >+ assertTrue("Changed superinterfaces set not compatible", DeltaProcessor.isCompatible(child)); >+ } >+ /** >+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=230189 >+ */ >+ public void test34() { >+ deployBundles("test34"); >+ IApiBaseline before = getBeforeState(); >+ IApiBaseline after = getAfterState(); >+ IApiComponent beforeApiComponent = before.getApiComponent(BUNDLE_NAME); >+ assertNotNull("no api component", beforeApiComponent); >+ IApiComponent afterApiComponent = after.getApiComponent(BUNDLE_NAME); >+ assertNotNull("no api component", afterApiComponent); >+ IDelta delta = ApiComparator.compare(beforeApiComponent, afterApiComponent, before, after); >+ assertNotNull("No delta", delta); >+ IDelta[] allLeavesDeltas = collectLeaves(delta); >+ assertEquals("Wrong size", 2, allLeavesDeltas.length); >+ IDelta child = allLeavesDeltas[0]; >+ assertEquals("Wrong kind", IDelta.ADDED, child.getKind()); >+ assertEquals("Wrong flag", IDelta.SUPER_INTERFACE_WITH_METHODS, child.getFlags()); >+ assertEquals("Wrong element type", IDelta.INTERFACE_ELEMENT_TYPE, child.getElementType()); >+ assertTrue("Method Add not compatible", !DeltaProcessor.isCompatible(child)); >+ child = allLeavesDeltas[1]; >+ assertEquals("Wrong kind", IDelta.CHANGED, child.getKind()); >+ assertEquals("Wrong flag", IDelta.EXPANDED_SUPERINTERFACES_SET, child.getFlags()); >+ assertEquals("Wrong element type", IDelta.INTERFACE_ELEMENT_TYPE, child.getElementType()); >+ assertTrue("Changed superinterfaces set not compatible", DeltaProcessor.isCompatible(child)); >+ } >+ /** >+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=230189 >+ */ >+ public void test35() { >+ deployBundles("test35"); >+ IApiBaseline before = getBeforeState(); >+ IApiBaseline after = getAfterState(); >+ IApiComponent beforeApiComponent = before.getApiComponent(BUNDLE_NAME); >+ assertNotNull("no api component", beforeApiComponent); >+ IApiComponent afterApiComponent = after.getApiComponent(BUNDLE_NAME); >+ assertNotNull("no api component", afterApiComponent); >+ IDelta delta = ApiComparator.compare(beforeApiComponent, afterApiComponent, before, after); >+ assertNotNull("No delta", delta); >+ IDelta[] allLeavesDeltas = collectLeaves(delta); >+ assertEquals("Wrong size", 2, allLeavesDeltas.length); >+ IDelta child = allLeavesDeltas[0]; >+ assertEquals("Wrong kind", IDelta.ADDED, child.getKind()); >+ assertEquals("Wrong flag", IDelta.SUPER_INTERFACE_WITH_METHODS, child.getFlags()); >+ assertEquals("Wrong element type", IDelta.INTERFACE_ELEMENT_TYPE, child.getElementType()); >+ assertTrue("Method Add compatible", DeltaProcessor.isCompatible(child)); >+ child = allLeavesDeltas[1]; >+ assertEquals("Wrong kind", IDelta.CHANGED, child.getKind()); >+ assertEquals("Wrong flag", IDelta.EXPANDED_SUPERINTERFACES_SET, child.getFlags()); >+ assertEquals("Wrong element type", IDelta.INTERFACE_ELEMENT_TYPE, child.getElementType()); >+ assertTrue("Changed superinterfaces set not compatible", DeltaProcessor.isCompatible(child)); > } > /** > * https://bugs.eclipse.org/bugs/show_bug.cgi?id=244984 >@@ -730,7 +884,59 @@ > assertEquals("Wrong kind", IDelta.ADDED, child.getKind()); > assertEquals("Wrong flag", IDelta.METHOD, child.getFlags()); > assertEquals("Wrong element type", IDelta.INTERFACE_ELEMENT_TYPE, child.getElementType()); >+ assertTrue("Method Add compatible", !DeltaProcessor.isCompatible(child)); >+ child = allLeavesDeltas[1]; >+ assertEquals("Wrong kind", IDelta.REMOVED, child.getKind()); >+ assertEquals("Wrong flag", IDelta.METHOD_MOVED_UP, child.getFlags()); >+ assertEquals("Wrong element type", IDelta.INTERFACE_ELEMENT_TYPE, child.getElementType()); >+ assertTrue("Not compatible", DeltaProcessor.isCompatible(child)); >+ } >+ /** >+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=230189 >+ */ >+ public void test36() { >+ deployBundles("test36"); >+ IApiBaseline before = getBeforeState(); >+ IApiBaseline after = getAfterState(); >+ IApiComponent beforeApiComponent = before.getApiComponent(BUNDLE_NAME); >+ assertNotNull("no api component", beforeApiComponent); >+ IApiComponent afterApiComponent = after.getApiComponent(BUNDLE_NAME); >+ assertNotNull("no api component", afterApiComponent); >+ IDelta delta = ApiComparator.compare(beforeApiComponent, afterApiComponent, before, after); >+ assertNotNull("No delta", delta); >+ IDelta[] allLeavesDeltas = collectLeaves(delta); >+ assertEquals("Wrong size", 2, allLeavesDeltas.length); >+ IDelta child = allLeavesDeltas[0]; >+ assertEquals("Wrong kind", IDelta.ADDED, child.getKind()); >+ assertEquals("Wrong flag", IDelta.METHOD, child.getFlags()); >+ assertEquals("Wrong element type", IDelta.INTERFACE_ELEMENT_TYPE, child.getElementType()); >+ assertTrue("Method Add compatible", !DeltaProcessor.isCompatible(child)); >+ child = allLeavesDeltas[1]; >+ assertEquals("Wrong kind", IDelta.REMOVED, child.getKind()); >+ assertEquals("Wrong flag", IDelta.METHOD_MOVED_UP, child.getFlags()); >+ assertEquals("Wrong element type", IDelta.INTERFACE_ELEMENT_TYPE, child.getElementType()); > assertTrue("Not compatible", DeltaProcessor.isCompatible(child)); >+ } >+ /** >+ * https://bugs.eclipse.org/bugs/show_bug.cgi?id=230189 >+ */ >+ public void test37() { >+ deployBundles("test37"); >+ IApiBaseline before = getBeforeState(); >+ IApiBaseline after = getAfterState(); >+ IApiComponent beforeApiComponent = before.getApiComponent(BUNDLE_NAME); >+ assertNotNull("no api component", beforeApiComponent); >+ IApiComponent afterApiComponent = after.getApiComponent(BUNDLE_NAME); >+ assertNotNull("no api component", afterApiComponent); >+ IDelta delta = ApiComparator.compare(beforeApiComponent, afterApiComponent, before, after); >+ assertNotNull("No delta", delta); >+ IDelta[] allLeavesDeltas = collectLeaves(delta); >+ assertEquals("Wrong size", 2, allLeavesDeltas.length); >+ IDelta child = allLeavesDeltas[0]; >+ assertEquals("Wrong kind", IDelta.ADDED, child.getKind()); >+ assertEquals("Wrong flag", IDelta.METHOD, child.getFlags()); >+ assertEquals("Wrong element type", IDelta.INTERFACE_ELEMENT_TYPE, child.getElementType()); >+ assertTrue("Method Add not compatible", DeltaProcessor.isCompatible(child)); > child = allLeavesDeltas[1]; > assertEquals("Wrong kind", IDelta.REMOVED, child.getKind()); > assertEquals("Wrong flag", IDelta.METHOD_MOVED_UP, child.getFlags()); >Index: src/org/eclipse/pde/api/tools/builder/tests/compatibility/InterfaceCompatibilityMemberTests.java >=================================================================== >RCS file: /cvsroot/eclipse/pde/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/compatibility/InterfaceCompatibilityMemberTests.java,v >retrieving revision 1.11 >diff -u -r1.11 InterfaceCompatibilityMemberTests.java >--- src/org/eclipse/pde/api/tools/builder/tests/compatibility/InterfaceCompatibilityMemberTests.java 21 Oct 2008 18:59:07 -0000 1.11 >+++ src/org/eclipse/pde/api/tools/builder/tests/compatibility/InterfaceCompatibilityMemberTests.java 12 Nov 2008 19:50:59 -0000 >@@ -105,7 +105,16 @@ > */ > private void xAddFieldNoImplement(boolean incremental) throws Exception { > IPath filePath = WORKSPACE_CLASSES_PACKAGE_A.append("AddFieldNoImplement.java"); >- // no problems expected >+ int[] ids = new int[] { >+ ApiProblemFactory.createProblemId( >+ IApiProblem.CATEGORY_COMPATIBILITY, >+ IDelta.INTERFACE_ELEMENT_TYPE, >+ IDelta.ADDED, >+ IDelta.FIELD) >+ }; >+ setExpectedProblemIds(ids); >+ String[][] args = new String[1][]; >+ args[0] = new String[]{PACKAGE_PREFIX + "AddField", "ADDED_FIELD"}; > performCompatibilityTest(filePath, incremental); > } > >@@ -118,6 +127,50 @@ > } > > /** >+ * Tests adding a field to a noextend interface >+ */ >+ private void xAddFieldNoExtend(boolean incremental) throws Exception { >+ IPath filePath = WORKSPACE_CLASSES_PACKAGE_A.append("AddFieldNoExtend.java"); >+ int[] ids = new int[] { >+ ApiProblemFactory.createProblemId( >+ IApiProblem.CATEGORY_COMPATIBILITY, >+ IDelta.INTERFACE_ELEMENT_TYPE, >+ IDelta.ADDED, >+ IDelta.FIELD) >+ }; >+ setExpectedProblemIds(ids); >+ String[][] args = new String[1][]; >+ args[0] = new String[]{PACKAGE_PREFIX + "AddFieldNoExtend", "ADDED_FIELD"}; >+ setExpectedMessageArgs(args); >+ performCompatibilityTest(filePath, incremental); >+ } >+ >+ public void testAddFieldNoExtendI() throws Exception { >+ xAddFieldNoExtend(true); >+ } >+ >+ public void testAddFieldNoExtendF() throws Exception { >+ xAddFieldNoExtend(false); >+ } >+ >+ /** >+ * Tests adding a field to a noextend / noimplement interface >+ */ >+ private void xAddFieldNoExtendNoImplement(boolean incremental) throws Exception { >+ IPath filePath = WORKSPACE_CLASSES_PACKAGE_A.append("AddFieldNoExtendNoImplement.java"); >+ //expecting no problems >+ performCompatibilityTest(filePath, incremental); >+ } >+ >+ public void testAddFieldNoExtendNoImplementI() throws Exception { >+ xAddFieldNoExtendNoImplement(true); >+ } >+ >+ public void testAddFieldNoExtendNoImplementF() throws Exception { >+ xAddFieldNoExtendNoImplement(false); >+ } >+ >+ /** > * Tests adding a method to an interface > */ > private void xAddMethod(boolean incremental) throws Exception { >@@ -149,7 +202,17 @@ > */ > private void xAddMethodNoImplement(boolean incremental) throws Exception { > IPath filePath = WORKSPACE_CLASSES_PACKAGE_A.append("AddMethodNoImplement.java"); >- // no problems expected >+ int[] ids = new int[] { >+ ApiProblemFactory.createProblemId( >+ IApiProblem.CATEGORY_COMPATIBILITY, >+ IDelta.INTERFACE_ELEMENT_TYPE, >+ IDelta.ADDED, >+ IDelta.METHOD) >+ }; >+ setExpectedProblemIds(ids); >+ String[][] args = new String[1][]; >+ args[0] = new String[]{PACKAGE_PREFIX + "AddMethodNoImplement", "addMethod(String)"}; >+ setExpectedMessageArgs(args); > performCompatibilityTest(filePath, incremental); > } > >@@ -162,6 +225,50 @@ > } > > /** >+ * Tests adding a method to a noimplement interface >+ */ >+ private void xAddMethodNoExtend(boolean incremental) throws Exception { >+ IPath filePath = WORKSPACE_CLASSES_PACKAGE_A.append("AddMethodNoExtend.java"); >+ int[] ids = new int[] { >+ ApiProblemFactory.createProblemId( >+ IApiProblem.CATEGORY_COMPATIBILITY, >+ IDelta.INTERFACE_ELEMENT_TYPE, >+ IDelta.ADDED, >+ IDelta.METHOD) >+ }; >+ setExpectedProblemIds(ids); >+ String[][] args = new String[1][]; >+ args[0] = new String[]{PACKAGE_PREFIX + "AddMethodNoExtend", "addMethod(String)"}; >+ setExpectedMessageArgs(args); >+ performCompatibilityTest(filePath, incremental); >+ } >+ >+ public void testAddMethodNoExtendI() throws Exception { >+ xAddMethodNoExtend(true); >+ } >+ >+ public void testAddMethodNoExtendF() throws Exception { >+ xAddMethodNoExtend(false); >+ } >+ >+ /** >+ * Tests adding a method to a noimplement interface >+ */ >+ private void xAddMethodNoExtendNoImplement(boolean incremental) throws Exception { >+ IPath filePath = WORKSPACE_CLASSES_PACKAGE_A.append("AddMethodNoExtendNoImplement.java"); >+ //expecting no problems >+ performCompatibilityTest(filePath, incremental); >+ } >+ >+ public void testAddMethodNoExtendNoImplementI() throws Exception { >+ xAddMethodNoExtendNoImplement(true); >+ } >+ >+ public void testAddMethodNoExtendNoImplementF() throws Exception { >+ xAddMethodNoExtendNoImplement(false); >+ } >+ >+ /** > * Tests adding a member type to an interface > */ > private void xAddMemberType(boolean incremental) throws Exception { >@@ -303,7 +410,20 @@ > */ > private void xAddSuperInterfaceANoImplement(boolean incremental) throws Exception { > IPath filePath = WORKSPACE_CLASSES_PACKAGE_A.append("AddInterfaceANoImplement.java"); >- // no problems expected >+ int[] ids = new int[] { >+ ApiProblemFactory.createProblemId( >+ IApiProblem.CATEGORY_COMPATIBILITY, >+ IDelta.INTERFACE_ELEMENT_TYPE, >+ IDelta.ADDED, >+ IDelta.SUPER_INTERFACE_WITH_METHODS) >+ }; >+ setExpectedProblemIds(ids); >+ String[][] args = new String[1][]; >+ args[0] = new String[]{ >+ PACKAGE_PREFIX + "AddInterfaceANoImplement", >+ "a.classes.hierarchy.InterfaceA", >+ "methodA()"}; >+ setExpectedMessageArgs(args); > performCompatibilityTest(filePath, incremental); > } > >@@ -316,6 +436,53 @@ > } > > /** >+ * Tests adding a super interface to a noimplement interface >+ */ >+ private void xAddSuperInterfaceANoExtend(boolean incremental) throws Exception { >+ IPath filePath = WORKSPACE_CLASSES_PACKAGE_A.append("AddInterfaceANoExtend.java"); >+ int[] ids = new int[] { >+ ApiProblemFactory.createProblemId( >+ IApiProblem.CATEGORY_COMPATIBILITY, >+ IDelta.INTERFACE_ELEMENT_TYPE, >+ IDelta.ADDED, >+ IDelta.SUPER_INTERFACE_WITH_METHODS) >+ }; >+ setExpectedProblemIds(ids); >+ String[][] args = new String[1][]; >+ args[0] = new String[]{ >+ PACKAGE_PREFIX + "AddInterfaceANoExtend", >+ "a.classes.hierarchy.InterfaceA", >+ "methodA()"}; >+ setExpectedMessageArgs(args); >+ performCompatibilityTest(filePath, incremental); >+ } >+ >+ public void testAddSuperInterfaceANoExtendI() throws Exception { >+ xAddSuperInterfaceANoExtend(true); >+ } >+ >+ public void testAddSuperInterfaceANoExtendF() throws Exception { >+ xAddSuperInterfaceANoExtend(false); >+ } >+ >+ /** >+ * Tests adding a super interface to a noimplement interface >+ */ >+ private void xAddSuperInterfaceANoExtendNoImplement(boolean incremental) throws Exception { >+ IPath filePath = WORKSPACE_CLASSES_PACKAGE_A.append("AddInterfaceANoExtendNoImplement.java"); >+ // no problems expected >+ performCompatibilityTest(filePath, incremental); >+ } >+ >+ public void testAddSuperInterfaceANoExtendNoImplementI() throws Exception { >+ xAddSuperInterfaceANoExtendNoImplement(true); >+ } >+ >+ public void testAddSuperInterfaceANoExtendNoImplementF() throws Exception { >+ xAddSuperInterfaceANoExtendNoImplement(false); >+ } >+ >+ /** > * Tests removing a super interface > */ > private void xReduceSuperInterfaceABtoA(boolean incremental) throws Exception { >Index: src/org/eclipse/pde/api/tools/builder/tests/compatibility/InterfaceCompatibilityRestrictionTests.java >=================================================================== >RCS file: /cvsroot/eclipse/pde/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/compatibility/InterfaceCompatibilityRestrictionTests.java,v >retrieving revision 1.2 >diff -u -r1.2 InterfaceCompatibilityRestrictionTests.java >--- src/org/eclipse/pde/api/tools/builder/tests/compatibility/InterfaceCompatibilityRestrictionTests.java 16 Oct 2008 20:20:55 -0000 1.2 >+++ src/org/eclipse/pde/api/tools/builder/tests/compatibility/InterfaceCompatibilityRestrictionTests.java 12 Nov 2008 19:50:59 -0000 >@@ -114,4 +114,116 @@ > setExpectedMessageArgs(args); > performCompatibilityTest(filePath, incremental); > } >+ >+ /** >+ * Tests removing a noextend annotation using an incremental build >+ */ >+ public void testRemoveNoExtendI() { >+ xRemoveNoExtend(true); >+ } >+ >+ /** >+ * Tests removing a noextend annotation using a full build >+ */ >+ public void testRemoveNoExtendF() { >+ xRemoveNoExtend(false); >+ } >+ >+ private void xRemoveNoExtend(boolean inc) { >+ try { >+ IPath filePath = WORKSPACE_CLASSES_PACKAGE_A.append("RemoveNoExtend.java"); >+ // no problem expected >+ performCompatibilityTest(filePath, inc); >+ } >+ catch(Exception e) { >+ fail(e.getMessage()); >+ } >+ } >+ >+ /** >+ * Tests adding a noextend annotation using an incremental build >+ */ >+ public void testAddNoExtendI() { >+ xAddNoExtend(true); >+ } >+ >+ /** >+ * Tests adding a noextend annotation using a full build >+ */ >+ public void testAddNoExtendF() { >+ xAddNoExtend(false); >+ } >+ >+ private void xAddNoExtend(boolean inc) { >+ try { >+ IPath filePath = WORKSPACE_CLASSES_PACKAGE_A.append("AddNoExtend.java"); >+ int[] ids = new int[] { >+ getDefaultProblemId() >+ }; >+ setExpectedProblemIds(ids); >+ String[][] args = new String[1][]; >+ args[0] = new String[]{PACKAGE_PREFIX + "AddNoExtend"}; >+ setExpectedMessageArgs(args); >+ performCompatibilityTest(filePath, inc); >+ } >+ catch(Exception e) { >+ fail(e.getMessage()); >+ } >+ } >+ >+ /** >+ * Tests adding both noextend and noimplement annotations using an incremental build >+ */ >+ public void testAddNoExtendNoImplementI() { >+ xAddNoExtendNoImplement(true); >+ } >+ >+ /** >+ * Tests adding both noextend and noimplement annotations using a full build >+ */ >+ public void testAddNoExtendNoImplementF() { >+ xAddNoExtendNoImplement(false); >+ } >+ >+ private void xAddNoExtendNoImplement(boolean inc) { >+ try { >+ IPath filePath = WORKSPACE_CLASSES_PACKAGE_A.append("AddNoExtendNoImplement.java"); >+ int[] ids = new int[] { >+ getDefaultProblemId() >+ }; >+ setExpectedProblemIds(ids); >+ String[][] args = new String[1][]; >+ args[0] = new String[]{PACKAGE_PREFIX + "AddNoExtendNoImplement"}; >+ setExpectedMessageArgs(args); >+ performCompatibilityTest(filePath, inc); >+ } >+ catch(Exception e) { >+ fail(e.getMessage()); >+ } >+ } >+ >+ /** >+ * Tests removing both noextend and noimplement annotations using an incremental build >+ */ >+ public void testRemoveNoExtendNoImplementI() { >+ xRemoveNoExtendNoImplement(true); >+ } >+ >+ /** >+ * Tests removing both noextend and noimplement annotations using a full build >+ */ >+ public void testRemoveNoExtendNoImplementF() { >+ xRemoveNoExtendNoImplement(false); >+ } >+ >+ private void xRemoveNoExtendNoImplement(boolean inc) { >+ try { >+ IPath filePath = WORKSPACE_CLASSES_PACKAGE_A.append("RemoveNoExtendNoImplement.java"); >+ // no problem expected >+ performCompatibilityTest(filePath, inc); >+ } >+ catch(Exception e) { >+ fail(e.getMessage()); >+ } >+ } > } >Index: tests-deltas/interface/test30/before/p/I.java >=================================================================== >RCS file: tests-deltas/interface/test30/before/p/I.java >diff -N tests-deltas/interface/test30/before/p/I.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test30/before/p/I.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,4 @@ >+package p; >+ >+public interface I { >+} >\ No newline at end of file >Index: tests-deltas/interface/test31/before/p/I.java >=================================================================== >RCS file: tests-deltas/interface/test31/before/p/I.java >diff -N tests-deltas/interface/test31/before/p/I.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test31/before/p/I.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,4 @@ >+package p; >+ >+public interface I { >+} >\ No newline at end of file >Index: tests-deltas/interface/test32/before/I.java >=================================================================== >RCS file: tests-deltas/interface/test32/before/I.java >diff -N tests-deltas/interface/test32/before/I.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test32/before/I.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,3 @@ >+public interface I extends J { >+ void foo(); >+} >\ No newline at end of file >Index: tests-deltas/interface/test32/resources/.api_description >=================================================================== >RCS file: tests-deltas/interface/test32/resources/.api_description >diff -N tests-deltas/interface/test32/resources/.api_description >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test32/resources/.api_description 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,9 @@ >+<?xml version="1.0" encoding="UTF-8"?> >+<component name="deltatest"> >+ <plugin id="deltatest" /> >+ >+ <package name=""> >+ <type name="I" extend="false"/> >+ <type name="J" extend="false"/> >+ </package> >+</component> >\ No newline at end of file >Index: test-builder/baseline/bundle.a/src/a/interfaces/members/AddMethodNoExtendNoImplement.java >=================================================================== >RCS file: test-builder/baseline/bundle.a/src/a/interfaces/members/AddMethodNoExtendNoImplement.java >diff -N test-builder/baseline/bundle.a/src/a/interfaces/members/AddMethodNoExtendNoImplement.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/baseline/bundle.a/src/a/interfaces/members/AddMethodNoExtendNoImplement.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,9 @@ >+package a.interfaces.members; >+ >+/** >+ * @noimplement This interface is not intended to be implemented by clients. >+ * @noextend >+ */ >+public interface AddMethodNoExtendNoImplement { >+ >+} >Index: tests-deltas/interface/test36/after/p/J.java >=================================================================== >RCS file: tests-deltas/interface/test36/after/p/J.java >diff -N tests-deltas/interface/test36/after/p/J.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test36/after/p/J.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,6 @@ >+package p; >+ >+public interface J { >+ void bar(); >+ void foo2(String s); >+} >\ No newline at end of file >Index: test-builder/baseline/bundle.a/src/a/interfaces/restrictions/RemoveNoExtendNoImplement.java >=================================================================== >RCS file: test-builder/baseline/bundle.a/src/a/interfaces/restrictions/RemoveNoExtendNoImplement.java >diff -N test-builder/baseline/bundle.a/src/a/interfaces/restrictions/RemoveNoExtendNoImplement.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/baseline/bundle.a/src/a/interfaces/restrictions/RemoveNoExtendNoImplement.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,9 @@ >+package a.interfaces.restrictions; >+ >+/** >+ * @noextend This interface is not to be extended by clients. >+ * @noimplement This interface is not intended to be implemented by clients. >+ */ >+public interface RemoveNoExtendNoImplement { >+ >+} >Index: tests-deltas/interface/test34/before/p/I.java >=================================================================== >RCS file: tests-deltas/interface/test34/before/p/I.java >diff -N tests-deltas/interface/test34/before/p/I.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test34/before/p/I.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,5 @@ >+package p; >+ >+public interface I { >+ void foo(); >+} >\ No newline at end of file >Index: tests-deltas/interface/test35/before/p/I.java >=================================================================== >RCS file: tests-deltas/interface/test35/before/p/I.java >diff -N tests-deltas/interface/test35/before/p/I.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test35/before/p/I.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,5 @@ >+package p; >+ >+public interface I { >+ void foo(); >+} >\ No newline at end of file >Index: tests-deltas/interface/test35/after/p/I.java >=================================================================== >RCS file: tests-deltas/interface/test35/after/p/I.java >diff -N tests-deltas/interface/test35/after/p/I.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test35/after/p/I.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,5 @@ >+package p; >+ >+public interface I extends J { >+ void foo(); >+} >\ No newline at end of file >Index: tests-deltas/interface/test36/before/p/I.java >=================================================================== >RCS file: tests-deltas/interface/test36/before/p/I.java >diff -N tests-deltas/interface/test36/before/p/I.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test36/before/p/I.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,6 @@ >+package p; >+ >+public interface I extends J { >+ void foo(); >+ void foo2(String s); >+} >\ No newline at end of file >Index: test-builder/compat/interface/members/AddInterfaceANoExtend.java >=================================================================== >RCS file: test-builder/compat/interface/members/AddInterfaceANoExtend.java >diff -N test-builder/compat/interface/members/AddInterfaceANoExtend.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/compat/interface/members/AddInterfaceANoExtend.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,10 @@ >+package a.interfaces.members; >+ >+import a.classes.hierarchy.InterfaceA; >+ >+/** >+ * @noextend >+ */ >+public interface AddInterfaceANoExtend extends InterfaceA { >+ >+} >Index: test-builder/usage/class/testC7.java >=================================================================== >RCS file: test-builder/usage/class/testC7.java >diff -N test-builder/usage/class/testC7.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/usage/class/testC7.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,8 @@ >+package x.y.z; >+ >+import i.IExtInterface1; >+import c.BaseImplExt; >+ >+public class testC7 extends BaseImplExt implements IExtInterface1 { >+ >+} >Index: tests-deltas/interface/test37/before/p/I.java >=================================================================== >RCS file: tests-deltas/interface/test37/before/p/I.java >diff -N tests-deltas/interface/test37/before/p/I.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test37/before/p/I.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,6 @@ >+package p; >+ >+public interface I extends J { >+ void foo(); >+ void foo2(String s); >+} >\ No newline at end of file >Index: tests-deltas/field/test72/resources/.api_description >=================================================================== >RCS file: tests-deltas/field/test72/resources/.api_description >diff -N tests-deltas/field/test72/resources/.api_description >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/field/test72/resources/.api_description 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,8 @@ >+<?xml version="1.0" encoding="UTF-8"?> >+<component name="deltatest"> >+<plugin id="deltatest" /> >+ >+<package name=""> >+ <type name="I" extend="false"/> >+</package> >+</component> >\ No newline at end of file >Index: tests-deltas/interface/test31/after/p/I.java >=================================================================== >RCS file: tests-deltas/interface/test31/after/p/I.java >diff -N tests-deltas/interface/test31/after/p/I.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test31/after/p/I.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,5 @@ >+package p; >+ >+public interface I { >+ int i = 0; >+} >\ No newline at end of file >Index: test-builder/usage/class/testC3.java >=================================================================== >RCS file: test-builder/usage/class/testC3.java >diff -N test-builder/usage/class/testC3.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/usage/class/testC3.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,11 @@ >+package x.y.z; >+ >+import i.IExtInterface1; >+ >+/** >+ * Indirectly implements INoImpl1 with no >+ * parent implementing class >+ */ >+public class testC3 implements IExtInterface1 { >+ >+} >Index: tests-deltas/interface/test36/resources/after/META-INF/MANIFEST.MF >=================================================================== >RCS file: tests-deltas/interface/test36/resources/after/META-INF/MANIFEST.MF >diff -N tests-deltas/interface/test36/resources/after/META-INF/MANIFEST.MF >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test36/resources/after/META-INF/MANIFEST.MF 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,9 @@ >+Manifest-Version: 1.0 >+Ant-Version: Apache Ant 1.7.0 >+Created-By: 1.6.0_05-ea-b04 (Sun Microsystems Inc.) >+Bundle-ManifestVersion: 2 >+Bundle-Name: deltatest Plug-in >+Bundle-SymbolicName: deltatest >+Bundle-Version: 2.0.0 >+Bundle-RequiredExecutionEnvironment: J2SE-1.4 >+Export-Package: p >Index: test-builder/tags/interface/valid/test6.java >=================================================================== >RCS file: test-builder/tags/interface/valid/test6.java >diff -N test-builder/tags/interface/valid/test6.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/tags/interface/valid/test6.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,48 @@ >+/******************************************************************************* >+ * Copyright (c) 2008 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ *******************************************************************************/ >+package a.b.c; >+ >+/** >+ * Test supported @noextend tag on an interface >+ * @noextend >+ */ >+public interface test6 { >+ >+ /** >+ * @noextend >+ */ >+ interface inner { >+ >+ } >+ >+ interface inner1 { >+ /** >+ * @noextend >+ */ >+ interface inner2 { >+ >+ } >+ } >+ >+ interface inner2 { >+ >+ } >+} >+ >+interface outer { >+ >+ /** >+ * @noextend >+ */ >+ interface inner { >+ >+ } >+} >Index: test-builder/compat/interface/restrictions/RemoveNoExtendNoImplement.java >=================================================================== >RCS file: test-builder/compat/interface/restrictions/RemoveNoExtendNoImplement.java >diff -N test-builder/compat/interface/restrictions/RemoveNoExtendNoImplement.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/compat/interface/restrictions/RemoveNoExtendNoImplement.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,5 @@ >+package a.interfaces.restrictions; >+ >+public interface RemoveNoExtendNoImplement { >+ >+} >Index: test-builder/baseline/bundle.a/src/a/interfaces/restrictions/AddNoExtendNoImplement.java >=================================================================== >RCS file: test-builder/baseline/bundle.a/src/a/interfaces/restrictions/AddNoExtendNoImplement.java >diff -N test-builder/baseline/bundle.a/src/a/interfaces/restrictions/AddNoExtendNoImplement.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/baseline/bundle.a/src/a/interfaces/restrictions/AddNoExtendNoImplement.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,7 @@ >+package a.interfaces.restrictions; >+ >+/** >+ */ >+public interface AddNoExtendNoImplement { >+ >+} >Index: tests-deltas/interface/test34/resources/after/.api_description >=================================================================== >RCS file: tests-deltas/interface/test34/resources/after/.api_description >diff -N tests-deltas/interface/test34/resources/after/.api_description >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test34/resources/after/.api_description 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,7 @@ >+<?xml version="1.0" encoding="UTF-8"?> >+<component name="deltatest"> >+<plugin id="deltatest" /> >+<package name="p"> >+ <type name="I" extend="false"/> >+</package> >+</component> >\ No newline at end of file >Index: test-builder/usageprojects/refproject/src/i/IExtInterface2.java >=================================================================== >RCS file: test-builder/usageprojects/refproject/src/i/IExtInterface2.java >diff -N test-builder/usageprojects/refproject/src/i/IExtInterface2.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/usageprojects/refproject/src/i/IExtInterface2.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,5 @@ >+package i; >+ >+public interface IExtInterface2 extends IExtInterface1 { >+ >+} >Index: test-builder/compat/interface/members/AddInterfaceANoExtendNoImplement.java >=================================================================== >RCS file: test-builder/compat/interface/members/AddInterfaceANoExtendNoImplement.java >diff -N test-builder/compat/interface/members/AddInterfaceANoExtendNoImplement.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/compat/interface/members/AddInterfaceANoExtendNoImplement.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,12 @@ >+package a.interfaces.members; >+ >+import a.classes.hierarchy.InterfaceA; >+ >+ >+/** >+ * @noimplement This interface is not intended to be implemented by clients. >+ * @noextend >+ */ >+public interface AddInterfaceANoExtendNoImplement extends InterfaceA { >+ >+} >Index: test-builder/baseline/bundle.a/src/a/interfaces/members/AddFieldNoExtend.java >=================================================================== >RCS file: test-builder/baseline/bundle.a/src/a/interfaces/members/AddFieldNoExtend.java >diff -N test-builder/baseline/bundle.a/src/a/interfaces/members/AddFieldNoExtend.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/baseline/bundle.a/src/a/interfaces/members/AddFieldNoExtend.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,8 @@ >+package a.interfaces.members; >+ >+/** >+ * @noextend >+ */ >+public interface AddFieldNoExtend { >+ >+} >Index: tests-deltas/interface/test34/resources/before/META-INF/MANIFEST.MF >=================================================================== >RCS file: tests-deltas/interface/test34/resources/before/META-INF/MANIFEST.MF >diff -N tests-deltas/interface/test34/resources/before/META-INF/MANIFEST.MF >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test34/resources/before/META-INF/MANIFEST.MF 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,9 @@ >+Manifest-Version: 1.0 >+Ant-Version: Apache Ant 1.7.0 >+Created-By: 1.6.0_05-ea-b04 (Sun Microsystems Inc.) >+Bundle-ManifestVersion: 2 >+Bundle-Name: deltatest Plug-in >+Bundle-SymbolicName: deltatest >+Bundle-Version: 1.0.0 >+Bundle-RequiredExecutionEnvironment: J2SE-1.4 >+Export-Package: p >\ No newline at end of file >Index: test-builder/baseline/bundle.a/src/a/interfaces/restrictions/RemoveNoExtend.java >=================================================================== >RCS file: test-builder/baseline/bundle.a/src/a/interfaces/restrictions/RemoveNoExtend.java >diff -N test-builder/baseline/bundle.a/src/a/interfaces/restrictions/RemoveNoExtend.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/baseline/bundle.a/src/a/interfaces/restrictions/RemoveNoExtend.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,8 @@ >+package a.interfaces.restrictions; >+ >+/** >+ * @noextend This interface is not to be extended by clients. >+ */ >+public interface RemoveNoExtend { >+ >+} >Index: test-builder/baseline/bundle.a/src/a/interfaces/members/AddMethodNoExtend.java >=================================================================== >RCS file: test-builder/baseline/bundle.a/src/a/interfaces/members/AddMethodNoExtend.java >diff -N test-builder/baseline/bundle.a/src/a/interfaces/members/AddMethodNoExtend.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/baseline/bundle.a/src/a/interfaces/members/AddMethodNoExtend.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,8 @@ >+package a.interfaces.members; >+ >+/** >+ * @noextend >+ */ >+public interface AddMethodNoExtend { >+ >+} >Index: tests-deltas/interface/test36/resources/before/META-INF/MANIFEST.MF >=================================================================== >RCS file: tests-deltas/interface/test36/resources/before/META-INF/MANIFEST.MF >diff -N tests-deltas/interface/test36/resources/before/META-INF/MANIFEST.MF >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test36/resources/before/META-INF/MANIFEST.MF 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,9 @@ >+Manifest-Version: 1.0 >+Ant-Version: Apache Ant 1.7.0 >+Created-By: 1.6.0_05-ea-b04 (Sun Microsystems Inc.) >+Bundle-ManifestVersion: 2 >+Bundle-Name: deltatest Plug-in >+Bundle-SymbolicName: deltatest >+Bundle-Version: 1.0.0 >+Bundle-RequiredExecutionEnvironment: J2SE-1.4 >+Export-Package: p >\ No newline at end of file >Index: test-builder/usageprojects/refproject/src/c/BaseImpl1.java >=================================================================== >RCS file: test-builder/usageprojects/refproject/src/c/BaseImpl1.java >diff -N test-builder/usageprojects/refproject/src/c/BaseImpl1.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/usageprojects/refproject/src/c/BaseImpl1.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,7 @@ >+package c; >+ >+import i.INoImpl1; >+ >+public class BaseImpl1 implements INoImpl1 { >+ >+} >Index: test-builder/usageprojects/refproject/src/i/INoImpl1.java >=================================================================== >RCS file: test-builder/usageprojects/refproject/src/i/INoImpl1.java >diff -N test-builder/usageprojects/refproject/src/i/INoImpl1.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/usageprojects/refproject/src/i/INoImpl1.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,8 @@ >+package i; >+ >+/** >+ * @noimplement This interface is not intended to be implemented by clients. >+ */ >+public interface INoImpl1 { >+ >+} >Index: tests-deltas/interface/test35/resources/before/.api_description >=================================================================== >RCS file: tests-deltas/interface/test35/resources/before/.api_description >diff -N tests-deltas/interface/test35/resources/before/.api_description >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test35/resources/before/.api_description 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,7 @@ >+<?xml version="1.0" encoding="UTF-8"?> >+<component name="deltatest"> >+<plugin id="deltatest" /> >+<package name="p"> >+ <type name="I" implement="false" extend="false"/> >+</package> >+</component> >\ No newline at end of file >Index: tests-deltas/interface/test37/resources/before/.api_description >=================================================================== >RCS file: tests-deltas/interface/test37/resources/before/.api_description >diff -N tests-deltas/interface/test37/resources/before/.api_description >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test37/resources/before/.api_description 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,7 @@ >+<?xml version="1.0" encoding="UTF-8"?> >+<component name="deltatest"> >+<plugin id="deltatest" /> >+<package name="p"> >+ <type name="J" implement="false" extend="false"/> >+</package> >+</component> >\ No newline at end of file >Index: tests-deltas/interface/test32/before/J.java >=================================================================== >RCS file: tests-deltas/interface/test32/before/J.java >diff -N tests-deltas/interface/test32/before/J.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test32/before/J.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,1 @@ >+public interface J {} >\ No newline at end of file >Index: tests-deltas/interface/test34/before/p/J.java >=================================================================== >RCS file: tests-deltas/interface/test34/before/p/J.java >diff -N tests-deltas/interface/test34/before/p/J.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test34/before/p/J.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,5 @@ >+package p; >+ >+public interface J { >+ void foo2(String s); >+} >\ No newline at end of file >Index: tests-deltas/interface/test31/resources/.api_description >=================================================================== >RCS file: tests-deltas/interface/test31/resources/.api_description >diff -N tests-deltas/interface/test31/resources/.api_description >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test31/resources/.api_description 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,8 @@ >+<?xml version="1.0" encoding="UTF-8"?> >+<component name="deltatest"> >+ <plugin id="deltatest" /> >+ >+ <package name="p"> >+ <type name="I" extend="false" implement="false"/> >+ </package> >+</component> >\ No newline at end of file >Index: tests-deltas/interface/test35/before/p/J.java >=================================================================== >RCS file: tests-deltas/interface/test35/before/p/J.java >diff -N tests-deltas/interface/test35/before/p/J.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test35/before/p/J.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,5 @@ >+package p; >+ >+public interface J { >+ void foo2(String s); >+} >\ No newline at end of file >Index: tests-deltas/interface/test35/after/p/J.java >=================================================================== >RCS file: tests-deltas/interface/test35/after/p/J.java >diff -N tests-deltas/interface/test35/after/p/J.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test35/after/p/J.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,5 @@ >+package p; >+ >+public interface J { >+ void foo2(String s); >+} >\ No newline at end of file >Index: tests-deltas/interface/test36/before/p/J.java >=================================================================== >RCS file: tests-deltas/interface/test36/before/p/J.java >diff -N tests-deltas/interface/test36/before/p/J.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test36/before/p/J.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,5 @@ >+package p; >+ >+public interface J { >+ void bar(); >+} >\ No newline at end of file >Index: test-builder/baseline/bundle.a/src/a/interfaces/members/AddFieldNoExtendNoImplement.java >=================================================================== >RCS file: test-builder/baseline/bundle.a/src/a/interfaces/members/AddFieldNoExtendNoImplement.java >diff -N test-builder/baseline/bundle.a/src/a/interfaces/members/AddFieldNoExtendNoImplement.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/baseline/bundle.a/src/a/interfaces/members/AddFieldNoExtendNoImplement.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,9 @@ >+package a.interfaces.members; >+ >+/** >+ * @noimplement This interface is not intended to be implemented by clients. >+ * @noextend >+ */ >+public interface AddFieldNoExtendNoImplement { >+ >+} >Index: tests-deltas/interface/test37/before/p/J.java >=================================================================== >RCS file: tests-deltas/interface/test37/before/p/J.java >diff -N tests-deltas/interface/test37/before/p/J.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test37/before/p/J.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,5 @@ >+package p; >+ >+public interface J { >+ void bar(); >+} >\ No newline at end of file >Index: test-builder/compat/interface/restrictions/AddNoExtendNoImplement.java >=================================================================== >RCS file: test-builder/compat/interface/restrictions/AddNoExtendNoImplement.java >diff -N test-builder/compat/interface/restrictions/AddNoExtendNoImplement.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/compat/interface/restrictions/AddNoExtendNoImplement.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,9 @@ >+package a.interfaces.restrictions; >+ >+/** >+ * @noimplement This interface is not intended to be implemented by clients. >+ * @noextend This interface is not intended to be extended by clients. >+ */ >+public interface AddNoExtendNoImplement { >+ >+} >Index: tests-deltas/interface/test34/after/p/I.java >=================================================================== >RCS file: tests-deltas/interface/test34/after/p/I.java >diff -N tests-deltas/interface/test34/after/p/I.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test34/after/p/I.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,5 @@ >+package p; >+ >+public interface I extends J { >+ void foo(); >+} >\ No newline at end of file >Index: tests-deltas/field/test71/resources/.api_description >=================================================================== >RCS file: tests-deltas/field/test71/resources/.api_description >diff -N tests-deltas/field/test71/resources/.api_description >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/field/test71/resources/.api_description 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,8 @@ >+<?xml version="1.0" encoding="UTF-8"?> >+<component name="deltatest"> >+<plugin id="deltatest" /> >+ >+<package name=""> >+ <type name="I" implement="false" extend="false"/> >+</package> >+</component> >\ No newline at end of file >Index: test-builder/usage/class/testC4.java >=================================================================== >RCS file: test-builder/usage/class/testC4.java >diff -N test-builder/usage/class/testC4.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/usage/class/testC4.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,12 @@ >+package x.y.z; >+ >+import i.IExtInterface1; >+import c.BaseImpl1; >+ >+/** >+ * Indirectly implements a @noimplement interface with a parent class that >+ * implements the @noimplement interface >+ */ >+public class testC4 extends BaseImpl1 implements IExtInterface1 { >+ >+} >Index: tests-deltas/interface/test32/after/I.java >=================================================================== >RCS file: tests-deltas/interface/test32/after/I.java >diff -N tests-deltas/interface/test32/after/I.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test32/after/I.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,2 @@ >+public interface I extends J { >+} >\ No newline at end of file >Index: tests-deltas/interface/test37/resources/after/META-INF/MANIFEST.MF >=================================================================== >RCS file: tests-deltas/interface/test37/resources/after/META-INF/MANIFEST.MF >diff -N tests-deltas/interface/test37/resources/after/META-INF/MANIFEST.MF >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test37/resources/after/META-INF/MANIFEST.MF 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,9 @@ >+Manifest-Version: 1.0 >+Ant-Version: Apache Ant 1.7.0 >+Created-By: 1.6.0_05-ea-b04 (Sun Microsystems Inc.) >+Bundle-ManifestVersion: 2 >+Bundle-Name: deltatest Plug-in >+Bundle-SymbolicName: deltatest >+Bundle-Version: 2.0.0 >+Bundle-RequiredExecutionEnvironment: J2SE-1.4 >+Export-Package: p >Index: test-builder/tags/interface/valid/test7.java >=================================================================== >RCS file: test-builder/tags/interface/valid/test7.java >diff -N test-builder/tags/interface/valid/test7.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/tags/interface/valid/test7.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,47 @@ >+/******************************************************************************* >+ * Copyright (c) 2008 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ *******************************************************************************/ >+ >+ >+/** >+ * Test supported @noextend tag on an interface in the default package >+ * @noextend >+ */ >+public interface test7 { >+ /** >+ * @noextend >+ */ >+ interface inner { >+ >+ } >+ >+ interface inner1 { >+ /** >+ * @noextend >+ */ >+ interface inner2 { >+ >+ } >+ } >+ >+ interface inner2 { >+ >+ } >+} >+ >+interface outer { >+ >+ /** >+ * @noextend >+ */ >+ interface inner { >+ >+ } >+} >\ No newline at end of file >Index: tests-deltas/interface/test30/after/p/I.java >=================================================================== >RCS file: tests-deltas/interface/test30/after/p/I.java >diff -N tests-deltas/interface/test30/after/p/I.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test30/after/p/I.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,5 @@ >+package p; >+ >+public interface I { >+ int i = 0; >+} >\ No newline at end of file >Index: test-builder/compat/interface/restrictions/RemoveNoExtend.java >=================================================================== >RCS file: test-builder/compat/interface/restrictions/RemoveNoExtend.java >diff -N test-builder/compat/interface/restrictions/RemoveNoExtend.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/compat/interface/restrictions/RemoveNoExtend.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,5 @@ >+package a.interfaces.restrictions; >+ >+public interface RemoveNoExtend { >+ >+} >Index: test-builder/baseline/bundle.a/src/a/interfaces/members/AddInterfaceANoExtend.java >=================================================================== >RCS file: test-builder/baseline/bundle.a/src/a/interfaces/members/AddInterfaceANoExtend.java >diff -N test-builder/baseline/bundle.a/src/a/interfaces/members/AddInterfaceANoExtend.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/baseline/bundle.a/src/a/interfaces/members/AddInterfaceANoExtend.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,8 @@ >+package a.interfaces.members; >+ >+/** >+ * @noextend >+ */ >+public interface AddInterfaceANoExtend { >+ >+} >Index: tests-deltas/interface/test35/resources/after/.api_description >=================================================================== >RCS file: tests-deltas/interface/test35/resources/after/.api_description >diff -N tests-deltas/interface/test35/resources/after/.api_description >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test35/resources/after/.api_description 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,7 @@ >+<?xml version="1.0" encoding="UTF-8"?> >+<component name="deltatest"> >+<plugin id="deltatest" /> >+<package name="p"> >+ <type name="I" implement="false" extend="false"/> >+</package> >+</component> >\ No newline at end of file >Index: test-builder/usageprojects/refproject/src/i/IExtInterface3.java >=================================================================== >RCS file: test-builder/usageprojects/refproject/src/i/IExtInterface3.java >diff -N test-builder/usageprojects/refproject/src/i/IExtInterface3.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/usageprojects/refproject/src/i/IExtInterface3.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,5 @@ >+package i; >+ >+public interface IExtInterface3 extends IExtInterface2 { >+ >+} >Index: test-builder/compat/interface/restrictions/AddNoExtend.java >=================================================================== >RCS file: test-builder/compat/interface/restrictions/AddNoExtend.java >diff -N test-builder/compat/interface/restrictions/AddNoExtend.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/compat/interface/restrictions/AddNoExtend.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,8 @@ >+package a.interfaces.restrictions; >+ >+/** >+ * @noextend This interface is not to be extended by clients. >+ */ >+public interface AddNoExtend { >+ >+} >Index: test-builder/compat/interface/members/AddFieldNoExtendNoImplement.java >=================================================================== >RCS file: test-builder/compat/interface/members/AddFieldNoExtendNoImplement.java >diff -N test-builder/compat/interface/members/AddFieldNoExtendNoImplement.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/compat/interface/members/AddFieldNoExtendNoImplement.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,11 @@ >+package a.interfaces.members; >+ >+/** >+ * @noimplement This interface is not intended to be implemented by clients. >+ * @noextend >+ */ >+public interface AddFieldNoExtendNoImplement { >+ >+ public static final String ADDED_FIELD = "ADDED"; >+ >+} >Index: test-builder/usageprojects/refproject/src/i/INoImpl2.java >=================================================================== >RCS file: test-builder/usageprojects/refproject/src/i/INoImpl2.java >diff -N test-builder/usageprojects/refproject/src/i/INoImpl2.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/usageprojects/refproject/src/i/INoImpl2.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,8 @@ >+package i; >+ >+/** >+ * @noimplement This interface is not intended to be implemented by clients. >+ */ >+public interface INoImpl2 { >+ >+} >Index: test-builder/usageprojects/refproject/src/c/BaseImpl1_2_3_4.java >=================================================================== >RCS file: test-builder/usageprojects/refproject/src/c/BaseImpl1_2_3_4.java >diff -N test-builder/usageprojects/refproject/src/c/BaseImpl1_2_3_4.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/usageprojects/refproject/src/c/BaseImpl1_2_3_4.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,10 @@ >+package c; >+ >+import i.INoImpl1; >+import i.INoImpl2; >+import i.INoImpl3; >+import i.INoImpl4; >+ >+public class BaseImpl1_2_3_4 implements INoImpl1, INoImpl2, INoImpl3, INoImpl4 { >+ >+} >Index: tests-deltas/interface/test37/after/p/I.java >=================================================================== >RCS file: tests-deltas/interface/test37/after/p/I.java >diff -N tests-deltas/interface/test37/after/p/I.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test37/after/p/I.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,5 @@ >+package p; >+ >+public interface I extends J { >+ void foo(); >+} >\ No newline at end of file >Index: tests-deltas/interface/test33/before/I.java >=================================================================== >RCS file: tests-deltas/interface/test33/before/I.java >diff -N tests-deltas/interface/test33/before/I.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test33/before/I.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,3 @@ >+public interface I extends J { >+ void foo(); >+} >\ No newline at end of file >Index: tests-deltas/interface/test30/resources/.api_description >=================================================================== >RCS file: tests-deltas/interface/test30/resources/.api_description >diff -N tests-deltas/interface/test30/resources/.api_description >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test30/resources/.api_description 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,8 @@ >+<?xml version="1.0" encoding="UTF-8"?> >+<component name="deltatest"> >+ <plugin id="deltatest" /> >+ >+ <package name="p"> >+ <type name="I" extend="false"/> >+ </package> >+</component> >\ No newline at end of file >Index: tests-deltas/interface/test34/after/p/J.java >=================================================================== >RCS file: tests-deltas/interface/test34/after/p/J.java >diff -N tests-deltas/interface/test34/after/p/J.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test34/after/p/J.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,5 @@ >+package p; >+ >+public interface J { >+ void foo2(String s); >+} >\ No newline at end of file >Index: test-builder/usage/class/testC5.java >=================================================================== >RCS file: test-builder/usage/class/testC5.java >diff -N test-builder/usage/class/testC5.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/usage/class/testC5.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,14 @@ >+package x.y.z; >+ >+import i.IExtInterface1; >+import i.IExtInterface2; >+import i.IExtInterface3; >+import i.IExtInterface4; >+ >+/** >+ * Indirectly implements 4 @noimplement interfaces with no >+ * parent class that implements them >+ */ >+public class testC5 implements IExtInterface1, IExtInterface2, IExtInterface3, IExtInterface4 { >+ >+} >Index: tests-deltas/interface/test32/after/J.java >=================================================================== >RCS file: tests-deltas/interface/test32/after/J.java >diff -N tests-deltas/interface/test32/after/J.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test32/after/J.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,3 @@ >+public interface J { >+ void foo(); >+} >\ No newline at end of file >Index: tests-deltas/interface/test33/after/I.java >=================================================================== >RCS file: tests-deltas/interface/test33/after/I.java >diff -N tests-deltas/interface/test33/after/I.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test33/after/I.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,2 @@ >+public interface I extends J { >+} >\ No newline at end of file >Index: test-builder/baseline/bundle.a/src/a/interfaces/members/AddInterfaceANoExtendNoImplement.java >=================================================================== >RCS file: test-builder/baseline/bundle.a/src/a/interfaces/members/AddInterfaceANoExtendNoImplement.java >diff -N test-builder/baseline/bundle.a/src/a/interfaces/members/AddInterfaceANoExtendNoImplement.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/baseline/bundle.a/src/a/interfaces/members/AddInterfaceANoExtendNoImplement.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,10 @@ >+package a.interfaces.members; >+ >+ >+/** >+ * @noimplement This interface is not intended to be implemented by clients. >+ * @noextend >+ */ >+public interface AddInterfaceANoExtendNoImplement { >+ >+} >Index: tests-deltas/interface/test34/resources/after/META-INF/MANIFEST.MF >=================================================================== >RCS file: tests-deltas/interface/test34/resources/after/META-INF/MANIFEST.MF >diff -N tests-deltas/interface/test34/resources/after/META-INF/MANIFEST.MF >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test34/resources/after/META-INF/MANIFEST.MF 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,9 @@ >+Manifest-Version: 1.0 >+Ant-Version: Apache Ant 1.7.0 >+Created-By: 1.6.0_05-ea-b04 (Sun Microsystems Inc.) >+Bundle-ManifestVersion: 2 >+Bundle-Name: deltatest Plug-in >+Bundle-SymbolicName: deltatest >+Bundle-Version: 2.0.0 >+Bundle-RequiredExecutionEnvironment: J2SE-1.4 >+Export-Package: p >Index: test-builder/usageprojects/refproject/src/c/BaseImplExt.java >=================================================================== >RCS file: test-builder/usageprojects/refproject/src/c/BaseImplExt.java >diff -N test-builder/usageprojects/refproject/src/c/BaseImplExt.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/usageprojects/refproject/src/c/BaseImplExt.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,5 @@ >+package c; >+ >+public class BaseImplExt extends BaseImpl1 { >+ >+} >Index: test-builder/compat/interface/members/AddMethodNoExtendNoImplement.java >=================================================================== >RCS file: test-builder/compat/interface/members/AddMethodNoExtendNoImplement.java >diff -N test-builder/compat/interface/members/AddMethodNoExtendNoImplement.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/compat/interface/members/AddMethodNoExtendNoImplement.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,11 @@ >+package a.interfaces.members; >+ >+/** >+ * @noimplement This interface is not intended to be implemented by clients. >+ * @noextend >+ */ >+public interface AddMethodNoExtendNoImplement { >+ >+ public int addMethod(String foo); >+ >+} >Index: test-builder/usage/interface/testI3.java >=================================================================== >RCS file: test-builder/usage/interface/testI3.java >diff -N test-builder/usage/interface/testI3.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/usage/interface/testI3.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,27 @@ >+/******************************************************************************* >+ * Copyright (c) 2008 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ *******************************************************************************/ >+package x.y.z; >+ >+import i.InterfaceUsageInterface2; >+ >+/** >+ * >+ */ >+public interface testI1 extends InterfaceUsageInterface2 { >+ >+ interface inner extends InterfaceUsageInterface2.Iinner { >+ >+ } >+} >+ >+interface Iouter extends InterfaceUsageInterface2.Iinner { >+ >+} >Index: tests-deltas/interface/test36/resources/after/.api_description >=================================================================== >RCS file: tests-deltas/interface/test36/resources/after/.api_description >diff -N tests-deltas/interface/test36/resources/after/.api_description >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test36/resources/after/.api_description 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,7 @@ >+<?xml version="1.0" encoding="UTF-8"?> >+<component name="deltatest"> >+<plugin id="deltatest" /> >+<package name="p"> >+ <type name="J" extend="false"/> >+</package> >+</component> >\ No newline at end of file >Index: test-builder/usageprojects/refproject/src/i/IExtInterface4.java >=================================================================== >RCS file: test-builder/usageprojects/refproject/src/i/IExtInterface4.java >diff -N test-builder/usageprojects/refproject/src/i/IExtInterface4.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/usageprojects/refproject/src/i/IExtInterface4.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,5 @@ >+package i; >+ >+public interface IExtInterface4 extends INoImpl4 { >+ >+} >Index: tests-deltas/interface/test35/resources/before/META-INF/MANIFEST.MF >=================================================================== >RCS file: tests-deltas/interface/test35/resources/before/META-INF/MANIFEST.MF >diff -N tests-deltas/interface/test35/resources/before/META-INF/MANIFEST.MF >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test35/resources/before/META-INF/MANIFEST.MF 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,9 @@ >+Manifest-Version: 1.0 >+Ant-Version: Apache Ant 1.7.0 >+Created-By: 1.6.0_05-ea-b04 (Sun Microsystems Inc.) >+Bundle-ManifestVersion: 2 >+Bundle-Name: deltatest Plug-in >+Bundle-SymbolicName: deltatest >+Bundle-Version: 1.0.0 >+Bundle-RequiredExecutionEnvironment: J2SE-1.4 >+Export-Package: p >\ No newline at end of file >Index: tests-deltas/interface/test37/resources/before/META-INF/MANIFEST.MF >=================================================================== >RCS file: tests-deltas/interface/test37/resources/before/META-INF/MANIFEST.MF >diff -N tests-deltas/interface/test37/resources/before/META-INF/MANIFEST.MF >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test37/resources/before/META-INF/MANIFEST.MF 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,9 @@ >+Manifest-Version: 1.0 >+Ant-Version: Apache Ant 1.7.0 >+Created-By: 1.6.0_05-ea-b04 (Sun Microsystems Inc.) >+Bundle-ManifestVersion: 2 >+Bundle-Name: deltatest Plug-in >+Bundle-SymbolicName: deltatest >+Bundle-Version: 1.0.0 >+Bundle-RequiredExecutionEnvironment: J2SE-1.4 >+Export-Package: p >\ No newline at end of file >Index: test-builder/usageprojects/refproject/src/i/INoImpl3.java >=================================================================== >RCS file: test-builder/usageprojects/refproject/src/i/INoImpl3.java >diff -N test-builder/usageprojects/refproject/src/i/INoImpl3.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/usageprojects/refproject/src/i/INoImpl3.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,8 @@ >+package i; >+ >+/** >+ * @noimplement This interface is not intended to be implemented by clients. >+ */ >+public interface INoImpl3 { >+ >+} >Index: tests-deltas/interface/test34/resources/before/.api_description >=================================================================== >RCS file: tests-deltas/interface/test34/resources/before/.api_description >diff -N tests-deltas/interface/test34/resources/before/.api_description >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test34/resources/before/.api_description 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,7 @@ >+<?xml version="1.0" encoding="UTF-8"?> >+<component name="deltatest"> >+<plugin id="deltatest" /> >+<package name="p"> >+ <type name="I" extend="false"/> >+</package> >+</component> >\ No newline at end of file >Index: test-builder/compat/interface/members/AddFieldNoExtend.java >=================================================================== >RCS file: test-builder/compat/interface/members/AddFieldNoExtend.java >diff -N test-builder/compat/interface/members/AddFieldNoExtend.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/compat/interface/members/AddFieldNoExtend.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,10 @@ >+package a.interfaces.members; >+ >+/** >+ * @noextend >+ */ >+public interface AddFieldNoExtend { >+ >+ public static final String ADDED_FIELD = "ADDED"; >+ >+} >Index: tests-deltas/interface/test36/resources/before/.api_description >=================================================================== >RCS file: tests-deltas/interface/test36/resources/before/.api_description >diff -N tests-deltas/interface/test36/resources/before/.api_description >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test36/resources/before/.api_description 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,7 @@ >+<?xml version="1.0" encoding="UTF-8"?> >+<component name="deltatest"> >+<plugin id="deltatest" /> >+<package name="p"> >+ <type name="J" extend="false"/> >+</package> >+</component> >\ No newline at end of file >Index: tests-deltas/interface/test33/resources/.api_description >=================================================================== >RCS file: tests-deltas/interface/test33/resources/.api_description >diff -N tests-deltas/interface/test33/resources/.api_description >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test33/resources/.api_description 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,9 @@ >+<?xml version="1.0" encoding="UTF-8"?> >+<component name="deltatest"> >+ <plugin id="deltatest" /> >+ >+ <package name=""> >+ <type name="I" extend="false" implement="false"/> >+ <type name="J" extend="false" implement="false"/> >+ </package> >+</component> >\ No newline at end of file >Index: tests-deltas/interface/test37/after/p/J.java >=================================================================== >RCS file: tests-deltas/interface/test37/after/p/J.java >diff -N tests-deltas/interface/test37/after/p/J.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test37/after/p/J.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,6 @@ >+package p; >+ >+public interface J { >+ void bar(); >+ void foo2(String s); >+} >\ No newline at end of file >Index: tests-deltas/interface/test33/before/J.java >=================================================================== >RCS file: tests-deltas/interface/test33/before/J.java >diff -N tests-deltas/interface/test33/before/J.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test33/before/J.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,1 @@ >+public interface J {} >\ No newline at end of file >Index: test-builder/usageprojects/refproject/src/i/InterfaceUsageInterface2.java >=================================================================== >RCS file: test-builder/usageprojects/refproject/src/i/InterfaceUsageInterface2.java >diff -N test-builder/usageprojects/refproject/src/i/InterfaceUsageInterface2.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/usageprojects/refproject/src/i/InterfaceUsageInterface2.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,24 @@ >+/******************************************************************************* >+ * Copyright (c) 2008 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ *******************************************************************************/ >+package i; >+ >+/** >+ * @noextend >+ */ >+public interface InterfaceUsageInterface2 { >+ >+ /** >+ * @noextend >+ */ >+ interface Iinner { >+ >+ } >+} >\ No newline at end of file >Index: tests-deltas/interface/test36/after/p/I.java >=================================================================== >RCS file: tests-deltas/interface/test36/after/p/I.java >diff -N tests-deltas/interface/test36/after/p/I.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test36/after/p/I.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,5 @@ >+package p; >+ >+public interface I extends J { >+ void foo(); >+} >\ No newline at end of file >Index: test-builder/usage/class/testC6.java >=================================================================== >RCS file: test-builder/usage/class/testC6.java >diff -N test-builder/usage/class/testC6.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/usage/class/testC6.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,17 @@ >+package x.y.z; >+ >+import i.IExtInterface1; >+import i.IExtInterface2; >+import i.IExtInterface3; >+import i.IExtInterface4; >+import c.BaseImpl1_2_3_4; >+ >+/** >+ * Multi-indirect implementations with an >+ * implementing parent class that implements all @noimplement >+ * interfaces >+ */ >+public class testC6 extends BaseImpl1_2_3_4 implements IExtInterface1, >+ IExtInterface2, IExtInterface3, IExtInterface4 { >+ >+} >Index: tests-deltas/interface/test33/after/J.java >=================================================================== >RCS file: tests-deltas/interface/test33/after/J.java >diff -N tests-deltas/interface/test33/after/J.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test33/after/J.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,3 @@ >+public interface J { >+ void foo(); >+} >\ No newline at end of file >Index: test-builder/baseline/bundle.a/src/a/interfaces/restrictions/AddNoExtend.java >=================================================================== >RCS file: test-builder/baseline/bundle.a/src/a/interfaces/restrictions/AddNoExtend.java >diff -N test-builder/baseline/bundle.a/src/a/interfaces/restrictions/AddNoExtend.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/baseline/bundle.a/src/a/interfaces/restrictions/AddNoExtend.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,7 @@ >+package a.interfaces.restrictions; >+ >+/** >+ */ >+public interface AddNoExtend { >+ >+} >Index: tests-deltas/interface/test35/resources/after/META-INF/MANIFEST.MF >=================================================================== >RCS file: tests-deltas/interface/test35/resources/after/META-INF/MANIFEST.MF >diff -N tests-deltas/interface/test35/resources/after/META-INF/MANIFEST.MF >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test35/resources/after/META-INF/MANIFEST.MF 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,9 @@ >+Manifest-Version: 1.0 >+Ant-Version: Apache Ant 1.7.0 >+Created-By: 1.6.0_05-ea-b04 (Sun Microsystems Inc.) >+Bundle-ManifestVersion: 2 >+Bundle-Name: deltatest Plug-in >+Bundle-SymbolicName: deltatest >+Bundle-Version: 2.0.0 >+Bundle-RequiredExecutionEnvironment: J2SE-1.4 >+Export-Package: p >Index: test-builder/compat/interface/members/AddMethodNoExtend.java >=================================================================== >RCS file: test-builder/compat/interface/members/AddMethodNoExtend.java >diff -N test-builder/compat/interface/members/AddMethodNoExtend.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/compat/interface/members/AddMethodNoExtend.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,10 @@ >+package a.interfaces.members; >+ >+/** >+ * @noextend >+ */ >+public interface AddMethodNoExtend { >+ >+ public int addMethod(String foo); >+ >+} >Index: tests-deltas/interface/test37/resources/after/.api_description >=================================================================== >RCS file: tests-deltas/interface/test37/resources/after/.api_description >diff -N tests-deltas/interface/test37/resources/after/.api_description >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ tests-deltas/interface/test37/resources/after/.api_description 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,7 @@ >+<?xml version="1.0" encoding="UTF-8"?> >+<component name="deltatest"> >+<plugin id="deltatest" /> >+<package name="p"> >+ <type name="J" implement="false" extend="false"/> >+</package> >+</component> >\ No newline at end of file >Index: test-builder/usageprojects/refproject/src/i/IExtInterface1.java >=================================================================== >RCS file: test-builder/usageprojects/refproject/src/i/IExtInterface1.java >diff -N test-builder/usageprojects/refproject/src/i/IExtInterface1.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/usageprojects/refproject/src/i/IExtInterface1.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,5 @@ >+package i; >+ >+public interface IExtInterface1 extends INoImpl1 { >+ >+} >Index: test-builder/usageprojects/refproject/src/i/INoImpl4.java >=================================================================== >RCS file: test-builder/usageprojects/refproject/src/i/INoImpl4.java >diff -N test-builder/usageprojects/refproject/src/i/INoImpl4.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ test-builder/usageprojects/refproject/src/i/INoImpl4.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,8 @@ >+package i; >+ >+/** >+ * @noimplement This interface is not intended to be implemented by clients. >+ */ >+public interface INoImpl4 { >+ >+} >#P org.eclipse.pde.api.tools >Index: src/org/eclipse/pde/api/tools/internal/problems/problemmessages.properties >=================================================================== >RCS file: /cvsroot/eclipse/pde/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/problems/problemmessages.properties,v >retrieving revision 1.42 >diff -u -r1.42 problemmessages.properties >--- src/org/eclipse/pde/api/tools/internal/problems/problemmessages.properties 12 Nov 2008 17:40:37 -0000 1.42 >+++ src/org/eclipse/pde/api/tools/internal/problems/problemmessages.properties 12 Nov 2008 19:51:02 -0000 >@@ -9,7 +9,7 @@ > # IBM Corporation - initial API and implementation > ############################################################################### > # the slot 107 has been removed. So it is open again for another message >-# remove messages for 24, 25, 28, 30, 31, 38, 42, >+# remove messages for 25, 28, 30, 31, 38, 42, > # 45, 46, 47, 48, 49, 50, 51, 52, 53, 57, 58, 59, 60, 62, 63, 65, 68, 70, 71, 74, 75, 80, > # 82, 83, 88, 90, 93, 05, 99, 103, 124 > #api profile >@@ -131,6 +131,7 @@ > #{0} = Javadoc tag name, {1} = java member (class, field, method, etc) > 112 = Tag ''{0}'' is unsupported on {1} > 22 = Tag ''{0}'' is already defined on this element >+24 = {2} illegally implements {1} via {0} > 106 = The type argument {1} has been added for {0} > 107 = The type argument {1} has been removed for {0} > 131 = The superclass hierarchy for {0} has been reduced >Index: src/org/eclipse/pde/api/tools/internal/problems/ApiProblemFactory.java >=================================================================== >RCS file: /cvsroot/eclipse/pde/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/problems/ApiProblemFactory.java,v >retrieving revision 1.39 >diff -u -r1.39 ApiProblemFactory.java >--- src/org/eclipse/pde/api/tools/internal/problems/ApiProblemFactory.java 12 Nov 2008 17:40:37 -0000 1.39 >+++ src/org/eclipse/pde/api/tools/internal/problems/ApiProblemFactory.java 12 Nov 2008 19:51:02 -0000 >@@ -380,7 +380,13 @@ > } > case IApiProblem.CATEGORY_USAGE: { > switch(kind) { >- case IApiProblem.ILLEGAL_IMPLEMENT: return 8; >+ case IApiProblem.ILLEGAL_IMPLEMENT: { >+ switch(flags) { >+ case IApiProblem.NO_FLAGS: return 8; >+ case IApiProblem.INDIRECT_REFERENCE: return 24; >+ } >+ break; >+ } > case IApiProblem.ILLEGAL_EXTEND: return 9; > case IApiProblem.ILLEGAL_INSTANTIATE: return 10; > case IApiProblem.ILLEGAL_OVERRIDE: return 11; >Index: src/org/eclipse/pde/api/tools/internal/util/Util.java >=================================================================== >RCS file: /cvsroot/eclipse/pde/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/util/Util.java,v >retrieving revision 1.87 >diff -u -r1.87 Util.java >--- src/org/eclipse/pde/api/tools/internal/util/Util.java 11 Nov 2008 22:16:29 -0000 1.87 >+++ src/org/eclipse/pde/api/tools/internal/util/Util.java 12 Nov 2008 19:51:02 -0000 >@@ -1324,6 +1324,9 @@ > case IApiProblem.NO_FLAGS: { > return "NO_FLAGS"; //$NON-NLS-1$ > } >+ case IApiProblem.INDIRECT_REFERENCE: { >+ return "INDIRECT_REFERENCE"; //$NON-NLS-1$ >+ } > } > } > } >Index: src/org/eclipse/pde/api/tools/internal/provisional/scanner/ApiDescriptionProcessor.java >=================================================================== >RCS file: /cvsroot/eclipse/pde/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/scanner/ApiDescriptionProcessor.java,v >retrieving revision 1.21 >diff -u -r1.21 ApiDescriptionProcessor.java >--- src/org/eclipse/pde/api/tools/internal/provisional/scanner/ApiDescriptionProcessor.java 24 Oct 2008 16:26:17 -0000 1.21 >+++ src/org/eclipse/pde/api/tools/internal/provisional/scanner/ApiDescriptionProcessor.java 12 Nov 2008 19:51:02 -0000 >@@ -336,7 +336,7 @@ > case IApiJavadocTag.MEMBER_FIELD : > if(RestrictionModifiers.isReferenceRestriction(res)) { > if(!containsRestrictionTag(tags, "@noreference")) { //$NON-NLS-1$ >- IApiJavadocTag tag = jtm.getTag("org.eclipse.pde.api.tools.noreference"); //$NON-NLS-1$ >+ IApiJavadocTag tag = jtm.getTag(IApiJavadocTag.NO_REFERENCE_TAG_ID); > missing.add(tag.getCompleteTag(type, member)); > } > } >@@ -344,13 +344,13 @@ > case IApiJavadocTag.MEMBER_METHOD : > if(RestrictionModifiers.isReferenceRestriction(res)) { > if(!containsRestrictionTag(tags, "@noreference")) { //$NON-NLS-1$ >- IApiJavadocTag tag = jtm.getTag("org.eclipse.pde.api.tools.noreference"); //$NON-NLS-1$ >+ IApiJavadocTag tag = jtm.getTag(IApiJavadocTag.NO_REFERENCE_TAG_ID); > missing.add(tag.getCompleteTag(type, member)); > } > } > if(RestrictionModifiers.isOverrideRestriction(res)) { > if(!containsRestrictionTag(tags, "@nooverride")) { //$NON-NLS-1$ >- IApiJavadocTag tag = jtm.getTag("org.eclipse.pde.api.tools.nooverride"); //$NON-NLS-1$ >+ IApiJavadocTag tag = jtm.getTag(IApiJavadocTag.NO_OVERRIDE_TAG_ID); > missing.add(tag.getCompleteTag(type, member)); > } > } >@@ -358,19 +358,19 @@ > case IApiJavadocTag.MEMBER_NONE : > if(RestrictionModifiers.isImplementRestriction(res)) { > if(!containsRestrictionTag(tags, "@noimplement")) { //$NON-NLS-1$ >- IApiJavadocTag tag = jtm.getTag("org.eclipse.pde.api.tools.noimplement"); //$NON-NLS-1$ >+ IApiJavadocTag tag = jtm.getTag(IApiJavadocTag.NO_IMPLEMENT_TAG_ID); > missing.add(tag.getCompleteTag(type, member)); > } > } > if(RestrictionModifiers.isInstantiateRestriction(res)) { > if(!containsRestrictionTag(tags, "@noinstantiate")) { //$NON-NLS-1$ >- IApiJavadocTag tag = jtm.getTag("org.eclipse.pde.api.tools.noinstantiate"); //$NON-NLS-1$ >+ IApiJavadocTag tag = jtm.getTag(IApiJavadocTag.NO_INSTANTIATE_TAG_ID); > missing.add(tag.getCompleteTag(type, member)); > } > } > if(RestrictionModifiers.isExtendRestriction(res)) { > if(!containsRestrictionTag(tags, "@noextend")) { //$NON-NLS-1$ >- IApiJavadocTag tag = jtm.getTag("org.eclipse.pde.api.tools.noextend"); //$NON-NLS-1$ >+ IApiJavadocTag tag = jtm.getTag(IApiJavadocTag.NO_EXTEND_TAG_ID); > missing.add(tag.getCompleteTag(type, member)); > } > } >Index: src/org/eclipse/pde/api/tools/internal/comparator/ClassFileComparator.java >=================================================================== >RCS file: /cvsroot/eclipse/pde/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/comparator/ClassFileComparator.java,v >retrieving revision 1.68 >diff -u -r1.68 ClassFileComparator.java >--- src/org/eclipse/pde/api/tools/internal/comparator/ClassFileComparator.java 5 Nov 2008 18:21:41 -0000 1.68 >+++ src/org/eclipse/pde/api/tools/internal/comparator/ClassFileComparator.java 12 Nov 2008 19:51:02 -0000 >@@ -997,8 +997,8 @@ > // adding/removing no extend on a final class is ok > // adding/removing no instantiate on an abstract class is ok > if (this.type1.isInterface()) { >- if (RestrictionModifiers.isImplementRestriction(restrictions2) >- && !RestrictionModifiers.isImplementRestriction(restrictions)) { >+ if ((RestrictionModifiers.isImplementRestriction(restrictions2) && !RestrictionModifiers.isImplementRestriction(restrictions)) || >+ (RestrictionModifiers.isExtendRestriction(restrictions2) && !RestrictionModifiers.isExtendRestriction(restrictions))) { > this.addDelta( > getElementType(this.type1), > IDelta.ADDED, >Index: src/org/eclipse/pde/api/tools/internal/provisional/problems/IApiProblem.java >=================================================================== >RCS file: /cvsroot/eclipse/pde/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/problems/IApiProblem.java,v >retrieving revision 1.18 >diff -u -r1.18 IApiProblem.java >--- src/org/eclipse/pde/api/tools/internal/provisional/problems/IApiProblem.java 11 Nov 2008 22:16:29 -0000 1.18 >+++ src/org/eclipse/pde/api/tools/internal/provisional/problems/IApiProblem.java 12 Nov 2008 19:51:02 -0000 >@@ -319,6 +319,15 @@ > * @see #getFlags() > */ > public static final int FIELD = 9; >+ >+ /** >+ * Flags to indicate an indirect reference >+ * <br> >+ * Value is: <code>10</code> >+ * >+ * @see #getFlags() >+ */ >+ public static final int INDIRECT_REFERENCE = 10; > > /** > * Constant representing the value of a default API profile {@link IApiProblem} kind. >Index: src/org/eclipse/pde/api/tools/internal/ApiAnnotations.java >=================================================================== >RCS file: /cvsroot/eclipse/pde/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/ApiAnnotations.java,v >retrieving revision 1.4 >diff -u -r1.4 ApiAnnotations.java >--- src/org/eclipse/pde/api/tools/internal/ApiAnnotations.java 11 Nov 2008 22:16:29 -0000 1.4 >+++ src/org/eclipse/pde/api/tools/internal/ApiAnnotations.java 12 Nov 2008 19:51:01 -0000 >@@ -11,8 +11,8 @@ > package org.eclipse.pde.api.tools.internal; > > import org.eclipse.pde.api.tools.internal.provisional.IApiAnnotations; >-import org.eclipse.pde.api.tools.internal.provisional.RestrictionModifiers; > import org.eclipse.pde.api.tools.internal.provisional.VisibilityModifiers; >+import org.eclipse.pde.api.tools.internal.util.Util; > > /** > * Base implementation of the {@linkplain IApiAnnotations} interface >@@ -107,25 +107,7 @@ > buffer.append(visibility); > buffer.append(" / "); //$NON-NLS-1$ > int restrictions = getRestrictions(); >- if (restrictions == RestrictionModifiers.NO_RESTRICTIONS) { >- buffer.append("<no restrictions>"); //$NON-NLS-1$ >- } else { >- if (RestrictionModifiers.isExtendRestriction(restrictions)) { >- buffer.append("@noextend "); //$NON-NLS-1$ >- } >- if (RestrictionModifiers.isImplementRestriction(restrictions)) { >- buffer.append("@noimplement "); //$NON-NLS-1$ >- } >- if (RestrictionModifiers.isInstantiateRestriction(restrictions)) { >- buffer.append("@noinstantiate "); //$NON-NLS-1$ >- } >- if (RestrictionModifiers.isReferenceRestriction(restrictions)) { >- buffer.append("@noreference "); //$NON-NLS-1$ >- } >- if(RestrictionModifiers.isOverrideRestriction(restrictions)) { >- buffer.append("@nooverride"); //$NON-NLS-1$ >- } >- } >+ buffer.append(Util.getRestrictionKind(restrictions)); > return buffer.toString(); > } > >Index: src/org/eclipse/pde/api/tools/internal/JavadocTagManager.java >=================================================================== >RCS file: /cvsroot/eclipse/pde/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/JavadocTagManager.java,v >retrieving revision 1.14 >diff -u -r1.14 JavadocTagManager.java >--- src/org/eclipse/pde/api/tools/internal/JavadocTagManager.java 5 Nov 2008 20:03:54 -0000 1.14 >+++ src/org/eclipse/pde/api/tools/internal/JavadocTagManager.java 12 Nov 2008 19:51:01 -0000 >@@ -68,10 +68,10 @@ > newtag.setApplicableTo(IApiJavadocTag.TYPE_CLASS, > IApiJavadocTag.MEMBER_NONE, > "This class is not intended to be subclassed by clients."); //$NON-NLS-1$ >- /*newtag.setApplicableTo(IApiJavadocTag.TYPE_INTERFACE, >+ newtag.setApplicableTo(IApiJavadocTag.TYPE_INTERFACE, > IApiJavadocTag.MEMBER_NONE, > "This interface is not intended to be extended by clients."); //$NON-NLS-1$ >-*/ tagcache.put(newtag.getTagId(), newtag); >+ tagcache.put(newtag.getTagId(), newtag); > list.add(newtag); > > //nooverride tag >Index: src/org/eclipse/pde/api/tools/internal/provisional/comparator/DeltaProcessor.java >=================================================================== >RCS file: /cvsroot/eclipse/pde/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/provisional/comparator/DeltaProcessor.java,v >retrieving revision 1.37 >diff -u -r1.37 DeltaProcessor.java >--- src/org/eclipse/pde/api/tools/internal/provisional/comparator/DeltaProcessor.java 21 Oct 2008 18:59:13 -0000 1.37 >+++ src/org/eclipse/pde/api/tools/internal/provisional/comparator/DeltaProcessor.java 12 Nov 2008 19:51:02 -0000 >@@ -136,7 +136,8 @@ > switch(delta.getFlags()) { > case IDelta.FIELD : > case IDelta.METHOD : >- return RestrictionModifiers.isImplementRestriction(delta.getRestrictions()); >+ return RestrictionModifiers.isImplementRestriction(delta.getRestrictions()) && >+ RestrictionModifiers.isExtendRestriction(delta.getRestrictions()); > case IDelta.TYPE_PARAMETER : > case IDelta.METHOD_WITHOUT_DEFAULT_VALUE : > return false; >@@ -470,7 +471,8 @@ > case IDelta.FIELD : > case IDelta.METHOD : > case IDelta.SUPER_INTERFACE_WITH_METHODS : >- return RestrictionModifiers.isImplementRestriction(delta.getRestrictions()); >+ return RestrictionModifiers.isImplementRestriction(delta.getRestrictions()) && >+ RestrictionModifiers.isExtendRestriction(delta.getRestrictions()); > case IDelta.TYPE_PARAMETER : > return false; > case IDelta.RESTRICTIONS : >Index: src/org/eclipse/pde/api/tools/internal/search/AbstractIllegalTypeReference.java >=================================================================== >RCS file: /cvsroot/eclipse/pde/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/search/AbstractIllegalTypeReference.java,v >retrieving revision 1.2 >diff -u -r1.2 AbstractIllegalTypeReference.java >--- src/org/eclipse/pde/api/tools/internal/search/AbstractIllegalTypeReference.java 24 Oct 2008 16:26:17 -0000 1.2 >+++ src/org/eclipse/pde/api/tools/internal/search/AbstractIllegalTypeReference.java 12 Nov 2008 19:51:02 -0000 >@@ -63,6 +63,15 @@ > return false; > } > >+ /** >+ * Returns if the mapping contains the referenced type name >+ * @param reference >+ * @return true of the mapping contains the key false otherwise >+ */ >+ protected boolean isIllegalType(IReference reference) { >+ return fIllegalTypes.containsKey(reference.getReferencedTypeName()); >+ } >+ > /* (non-Javadoc) > * @see org.eclipse.pde.api.tools.internal.search.AbstractProblemDetector#isProblem(org.eclipse.pde.api.tools.internal.provisional.model.IReference) > */ >Index: src/org/eclipse/pde/api/tools/internal/search/IllegalImplementsProblemDetector.java >=================================================================== >RCS file: /cvsroot/eclipse/pde/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/search/IllegalImplementsProblemDetector.java,v >retrieving revision 1.1 >diff -u -r1.1 IllegalImplementsProblemDetector.java >--- src/org/eclipse/pde/api/tools/internal/search/IllegalImplementsProblemDetector.java 20 Oct 2008 22:19:08 -0000 1.1 >+++ src/org/eclipse/pde/api/tools/internal/search/IllegalImplementsProblemDetector.java 12 Nov 2008 19:51:02 -0000 >@@ -10,6 +10,18 @@ > *******************************************************************************/ > package org.eclipse.pde.api.tools.internal.search; > >+import java.util.HashMap; >+ >+import org.eclipse.core.runtime.CoreException; >+import org.eclipse.pde.api.tools.internal.provisional.ApiPlugin; >+import org.eclipse.pde.api.tools.internal.provisional.Factory; >+import org.eclipse.pde.api.tools.internal.provisional.IApiAnnotations; >+import org.eclipse.pde.api.tools.internal.provisional.IApiComponent; >+import org.eclipse.pde.api.tools.internal.provisional.RestrictionModifiers; >+import org.eclipse.pde.api.tools.internal.provisional.model.IApiElement; >+import org.eclipse.pde.api.tools.internal.provisional.model.IApiMember; >+import org.eclipse.pde.api.tools.internal.provisional.model.IApiType; >+import org.eclipse.pde.api.tools.internal.provisional.model.IReference; > import org.eclipse.pde.api.tools.internal.provisional.problems.IApiProblem; > import org.eclipse.pde.api.tools.internal.provisional.problems.IApiProblemTypes; > import org.eclipse.pde.api.tools.internal.provisional.search.ReferenceModifiers; >@@ -21,11 +33,16 @@ > */ > public class IllegalImplementsProblemDetector extends AbstractIllegalTypeReference { > >+ /** >+ * Map of directly implemented interfaces to implement restricted super-interfaces >+ */ >+ private HashMap fRestrictedInterfaces = new HashMap(); >+ > /* (non-Javadoc) > * @see org.eclipse.pde.api.tools.internal.provisional.search.IApiProblemDetector#getReferenceKinds() > */ > public int getReferenceKinds() { >- return ReferenceModifiers.REF_EXTENDS | ReferenceModifiers.REF_IMPLEMENTS; >+ return ReferenceModifiers.REF_IMPLEMENTS; > } > > /* (non-Javadoc) >@@ -41,4 +58,126 @@ > protected String getSeverityKey() { > return IApiProblemTypes.ILLEGAL_IMPLEMENT; > } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.pde.api.tools.internal.search.AbstractIllegalTypeReference#considerReference(org.eclipse.pde.api.tools.internal.provisional.model.IReference) >+ */ >+ public boolean considerReference(IReference reference) { >+ try { >+ if(isIllegalType(reference)) { >+ retainReference(reference); >+ return true; >+ } >+ IApiType type = (IApiType) reference.getMember(); >+ IApiType[] inters = type.getSuperInterfaces(); >+ IApiType inter = null; >+ for (int j = 0; j < inters.length; j++) { >+ if(inters[j].getName().equals(reference.getReferencedTypeName())) { >+ inter = inters[j]; >+ break; >+ } >+ } >+ if(inter != null && findRestrictedSuperinterfaces(reference.getReferencedTypeName(), inter)) { >+ retainReference(reference); >+ return true; >+ } >+ } >+ catch(CoreException ce) { >+ ApiPlugin.log(ce); >+ } >+ return super.considerReference(reference); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.pde.api.tools.internal.search.AbstractIllegalTypeReference#isProblem(org.eclipse.pde.api.tools.internal.provisional.model.IReference) >+ */ >+ protected boolean isProblem(IReference reference) { >+ try { >+ if(isIllegalType(reference)) { >+ return super.isProblem(reference); >+ } >+ if(fRestrictedInterfaces.size() > 0) { >+ IApiMember member = reference.getMember(); >+ if(member.getType() == IApiElement.TYPE) { >+ IApiType itype = (IApiType) fRestrictedInterfaces.get(reference.getReferencedTypeName()); >+ return itype != null && !isImplemented(((IApiType) member).getSuperclass(), itype.getName()); >+ } >+ } >+ return true; >+ } >+ catch(CoreException ce) { >+ ApiPlugin.log(ce); >+ } >+ return super.isProblem(reference); >+ } >+ /* (non-Javadoc) >+ * @see org.eclipse.pde.api.tools.internal.search.AbstractIllegalTypeReference#getMessageArgs(org.eclipse.pde.api.tools.internal.provisional.model.IReference) >+ */ >+ protected String[] getMessageArgs(IReference reference) throws CoreException { >+ if(isIllegalType(reference)) { >+ return super.getMessageArgs(reference); >+ } >+ if(fRestrictedInterfaces.size() > 0) { >+ IApiType type = (IApiType) reference.getResolvedReference(); >+ IApiType inter = (IApiType) fRestrictedInterfaces.get(type.getName()); >+ if(inter != null) { >+ return new String[] {getSimpleTypeName(type), inter.getSimpleName(), getSimpleTypeName(reference.getMember())}; >+ } >+ } >+ return super.getMessageArgs(reference); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.pde.api.tools.internal.search.AbstractIllegalTypeReference#getProblemFlags(org.eclipse.pde.api.tools.internal.provisional.model.IReference) >+ */ >+ protected int getProblemFlags(IReference reference) { >+ if(isIllegalType(reference)) { >+ return super.getProblemFlags(reference); >+ } >+ return IApiProblem.INDIRECT_REFERENCE; >+ } >+ >+ /** >+ * Returns if the given type implements any of the given interfaces anywhere in its lineage >+ * @param type >+ * @param iname >+ * @return true if all of the interfaces are implemented, false otherwise >+ * @throws CoreException >+ */ >+ private boolean isImplemented(IApiType type, final String iname) throws CoreException { >+ if(type == null) { >+ return false; >+ } >+ IApiType[] sinters = type.getSuperInterfaces(); >+ for (int i = 0; i < sinters.length; i++) { >+ if(sinters[i].getName().equals(iname)) { >+ return true; >+ } >+ } >+ return isImplemented(type.getSuperclass(), iname); >+ } >+ >+ /** >+ * Finds all of the implements restricted interfaces in the hierarchy of this given type >+ * @param entryinterface >+ * @param type >+ * @throws CoreException >+ */ >+ private boolean findRestrictedSuperinterfaces(final String entryinterface, IApiType type) throws CoreException { >+ IApiType[] inters = type.getSuperInterfaces(); >+ IApiAnnotations annot = null; >+ IApiComponent comp = null; >+ for (int i = 0; i < inters.length; i++) { >+ comp = inters[i].getApiComponent(); >+ if(comp == null) { >+ continue; >+ } >+ annot = comp.getApiDescription().resolveAnnotations(Factory.typeDescriptor(inters[i].getName())); >+ if(annot != null && RestrictionModifiers.isImplementRestriction(annot.getRestrictions())) { >+ return fRestrictedInterfaces.put(entryinterface, inters[i]) == null; >+ } >+ return findRestrictedSuperinterfaces( entryinterface, inters[i]); >+ } >+ return false; >+ } > } >Index: src/org/eclipse/pde/api/tools/internal/model/ApiType.java >=================================================================== >RCS file: /cvsroot/eclipse/pde/apitools/org.eclipse.pde.api.tools/src/org/eclipse/pde/api/tools/internal/model/ApiType.java,v >retrieving revision 1.8 >diff -u -r1.8 ApiType.java >--- src/org/eclipse/pde/api/tools/internal/model/ApiType.java 22 Oct 2008 19:32:43 -0000 1.8 >+++ src/org/eclipse/pde/api/tools/internal/model/ApiType.java 12 Nov 2008 19:51:02 -0000 >@@ -215,7 +215,7 @@ > public IApiType[] getSuperInterfaces() throws CoreException { > String[] names = getSuperInterfaceNames(); > if (names == null) { >- return null; >+ return EMPTY_TYPES; > } > if (fSuperInterfaces == null) { > IApiType[] interfaces = new IApiType[names.length];
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 230189
:
107348
| 117700