summaryrefslogtreecommitdiff
path: root/examples/05-inductive-data-types-separate-namespaces
diff options
context:
space:
mode:
Diffstat (limited to 'examples/05-inductive-data-types-separate-namespaces')
-rw-r--r--examples/05-inductive-data-types-separate-namespaces/hobgoblin.json519
-rw-r--r--examples/05-inductive-data-types-separate-namespaces/output/java/.gitignore2
l---------examples/05-inductive-data-types-separate-namespaces/output/java/pom.xml1
-rw-r--r--examples/05-inductive-data-types-separate-namespaces/output/java/src/test/java/org/zwobble/example/DataTests.java14
-rw-r--r--examples/05-inductive-data-types-separate-namespaces/output/rust/.gitignore1
-rw-r--r--examples/05-inductive-data-types-separate-namespaces/output/rust/Cargo.lock7
-rw-r--r--examples/05-inductive-data-types-separate-namespaces/output/rust/Cargo.toml6
-rw-r--r--examples/05-inductive-data-types-separate-namespaces/output/rust/rust-toolchain.toml2
-rw-r--r--examples/05-inductive-data-types-separate-namespaces/output/rust/src/data/a.rs17
-rw-r--r--examples/05-inductive-data-types-separate-namespaces/output/rust/src/data/b.rs6
-rw-r--r--examples/05-inductive-data-types-separate-namespaces/output/rust/src/data/mod.rs2
-rw-r--r--examples/05-inductive-data-types-separate-namespaces/output/rust/src/lib.rs15
-rw-r--r--examples/05-inductive-data-types-separate-namespaces/src/data/a.hob9
-rw-r--r--examples/05-inductive-data-types-separate-namespaces/src/data/b.hob5
14 files changed, 106 insertions, 0 deletions
diff --git a/examples/05-inductive-data-types-separate-namespaces/hobgoblin.json5 b/examples/05-inductive-data-types-separate-namespaces/hobgoblin.json5
new file mode 100644
index 0000000..12713d4
--- /dev/null
+++ b/examples/05-inductive-data-types-separate-namespaces/hobgoblin.json5
@@ -0,0 +1,19 @@
+{
+ 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-separate-namespaces/output/java/.gitignore b/examples/05-inductive-data-types-separate-namespaces/output/java/.gitignore
new file mode 100644
index 0000000..ff511d4
--- /dev/null
+++ b/examples/05-inductive-data-types-separate-namespaces/output/java/.gitignore
@@ -0,0 +1,2 @@
+/src/gen/
+/target/
diff --git a/examples/05-inductive-data-types-separate-namespaces/output/java/pom.xml b/examples/05-inductive-data-types-separate-namespaces/output/java/pom.xml
new file mode 120000
index 0000000..445fa65
--- /dev/null
+++ b/examples/05-inductive-data-types-separate-namespaces/output/java/pom.xml
@@ -0,0 +1 @@
+../../../templates/java-junit/pom.xml \ No newline at end of file
diff --git a/examples/05-inductive-data-types-separate-namespaces/output/java/src/test/java/org/zwobble/example/DataTests.java b/examples/05-inductive-data-types-separate-namespaces/output/java/src/test/java/org/zwobble/example/DataTests.java
new file mode 100644
index 0000000..f01bf0a
--- /dev/null
+++ b/examples/05-inductive-data-types-separate-namespaces/output/java/src/test/java/org/zwobble/example/DataTests.java
@@ -0,0 +1,14 @@
+package org.zwobble.example;
+
+import java.util.Optional;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import org.junit.jupiter.api.Test;
+import org.zwobble.example.types.data.a.A1;
+import org.zwobble.example.types.data.b.B;
+
+public class DataTests {
+ @Test
+ public void data() {
+ var data = new A1(Optional.of(new B(Optional.of(new A1(Optional.empty())))));
+ }
+}
diff --git a/examples/05-inductive-data-types-separate-namespaces/output/rust/.gitignore b/examples/05-inductive-data-types-separate-namespaces/output/rust/.gitignore
new file mode 100644
index 0000000..ea8c4bf
--- /dev/null
+++ b/examples/05-inductive-data-types-separate-namespaces/output/rust/.gitignore
@@ -0,0 +1 @@
+/target
diff --git a/examples/05-inductive-data-types-separate-namespaces/output/rust/Cargo.lock b/examples/05-inductive-data-types-separate-namespaces/output/rust/Cargo.lock
new file mode 100644
index 0000000..9dc6e3e
--- /dev/null
+++ b/examples/05-inductive-data-types-separate-namespaces/output/rust/Cargo.lock
@@ -0,0 +1,7 @@
+# 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-separate-namespaces/output/rust/Cargo.toml b/examples/05-inductive-data-types-separate-namespaces/output/rust/Cargo.toml
new file mode 100644
index 0000000..5d4c622
--- /dev/null
+++ b/examples/05-inductive-data-types-separate-namespaces/output/rust/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "example"
+version = "0.1.0"
+edition = "2024"
+
+[dependencies]
diff --git a/examples/05-inductive-data-types-separate-namespaces/output/rust/rust-toolchain.toml b/examples/05-inductive-data-types-separate-namespaces/output/rust/rust-toolchain.toml
new file mode 100644
index 0000000..4fedb95
--- /dev/null
+++ b/examples/05-inductive-data-types-separate-namespaces/output/rust/rust-toolchain.toml
@@ -0,0 +1,2 @@
+[toolchain]
+channel = "1.96"
diff --git a/examples/05-inductive-data-types-separate-namespaces/output/rust/src/data/a.rs b/examples/05-inductive-data-types-separate-namespaces/output/rust/src/data/a.rs
new file mode 100644
index 0000000..3acec99
--- /dev/null
+++ b/examples/05-inductive-data-types-separate-namespaces/output/rust/src/data/a.rs
@@ -0,0 +1,17 @@
+// Generated by hobgoblin.
+
+#[derive(Debug, Hash, PartialEq)]
+pub enum A {
+ A1(::std::boxed::Box::<crate::data::a::A1>),
+}
+
+impl ::std::convert::From::<crate::data::a::A1> for crate::data::a::A {
+ fn from(value: crate::data::a::A1) -> Self {
+ Self::A1(::std::boxed::Box::new(value))
+ }
+}
+
+#[derive(Debug, Hash, PartialEq)]
+pub struct A1 {
+ pub b: ::std::option::Option::<crate::data::b::B>,
+}
diff --git a/examples/05-inductive-data-types-separate-namespaces/output/rust/src/data/b.rs b/examples/05-inductive-data-types-separate-namespaces/output/rust/src/data/b.rs
new file mode 100644
index 0000000..11dee96
--- /dev/null
+++ b/examples/05-inductive-data-types-separate-namespaces/output/rust/src/data/b.rs
@@ -0,0 +1,6 @@
+// Generated by hobgoblin.
+
+#[derive(Debug, Hash, PartialEq)]
+pub struct B {
+ pub a: ::std::option::Option::<crate::data::a::A>,
+}
diff --git a/examples/05-inductive-data-types-separate-namespaces/output/rust/src/data/mod.rs b/examples/05-inductive-data-types-separate-namespaces/output/rust/src/data/mod.rs
new file mode 100644
index 0000000..677af14
--- /dev/null
+++ b/examples/05-inductive-data-types-separate-namespaces/output/rust/src/data/mod.rs
@@ -0,0 +1,2 @@
+pub mod a;
+pub mod b;
diff --git a/examples/05-inductive-data-types-separate-namespaces/output/rust/src/lib.rs b/examples/05-inductive-data-types-separate-namespaces/output/rust/src/lib.rs
new file mode 100644
index 0000000..01aaddf
--- /dev/null
+++ b/examples/05-inductive-data-types-separate-namespaces/output/rust/src/lib.rs
@@ -0,0 +1,15 @@
+mod data;
+
+#[cfg(test)]
+mod test {
+ use super::data::{a::{A, A1}, b::B};
+
+ #[test]
+ fn data() {
+ let data = A::A1(Box::new(A1 {
+ b: Some(B {
+ a: Some(A::A1(Box::new(A1 { b: None }))),
+ }),
+ }));
+ }
+}
diff --git a/examples/05-inductive-data-types-separate-namespaces/src/data/a.hob b/examples/05-inductive-data-types-separate-namespaces/src/data/a.hob
new file mode 100644
index 0000000..47f1d3c
--- /dev/null
+++ b/examples/05-inductive-data-types-separate-namespaces/src/data/a.hob
@@ -0,0 +1,9 @@
+import {B} from ./b;
+
+sum A {
+ variant A1 box;
+}
+
+struct A1 {
+ field b: Option[B];
+}
diff --git a/examples/05-inductive-data-types-separate-namespaces/src/data/b.hob b/examples/05-inductive-data-types-separate-namespaces/src/data/b.hob
new file mode 100644
index 0000000..4d538fc
--- /dev/null
+++ b/examples/05-inductive-data-types-separate-namespaces/src/data/b.hob
@@ -0,0 +1,5 @@
+import {A} from ./a;
+
+struct B {
+ field a: Option[A];
+}