mirror of
				https://github.com/tc39/test262.git
				synced 2025-10-30 03:03:51 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			74 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // Reviewed
 | |
| var propertyKey = {
 | |
|     toString() {
 | |
|         throw new Error("propertyKey.toString is called.");
 | |
|     }
 | |
| };
 | |
| 
 | |
| function shouldThrow(func, message) {
 | |
|     var error = null;
 | |
|     try {
 | |
|         func();
 | |
|     } catch (e) {
 | |
|         error = e;
 | |
|     }
 | |
|     if (!error)
 | |
|         throw new Error("not thrown.");
 | |
|     if (String(error) !== message)
 | |
|         throw new Error("bad error: " + String(error));
 | |
| }
 | |
| 
 | |
| var object = {};
 | |
| 
 | |
| shouldThrow(function () {
 | |
|     object.hasOwnProperty(propertyKey);
 | |
| }, "Error: propertyKey.toString is called.");
 | |
| 
 | |
| shouldThrow(function () {
 | |
|     Object.prototype.hasOwnProperty.call(null, propertyKey);
 | |
| }, "Error: propertyKey.toString is called.");
 | |
| 
 | |
| shouldThrow(function () {
 | |
|     Object.prototype.hasOwnProperty.call(null, 'ok');
 | |
| }, "TypeError: null is not an object (evaluating 'Object.prototype.hasOwnProperty.call(null, 'ok')')");
 | |
| 
 | |
| shouldThrow(function () {
 | |
|     object.propertyIsEnumerable(propertyKey);
 | |
| }, "Error: propertyKey.toString is called.");
 | |
| 
 | |
| // ToPropertyKey is first, ToObject is following.
 | |
| shouldThrow(function () {
 | |
|     Object.prototype.propertyIsEnumerable.call(null, propertyKey);
 | |
| }, "Error: propertyKey.toString is called.");
 | |
| 
 | |
| shouldThrow(function () {
 | |
|     // ToPropertyKey is first, ToObject is following.
 | |
|     Object.prototype.propertyIsEnumerable.call(null, 'ok');
 | |
| }, "TypeError: null is not an object (evaluating 'Object.prototype.propertyIsEnumerable.call(null, 'ok')')");
 | |
| 
 | |
| shouldThrow(function () {
 | |
|     object.__defineGetter__(propertyKey, function () {
 | |
|         return 'NG';
 | |
|     });
 | |
| }, "Error: propertyKey.toString is called.");
 | |
| 
 | |
| if (Object.getOwnPropertyDescriptor(object, ''))
 | |
|     throw new Error("bad descriptor");
 | |
| 
 | |
| shouldThrow(function () {
 | |
|     object.__defineSetter__(propertyKey, function () {
 | |
|         return 'NG';
 | |
|     });
 | |
| }, "Error: propertyKey.toString is called.");
 | |
| 
 | |
| if (Object.getOwnPropertyDescriptor(object, ''))
 | |
|     throw new Error("bad descriptor");
 | |
| 
 | |
| shouldThrow(function () {
 | |
|     object.__lookupGetter__(propertyKey);
 | |
| }, "Error: propertyKey.toString is called.");
 | |
| 
 | |
| shouldThrow(function () {
 | |
|     object.__lookupSetter__(propertyKey);
 | |
| }, "Error: propertyKey.toString is called.");
 |