Bug 427496 - [1.8] Support lambda expressions
Add tag and annotation tests
Change-Id: I20ad85c74744299f5ab55a68edb4349b744d16c4
diff --git a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/annotations/AnnotationTest.java b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/annotations/AnnotationTest.java
index 9be90f3..972bc28 100644
--- a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/annotations/AnnotationTest.java
+++ b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/annotations/AnnotationTest.java
@@ -12,6 +12,7 @@
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import java.util.ArrayList;
import junit.framework.Test;
import junit.framework.TestSuite;
@@ -25,6 +26,7 @@
import org.eclipse.pde.api.tools.builder.tests.ApiProblem;
import org.eclipse.pde.api.tools.builder.tests.ApiTestingEnvironment;
import org.eclipse.pde.api.tools.model.tests.TestSuiteHelper;
+import org.eclipse.pde.api.tools.tests.util.ProjectUtils;
/**
* Root test for annotation tests
@@ -66,18 +68,24 @@
* @return all of the child test classes of this class
*/
private static Class<?>[] getAllTestClasses() {
- Class<?>[] classes = new Class[] {
- InvalidAnnotationAnnotationsTests.class,
- ValidAnnotationAnnotationsTests.class,
- InvalidClassAnnotationsTests.class,
- ValidClassAnnotationsTests.class,
- InvalidInterfaceAnnotationTests.class,
- ValidInterfaceAnnotationTests.class,
- InvalidDuplicateAnnotationTests.class,
- InvalidEnumAnnotationsTests.class,
- ValidEnumAnnotationsTests.class, FieldAnnotationTest.class,
- MethodAnnotationTest.class};
- return classes;
+ ArrayList<Class<?>> classes = new ArrayList<Class<?>>();
+ classes.add(InvalidAnnotationAnnotationsTests.class);
+ classes.add(ValidAnnotationAnnotationsTests.class);
+ classes.add(InvalidClassAnnotationsTests.class);
+ classes.add(ValidClassAnnotationsTests.class);
+ classes.add(InvalidInterfaceAnnotationTests.class);
+ classes.add(ValidInterfaceAnnotationTests.class);
+ classes.add(InvalidDuplicateAnnotationTests.class);
+ classes.add(InvalidEnumAnnotationsTests.class);
+ classes.add(ValidEnumAnnotationsTests.class);
+ classes.add(FieldAnnotationTest.class);
+ classes.add(MethodAnnotationTest.class);
+ if (ProjectUtils.isJava8Compatible()) {
+ classes.add(InvalidJava8InterfaceAnnotationTests.class);
+ classes.add(ValidJava8InterfaceAnnotationTests.class);
+ }
+
+ return classes.toArray(new Class<?>[classes.size()]);
}
/**
diff --git a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/annotations/InvalidJava8InterfaceAnnotationTests.java b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/annotations/InvalidJava8InterfaceAnnotationTests.java
new file mode 100644
index 0000000..38c194c
--- /dev/null
+++ b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/annotations/InvalidJava8InterfaceAnnotationTests.java
@@ -0,0 +1,94 @@
+/*******************************************************************************
+ * Copyright (c) 2014 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 org.eclipse.pde.api.tools.builder.tests.annotations;
+
+import junit.framework.Test;
+
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.jdt.core.JavaCore;
+import org.eclipse.pde.api.tools.internal.builder.BuilderMessages;
+
+/**
+ * Tests invalid annotation in Java 8 interfaces
+ */
+public class InvalidJava8InterfaceAnnotationTests extends InvalidInterfaceAnnotationTests {
+
+ public InvalidJava8InterfaceAnnotationTests(String name) {
+ super(name);
+ }
+
+ @Override
+ protected String getTestCompliance() {
+ return JavaCore.VERSION_1_8;
+ }
+
+ @Override
+ protected IPath getTestSourcePath() {
+ return new Path("java8").append("annotations").append("interface"); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
+ }
+
+ @Override
+ protected String getTestingProjectName() {
+ return "java8tags"; //$NON-NLS-1$
+ }
+
+ /**
+ * @return the test for this class
+ */
+ public static Test suite() {
+ return buildTestSuite(InvalidJava8InterfaceAnnotationTests.class);
+ }
+
+ public void testInvalidTagOnNonDefaultInterfaceMethodI() {
+ x1(true);
+ }
+
+ public void testInvalidTagOnNonDefaultInterfaceMethodF() {
+ x1(false);
+ }
+
+ /**
+ * Tests the unsupported @nooverride tag on non-default interface methods in Java 8 interfaces
+ */
+ private void x1(boolean inc) {
+ setExpectedProblemIds(getDefaultProblemSet(2));
+ setExpectedMessageArgs(new String[][] {
+ {
+ "@NoOverride", BuilderMessages.TagValidator_nondefault_interface_method }, //$NON-NLS-1$
+ {
+ "@NoOverride", BuilderMessages.TagValidator_nondefault_interface_method } //$NON-NLS-1$
+ });
+ deployAnnotationTest("test1.java", inc, false); //$NON-NLS-1$
+ }
+
+ public void testInvalidTagsOnFunctionalInterfaceI() {
+ x2(true);
+ }
+
+ public void testInvalidTagsOnFunctionalInterfaceF() {
+ x2(false);
+ }
+
+ /**
+ * Tests that a variety of tags are unsupported on a functional interface
+ */
+ private void x2(boolean inc) {
+ setExpectedProblemIds(getDefaultProblemSet(2));
+ setExpectedMessageArgs(new String[][] {
+ {
+ "@NoOverride", BuilderMessages.TagValidator_nondefault_interface_method }, //$NON-NLS-1$
+ {
+ "@NoOverride", BuilderMessages.TagValidator_nondefault_interface_method } //$NON-NLS-1$
+ });
+ deployAnnotationTest("test2.java", inc, false); //$NON-NLS-1$
+ }
+}
diff --git a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/tags/ValidJava8IntefaceMethodTagTests.java b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/annotations/ValidJava8InterfaceAnnotationTests.java
similarity index 63%
copy from apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/tags/ValidJava8IntefaceMethodTagTests.java
copy to apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/annotations/ValidJava8InterfaceAnnotationTests.java
index c88a5d1..1ba1ad8 100644
--- a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/tags/ValidJava8IntefaceMethodTagTests.java
+++ b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/annotations/ValidJava8InterfaceAnnotationTests.java
@@ -8,7 +8,7 @@
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
-package org.eclipse.pde.api.tools.builder.tests.tags;
+package org.eclipse.pde.api.tools.builder.tests.annotations;
import junit.framework.Test;
@@ -17,12 +17,12 @@
import org.eclipse.jdt.core.JavaCore;
/**
- * Tests valid tags on Java 8 interface methods
+ * Tests valid annotations on Java 8 interface methods
*/
-public class ValidJava8IntefaceMethodTagTests extends
- ValidInterfaceMethodTagTests {
+public class ValidJava8InterfaceAnnotationTests extends
+ ValidInterfaceAnnotationTests {
- public ValidJava8IntefaceMethodTagTests(String name) {
+ public ValidJava8InterfaceAnnotationTests(String name) {
super(name);
}
@@ -45,7 +45,7 @@
* @return the test for this class
*/
public static Test suite() {
- return buildTestSuite(ValidJava8IntefaceMethodTagTests.class);
+ return buildTestSuite(ValidJava8InterfaceAnnotationTests.class);
}
public void testNoOverrideOnDefaultI() {
@@ -57,9 +57,24 @@
}
/**
- * Tests the @nooverride tag on a default method
+ * Tests the NoOverride annotation on a default method
*/
private void x1(boolean inc) {
- deployTagTest("test1.java", inc, false); //$NON-NLS-1$
+ deployAnnotationTest("test1.java", inc, false); //$NON-NLS-1$
+ }
+
+ public void testValidTagsOnFunctionalInterfaceI() {
+ x2(true);
+ }
+
+ public void testValidTagsOnFunctionalInterfaceF() {
+ x2(false);
+ }
+
+ /**
+ * Tests a variety of annotations on a functional interface
+ */
+ private void x2(boolean inc) {
+ deployAnnotationTest("test2.java", inc, false); //$NON-NLS-1$
}
}
diff --git a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/tags/InvalidJava8InterfaceMethodTagTests.java b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/tags/InvalidJava8InterfaceTagTests.java
similarity index 63%
rename from apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/tags/InvalidJava8InterfaceMethodTagTests.java
rename to apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/tags/InvalidJava8InterfaceTagTests.java
index 178ade6..a090e42 100644
--- a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/tags/InvalidJava8InterfaceMethodTagTests.java
+++ b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/tags/InvalidJava8InterfaceTagTests.java
@@ -18,11 +18,11 @@
import org.eclipse.pde.api.tools.internal.builder.BuilderMessages;
/**
- * Tests invalid tags in Java 8 interface methods
+ * Tests invalid tags in Java 8 interfaces
*/
-public class InvalidJava8InterfaceMethodTagTests extends InvalidInterfaceMethodTagTests {
+public class InvalidJava8InterfaceTagTests extends InvalidInterfaceMethodTagTests {
- public InvalidJava8InterfaceMethodTagTests(String name) {
+ public InvalidJava8InterfaceTagTests(String name) {
super(name);
}
@@ -45,14 +45,14 @@
* @return the test for this class
*/
public static Test suite() {
- return buildTestSuite(InvalidJava8InterfaceMethodTagTests.class);
+ return buildTestSuite(InvalidJava8InterfaceTagTests.class);
}
- public void testInvalidJava8InterfaceMethodTag1I() {
+ public void testInvalidTagOnNonDefaultInterfaceMethodI() {
x1(true);
}
- public void testInvalidJava8InterfaceMethodTag1F() {
+ public void testInvalidTagOnNonDefaultInterfaceMethodF() {
x1(false);
}
@@ -67,4 +67,26 @@
});
deployTagTest("test1.java", inc, false); //$NON-NLS-1$
}
+
+ public void testInvalidTagsOnFunctionalInterfaceI() {
+ x2(true);
+ }
+
+ public void testInvalidTagsOnFunctionalInterfaceF() {
+ x2(false);
+ }
+
+ /**
+ * Tests that a variety of tags are unsupported on a functional interface
+ */
+ private void x2(boolean inc) {
+ setExpectedProblemIds(getDefaultProblemSet(3));
+ setExpectedMessageArgs(new String[][] {
+ { "@nooverride", BuilderMessages.TagValidator_an_interface }, //$NON-NLS-1$
+ { "@noextend", BuilderMessages.TagValidator_an_interface_method }, //$NON-NLS-1$
+ {
+ "@noimplement", BuilderMessages.TagValidator_an_interface_method } //$NON-NLS-1$
+ });
+ deployTagTest("test2.java", inc, false); //$NON-NLS-1$
+ }
}
diff --git a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/tags/InvalidMethodTagTests.java b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/tags/InvalidMethodTagTests.java
index ad48247..ed9bc07 100644
--- a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/tags/InvalidMethodTagTests.java
+++ b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/tags/InvalidMethodTagTests.java
@@ -22,7 +22,6 @@
import org.eclipse.pde.api.tools.internal.problems.ApiProblemFactory;
import org.eclipse.pde.api.tools.internal.provisional.descriptors.IElementDescriptor;
import org.eclipse.pde.api.tools.internal.provisional.problems.IApiProblem;
-import org.eclipse.pde.api.tools.tests.util.ProjectUtils;
/**
* Test unsupported javadoc tags on methods in classes, interfaces, enums and
@@ -81,9 +80,6 @@
classes.add(InvalidEnumMethodTagTests.class);
classes.add(InvalidClassMethodTagTests.class);
classes.add(InvalidInterfaceMethodTagTests.class);
- if(ProjectUtils.isJava8Compatible()) {
- classes.add(InvalidJava8InterfaceMethodTagTests.class);
- }
return classes.toArray(new Class[classes.size()]);
}
diff --git a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/tags/TagTest.java b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/tags/TagTest.java
index d5658ac..bb1aef5 100644
--- a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/tags/TagTest.java
+++ b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/tags/TagTest.java
@@ -12,6 +12,7 @@
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import java.util.ArrayList;
import junit.framework.Test;
import junit.framework.TestSuite;
@@ -24,6 +25,7 @@
import org.eclipse.pde.api.tools.builder.tests.ApiProblem;
import org.eclipse.pde.api.tools.builder.tests.ApiTestingEnvironment;
import org.eclipse.pde.api.tools.model.tests.TestSuiteHelper;
+import org.eclipse.pde.api.tools.tests.util.ProjectUtils;
/**
* Tests the builder to make sure it correctly finds and reports unsupported tag
@@ -63,15 +65,26 @@
* @return all of the child test classes of this class
*/
private static Class<?>[] getAllTestClasses() {
- Class<?>[] classes = new Class[] {
- InvalidClassTagTests.class, ValidClassTagTests.class,
- InvalidInterfaceTagTests.class, ValidInterfaceTagTests.class,
- InvalidFieldTagTests.class, ValidFieldTagTests.class,
- InvalidMethodTagTests.class, ValidMethodTagTests.class,
- ValidEnumTagTests.class, InvalidEnumTagTests.class,
- ValidAnnotationTagTests.class, InvalidAnnotationTagTests.class,
- InvalidDuplicateTagsTests.class };
- return classes;
+ ArrayList<Class<?>> classes = new ArrayList<Class<?>>();
+ classes.add(InvalidClassTagTests.class);
+ classes.add(ValidClassTagTests.class);
+ classes.add(InvalidInterfaceTagTests.class);
+ classes.add(ValidInterfaceTagTests.class);
+ classes.add(InvalidFieldTagTests.class);
+ classes.add(ValidFieldTagTests.class);
+ classes.add(InvalidMethodTagTests.class);
+ classes.add(ValidMethodTagTests.class);
+ classes.add(ValidEnumTagTests.class);
+ classes.add(InvalidEnumTagTests.class);
+ classes.add(ValidAnnotationTagTests.class);
+ classes.add(InvalidAnnotationTagTests.class);
+ classes.add(InvalidDuplicateTagsTests.class);
+ if (ProjectUtils.isJava8Compatible()) {
+ classes.add(ValidJava8InterfaceTagTests.class);
+ classes.add(InvalidJava8InterfaceTagTests.class);
+ }
+
+ return classes.toArray(new Class<?>[classes.size()]);
}
/**
diff --git a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/tags/ValidJava8IntefaceMethodTagTests.java b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/tags/ValidJava8InterfaceTagTests.java
similarity index 77%
rename from apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/tags/ValidJava8IntefaceMethodTagTests.java
rename to apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/tags/ValidJava8InterfaceTagTests.java
index c88a5d1..da245b2 100644
--- a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/tags/ValidJava8IntefaceMethodTagTests.java
+++ b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/tags/ValidJava8InterfaceTagTests.java
@@ -19,10 +19,10 @@
/**
* Tests valid tags on Java 8 interface methods
*/
-public class ValidJava8IntefaceMethodTagTests extends
+public class ValidJava8InterfaceTagTests extends
ValidInterfaceMethodTagTests {
- public ValidJava8IntefaceMethodTagTests(String name) {
+ public ValidJava8InterfaceTagTests(String name) {
super(name);
}
@@ -45,7 +45,7 @@
* @return the test for this class
*/
public static Test suite() {
- return buildTestSuite(ValidJava8IntefaceMethodTagTests.class);
+ return buildTestSuite(ValidJava8InterfaceTagTests.class);
}
public void testNoOverrideOnDefaultI() {
@@ -62,4 +62,19 @@
private void x1(boolean inc) {
deployTagTest("test1.java", inc, false); //$NON-NLS-1$
}
+
+ public void testValidTagsOnFunctionalInterfaceI() {
+ x2(true);
+ }
+
+ public void testValidTagsOnFunctionalInterfaceF() {
+ x2(false);
+ }
+
+ /**
+ * Tests a variety of tags on a functional interface
+ */
+ private void x2(boolean inc) {
+ deployTagTest("test2.java", inc, false); //$NON-NLS-1$
+ }
}
diff --git a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/tags/ValidMethodTagTests.java b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/tags/ValidMethodTagTests.java
index 6cec867..534703f 100644
--- a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/tags/ValidMethodTagTests.java
+++ b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/tags/ValidMethodTagTests.java
@@ -19,7 +19,6 @@
import org.eclipse.core.runtime.IPath;
import org.eclipse.jdt.core.tests.junit.extension.TestCase;
-import org.eclipse.pde.api.tools.tests.util.ProjectUtils;
/**
* Tests valid javadoc tags on methods in classes, interfaces, enums and
@@ -66,9 +65,6 @@
classes.add(ValidClassMethodTagTests.class);
classes.add(ValidInterfaceMethodTagTests.class);
classes.add(ValidEnumMethodTagTests.class);
- if (ProjectUtils.isJava8Compatible()) {
- classes.add(ValidJava8IntefaceMethodTagTests.class);
- }
return classes.toArray(new Class[classes.size()]);
}
diff --git a/apitools/org.eclipse.pde.api.tools.tests/test-builder/java8/annotations/interface/test1.java b/apitools/org.eclipse.pde.api.tools.tests/test-builder/java8/annotations/interface/test1.java
new file mode 100644
index 0000000..6461c0a
--- /dev/null
+++ b/apitools/org.eclipse.pde.api.tools.tests/test-builder/java8/annotations/interface/test1.java
@@ -0,0 +1,29 @@
+/*******************************************************************************
+ * Copyright (c) 2014 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;
+
+import org.eclipse.pde.api.tools.annotations.NoOverride;
+
+/**
+ * Tests invalid nooverride annotations on nested inner interfaces
+ */
+public interface test1 {
+
+ @NoOverride
+ int m1();
+
+ interface inner {
+ @NoOverride
+ int m1();
+ }
+
+}
+
diff --git a/apitools/org.eclipse.pde.api.tools.tests/test-builder/java8/annotations/interface/test2.java b/apitools/org.eclipse.pde.api.tools.tests/test-builder/java8/annotations/interface/test2.java
new file mode 100644
index 0000000..bac925c
--- /dev/null
+++ b/apitools/org.eclipse.pde.api.tools.tests/test-builder/java8/annotations/interface/test2.java
@@ -0,0 +1,30 @@
+/*******************************************************************************
+ * Copyright (c) 2014 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;
+
+import org.eclipse.pde.api.tools.annotations.*;
+
+/**
+ * Invalid annotations on a functional interface with an inner functional interface
+ */
+@FunctionalInterface
+public interface test2 {
+ @NoOverride
+ int m1();
+
+ @FunctionalInterface
+ interface inner {
+ @NoOverride
+ int m1();
+ }
+}
+
+
diff --git a/apitools/org.eclipse.pde.api.tools.tests/test-builder/java8/annotations/interface/valid/test1.java b/apitools/org.eclipse.pde.api.tools.tests/test-builder/java8/annotations/interface/valid/test1.java
new file mode 100644
index 0000000..5e1bd59
--- /dev/null
+++ b/apitools/org.eclipse.pde.api.tools.tests/test-builder/java8/annotations/interface/valid/test1.java
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2014 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;
+
+import org.eclipse.pde.api.tools.annotations.NoOverride;
+import org.eclipse.pde.api.tools.annotations.NoReference;
+
+/**
+ * Test valid annotations on an interface default method
+ */
+public interface test1 {
+
+ @NoReference
+ @NoOverride
+ default int m1() {
+ return 1;
+ }
+
+ interface inner {
+ @NoReference
+ @NoOverride
+ default int m1() {
+ return 1;
+ }
+ }
+}
diff --git a/apitools/org.eclipse.pde.api.tools.tests/test-builder/java8/annotations/interface/valid/test2.java b/apitools/org.eclipse.pde.api.tools.tests/test-builder/java8/annotations/interface/valid/test2.java
new file mode 100644
index 0000000..a539635
--- /dev/null
+++ b/apitools/org.eclipse.pde.api.tools.tests/test-builder/java8/annotations/interface/valid/test2.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2014 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;
+
+import org.eclipse.pde.api.tools.annotations.*;
+
+/**
+ * Valid annotations on a functional interface with an inner functional interface
+ */
+@NoImplement
+@NoExtend
+@NoReference
+@FunctionalInterface
+public interface test2 {
+ @NoReference
+ int m1();
+
+ @FunctionalInterface
+ interface inner {
+ @NoReference
+ int m1();
+ }
+}
+
+
diff --git a/apitools/org.eclipse.pde.api.tools.tests/test-builder/java8/tags/interface/test2.java b/apitools/org.eclipse.pde.api.tools.tests/test-builder/java8/tags/interface/test2.java
new file mode 100644
index 0000000..f469c07
--- /dev/null
+++ b/apitools/org.eclipse.pde.api.tools.tests/test-builder/java8/tags/interface/test2.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2014 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;
+
+/**
+ * Invalid tags on a functional interface with an inner functional interface
+ * @nooverride
+ */
+@FunctionalInterface
+public interface test2 {
+ /**
+ * @noextend
+ */
+ int m1();
+
+ @FunctionalInterface
+ interface inner {
+ /**
+ * @noimplement
+ */
+ int m1();
+ }
+}
+
+
diff --git a/apitools/org.eclipse.pde.api.tools.tests/test-builder/java8/tags/interface/valid/test2.java b/apitools/org.eclipse.pde.api.tools.tests/test-builder/java8/tags/interface/valid/test2.java
new file mode 100644
index 0000000..4c47335
--- /dev/null
+++ b/apitools/org.eclipse.pde.api.tools.tests/test-builder/java8/tags/interface/valid/test2.java
@@ -0,0 +1,35 @@
+/*******************************************************************************
+ * Copyright (c) 2014 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;
+
+/**
+ * Valid annotations on a functional interface with an inner functional interface
+ * @noimplement
+ * @noextend
+ * @noreference
+ */
+@FunctionalInterface
+public interface test2 {
+ /**
+ * @noreference
+ */
+ int m1();
+
+ @FunctionalInterface
+ interface inner {
+ /**
+ * @noreference
+ */
+ int m1();
+ }
+}
+
+