diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-11-05 20:14:26 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-11-05 20:14:26 +0000 |
| commit | dee7b5195105812c776f5c3fd1814ad25ce4e358 (patch) | |
| tree | 55cb29428b6f4cfdaf414350d53a97960f35a217 /src/main/java | |
| parent | f3d28bc5d05eea6d8ed9db603682631290f8da2c (diff) | |
Add builder for NamespaceTypeInfo
Diffstat (limited to 'src/main/java')
| -rw-r--r-- | src/main/java/org/shedlang/compiler/types/NamespaceTypeInfo.java | 20 |
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)); + } + } } |
