in web/jslint/src/main/resources/data/jslint-2020-03-28.js [2442:2594]
function parameter_list() {
var list = [];
var optional;
var signature = ["("];
if (next_token.id !== ")" && next_token.id !== "(end)") {
(function parameter() {
var ellipsis = false;
var param;
if (next_token.id === "{") {
if (optional !== undefined) {
warn("required_a_optional_b", next_token, next_token.id, optional.id);
}
param = next_token;
param.names = [];
advance("{");
signature.push("{");
(function subparameter() {
var subparam = next_token;
if (!subparam.identifier) {
return stop("expected_identifier_a");
}
survey(subparam);
advance();
signature.push(subparam.id);
if (next_token.id === ":") {
advance(":");
advance();
token.label = subparam;
subparam = token;
if (!subparam.identifier) {
return stop("expected_identifier_a");
}
}
if (next_token.id === "=") {
advance("=");
subparam.expression = expression();
param.open = true;
}
param.names.push(subparam);
if (next_token.id === ",") {
advance(",");
signature.push(", ");
return subparameter();
}
})();
list.push(param);
advance("}");
signature.push("}");
if (next_token.id === ",") {
advance(",");
signature.push(", ");
return parameter();
}
} else if (next_token.id === "[") {
if (optional !== undefined) {
warn("required_a_optional_b", next_token, next_token.id, optional.id);
}
param = next_token;
param.names = [];
advance("[");
signature.push("[]");
(function subparameter() {
var subparam = next_token;
if (!subparam.identifier) {
return stop("expected_identifier_a");
}
advance();
param.names.push(subparam);
if (next_token.id === "=") {
advance("=");
subparam.expression = expression();
param.open = true;
}
if (next_token.id === ",") {
advance(",");
return subparameter();
}
})();
list.push(param);
advance("]");
if (next_token.id === ",") {
advance(",");
signature.push(", ");
return parameter();
}
} else {
if (next_token.id === "...") {
ellipsis = true;
signature.push("...");
advance("...");
if (optional !== undefined) {
warn("required_a_optional_b", next_token, next_token.id, optional.id);
}
}
if (!next_token.identifier) {
return stop("expected_identifier_a");
}
param = next_token;
list.push(param);
advance();
signature.push(param.id);
if (ellipsis) {
param.ellipsis = true;
} else {
if (next_token.id === "=") {
optional = param;
advance("=");
param.expression = expression(0);
} else {
if (optional !== undefined) {
warn("required_a_optional_b", param, param.id, optional.id);
}
}
if (next_token.id === ",") {
advance(",");
signature.push(", ");
return parameter();
}
}
}
})();
}
advance(")");
signature.push(")");
return [list, signature.join("")];
}