From f01484b73485e504dd0dae05064412e7bffd7415 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sun, 28 Feb 2016 14:21:18 +0000 Subject: Ensure superclass is first in super type collection --- .../java/org/zwobble/couscous/frontends/java/JavaTypes.java | 2 +- src/main/java/org/zwobble/couscous/util/ExtraSets.java | 4 ++++ .../couscous/tests/frontends/java/JavaReaderTests.java | 13 +++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) 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 superTypes(ITypeBinding typeBinding) { ImmutableSet.Builder 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 Set set(T value1) { return ImmutableSet.of(value1); } + + public static Set 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; @@ -312,6 +313,18 @@ public class JavaReaderTests { assertEquals(set(ObjectValues.OBJECT), classNode.getSuperTypes()); } + @Test + public void canReadInterfaceWithSuperTypes() { + String source = "package com.example;" + + "public interface Example extends java.util.function.IntSupplier {}"; + List 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;" + -- cgit v1.2.3