From cea82209e5aa312f4a513308c148d3e944004cb4 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Thu, 17 Mar 2016 22:33:15 +0000 Subject: Improve support for generics --- .../java/org/zwobble/couscous/tests/CompilerTests.java | 12 ++++++++++++ .../org/zwobble/couscous/tests/JavaToInterpreterTests.java | 7 +++++++ .../couscous/tests/backends/csharp/JavaToCsharpTests.java | 7 +++++++ .../com/example/Box.java | 6 ++++++ .../com/example/BoxImpl.java | 14 ++++++++++++++ .../com/example/GenericInterface.java | 10 ++++++++++ 6 files changed, 56 insertions(+) create mode 100644 src/test/resources/java/generic-interface-non-generic-methods/com/example/Box.java create mode 100644 src/test/resources/java/generic-interface-non-generic-methods/com/example/BoxImpl.java create mode 100644 src/test/resources/java/generic-interface-non-generic-methods/com/example/GenericInterface.java (limited to 'src/test') diff --git a/src/test/java/org/zwobble/couscous/tests/CompilerTests.java b/src/test/java/org/zwobble/couscous/tests/CompilerTests.java index 9fbbb73..7e4f2b5 100644 --- a/src/test/java/org/zwobble/couscous/tests/CompilerTests.java +++ b/src/test/java/org/zwobble/couscous/tests/CompilerTests.java @@ -206,6 +206,18 @@ public abstract class CompilerTests { StringValue.REF)); } + @Test + public void genericInterfacesCanHaveMethodsWithoutGenericReturnType() throws Exception { + assertEquals( + value("Hello"), + execTestProgram( + "generic-interface-non-generic-methods", + ScalarType.of("com.example.GenericInterface"), + "value", + list(), + StringValue.REF)); + } + @Test public void staticMethodOverloads() throws Exception { assertEquals( diff --git a/src/test/java/org/zwobble/couscous/tests/JavaToInterpreterTests.java b/src/test/java/org/zwobble/couscous/tests/JavaToInterpreterTests.java index e0cd72e..5072859 100644 --- a/src/test/java/org/zwobble/couscous/tests/JavaToInterpreterTests.java +++ b/src/test/java/org/zwobble/couscous/tests/JavaToInterpreterTests.java @@ -1,6 +1,8 @@ package org.zwobble.couscous.tests; import com.google.common.collect.ImmutableList; +import org.junit.Ignore; +import org.junit.Test; import org.zwobble.couscous.ast.types.ScalarType; import org.zwobble.couscous.ast.TypeNode; import org.zwobble.couscous.frontends.java.JavaFrontend; @@ -19,6 +21,11 @@ import static com.google.common.collect.Iterables.transform; import static org.zwobble.couscous.util.ExtraLists.list; public class JavaToInterpreterTests extends CompilerTests { + @Test + @Ignore("WIP") + public void genericInterfacesCanHaveMethodsWithoutGenericReturnType() throws Exception { + } + @Override protected PrimitiveValue execProgram( Path directory, diff --git a/src/test/java/org/zwobble/couscous/tests/backends/csharp/JavaToCsharpTests.java b/src/test/java/org/zwobble/couscous/tests/backends/csharp/JavaToCsharpTests.java index ad0da0b..799ea91 100644 --- a/src/test/java/org/zwobble/couscous/tests/backends/csharp/JavaToCsharpTests.java +++ b/src/test/java/org/zwobble/couscous/tests/backends/csharp/JavaToCsharpTests.java @@ -1,5 +1,7 @@ package org.zwobble.couscous.tests.backends.csharp; +import org.junit.Ignore; +import org.junit.Test; import org.zwobble.couscous.CouscousCompiler; import org.zwobble.couscous.ast.types.ScalarType; import org.zwobble.couscous.backends.csharp.CsharpBackend; @@ -16,6 +18,11 @@ import static org.zwobble.couscous.tests.util.ExtraFiles.deleteRecursively; import static org.zwobble.couscous.util.ExtraLists.list; public class JavaToCsharpTests extends CompilerTests { + @Test + @Ignore("WIP") + public void genericInterfacesCanHaveMethodsWithoutGenericReturnType() throws Exception { + } + protected PrimitiveValue execProgram( Path directory, ScalarType type, diff --git a/src/test/resources/java/generic-interface-non-generic-methods/com/example/Box.java b/src/test/resources/java/generic-interface-non-generic-methods/com/example/Box.java new file mode 100644 index 0000000..ff226fe --- /dev/null +++ b/src/test/resources/java/generic-interface-non-generic-methods/com/example/Box.java @@ -0,0 +1,6 @@ +package com.example; + +public interface Box { + T get(); + void set(T value); +} diff --git a/src/test/resources/java/generic-interface-non-generic-methods/com/example/BoxImpl.java b/src/test/resources/java/generic-interface-non-generic-methods/com/example/BoxImpl.java new file mode 100644 index 0000000..c34b5f7 --- /dev/null +++ b/src/test/resources/java/generic-interface-non-generic-methods/com/example/BoxImpl.java @@ -0,0 +1,14 @@ +package com.example; + +public class BoxImpl implements Box { + private T value; + + public T get() { + return value; + } + + public void set(T value) { + this.value = value; + } +} + diff --git a/src/test/resources/java/generic-interface-non-generic-methods/com/example/GenericInterface.java b/src/test/resources/java/generic-interface-non-generic-methods/com/example/GenericInterface.java new file mode 100644 index 0000000..8ddf1fa --- /dev/null +++ b/src/test/resources/java/generic-interface-non-generic-methods/com/example/GenericInterface.java @@ -0,0 +1,10 @@ +package com.example; + +public class GenericInterface { + public static String value() { + Box box = new BoxImpl<>(); + box.set("Hello"); + + return box.get(); + } +} -- cgit v1.2.3