aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/shedlang/compiler/ShedCompiler.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-07-21 16:16:19 +0100
committerMichael Williamson <mike@zwobble.org>2023-07-21 16:16:19 +0100
commitf12f949dda91f596c8ec401375e48cef584218c2 (patch)
tree9ebd7000309764bfb7bd91ba008d4661d4bd31c1 /src/main/java/org/shedlang/compiler/ShedCompiler.java
parent8a0d86df0f63e69f4bd6c5699411caddfb4c72f8 (diff)
Introduce type for Stack IR namespaces
Diffstat (limited to 'src/main/java/org/shedlang/compiler/ShedCompiler.java')
-rw-r--r--src/main/java/org/shedlang/compiler/ShedCompiler.java13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/main/java/org/shedlang/compiler/ShedCompiler.java b/src/main/java/org/shedlang/compiler/ShedCompiler.java
index 9b030916..45411d3c 100644
--- a/src/main/java/org/shedlang/compiler/ShedCompiler.java
+++ b/src/main/java/org/shedlang/compiler/ShedCompiler.java
@@ -5,7 +5,7 @@ import org.shedlang.compiler.config.ProjectConfig;
import org.shedlang.compiler.parser.Parser;
import org.shedlang.compiler.sources.Sources;
import org.shedlang.compiler.stackir.StackCompiler;
-import org.shedlang.compiler.stackir.instructions.Instruction;
+import org.shedlang.compiler.stackir.StackIrNamespace;
import org.shedlang.compiler.typechecker.TypeChecker;
import org.shedlang.compiler.typechecker.TypeCheckerContext;
import org.shedlang.compiler.types.Effects;
@@ -20,7 +20,10 @@ import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.Map;
import java.util.stream.StreamSupport;
import static org.shedlang.compiler.parser.Tokeniser.tokenise;
@@ -33,7 +36,7 @@ public class ShedCompiler {
var sourceFilePaths = collectSourceFilePaths(sourceRoot);
- var namespaces = new LinkedHashMap<NamespaceName, List<Instruction>>();
+ var namespaces = new ArrayList<StackIrNamespace>();
var typeCheckerContext = TypeCheckerContext.EMPTY
.addNamespaceFields(ShedBuiltins.NAMESPACE_NAME, P.orderedMap(
@@ -67,8 +70,8 @@ public class ShedCompiler {
var typeCheckNamespaceResult = TypeChecker.typeCheckNamespace(untypedNode, typeCheckerContext);
typeCheckerContext = typeCheckNamespaceResult.context();
- var instructions = StackCompiler.compileNamespace(typeCheckNamespaceResult.value());
- namespaces.put(namespaceName, instructions);
+ var stackIrNamespace = StackCompiler.compileNamespace(typeCheckNamespaceResult.value());
+ namespaces.add(stackIrNamespace);
}
backend.compile(config, namespaces, typeCheckerContext.toTypeInfo(), config.targetDir().resolve(backend.name()));