| 
									
										
										
										
											2020-06-01 21:13:16 -07:00
										 |  |  | load("test-common.js"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | try { | 
					
						
							|  |  |  |     assert(Object.preventExtensions() === undefined); | 
					
						
							|  |  |  |     assert(Object.preventExtensions(undefined) === undefined); | 
					
						
							|  |  |  |     assert(Object.preventExtensions(null) === null); | 
					
						
							|  |  |  |     assert(Object.preventExtensions(true) === true); | 
					
						
							|  |  |  |     assert(Object.preventExtensions(6) === 6); | 
					
						
							|  |  |  |     assert(Object.preventExtensions("test") === "test"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     let s = Symbol(); | 
					
						
							|  |  |  |     assert(Object.preventExtensions(s) === s); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     let o = { foo: "foo" }; | 
					
						
							|  |  |  |     assert(o.foo === "foo"); | 
					
						
							|  |  |  |     o.bar = "bar"; | 
					
						
							|  |  |  |     assert(o.bar === "bar"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     assert(Object.preventExtensions(o) === o); | 
					
						
							|  |  |  |     assert(o.foo === "foo"); | 
					
						
							|  |  |  |     assert(o.bar === "bar"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     o.baz = "baz"; | 
					
						
							|  |  |  |     assert(o.baz === undefined); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-03 14:34:52 -07:00
										 |  |  |     assertThrowsError(() => { | 
					
						
							|  |  |  |         Object.defineProperty(o, "baz", { value: "baz" }); | 
					
						
							|  |  |  |     }, { | 
					
						
							|  |  |  |         error: TypeError, | 
					
						
							| 
									
										
										
										
											2020-06-09 22:48:01 -07:00
										 |  |  |         message: "Cannot define property baz on non-extensible object", | 
					
						
							| 
									
										
										
										
											2020-06-03 14:34:52 -07:00
										 |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-01 21:13:16 -07:00
										 |  |  |     assert(o.baz === undefined); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     assertThrowsError(() => { | 
					
						
							|  |  |  |         "use strict"; | 
					
						
							|  |  |  |         o.baz = "baz"; | 
					
						
							|  |  |  |     }, { | 
					
						
							|  |  |  |         error: TypeError, | 
					
						
							|  |  |  |         message: "Cannot define property baz on non-extensible object", | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     assertThrowsError(() => { | 
					
						
							|  |  |  |         "use strict"; | 
					
						
							|  |  |  |         Object.defineProperty(o, "baz", { value: "baz" }); | 
					
						
							|  |  |  |     }, { | 
					
						
							|  |  |  |         error: TypeError, | 
					
						
							|  |  |  |         message: "Cannot define property baz on non-extensible object", | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     console.log("PASS"); | 
					
						
							|  |  |  | } catch (e) { | 
					
						
							|  |  |  |     console.log("FAIL: " + e); | 
					
						
							|  |  |  | } |