aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2023-11-05 20:14:26 +0000
committerMichael Williamson <mike@zwobble.org>2023-11-05 20:14:26 +0000
commitdee7b5195105812c776f5c3fd1814ad25ce4e358 (patch)
tree55cb29428b6f4cfdaf414350d53a97960f35a217 /src/main/java
parentf3d28bc5d05eea6d8ed9db603682631290f8da2c (diff)
Add builder for NamespaceTypeInfo
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/shedlang/compiler/types/NamespaceTypeInfo.java20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/main/java/org/shedlang/compiler/types/NamespaceTypeInfo.java b/src/main/java/org/shedlang/compiler/types/NamespaceTypeInfo.java
index 5cfb2aa8..e4c5048f 100644
--- a/src/main/java/org/shedlang/compiler/types/NamespaceTypeInfo.java
+++ b/src/main/java/org/shedlang/compiler/types/NamespaceTypeInfo.java
@@ -1,14 +1,8 @@
package org.shedlang.compiler.types;
-import org.shedlang.compiler.util.POrderedMap;
-
import java.util.Optional;
public record NamespaceTypeInfo(FieldsInfo<Type> fields) {
- public static NamespaceTypeInfo fromFields(POrderedMap<String, Type> fields) {
- return new NamespaceTypeInfo(new FieldsInfo<>(fields));
- }
-
public int fieldCount() {
return fields.fieldCount();
}
@@ -20,4 +14,18 @@ public record NamespaceTypeInfo(FieldsInfo<Type> fields) {
public int fieldIndex(String fieldName) {
return fields.fieldIndex(fieldName);
}
+
+ public static Builder builder() {
+ return new Builder(FieldsInfo.builder());
+ }
+
+ public record Builder(FieldsInfo.Builder<Type> fields) {
+ public NamespaceTypeInfo build() {
+ return new NamespaceTypeInfo(fields.build());
+ }
+
+ public Builder addField(String name, Type type) {
+ return new Builder(this.fields.addField(name, type));
+ }
+ }
}