diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-09-28 13:48:33 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-09-28 13:48:33 +0100 |
| commit | 1ce720a70e964dd002800f4bc96c631229e0fa24 (patch) | |
| tree | feeea3cb42a97880fb760e3e2eee21d5b0e12392 /src/main/java | |
| parent | dd30830b4c24e046d1e35968bbe101748894f897 (diff) | |
Pluralise type info collection
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/ShedCompiler.java | 2 | ||||
| -rw-r--r-- | src/main/java/org/shedlang/compiler/backends/Backend.java | 4 | ||||
| -rw-r--r-- | src/main/java/org/shedlang/compiler/backends/GenerateInstructionsBackend.java | 4 | ||||
| -rw-r--r-- | src/main/java/org/shedlang/compiler/backends/PatioBackend.java | 6 | ||||
| -rw-r--r-- | src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackend.java | 12 | ||||
| -rw-r--r-- | src/main/java/org/shedlang/compiler/backends/wasm/WasmBackend.java | 12 | ||||
| -rw-r--r-- | src/main/java/org/shedlang/compiler/patio/PatioCodeGenContext.java | 20 | ||||
| -rw-r--r-- | src/main/java/org/shedlang/compiler/typechecker/TypeCheckerContext.java | 52 | ||||
| -rw-r--r-- | src/main/java/org/shedlang/compiler/typechecker/TypeInfos.java (renamed from src/main/java/org/shedlang/compiler/typechecker/TypeInfo.java) | 14 |
9 files changed, 63 insertions, 63 deletions
diff --git a/src/main/java/org/shedlang/compiler/ShedCompiler.java b/src/main/java/org/shedlang/compiler/ShedCompiler.java index fcfb127c..7b96a524 100644 --- a/src/main/java/org/shedlang/compiler/ShedCompiler.java +++ b/src/main/java/org/shedlang/compiler/ShedCompiler.java @@ -74,7 +74,7 @@ public class ShedCompiler { namespaces.add(stackIrNamespace); } - backend.compile(config, namespaces, typeCheckerContext.toTypeInfo(), config.targetDir().resolve(backend.name())); + backend.compile(config, namespaces, typeCheckerContext.toTypeInfos(), config.targetDir().resolve(backend.name())); } private List<Path> collectSourceFilePaths(Path sourceRoot) throws IOException { diff --git a/src/main/java/org/shedlang/compiler/backends/Backend.java b/src/main/java/org/shedlang/compiler/backends/Backend.java index aba5fe1b..42938d34 100644 --- a/src/main/java/org/shedlang/compiler/backends/Backend.java +++ b/src/main/java/org/shedlang/compiler/backends/Backend.java @@ -2,7 +2,7 @@ package org.shedlang.compiler.backends; import org.shedlang.compiler.config.ProjectConfig; import org.shedlang.compiler.stackir.StackIrNamespace; -import org.shedlang.compiler.typechecker.TypeInfo; +import org.shedlang.compiler.typechecker.TypeInfos; import java.io.IOException; import java.nio.file.Path; @@ -14,7 +14,7 @@ public interface Backend { void compile( ProjectConfig config, List<StackIrNamespace> namespaces, - TypeInfo typeInfo, + TypeInfos typeInfos, Path targetDir ) throws IOException, InterruptedException; } diff --git a/src/main/java/org/shedlang/compiler/backends/GenerateInstructionsBackend.java b/src/main/java/org/shedlang/compiler/backends/GenerateInstructionsBackend.java index fe64a16d..5c27757c 100644 --- a/src/main/java/org/shedlang/compiler/backends/GenerateInstructionsBackend.java +++ b/src/main/java/org/shedlang/compiler/backends/GenerateInstructionsBackend.java @@ -3,7 +3,7 @@ package org.shedlang.compiler.backends; import org.shedlang.compiler.config.ProjectConfig; import org.shedlang.compiler.stackir.InstructionSerializer; import org.shedlang.compiler.stackir.StackIrNamespace; -import org.shedlang.compiler.typechecker.TypeInfo; +import org.shedlang.compiler.typechecker.TypeInfos; import java.nio.file.Path; import java.util.List; @@ -12,7 +12,7 @@ public class GenerateInstructionsBackend implements Backend { public void compile( ProjectConfig config, List<StackIrNamespace> namespaces, - TypeInfo typeInfo, + TypeInfos typeInfos, Path targetDir ) { System.out.println("main: " + config.main()); diff --git a/src/main/java/org/shedlang/compiler/backends/PatioBackend.java b/src/main/java/org/shedlang/compiler/backends/PatioBackend.java index 682bf79f..a647e842 100644 --- a/src/main/java/org/shedlang/compiler/backends/PatioBackend.java +++ b/src/main/java/org/shedlang/compiler/backends/PatioBackend.java @@ -5,7 +5,7 @@ import org.shedlang.compiler.patio.PatioCodeGen; import org.shedlang.compiler.patio.PatioCodeGenContext; import org.shedlang.compiler.patio.ast.PatioSerializer; import org.shedlang.compiler.stackir.StackIrNamespace; -import org.shedlang.compiler.typechecker.TypeInfo; +import org.shedlang.compiler.typechecker.TypeInfos; import java.nio.file.Path; import java.util.List; @@ -14,12 +14,12 @@ public class PatioBackend implements Backend { public void compile( ProjectConfig config, List<StackIrNamespace> namespaces, - TypeInfo typeInfo, + TypeInfos typeInfos, Path targetDir ) { System.out.println("main: " + config.main()); - var context = PatioCodeGenContext.forTypeInfo(typeInfo); + var context = PatioCodeGenContext.forTypeInfos(typeInfos); for (var namespace : namespaces) { System.out.println(namespace.namespaceName()); diff --git a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackend.java b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackend.java index 2cb22612..77159c8c 100644 --- a/src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackend.java +++ b/src/main/java/org/shedlang/compiler/backends/llvm/LlvmBackend.java @@ -16,7 +16,7 @@ import org.shedlang.compiler.patio.PatioCodeGen; import org.shedlang.compiler.patio.PatioCodeGenContext; import org.shedlang.compiler.sources.Sources; import org.shedlang.compiler.stackir.StackIrNamespace; -import org.shedlang.compiler.typechecker.TypeInfo; +import org.shedlang.compiler.typechecker.TypeInfos; import org.shedlang.compiler.types.NamespaceName; import java.io.IOException; @@ -42,14 +42,14 @@ public class LlvmBackend implements Backend { public void compile( ProjectConfig config, List<StackIrNamespace> namespaces, - TypeInfo typeInfo, + TypeInfos typeInfos, Path targetDir ) throws IOException, InterruptedException { var objectFilePaths = new ArrayList<Path>(); for (var namespace : namespaces) { var patioCompilationUnit = PatioCodeGen.generateNamespace( namespace, - PatioCodeGenContext.forTypeInfo(typeInfo) + PatioCodeGenContext.forTypeInfos(typeInfos) ); var llvmModule = LlvmPatioCodeGen.generateCompilationUnit(patioCompilationUnit); @@ -64,7 +64,7 @@ public class LlvmBackend implements Backend { } for (var bin : config.bins()) { - var mainModule = this.generateMain(config.main(), typeInfo); + var mainModule = this.generateMain(config.main(), typeInfos); var mainObjectPath = compileLlvmModule(mainModule, targetDir.resolve("bins"), bin.name()); var gccArgs = new ArrayList<String>(); @@ -84,11 +84,11 @@ public class LlvmBackend implements Backend { } } - private LlvmModule generateMain(NamespaceName main, TypeInfo typeInfo) { + private LlvmModule generateMain(NamespaceName main, TypeInfos typeInfos) { // TODO: use more appropriate source var source = Sources.NULL; - var context = PatioCodeGenContext.forTypeInfo(typeInfo); + var context = PatioCodeGenContext.forTypeInfos(typeInfos); var generateMainResult = PatioCodeGen.generateMain(main, source, context); var mainFunctionName = generateMainResult.value(); diff --git a/src/main/java/org/shedlang/compiler/backends/wasm/WasmBackend.java b/src/main/java/org/shedlang/compiler/backends/wasm/WasmBackend.java index 8c3bc338..218a6f69 100644 --- a/src/main/java/org/shedlang/compiler/backends/wasm/WasmBackend.java +++ b/src/main/java/org/shedlang/compiler/backends/wasm/WasmBackend.java @@ -11,7 +11,7 @@ import org.shedlang.compiler.patio.PatioCodeGen; import org.shedlang.compiler.patio.PatioCodeGenContext; import org.shedlang.compiler.sources.Sources; import org.shedlang.compiler.stackir.StackIrNamespace; -import org.shedlang.compiler.typechecker.TypeInfo; +import org.shedlang.compiler.typechecker.TypeInfos; import org.shedlang.compiler.types.NamespaceName; import java.io.FileOutputStream; @@ -35,14 +35,14 @@ public class WasmBackend implements Backend { public void compile( ProjectConfig config, List<StackIrNamespace> namespaces, - TypeInfo typeInfo, + TypeInfos typeInfos, Path targetDir ) throws IOException, InterruptedException { var objectFilePaths = new ArrayList<Path>(); for (var namespace : namespaces) { var patioCompilationUnit = PatioCodeGen.generateNamespace( namespace, - PatioCodeGenContext.forTypeInfo(typeInfo) + PatioCodeGenContext.forTypeInfos(typeInfos) ); var wasmModule = WasmPatioCodeGen.generateCompilationUnit(patioCompilationUnit); @@ -66,7 +66,7 @@ public class WasmBackend implements Backend { ldArgs.add(objectFilePath.toString()); } - var mainModule = this.generateMain(config.main(), typeInfo); + var mainModule = this.generateMain(config.main(), typeInfos); var mainObjectPath = writeObjectFile(mainModule, targetDir.resolve("bins"), bin.name()); ldArgs.add(mainObjectPath.toString()); @@ -76,11 +76,11 @@ public class WasmBackend implements Backend { } } - private WasmModule generateMain(NamespaceName main, TypeInfo typeInfo) { + private WasmModule generateMain(NamespaceName main, TypeInfos typeInfos) { // TODO: set appropriate source var source = Sources.NULL; - var context = PatioCodeGenContext.forTypeInfo(typeInfo); + var context = PatioCodeGenContext.forTypeInfos(typeInfos); var generateMainResult = PatioCodeGen.generateMain(main, source, context); var mainFunctionName = generateMainResult.value(); diff --git a/src/main/java/org/shedlang/compiler/patio/PatioCodeGenContext.java b/src/main/java/org/shedlang/compiler/patio/PatioCodeGenContext.java index 44495f3b..fb176c1e 100644 --- a/src/main/java/org/shedlang/compiler/patio/PatioCodeGenContext.java +++ b/src/main/java/org/shedlang/compiler/patio/PatioCodeGenContext.java @@ -12,7 +12,7 @@ import org.shedlang.compiler.patio.ast.operands.PatioLocalRef; import org.shedlang.compiler.patio.ast.types.PatioDataLayout; import org.shedlang.compiler.patio.ast.types.PatioType; import org.shedlang.compiler.sources.Source; -import org.shedlang.compiler.typechecker.TypeInfo; +import org.shedlang.compiler.typechecker.TypeInfos; import org.shedlang.compiler.types.NamespaceName; import org.shedlang.compiler.types.NamespaceTypeInfo; import org.shedlang.compiler.util.P; @@ -29,18 +29,18 @@ public record PatioCodeGenContext( FunctionContext functionContext ) { public record CompilationUnitContext( - TypeInfo typeInfo, + TypeInfos typeInfos, OrderedPMap<String, PatioCompilationUnitElement> elementsByName ) { public NamespaceTypeInfo namespaceTypeInfo(NamespaceName namespaceName) { - return typeInfo.namespaceTypeInfo(namespaceName); + return typeInfos.namespaceTypeInfo(namespaceName); } - public static final CompilationUnitContext EMPTY = forTypeInfo(TypeInfo.EMPTY); + public static final CompilationUnitContext EMPTY = forTypeInfos(TypeInfos.EMPTY); - public static CompilationUnitContext forTypeInfo(TypeInfo typeInfo) { + public static CompilationUnitContext forTypeInfos(TypeInfos typeInfos) { return new CompilationUnitContext( - typeInfo, + typeInfos, OrderedPMap.empty() ); } @@ -48,7 +48,7 @@ public record PatioCodeGenContext( public CompilationUnitContext addElement(PatioCompilationUnitElement element) { // TODO: handle existing element with name. return new CompilationUnitContext( - this.typeInfo, + this.typeInfos, this.elementsByName.plus(element.name(), element) ); } @@ -74,7 +74,7 @@ public record PatioCodeGenContext( PatioCompilationUnitElement element ) { return new CompilationUnitContext( - this.typeInfo, + this.typeInfos, this.elementsByName.plus(element.name(), element) ); } @@ -228,9 +228,9 @@ public record PatioCodeGenContext( FunctionContext.EMPTY ); - public static PatioCodeGenContext forTypeInfo(TypeInfo typeInfo) { + public static PatioCodeGenContext forTypeInfos(TypeInfos typeInfos) { return new PatioCodeGenContext( - CompilationUnitContext.forTypeInfo(typeInfo), + CompilationUnitContext.forTypeInfos(typeInfos), P.stack(), FunctionContext.EMPTY ); diff --git a/src/main/java/org/shedlang/compiler/typechecker/TypeCheckerContext.java b/src/main/java/org/shedlang/compiler/typechecker/TypeCheckerContext.java index 5026dee6..c62b4e48 100644 --- a/src/main/java/org/shedlang/compiler/typechecker/TypeCheckerContext.java +++ b/src/main/java/org/shedlang/compiler/typechecker/TypeCheckerContext.java @@ -104,17 +104,17 @@ public class TypeCheckerContext { } } - private final PMap<NamespaceName, NamespaceTypeInfo> namespaceTypeInfo; - private final PMap<StructType, StructTypeInfo> structTypeInfo; + private final PMap<NamespaceName, NamespaceTypeInfo> namespaceTypeInfos; + private final PMap<StructType, StructTypeInfo> structTypeInfos; private final PStack<StackElement> stack; public TypeCheckerContext( - PMap<NamespaceName, NamespaceTypeInfo> namespaceTypeInfo, - PMap<StructType, StructTypeInfo> structTypeInfo, + PMap<NamespaceName, NamespaceTypeInfo> namespaceTypeInfos, + PMap<StructType, StructTypeInfo> structTypeInfos, PStack<StackElement> stack ) { - this.namespaceTypeInfo = namespaceTypeInfo; - this.structTypeInfo = structTypeInfo; + this.namespaceTypeInfos = namespaceTypeInfos; + this.structTypeInfos = structTypeInfos; this.stack = stack; } @@ -142,8 +142,8 @@ public class TypeCheckerContext { } return new TypeCheckerContext( - this.namespaceTypeInfo, - this.structTypeInfo, + this.namespaceTypeInfos, + this.structTypeInfos, newStack ); } @@ -179,8 +179,8 @@ public class TypeCheckerContext { Optional<Type> newReturnType ) { return new TypeCheckerContext( - this.namespaceTypeInfo, - this.structTypeInfo, + this.namespaceTypeInfos, + this.structTypeInfos, this.stack.plus(new LexicalContext( newNamespaceName, this.environment().plusAll(newEnvironment), @@ -195,8 +195,8 @@ public class TypeCheckerContext { public TypeCheckerContext exit() { return new TypeCheckerContext( - this.namespaceTypeInfo, - this.structTypeInfo, + this.namespaceTypeInfos, + this.structTypeInfos, this.stack.minus(0) ); } @@ -204,8 +204,8 @@ public class TypeCheckerContext { public TypeCheckerContext enterFreeVariableCapture() { // TODO: do this properly (should not affect environment, possibly other bits of lexical context) return new TypeCheckerContext( - this.namespaceTypeInfo, - this.structTypeInfo, + this.namespaceTypeInfos, + this.structTypeInfos, this.stack.plus(FreeVariableCapture.EMPTY) ); } @@ -242,8 +242,8 @@ public class TypeCheckerContext { } return new TypeCheckerContext( - this.namespaceTypeInfo, - this.structTypeInfo, + this.namespaceTypeInfos, + this.structTypeInfos, newLexicalContextStack ); } @@ -341,14 +341,14 @@ public class TypeCheckerContext { var namespaceTypeInfo = new NamespaceTypeInfo(fields); return new TypeCheckerContext( - this.namespaceTypeInfo.plus(namespaceName, namespaceTypeInfo), - this.structTypeInfo, + this.namespaceTypeInfos.plus(namespaceName, namespaceTypeInfo), + this.structTypeInfos, this.stack ); } public PMap<NamespaceName, NamespaceTypeInfo> namespaceTypeInfo() { - return namespaceTypeInfo; + return namespaceTypeInfos; } public TypeCheckerContext addStructTypeInfo( @@ -356,19 +356,19 @@ public class TypeCheckerContext { StructTypeInfo structTypeInfo ) { return new TypeCheckerContext( - this.namespaceTypeInfo, - this.structTypeInfo.plus(structType, structTypeInfo), + this.namespaceTypeInfos, + this.structTypeInfos.plus(structType, structTypeInfo), this.stack ); } public StructTypeInfo structTypeInfo(StructType type, Source source) { - return Optional.ofNullable(this.structTypeInfo.get(type)) + return Optional.ofNullable(this.structTypeInfos.get(type)) .orElseThrow(() -> new MissingStructTypeInfoError(type, source)); } - public PMap<StructType, StructTypeInfo> structTypeInfo() { - return structTypeInfo; + public PMap<StructType, StructTypeInfo> structTypeInfos() { + return structTypeInfos; } public <T> TypeCheckerResult<T> toResult(T value) { @@ -391,7 +391,7 @@ public class TypeCheckerContext { return new TypeCheckerResult<>(mappedValues, context); } - public TypeInfo toTypeInfo() { - return new TypeInfo(namespaceTypeInfo); + public TypeInfos toTypeInfos() { + return new TypeInfos(namespaceTypeInfos); } } diff --git a/src/main/java/org/shedlang/compiler/typechecker/TypeInfo.java b/src/main/java/org/shedlang/compiler/typechecker/TypeInfos.java index f7c381d9..7331ee07 100644 --- a/src/main/java/org/shedlang/compiler/typechecker/TypeInfo.java +++ b/src/main/java/org/shedlang/compiler/typechecker/TypeInfos.java @@ -5,20 +5,20 @@ import org.pcollections.PMap; import org.shedlang.compiler.types.NamespaceName; import org.shedlang.compiler.types.NamespaceTypeInfo; -public class TypeInfo { - public static final TypeInfo EMPTY = new TypeInfo(Empty.map()); +public class TypeInfos { + public static final TypeInfos EMPTY = new TypeInfos(Empty.map()); - private final PMap<NamespaceName, NamespaceTypeInfo> namespaceTypeInfo; + private final PMap<NamespaceName, NamespaceTypeInfo> namespaceTypeInfos; - public TypeInfo( - PMap<NamespaceName, NamespaceTypeInfo> namespaceTypeInfo + public TypeInfos( + PMap<NamespaceName, NamespaceTypeInfo> namespaceTypeInfos ) { - this.namespaceTypeInfo = namespaceTypeInfo; + this.namespaceTypeInfos = namespaceTypeInfos; } public NamespaceTypeInfo namespaceTypeInfo(NamespaceName namespaceName) { // TODO: throw better error - var typeInfo = namespaceTypeInfo.get(namespaceName); + var typeInfo = namespaceTypeInfos.get(namespaceName); if (typeInfo == null) { throw new RuntimeException("No type info for: " + namespaceName); } else { |
