summaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rust/RustGenerator.java2
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttransient0/RustTransient0Generator.java28
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttypes/RustTypesGenerator.java8
-rw-r--r--src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustIdentifier.java3
4 files changed, 29 insertions, 12 deletions
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rust/RustGenerator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rust/RustGenerator.java
index c421ca4..5ad86de 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rust/RustGenerator.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rust/RustGenerator.java
@@ -92,7 +92,7 @@ public class RustGenerator {
return new RustTypePath(segments);
}
- private List<RustIdentifier> namespaceNameToRustCrateModulePath(NamespaceName namespaceName) {
+ public List<RustIdentifier> namespaceNameToRustCrateModulePath(NamespaceName namespaceName) {
return namespaceName.parts().stream()
.map(part -> generateModuleName(part))
.toList();
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttransient0/RustTransient0Generator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttransient0/RustTransient0Generator.java
index 822f229..6f53ba2 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttransient0/RustTransient0Generator.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttransient0/RustTransient0Generator.java
@@ -3,12 +3,16 @@ package org.zwobble.hobgoblin.compiler.output.generators.rusttransient0;
import org.zwobble.hobgoblin.compiler.ast.typed.TypedNamespaceNode;
import org.zwobble.hobgoblin.compiler.config.OutputConfig;
import org.zwobble.hobgoblin.compiler.output.generators.Generator;
+import org.zwobble.hobgoblin.compiler.output.generators.rust.RustGenerator;
import org.zwobble.hobgoblin.compiler.output.generators.rust.RustGeneratorConfig;
+import org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustIdentifier;
+import org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustModule;
import org.zwobble.hobgoblin.compiler.typechecker.TypesInfo;
import org.zwobble.json5.reader.Json5ObjectReader;
import java.io.IOException;
import java.nio.file.Path;
+import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@@ -26,20 +30,36 @@ public class RustTransient0Generator implements Generator {
var rustConfig = RustGeneratorConfig.parseLangsConfig(langsJson);
- return new RustTransient0Generator(outputPath, rustConfig);
+ var rustGenerator = new RustGenerator(outputPath, rustConfig);
+
+ return new RustTransient0Generator(rustGenerator, rustConfig);
};
}
- private final Path outputPath;
+ private final RustGenerator rustGenerator;
private final RustGeneratorConfig config;
- private RustTransient0Generator(Path outputPath, RustGeneratorConfig config) {
- this.outputPath = outputPath;
+ private RustTransient0Generator(RustGenerator rustGenerator, RustGeneratorConfig config) {
+ this.rustGenerator = rustGenerator;
this.config = config;
}
@Override
public void generate(List<TypedNamespaceNode> namespaces, TypesInfo typesInfo) throws IOException {
+ for (var namespace : namespaces) {
+ var rustModule = generateNamespace(namespace);
+
+ this.rustGenerator.write(rustModule);
+ }
+ }
+
+ private RustModule generateNamespace(TypedNamespaceNode namespace) {
+ var moduleName = new ArrayList<>(this.rustGenerator.namespaceNameToRustCrateModulePath(namespace.namespaceName()));
+ moduleName.add(RustIdentifier.of("transient_0"));
+ return new RustModule(
+ moduleName,
+ List.of()
+ );
}
}
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttypes/RustTypesGenerator.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttypes/RustTypesGenerator.java
index d1248b4..aab7284 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttypes/RustTypesGenerator.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/generators/rusttypes/RustTypesGenerator.java
@@ -56,7 +56,7 @@ public class RustTypesGenerator implements Generator {
}
private RustModule generateNamespace(TypedNamespaceNode namespace, Context context) {
- var rustModuleName = generateNamespaceName(namespace.namespaceName());
+ var rustModuleName = this.rustGenerator.namespaceNameToRustCrateModulePath(namespace.namespaceName());
var rustItems = namespace.body().stream()
.flatMap(statement -> generateNamespaceStatement(statement, context).stream())
@@ -65,12 +65,6 @@ public class RustTypesGenerator implements Generator {
return new RustModule(rustModuleName, rustItems);
}
- private List<RustIdentifier> generateNamespaceName(NamespaceName namespaceName) {
- return namespaceName.parts().stream()
- .map(part -> this.rustGenerator.generateModuleName(part))
- .toList();
- }
-
private List<RustItem> generateNamespaceStatement(
TypedNamespaceStatementNode statement,
Context context
diff --git a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustIdentifier.java b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustIdentifier.java
index 34e0ff7..c6c3000 100644
--- a/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustIdentifier.java
+++ b/src/main/java/org/zwobble/hobgoblin/compiler/output/lang/rust/ast/RustIdentifier.java
@@ -24,5 +24,8 @@ public record RustIdentifier(String value) {
}
// Custom area start: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustIdentifier body
+ public static RustIdentifier of(String name) {
+ return new RustIdentifier(name);
+ }
// Custom area end: org.zwobble.hobgoblin.compiler.output.lang.rust.ast.RustIdentifier body
}