| description( |
| "This test checks the behavior of computed property names in object literals." |
| ); |
| var a = "propertyName" |
| function runTest(test) |
| { |
| test = "(" + test + ")" |
| shouldBeTrue(test); |
| shouldBeTrue("'use strict';"+test); |
| shouldBeTrue("(function(){'use strict';return "+test+"})()"); |
| } |
| |
| runTest("{[a]: true}.propertyName") |
| runTest("{[(1,a)]: true}.propertyName") |
| runTest("{[a+1]: true}.propertyName1") |
| runTest("{propertyName: false, [a]: true}.propertyName") |
| runTest("{[a]: false, propertyName: true}.propertyName") |
| runTest("{get propertyName(){ return false; }, [a]: true}.propertyName") |
| runTest("{[a]: false, get propertyName(){ return true; }}.propertyName") |
| runTest("{__proto__: {get propertyName(){ return false; }}, [a]: true}.propertyName") |
| runTest("{__proto__: {get propertyName(){ return false; }}, propertyName: true}.propertyName") |
| a = 0; |
| runTest("{[a]: true}[0]") |
| runTest("{[a+1]: true}[1]") |
| runTest("{0: false, [a]: true}[0]") |
| runTest("{[a]: false, 0: true}[0]") |
| runTest("{get '0'(){ return false; }, [a]: true}[0]") |
| runTest("{[a]: false, get '0'(){ return true; }}[0]") |
| runTest("{__proto__: {get '0'(){ return false; }}, [a]: true}[0]") |
| |
| function runTestThrow(test) |
| { |
| test = "(" + test + ")" |
| shouldThrow(test); |
| shouldThrow("'use strict';"+test); |
| shouldThrow("(function(){'use strict';return "+test+"})()"); |
| } |
| |
| a = "propertyName" |
| runTestThrow("{[1,a]: true}.propertyName") |
| runTestThrow("{propertyName: false, [1,a]: true}.propertyName") |
| runTestThrow("{[1,a]: false, propertyName: true}.propertyName") |
| runTestThrow("{get propertyName(){ return false; }, [1,a]: true}.propertyName") |