diff options
| author | Michael Williamson <mike@zwobble.org> | 2016-02-28 14:21:18 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2016-02-28 14:21:18 +0000 |
| commit | f01484b73485e504dd0dae05064412e7bffd7415 (patch) | |
| tree | ff7b3e021b6112ba651bca54ad7b0547247447df /src | |
| parent | 74c98ef82b94abe7fe7548766471b8e43c149504 (diff) | |
Ensure superclass is first in super type collection
Diffstat (limited to 'src')
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 {" + |
