mirror of
				https://github.com/tc39/test262.git
				synced 2025-10-27 01:33:59 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			97 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| function testSyntax(script) {
 | |
|     try {
 | |
|         eval(script);
 | |
|     } catch (error) {
 | |
|         if (error instanceof SyntaxError)
 | |
|             throw new Error("Bad error: " + String(error));
 | |
|     }
 | |
| }
 | |
| 
 | |
| function testSyntaxError(script, message) {
 | |
|     var error = null;
 | |
|     try {
 | |
|         eval(script);
 | |
|     } catch (e) {
 | |
|         error = e;
 | |
|     }
 | |
|     if (!error)
 | |
|         throw new Error("Expected syntax error not thrown");
 | |
| 
 | |
|     if (String(error) !== message)
 | |
|         throw new Error("Bad error: " + String(error));
 | |
| }
 | |
| 
 | |
| {
 | |
|     let tokens = [
 | |
|         '-',
 | |
|         '+',
 | |
|         '~',
 | |
|         '!',
 | |
|         'typeof',
 | |
|         'void',
 | |
|         'delete',
 | |
|     ];
 | |
| 
 | |
|     for (let token of tokens) {
 | |
|         testSyntaxError(`
 | |
|         function pow(a, b)
 | |
|         {
 | |
|             return ${token} a ** b;
 | |
|         }
 | |
|         `, `SyntaxError: Unexpected token '**'. Ambiguous unary expression in the left hand side of the exponentiation expression; parentheses must be used to disambiguate the expression.`);
 | |
|     }
 | |
| }
 | |
| 
 | |
| {
 | |
|     let tokens = [
 | |
|         '-',
 | |
|         '+',
 | |
|         '~',
 | |
|         '!',
 | |
|         'typeof',
 | |
|         'void',
 | |
|         'delete',
 | |
|     ];
 | |
| 
 | |
|     for (let token of tokens) {
 | |
|         testSyntax(`
 | |
|         function pow(a, b)
 | |
|         {
 | |
|             return (${token} a) ** b;
 | |
|         }
 | |
|         `);
 | |
|     }
 | |
| }
 | |
| 
 | |
| {
 | |
|     let tokens = [
 | |
|         '++',
 | |
|         '--',
 | |
|     ];
 | |
| 
 | |
|     for (let token of tokens) {
 | |
|         testSyntax(`
 | |
|         function pow(a, b)
 | |
|         {
 | |
|             return ${token} a ** b;
 | |
|         }
 | |
|         `);
 | |
|     }
 | |
| }
 | |
| 
 | |
| {
 | |
|     let tokens = [
 | |
|         '++',
 | |
|         '--',
 | |
|     ];
 | |
| 
 | |
|     for (let token of tokens) {
 | |
|         testSyntax(`
 | |
|         function pow(a, b)
 | |
|         {
 | |
|             return a ${token} ** b;
 | |
|         }
 | |
|         `);
 | |
|     }
 | |
| }
 |