in web/jslint/src/main/resources/data/jslint-2020-03-28.js [1693:1760]
function are_similar(a, b) {
if (a === b) {
return true;
}
if (Array.isArray(a)) {
return Array.isArray(b) && a.length === b.length && a.every(function (value, index) {
return are_similar(value, b[index]);
});
}
if (Array.isArray(b)) {
return false;
}
if (a.id === "(number)" && b.id === "(number)") {
return a.value === b.value;
}
var a_string;
var b_string;
if (a.id === "(string)") {
a_string = a.value;
} else if (a.id === "`" && a.constant) {
a_string = a.value[0];
}
if (b.id === "(string)") {
b_string = b.value;
} else if (b.id === "`" && b.constant) {
b_string = b.value[0];
}
if (typeof a_string === "string") {
return a_string === b_string;
}
if (is_weird(a) || is_weird(b)) {
return false;
}
if (a.arity === b.arity && a.id === b.id) {
if (a.id === ".") {
return are_similar(a.expression, b.expression) && are_similar(a.name, b.name);
}
if (a.arity === "unary") {
return are_similar(a.expression, b.expression);
}
if (a.arity === "binary") {
return a.id !== "(" && are_similar(a.expression[0], b.expression[0]) && are_similar(a.expression[1], b.expression[1]);
}
if (a.arity === "ternary") {
return are_similar(a.expression[0], b.expression[0]) && are_similar(a.expression[1], b.expression[1]) && are_similar(a.expression[2], b.expression[2]);
}
if (a.arity === "function" && a.arity === "regexp") {
return false;
}
return true;
}
return false;
}