Down Integrate to GitHub (#6414)
* Down integrate to GitHub
* Fix broken tests
diff --git a/js/message.js b/js/message.js
index 23e5af0..0957c6d 100644
--- a/js/message.js
+++ b/js/message.js
@@ -104,7 +104,7 @@
/**
* Stores binary-related information for a single extension field.
* @param {!jspb.ExtensionFieldInfo<T>} fieldInfo
- * @param {function(this:jspb.BinaryReader,number,?)} binaryReaderFn
+ * @param {function(this:jspb.BinaryReader,number,?,?)} binaryReaderFn
* @param {function(this:jspb.BinaryWriter,number,?)
* |function(this:jspb.BinaryWriter,number,?,?,?,?,?)} binaryWriterFn
* @param {function(?,?)=} opt_binaryMessageSerializeFn
@@ -976,153 +976,186 @@
/**
* Sets the value of a non-extension field.
- * @param {!jspb.Message} msg A jspb proto.
+ * @param {T} msg A jspb proto.
* @param {number} fieldNumber The field number.
* @param {string|number|boolean|Uint8Array|Array|undefined} value New value
+ * @return {T} return msg
+ * @template T
* @protected
*/
jspb.Message.setField = function(msg, fieldNumber, value) {
+ // TODO(b/35241823): replace this with a bounded generic when available
+ goog.asserts.assertInstanceof(msg, jspb.Message);
if (fieldNumber < msg.pivot_) {
msg.array[jspb.Message.getIndex_(msg, fieldNumber)] = value;
} else {
jspb.Message.maybeInitEmptyExtensionObject_(msg);
msg.extensionObject_[fieldNumber] = value;
}
+ return msg;
};
/**
* Sets the value of a non-extension integer field of a proto3
- * @param {!jspb.Message} msg A jspb proto.
+ * @param {T} msg A jspb proto.
* @param {number} fieldNumber The field number.
* @param {number} value New value
+ * @return {T} return msg
+ * @template T
* @protected
*/
jspb.Message.setProto3IntField = function(msg, fieldNumber, value) {
- jspb.Message.setFieldIgnoringDefault_(msg, fieldNumber, value, 0);
+ return jspb.Message.setFieldIgnoringDefault_(msg, fieldNumber, value, 0);
};
/**
* Sets the value of a non-extension floating point field of a proto3
- * @param {!jspb.Message} msg A jspb proto.
+ * @param {T} msg A jspb proto.
* @param {number} fieldNumber The field number.
* @param {number} value New value
+ * @return {T} return msg
+ * @template T
* @protected
*/
jspb.Message.setProto3FloatField = function(msg, fieldNumber, value) {
- jspb.Message.setFieldIgnoringDefault_(msg, fieldNumber, value, 0.0);
+ return jspb.Message.setFieldIgnoringDefault_(msg, fieldNumber, value, 0.0);
};
/**
* Sets the value of a non-extension boolean field of a proto3
- * @param {!jspb.Message} msg A jspb proto.
+ * @param {T} msg A jspb proto.
* @param {number} fieldNumber The field number.
* @param {boolean} value New value
+ * @return {T} return msg
+ * @template T
* @protected
*/
jspb.Message.setProto3BooleanField = function(msg, fieldNumber, value) {
- jspb.Message.setFieldIgnoringDefault_(msg, fieldNumber, value, false);
+ return jspb.Message.setFieldIgnoringDefault_(msg, fieldNumber, value, false);
};
/**
* Sets the value of a non-extension String field of a proto3
- * @param {!jspb.Message} msg A jspb proto.
+ * @param {T} msg A jspb proto.
* @param {number} fieldNumber The field number.
* @param {string} value New value
+ * @return {T} return msg
+ * @template T
* @protected
*/
jspb.Message.setProto3StringField = function(msg, fieldNumber, value) {
- jspb.Message.setFieldIgnoringDefault_(msg, fieldNumber, value, "");
+ return jspb.Message.setFieldIgnoringDefault_(msg, fieldNumber, value, '');
};
/**
* Sets the value of a non-extension Bytes field of a proto3
- * @param {!jspb.Message} msg A jspb proto.
+ * @param {T} msg A jspb proto.
* @param {number} fieldNumber The field number.
* @param {!Uint8Array|string} value New value
+ * @return {T} return msg
+ * @template T
* @protected
*/
jspb.Message.setProto3BytesField = function(msg, fieldNumber, value) {
- jspb.Message.setFieldIgnoringDefault_(msg, fieldNumber, value, "");
+ return jspb.Message.setFieldIgnoringDefault_(msg, fieldNumber, value, '');
};
/**
* Sets the value of a non-extension enum field of a proto3
- * @param {!jspb.Message} msg A jspb proto.
+ * @param {T} msg A jspb proto.
* @param {number} fieldNumber The field number.
* @param {number} value New value
+ * @return {T} return msg
+ * @template T
* @protected
*/
jspb.Message.setProto3EnumField = function(msg, fieldNumber, value) {
- jspb.Message.setFieldIgnoringDefault_(msg, fieldNumber, value, 0);
+ return jspb.Message.setFieldIgnoringDefault_(msg, fieldNumber, value, 0);
};
/**
* Sets the value of a non-extension int field of a proto3 that has jstype set
* to String.
- * @param {!jspb.Message} msg A jspb proto.
+ * @param {T} msg A jspb proto.
* @param {number} fieldNumber The field number.
* @param {string} value New value
+ * @return {T} return msg
+ * @template T
* @protected
*/
jspb.Message.setProto3StringIntField = function(msg, fieldNumber, value) {
- jspb.Message.setFieldIgnoringDefault_(msg, fieldNumber, value, "0");
+ return jspb.Message.setFieldIgnoringDefault_(msg, fieldNumber, value, '0');
};
/**
* Sets the value of a non-extension primitive field, with proto3 (non-nullable
* primitives) semantics of ignoring values that are equal to the type's
* default.
- * @param {!jspb.Message} msg A jspb proto.
+ * @param {T} msg A jspb proto.
* @param {number} fieldNumber The field number.
* @param {!Uint8Array|string|number|boolean|undefined} value New value
* @param {!Uint8Array|string|number|boolean} defaultValue The default value.
+ * @return {T} return msg
+ * @template T
* @private
*/
jspb.Message.setFieldIgnoringDefault_ = function(
msg, fieldNumber, value, defaultValue) {
+ // TODO(b/35241823): replace this with a bounded generic when available
+ goog.asserts.assertInstanceof(msg, jspb.Message);
if (value !== defaultValue) {
jspb.Message.setField(msg, fieldNumber, value);
} else {
msg.array[jspb.Message.getIndex_(msg, fieldNumber)] = null;
}
+ return msg;
};
/**
* Adds a value to a repeated, primitive field.
- * @param {!jspb.Message} msg A jspb proto.
+ * @param {T} msg A jspb proto.
* @param {number} fieldNumber The field number.
* @param {string|number|boolean|!Uint8Array} value New value
* @param {number=} opt_index Index where to put new value.
+ * @return {T} return msg
+ * @template T
* @protected
*/
jspb.Message.addToRepeatedField = function(msg, fieldNumber, value, opt_index) {
+ // TODO(b/35241823): replace this with a bounded generic when available
+ goog.asserts.assertInstanceof(msg, jspb.Message);
var arr = jspb.Message.getRepeatedField(msg, fieldNumber);
if (opt_index != undefined) {
arr.splice(opt_index, 0, value);
} else {
arr.push(value);
}
+ return msg;
};
/**
* Sets the value of a field in a oneof union and clears all other fields in
* the union.
- * @param {!jspb.Message} msg A jspb proto.
+ * @param {T} msg A jspb proto.
* @param {number} fieldNumber The field number.
* @param {!Array<number>} oneof The fields belonging to the union.
* @param {string|number|boolean|Uint8Array|Array|undefined} value New value
+ * @return {T} return msg
+ * @template T
* @protected
*/
jspb.Message.setOneofField = function(msg, fieldNumber, oneof, value) {
+ // TODO(b/35241823): replace this with a bounded generic when available
+ goog.asserts.assertInstanceof(msg, jspb.Message);
var currentCase = jspb.Message.computeOneofCase(msg, oneof);
if (currentCase && currentCase !== fieldNumber && value !== undefined) {
if (msg.wrappers_ && currentCase in msg.wrappers_) {
@@ -1130,7 +1163,7 @@
}
jspb.Message.setField(msg, currentCase, undefined);
}
- jspb.Message.setField(msg, fieldNumber, value);
+ return jspb.Message.setField(msg, fieldNumber, value);
};
@@ -1244,48 +1277,61 @@
/**
* Sets a proto field and syncs it to the backing array.
- * @param {!jspb.Message} msg A jspb proto.
+ * @param {T} msg A jspb proto.
* @param {number} fieldNumber The field number.
* @param {?jspb.Message|?jspb.Map|undefined} value A new value for this proto
* field.
+ * @return {T} the msg
+ * @template T
* @protected
*/
jspb.Message.setWrapperField = function(msg, fieldNumber, value) {
+ // TODO(b/35241823): replace this with a bounded generic when available
+ goog.asserts.assertInstanceof(msg, jspb.Message);
if (!msg.wrappers_) {
msg.wrappers_ = {};
}
var data = value ? value.toArray() : value;
msg.wrappers_[fieldNumber] = value;
- jspb.Message.setField(msg, fieldNumber, data);
+ return jspb.Message.setField(msg, fieldNumber, data);
};
+
/**
* Sets a proto field in a oneof union and syncs it to the backing array.
- * @param {!jspb.Message} msg A jspb proto.
+ * @param {T} msg A jspb proto.
* @param {number} fieldNumber The field number.
* @param {!Array<number>} oneof The fields belonging to the union.
* @param {jspb.Message|undefined} value A new value for this proto field.
+ * @return {T} the msg
+ * @template T
* @protected
*/
jspb.Message.setOneofWrapperField = function(msg, fieldNumber, oneof, value) {
+ // TODO(b/35241823): replace this with a bounded generic when available
+ goog.asserts.assertInstanceof(msg, jspb.Message);
if (!msg.wrappers_) {
msg.wrappers_ = {};
}
var data = value ? value.toArray() : value;
msg.wrappers_[fieldNumber] = value;
- jspb.Message.setOneofField(msg, fieldNumber, oneof, data);
+ return jspb.Message.setOneofField(msg, fieldNumber, oneof, data);
};
/**
* Sets a repeated proto field and syncs it to the backing array.
- * @param {!jspb.Message} msg A jspb proto.
+ * @param {T} msg A jspb proto.
* @param {number} fieldNumber The field number.
* @param {Array<!jspb.Message>|undefined} value An array of protos.
+ * @return {T} the msg
+ * @template T
* @protected
*/
jspb.Message.setRepeatedWrapperField = function(msg, fieldNumber, value) {
+ // TODO(b/35241823): replace this with a bounded generic when available
+ goog.asserts.assertInstanceof(msg, jspb.Message);
if (!msg.wrappers_) {
msg.wrappers_ = {};
}
@@ -1294,7 +1340,7 @@
data[i] = value[i].toArray();
}
msg.wrappers_[fieldNumber] = value;
- jspb.Message.setField(msg, fieldNumber, data);
+ return jspb.Message.setField(msg, fieldNumber, data);
};