From 578bf1f04b48f48225cfa794a27426cca4f6384a Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 31 Jul 2026 10:50:10 +0100 Subject: Support singleton structs --- examples/02-sum/hobgoblin.json5 | 19 ------------- examples/02-sum/output/java/.gitignore | 2 -- examples/02-sum/output/java/pom.xml | 1 - .../src/main/java/org/zwobble/example/Shapes.java | 17 ------------ .../test/java/org/zwobble/example/ShapesTests.java | 23 ---------------- examples/02-sum/output/rust/.gitignore | 1 - examples/02-sum/output/rust/Cargo.lock | 7 ----- examples/02-sum/output/rust/Cargo.toml | 6 ---- examples/02-sum/output/rust/rust-toolchain.toml | 2 -- examples/02-sum/output/rust/src/lib.rs | 29 -------------------- examples/02-sum/output/rust/src/shapes.rs | 32 ---------------------- examples/02-sum/src/shapes.hob | 17 ------------ 12 files changed, 156 deletions(-) delete mode 100644 examples/02-sum/hobgoblin.json5 delete mode 100644 examples/02-sum/output/java/.gitignore delete mode 120000 examples/02-sum/output/java/pom.xml delete mode 100644 examples/02-sum/output/java/src/main/java/org/zwobble/example/Shapes.java delete mode 100644 examples/02-sum/output/java/src/test/java/org/zwobble/example/ShapesTests.java delete mode 100644 examples/02-sum/output/rust/.gitignore delete mode 100644 examples/02-sum/output/rust/Cargo.lock delete mode 100644 examples/02-sum/output/rust/Cargo.toml delete mode 100644 examples/02-sum/output/rust/rust-toolchain.toml delete mode 100644 examples/02-sum/output/rust/src/lib.rs delete mode 100644 examples/02-sum/output/rust/src/shapes.rs delete mode 100644 examples/02-sum/src/shapes.hob (limited to 'examples/02-sum') diff --git a/examples/02-sum/hobgoblin.json5 b/examples/02-sum/hobgoblin.json5 deleted file mode 100644 index 12713d4..0000000 --- a/examples/02-sum/hobgoblin.json5 +++ /dev/null @@ -1,19 +0,0 @@ -{ - outputs: { - langs: { - java: { - packageName: "org.zwobble.example.types", - }, - }, - generators: [ - { - generator: "java-types", - path: "output/java/src/gen/java", - }, - { - generator: "rust-types", - path: "output/rust/src", - }, - ], - }, -} diff --git a/examples/02-sum/output/java/.gitignore b/examples/02-sum/output/java/.gitignore deleted file mode 100644 index ff511d4..0000000 --- a/examples/02-sum/output/java/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/src/gen/ -/target/ diff --git a/examples/02-sum/output/java/pom.xml b/examples/02-sum/output/java/pom.xml deleted file mode 120000 index 445fa65..0000000 --- a/examples/02-sum/output/java/pom.xml +++ /dev/null @@ -1 +0,0 @@ -../../../templates/java-junit/pom.xml \ No newline at end of file diff --git a/examples/02-sum/output/java/src/main/java/org/zwobble/example/Shapes.java b/examples/02-sum/output/java/src/main/java/org/zwobble/example/Shapes.java deleted file mode 100644 index a6a468f..0000000 --- a/examples/02-sum/output/java/src/main/java/org/zwobble/example/Shapes.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.zwobble.example; - -import org.zwobble.example.types.shapes.Shape; -import org.zwobble.example.types.shapes.Rectangle; -import org.zwobble.example.types.shapes.Triangle; - -public class Shapes { - public static int area(Shape shape) { - return switch (shape) { - case Rectangle(var width, var height) -> - width * height; - - case Triangle(var width, var height) -> - width * height / 2; - }; - } -} diff --git a/examples/02-sum/output/java/src/test/java/org/zwobble/example/ShapesTests.java b/examples/02-sum/output/java/src/test/java/org/zwobble/example/ShapesTests.java deleted file mode 100644 index 893a544..0000000 --- a/examples/02-sum/output/java/src/test/java/org/zwobble/example/ShapesTests.java +++ /dev/null @@ -1,23 +0,0 @@ -package org.zwobble.example; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import org.junit.jupiter.api.Test; -import org.zwobble.example.types.shapes.Shape; -import org.zwobble.example.types.shapes.Rectangle; -import org.zwobble.example.types.shapes.Triangle; - -public class ShapesTests { - @Test - public void rectangle() { - Shape rectangle = new Rectangle(10, 25); - int area = Shapes.area(rectangle); - assertEquals(area, 250); - } - - @Test - public void triangle() { - Shape triangle = new Triangle(10, 25); - int area = Shapes.area(triangle); - assertEquals(area, 125); - } -} diff --git a/examples/02-sum/output/rust/.gitignore b/examples/02-sum/output/rust/.gitignore deleted file mode 100644 index ea8c4bf..0000000 --- a/examples/02-sum/output/rust/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/target diff --git a/examples/02-sum/output/rust/Cargo.lock b/examples/02-sum/output/rust/Cargo.lock deleted file mode 100644 index 9dc6e3e..0000000 --- a/examples/02-sum/output/rust/Cargo.lock +++ /dev/null @@ -1,7 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 4 - -[[package]] -name = "example" -version = "0.1.0" diff --git a/examples/02-sum/output/rust/Cargo.toml b/examples/02-sum/output/rust/Cargo.toml deleted file mode 100644 index 5d4c622..0000000 --- a/examples/02-sum/output/rust/Cargo.toml +++ /dev/null @@ -1,6 +0,0 @@ -[package] -name = "example" -version = "0.1.0" -edition = "2024" - -[dependencies] diff --git a/examples/02-sum/output/rust/rust-toolchain.toml b/examples/02-sum/output/rust/rust-toolchain.toml deleted file mode 100644 index 4fedb95..0000000 --- a/examples/02-sum/output/rust/rust-toolchain.toml +++ /dev/null @@ -1,2 +0,0 @@ -[toolchain] -channel = "1.96" diff --git a/examples/02-sum/output/rust/src/lib.rs b/examples/02-sum/output/rust/src/lib.rs deleted file mode 100644 index f961002..0000000 --- a/examples/02-sum/output/rust/src/lib.rs +++ /dev/null @@ -1,29 +0,0 @@ -mod shapes; - -use shapes::{Rectangle, Shape, Triangle}; - -fn area(shape: &Shape) -> i32 { - match shape { - Shape::Rectangle(rectangle) => rectangle.width * rectangle.height, - Shape::Triangle(triangle) => triangle.width * triangle.height / 2, - } -} - -#[cfg(test)] -mod test { - use super::shapes::{Rectangle, Shape, Triangle}; - - #[test] - fn rectangle() { - let rectangle = Shape::Rectangle(Rectangle { width: 10, height: 25 }); - let area = super::area(&rectangle); - assert_eq!(area, 250); - } - - #[test] - fn triangle() { - let triangle = Shape::Triangle(Triangle { width: 10, height: 25 }); - let area = super::area(&triangle); - assert_eq!(area, 125); - } -} diff --git a/examples/02-sum/output/rust/src/shapes.rs b/examples/02-sum/output/rust/src/shapes.rs deleted file mode 100644 index a0a9b7f..0000000 --- a/examples/02-sum/output/rust/src/shapes.rs +++ /dev/null @@ -1,32 +0,0 @@ -// Generated by hobgoblin. - -/// A 2D shape. -#[derive(Debug, Hash, PartialEq)] -pub enum Shape { - Rectangle(crate::shapes::Rectangle), - Triangle(crate::shapes::Triangle), -} - -impl ::std::convert::From:: for crate::shapes::Shape { - fn from(value: crate::shapes::Rectangle) -> Self { - Self::Rectangle(value) - } -} - -impl ::std::convert::From:: for crate::shapes::Shape { - fn from(value: crate::shapes::Triangle) -> Self { - Self::Triangle(value) - } -} - -#[derive(Debug, Hash, PartialEq)] -pub struct Rectangle { - pub width: ::core::primitive::i32, - pub height: ::core::primitive::i32, -} - -#[derive(Debug, Hash, PartialEq)] -pub struct Triangle { - pub width: ::core::primitive::i32, - pub height: ::core::primitive::i32, -} diff --git a/examples/02-sum/src/shapes.hob b/examples/02-sum/src/shapes.hob deleted file mode 100644 index 03a727a..0000000 --- a/examples/02-sum/src/shapes.hob +++ /dev/null @@ -1,17 +0,0 @@ -/// A 2D shape. -sum Shape { - variant Rectangle; - variant Triangle; - - field width: Int32; -} - -struct Rectangle { - field width: Int32; - field height: Int32; -} - -struct Triangle { - field width: Int32; - field height: Int32; -} -- cgit v1.2.3