68 lines
1.9 KiB
JavaScript
68 lines
1.9 KiB
JavaScript
var assert = require("assert");
|
|
var UglifyJS = require("../node");
|
|
|
|
describe("Getters and setters", function() {
|
|
it("Should not accept operator symbols as getter/setter name", function() {
|
|
[
|
|
"++",
|
|
"--",
|
|
"+",
|
|
"-",
|
|
"!",
|
|
"~",
|
|
"&",
|
|
"|",
|
|
"^",
|
|
"*",
|
|
"/",
|
|
"%",
|
|
">>",
|
|
"<<",
|
|
">>>",
|
|
"<",
|
|
">",
|
|
"<=",
|
|
">=",
|
|
"==",
|
|
"===",
|
|
"!=",
|
|
"!==",
|
|
"?",
|
|
"=",
|
|
"+=",
|
|
"-=",
|
|
"/=",
|
|
"*=",
|
|
"%=",
|
|
">>=",
|
|
"<<=",
|
|
">>>=",
|
|
"|=",
|
|
"^=",
|
|
"&=",
|
|
"&&",
|
|
"||"
|
|
].reduce(function(tests, illegalOperator) {
|
|
tests.push({
|
|
code: "var obj = { get " + illegalOperator + "() { return test; }};",
|
|
operator: illegalOperator,
|
|
});
|
|
tests.push({
|
|
code: "var obj = { set " + illegalOperator + "(value) { test = value; }};",
|
|
operator: illegalOperator,
|
|
});
|
|
return tests;
|
|
}, []).forEach(function(test) {
|
|
assert.throws(function() {
|
|
UglifyJS.parse(test.code);
|
|
}, test.operator == "=" ? function(e) {
|
|
return e instanceof UglifyJS.JS_Parse_Error
|
|
&& /^Unexpected token: punc «{», expected: punc «.*?»$/.test(e.message);
|
|
} : function(e) {
|
|
return e instanceof UglifyJS.JS_Parse_Error
|
|
&& e.message === "Unexpected token: operator «" + test.operator + "»";
|
|
}, "Expected but didn't get a syntax error while parsing following line:\n" + test.code);
|
|
});
|
|
});
|
|
});
|