diff options
3 files changed, 18 insertions, 1 deletions
diff --git a/src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java b/src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java index 19a9126..226e05d 100644 --- a/src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java +++ b/src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java @@ -44,10 +44,10 @@ class JavaTypes { private static Set<TypeName> superTypes(ITypeBinding typeBinding) { ImmutableSet.Builder<TypeName> superTypes = ImmutableSet.builder(); + superTypes.add(superClass(typeBinding)); superTypes.addAll(transform( asList(typeBinding.getInterfaces()), JavaTypes::typeOf)); - superTypes.add(superClass(typeBinding)); return superTypes.build(); } diff --git a/src/main/java/org/zwobble/couscous/util/ExtraSets.java b/src/main/java/org/zwobble/couscous/util/ExtraSets.java index ab3dd16..3012da5 100644 --- a/src/main/java/org/zwobble/couscous/util/ExtraSets.java +++ b/src/main/java/org/zwobble/couscous/util/ExtraSets.java @@ -14,4 +14,8 @@ public class ExtraSets { public static <T> Set<T> set(T value1) { return ImmutableSet.of(value1); } + + public static <T> Set<T> set(T value1, T value2) { + return ImmutableSet.of(value1, value2); + } } diff --git a/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java b/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java index 454dda7..ca2869c 100644 --- a/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java +++ b/src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java @@ -8,6 +8,7 @@ import org.zwobble.couscous.values.StringValue; import java.util.List; +import static org.hamcrest.Matchers.contains; import static org.hamcrest.Matchers.hasSize; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; @@ -313,6 +314,18 @@ public class JavaReaderTests { } @Test + public void canReadInterfaceWithSuperTypes() { + String source = "package com.example;" + + "public interface Example extends java.util.function.IntSupplier {}"; + List<TypeNode> classes = readSource("com/example/Example.java", source); + assertThat(classes, hasSize(1)); + InterfaceNode classNode = (InterfaceNode) classes.get(0); + assertEquals(TypeName.of("com.example.Example"), classNode.getName()); + assertEquals(list(), classNode.getMethods()); + assertThat(classNode.getSuperTypes(), contains(ObjectValues.OBJECT, TypeName.of("java.util.function.IntSupplier"))); + } + + @Test public void canReadInterfaceWithMethod() { String source = "package com.example;" + "public interface Example {" + |
