Open
Description
Data of type "string?" cannot be serialized when it is null.
void serializeStruct(Type self, SerialBuffer buffer, Object data,
{SerializerState state, allowExtensions = true}) {
if (state == null) state = SerializerState();
// try {
if (self.base != null) {
self.base.serialize(self.base, buffer, data,
state: state, allowExtensions: allowExtensions);
}
var dy = data as dynamic;
for (var field in self.fields) {
if (dy[field.name] != null) {
if (state.skippedBinaryExtension) {
throw 'unexpected ' + self.name + '.' + field.name;
}
field.type.serialize(field.type, buffer, dy[field.name],
state: state,
allowExtensions:
allowExtensions && field == self.fields[self.fields.length - 1]);
} else {
if (allowExtensions && field.type.extensionOf != null) {
state.skippedBinaryExtension = true;
} else if(field.type.optionalOf != null ) {
field.type.serialize(field.type, buffer, dy[field.name],state: state);
} else {
throw 'missing ' +
self.name +
'.' +
field.name +
' (type=' +
field.type.name +
')';
}
}
}
to:
void serializeStruct(Type self, SerialBuffer buffer, Object data,
{SerializerState state, allowExtensions = true}) {
if (state == null) state = SerializerState();
// try {
if (self.base != null) {
self.base.serialize(self.base, buffer, data,
state: state, allowExtensions: allowExtensions);
}
var dy = data as dynamic;
for (var field in self.fields) {
if (dy[field.name] != null) {
if (state.skippedBinaryExtension) {
throw 'unexpected ' + self.name + '.' + field.name;
}
field.type.serialize(field.type, buffer, dy[field.name],
state: state,
allowExtensions:
allowExtensions && field == self.fields[self.fields.length - 1]);
} else {
if (allowExtensions && field.type.extensionOf != null) {
state.skippedBinaryExtension = true;
} else {
throw 'missing ' +
self.name +
'.' +
field.name +
' (type=' +
field.type.name +
')';
}
}
}
Metadata
Metadata
Assignees
Labels
No labels