blob: 4a569e09e34c9820458008f67399fd647aa90d7d [file] [log] [blame]
// API Surface Test: check that mutating prototypes
// of type objects has no effect, and that mutating
// the prototypes of typed objects is an error.
if (!this.hasOwnProperty("TypedObject"))
quit();
load(libdir + "asserts.js");
var {StructType, uint32, Object, Any, storage, objectType} = TypedObject;
function main() { // once a C programmer, always a C programmer.
var Uints = new StructType({f: uint32, g: uint32});
var p = Uints.prototype;
Uints.prototype = {}; // no effect
assertEq(p, Uints.prototype);
var uints = new Uints();
assertEq(uints.__proto__, p);
assertThrowsInstanceOf(() => uints.__proto__ = {},
TypeError);
assertThrowsInstanceOf(() => Object.setPrototypeOf(uints, {}),
TypeError);
assertEq(uints.__proto__, p);
var Uintss = Uints.array(2);
var p = Uintss.prototype;
Uintss.prototype = {}; // no effect
assertEq(p, Uintss.prototype);
print("Tests complete");
}
main();