Differences From
Artifact [ec9d9f2682]:
201 201 report('defining struct name=%q fields=%s', name, dump(def))
202 202 return {
203 203 name = name;
204 204 enc = function(obj)
205 205 local enc = m.streamEncoder()
206 206 local n = 0
207 207 for k,ty in pairs(def) do n=n+1
208 + if obj[k] == nil then error('missing key '..dump(k)..' for type '..ty.name) end
208 209 local encoded = ty.enc(obj[k])
209 210 enc.push(T.u8.enc(#k), size.enc(#encoded), k, encoded)
210 211 end
211 212 return size.enc(n) .. enc.peek()
212 213 end;
213 214 dec = debugger.wrap(function(blob)
214 215 if blob == '' then