diff options
| author | Michael Williamson <mike@zwobble.org> | 2026-08-10 10:19:49 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2026-08-10 10:19:49 +0100 |
| commit | 5113f2157c5aa257ad7ebf555cb6a551701d169a (patch) | |
| tree | 8ddaee09f6c43b0529b2203f9e662a028fb5fcc0 /examples/05-inductive-data-types | |
| parent | 5d41166750e0f05da436bf30c7a642749f7a71c5 (diff) | |
Add generic struct example without any outputs
Diffstat (limited to 'examples/05-inductive-data-types')
12 files changed, 0 insertions, 155 deletions
diff --git a/examples/05-inductive-data-types/hobgoblin.json5 b/examples/05-inductive-data-types/hobgoblin.json5 deleted file mode 100644 index 12713d4..0000000 --- a/examples/05-inductive-data-types/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/05-inductive-data-types/output/java/.gitignore b/examples/05-inductive-data-types/output/java/.gitignore deleted file mode 100644 index ff511d4..0000000 --- a/examples/05-inductive-data-types/output/java/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -/src/gen/ -/target/ diff --git a/examples/05-inductive-data-types/output/java/pom.xml b/examples/05-inductive-data-types/output/java/pom.xml deleted file mode 120000 index 445fa65..0000000 --- a/examples/05-inductive-data-types/output/java/pom.xml +++ /dev/null @@ -1 +0,0 @@ -../../../templates/java-junit/pom.xml
\ No newline at end of file diff --git a/examples/05-inductive-data-types/output/java/src/main/java/org/zwobble/example/Arithmetic.java b/examples/05-inductive-data-types/output/java/src/main/java/org/zwobble/example/Arithmetic.java deleted file mode 100644 index 08cb75c..0000000 --- a/examples/05-inductive-data-types/output/java/src/main/java/org/zwobble/example/Arithmetic.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.zwobble.example; - -import org.zwobble.example.types.arithmetic.Add; -import org.zwobble.example.types.arithmetic.Const; -import org.zwobble.example.types.arithmetic.Expression; - -public class Arithmetic { - public static int eval(Expression expression) { - return switch (expression) { - case Add(var left, var right) -> - eval(left) + eval(right); - - case Const(var value) -> - value; - }; - } -} diff --git a/examples/05-inductive-data-types/output/java/src/test/java/org/zwobble/example/ArithmeticTests.java b/examples/05-inductive-data-types/output/java/src/test/java/org/zwobble/example/ArithmeticTests.java deleted file mode 100644 index cd4fdd0..0000000 --- a/examples/05-inductive-data-types/output/java/src/test/java/org/zwobble/example/ArithmeticTests.java +++ /dev/null @@ -1,24 +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.arithmetic.Add; -import org.zwobble.example.types.arithmetic.Const; -import org.zwobble.example.types.arithmetic.Expression; - -public class ArithmeticTests { - @Test - public void eval() { - Expression expression = new Add( - new Add( - new Const(42), - new Const(47) - ), - new Const(52) - ); - - int result = Arithmetic.eval(expression); - - assertEquals(result, 141); - } -} diff --git a/examples/05-inductive-data-types/output/rust/.gitignore b/examples/05-inductive-data-types/output/rust/.gitignore deleted file mode 100644 index ea8c4bf..0000000 --- a/examples/05-inductive-data-types/output/rust/.gitignore +++ /dev/null @@ -1 +0,0 @@ -/target diff --git a/examples/05-inductive-data-types/output/rust/Cargo.lock b/examples/05-inductive-data-types/output/rust/Cargo.lock deleted file mode 100644 index 9dc6e3e..0000000 --- a/examples/05-inductive-data-types/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/05-inductive-data-types/output/rust/Cargo.toml b/examples/05-inductive-data-types/output/rust/Cargo.toml deleted file mode 100644 index 5d4c622..0000000 --- a/examples/05-inductive-data-types/output/rust/Cargo.toml +++ /dev/null @@ -1,6 +0,0 @@ -[package] -name = "example" -version = "0.1.0" -edition = "2024" - -[dependencies] diff --git a/examples/05-inductive-data-types/output/rust/rust-toolchain.toml b/examples/05-inductive-data-types/output/rust/rust-toolchain.toml deleted file mode 100644 index 4fedb95..0000000 --- a/examples/05-inductive-data-types/output/rust/rust-toolchain.toml +++ /dev/null @@ -1,2 +0,0 @@ -[toolchain] -channel = "1.96" diff --git a/examples/05-inductive-data-types/output/rust/src/arithmetic.rs b/examples/05-inductive-data-types/output/rust/src/arithmetic.rs deleted file mode 100644 index 248d2c1..0000000 --- a/examples/05-inductive-data-types/output/rust/src/arithmetic.rs +++ /dev/null @@ -1,30 +0,0 @@ -// Generated by hobgoblin. - -#[derive(Clone, Debug, Hash, PartialEq)] -pub enum Expression { - Add(::std::boxed::Box::<crate::arithmetic::Add>), - Const(crate::arithmetic::Const), -} - -impl ::std::convert::From::<crate::arithmetic::Add> for crate::arithmetic::Expression { - fn from(value: crate::arithmetic::Add) -> Self { - Self::Add(::std::boxed::Box::new(value)) - } -} - -impl ::std::convert::From::<crate::arithmetic::Const> for crate::arithmetic::Expression { - fn from(value: crate::arithmetic::Const) -> Self { - Self::Const(value) - } -} - -#[derive(Clone, Debug, Hash, PartialEq)] -pub struct Add { - pub left: crate::arithmetic::Expression, - pub right: crate::arithmetic::Expression, -} - -#[derive(Clone, Debug, Hash, PartialEq)] -pub struct Const { - pub value: ::core::primitive::i32, -} diff --git a/examples/05-inductive-data-types/output/rust/src/lib.rs b/examples/05-inductive-data-types/output/rust/src/lib.rs deleted file mode 100644 index 3265e69..0000000 --- a/examples/05-inductive-data-types/output/rust/src/lib.rs +++ /dev/null @@ -1,33 +0,0 @@ -mod arithmetic; - -use arithmetic::{Const, Expression}; - -fn eval(expression: &Expression) -> i32 { - match expression { - Expression::Add(add) => - eval(&add.left) + eval(&add.right), - - Expression::Const(Const { value }) => - *value, - } -} - -#[cfg(test)] -mod test { - use super::arithmetic::{Add, Const, Expression}; - - #[test] - fn eval() { - let expression: Expression = Add { - left: Add { - left: Const { value: 42 }.into(), - right: Const { value: 47 }.into(), - }.into(), - right: Const { value: 52 }.into(), - }.into(); - - let result = super::eval(&expression); - - assert_eq!(result, 141); - } -} diff --git a/examples/05-inductive-data-types/src/arithmetic.hob b/examples/05-inductive-data-types/src/arithmetic.hob deleted file mode 100644 index d3b2051..0000000 --- a/examples/05-inductive-data-types/src/arithmetic.hob +++ /dev/null @@ -1,13 +0,0 @@ -sum Expression { - variant Box[Add]; - variant Const; -} - -struct Add { - field left: Expression; - field right: Expression; -} - -struct Const { - field value: Int32; -} |
