UglifyJS/test/mocha/getter-setter.js

68 lines
1.9 KiB
JavaScript
Raw Permalink Normal View History

var assert = require("assert");
2018-06-21 17:04:15 +00:00
var UglifyJS = require("../node");
describe("Getters and setters", function() {
it("Should not accept operator symbols as getter/setter name", function() {
2020-12-23 22:22:55 +00:00
[
"++",
"--",
"+",
"-",
"!",
"~",
"&",
"|",
"^",
"*",
"/",
"%",
">>",
"<<",
">>>",
"<",
">",
"<=",
">=",
"==",
"===",
"!=",
"!==",
"?",
"=",
"+=",
"-=",
"/=",
"*=",
"%=",
">>=",
"<<=",
">>>=",
"|=",
"^=",
"&=",
"&&",
"||"
2020-12-23 22:22:55 +00:00
].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) {
2018-06-06 09:50:56 +00:00
return e instanceof UglifyJS.JS_Parse_Error
2020-12-23 22:22:55 +00:00
&& e.message === "Unexpected token: operator «" + test.operator + "»";
}, "Expected but didn't get a syntax error while parsing following line:\n" + test.code);
});
});
});