aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Stein <sormuras@gmail.com>2016-07-24 11:53:53 +0200
committerChristian Stein <sormuras@gmail.com>2016-07-24 13:17:49 +0200
commitfdaefdb063880bd83774999b99b3ac910f6ead28 (patch)
tree5190a7d67663cbcd47338ef802845e05e5877e87 /src
parent932695e9f03df31c7ec95c200c5a3d8fd7a0bc28 (diff)
downloadjavapoet-fdaefdb063880bd83774999b99b3ac910f6ead28.tar.gz
Remove DEFAULT modifier from overridden method. #480
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/squareup/javapoet/MethodSpec.java1
-rw-r--r--src/test/java/com/squareup/javapoet/MethodSpecTest.java18
2 files changed, 19 insertions, 0 deletions
diff --git a/src/main/java/com/squareup/javapoet/MethodSpec.java b/src/main/java/com/squareup/javapoet/MethodSpec.java
index 1aa147f..ac3cff3 100644
--- a/src/main/java/com/squareup/javapoet/MethodSpec.java
+++ b/src/main/java/com/squareup/javapoet/MethodSpec.java
@@ -207,6 +207,7 @@ public final class MethodSpec {
modifiers = new LinkedHashSet<>(modifiers);
modifiers.remove(Modifier.ABSTRACT);
+ modifiers.remove(Util.DEFAULT); // LinkedHashSet permits null as element for Java 7
methodBuilder.addModifiers(modifiers);
for (TypeParameterElement typeParameterElement : method.getTypeParameters()) {
diff --git a/src/test/java/com/squareup/javapoet/MethodSpecTest.java b/src/test/java/com/squareup/javapoet/MethodSpecTest.java
index 2a6cbb2..e194e2b 100644
--- a/src/test/java/com/squareup/javapoet/MethodSpecTest.java
+++ b/src/test/java/com/squareup/javapoet/MethodSpecTest.java
@@ -39,6 +39,7 @@ import org.junit.Test;
import static com.google.common.collect.Iterables.getOnlyElement;
import static com.google.common.truth.Truth.assertThat;
+import static com.google.common.truth.TruthJUnit.assume;
import static javax.lang.model.util.ElementFilter.methodsIn;
import static org.junit.Assert.fail;
import static org.mockito.Mockito.mock;
@@ -119,6 +120,9 @@ public final class MethodSpecTest {
interface ExtendsOthers extends Callable<Integer>, Comparable<Long> {
}
+
+ interface ExtendsIterableWithDefaultMethods extends Iterable<Object> {
+ }
@Test public void overrideEverything() {
TypeElement classElement = getElement(Everything.class);
@@ -145,6 +149,20 @@ public final class MethodSpecTest {
+ "}\n");
}
+ @Test public void overrideDoesNotCopyDefaultModifier() {
+ TypeElement classElement = getElement(ExtendsIterableWithDefaultMethods.class);
+ DeclaredType classType = (DeclaredType) classElement.asType();
+ List<ExecutableElement> methods = methodsIn(elements.getAllMembers(classElement));
+ ExecutableElement exec = findFirst(methods, "iterator");
+ assume().that(Util.DEFAULT).isNotNull();
+ exec = findFirst(methods, "spliterator");
+ MethodSpec method = MethodSpec.overriding(exec, classType, types).build();
+ assertThat(method.toString()).isEqualTo(""
+ + "@java.lang.Override\n"
+ + "public java.util.Spliterator<java.lang.Object> spliterator() {\n"
+ + "}\n");
+ }
+
@Test public void overrideExtendsOthersWorksWithActualTypeParameters() {
TypeElement classElement = getElement(ExtendsOthers.class);
DeclaredType classType = (DeclaredType) classElement.asType();