aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/org/zwobble/couscous/frontends/java/JavaTypes.java2
-rw-r--r--src/main/java/org/zwobble/couscous/util/ExtraSets.java4
-rw-r--r--src/test/java/org/zwobble/couscous/tests/frontends/java/JavaReaderTests.java13
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 {" +