mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-30 02:22:07 +00:00 
			
		
		
		
	 d165590809
			
		
	
	
		d165590809
		
	
	
	
	
		
			
			This makes the behavior of `Symbol` correct in strict mode, wherein if the receiver is a symbol primitive, assigning new properties should throw a TypeError.
		
			
				
	
	
		
			27 lines
		
	
	
	
		
			765 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
	
		
			765 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| test("basic functionality", () => {
 | |
|     const s1 = Symbol("foo");
 | |
|     const s2 = Symbol("foo");
 | |
| 
 | |
|     expect(s1).not.toBe(s2);
 | |
|     expect(s1.description).toBe("foo");
 | |
|     expect(s2.description).toBe("foo");
 | |
| 
 | |
|     s1.description = "bar";
 | |
|     expect(s1.description).toBe("foo");
 | |
| 
 | |
|     expect(typeof s1).toBe("symbol");
 | |
| });
 | |
| 
 | |
| test("constructing symbol from symbol is an error", () => {
 | |
|     expect(() => {
 | |
|         Symbol(Symbol("foo"));
 | |
|     }).toThrowWithMessage(TypeError, "Cannot convert symbol to string");
 | |
| });
 | |
| 
 | |
| test("setting new properties on a symbol is an error in strict mode", () => {
 | |
|     "use strict";
 | |
|     var symbol = Symbol("foo");
 | |
|     expect(() => {
 | |
|         symbol.bar = 42;
 | |
|     }).toThrowWithMessage(TypeError, "Cannot set property 'bar' of Symbol(foo)");
 | |
| });
 |