aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java4
-rw-r--r--src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerContext.java7
-rw-r--r--src/main/java/org/shedlang/compiler/util/POrderedMap.java8
3 files changed, 10 insertions, 9 deletions
diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java
index 4098bd7a..c9d8c8ee 100644
--- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java
+++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompiler.java
@@ -53,7 +53,7 @@ public class LlvmCompiler {
mainBasicBlocks
));
- return new LlvmModule(context.topLevelEntities().stream().toList());
+ return new LlvmModule(context.topLevelEntities());
}
public static LlvmModule compileNamespace(
@@ -68,7 +68,7 @@ public class LlvmCompiler {
context = LlvmCompilerNamespaces.define(namespaceName, context);
- var topLevelEntities = context.topLevelEntities().stream().toList();
+ var topLevelEntities = context.topLevelEntities();
return new LlvmModule(topLevelEntities);
}
diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerContext.java b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerContext.java
index 32b96e25..e884d9e8 100644
--- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerContext.java
+++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmCompilerContext.java
@@ -14,7 +14,6 @@ import org.shedlang.compiler.backends.llvm.ir.ast.operands.LlvmVariableLocal;
import org.shedlang.compiler.typechecker.TypeInfo;
import org.shedlang.compiler.util.POrderedMap;
-import java.util.Collection;
import java.util.List;
import java.util.Optional;
@@ -167,8 +166,8 @@ public record LlvmCompilerContext(
return topLevelEntitiesByName.containsKey(name);
}
- public Collection<LlvmTopLevelEntity> topLevelEntities() {
- return topLevelEntitiesByName.values();
+ public List<LlvmTopLevelEntity> topLevelEntities() {
+ return topLevelEntitiesByName.toValues();
}
public LlvmCompilerResult<LlvmVariableLocal> generateVariableLocal(
@@ -225,7 +224,7 @@ public record LlvmCompilerContext(
locals,
basicBlocks,
instructions,
- topLevelEntitiesByName.plusAll(functionContext.topLevelEntitiesByName),
+ functionContext.topLevelEntitiesByName,
localVariableNames
).toResult(functionContext.basicBlocks);
}
diff --git a/src/main/java/org/shedlang/compiler/util/POrderedMap.java b/src/main/java/org/shedlang/compiler/util/POrderedMap.java
index 71150430..9363d42e 100644
--- a/src/main/java/org/shedlang/compiler/util/POrderedMap.java
+++ b/src/main/java/org/shedlang/compiler/util/POrderedMap.java
@@ -4,7 +4,7 @@ import org.pcollections.Empty;
import org.pcollections.PMap;
import org.pcollections.PVector;
-import java.util.Collection;
+import java.util.List;
public class POrderedMap<K, V> {
public static <K, V> POrderedMap<K, V> empty() {
@@ -42,8 +42,10 @@ public class POrderedMap<K, V> {
return keys;
}
- public Collection<V> values() {
- return map.values();
+ public List<V> toValues() {
+ return keys.stream()
+ .map(key -> map.get(key))
+ .toList();
}
public int size() {