diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-09-17 17:23:02 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-09-17 17:23:02 +0100 |
| commit | d6c6abb4e28f851969a40ff207648308be031090 (patch) | |
| tree | 750e16ade3e4bb55aba08fd78fbef3614ba80c9d /src | |
| parent | 3a139894dab4b6e4d7c3bf97ed97a90665d9d6df (diff) | |
Add proper description for tuple types
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/types/TupleType.java | 7 | ||||
| -rw-r--r-- | src/test/java/org/shedlang/compiler/types/TupleTypeTests.java | 23 |
2 files changed, 28 insertions, 2 deletions
diff --git a/src/main/java/org/shedlang/compiler/types/TupleType.java b/src/main/java/org/shedlang/compiler/types/TupleType.java index a2eeb0b0..2d97b469 100644 --- a/src/main/java/org/shedlang/compiler/types/TupleType.java +++ b/src/main/java/org/shedlang/compiler/types/TupleType.java @@ -1,6 +1,7 @@ package org.shedlang.compiler.types; import java.util.List; +import java.util.stream.Collectors; /** * A tuple type, representing tuples with elements of the given types. @@ -8,8 +9,10 @@ import java.util.List; public record TupleType(List<Type> elements) implements Type { @Override public String describe() { - // TODO: finish this - return "Tuple"; + var elementsString = elements.stream() + .map(element -> element.describe()) + .collect(Collectors.joining(", ")); + return "#(" + elementsString + ")"; } @Override diff --git a/src/test/java/org/shedlang/compiler/types/TupleTypeTests.java b/src/test/java/org/shedlang/compiler/types/TupleTypeTests.java new file mode 100644 index 00000000..31137214 --- /dev/null +++ b/src/test/java/org/shedlang/compiler/types/TupleTypeTests.java @@ -0,0 +1,23 @@ +package org.shedlang.compiler.types; + +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static org.zwobble.precisely.AssertThat.assertThat; +import static org.zwobble.precisely.Matchers.equalTo; + +public class TupleTypeTests { + @Test + public void descriptionOfTupleTypeIncludesDescriptionOfElements() { + var tupleType = new TupleType(List.of( + Types.STRING, + Types.BOOL, + Types.INT + )); + + var result = tupleType.describe(); + + assertThat(result, equalTo("#(String, Bool, Int)")); + } +} |
