Lobster: Support required fields
diff --git a/src/idl_gen_lobster.cpp b/src/idl_gen_lobster.cpp
index c89e7bb..de4e152 100644
--- a/src/idl_gen_lobster.cpp
+++ b/src/idl_gen_lobster.cpp
@@ -145,11 +145,17 @@
code += def + "() -> " + name + ":\n ";
code += "return " + name + "{ buf_, pos_ + " + offsets + " }\n";
} else {
- code += def + "() -> " + name + "?:\n ";
+ code += def + "() -> " + name;
+ if (!field.IsRequired()) code += "?";
+ code += ":\n ";
code += std::string("let o = flatbuffers.field_") +
(field.value.type.struct_def->fixed ? "struct" : "table") +
- "(buf_, pos_, " + offsets + ")\n return if o: " + name +
- " { buf_, o } else: nil\n";
+ "(buf_, pos_, " + offsets + ")\n return ";
+ if (field.IsRequired()) {
+ code += name + " { buf_, assert o }\n";
+ } else {
+ code += "if o: " + name + " { buf_, o } else: nil\n";
+ }
}
break;
}