Warning: session_start(): open(/var/lib/php/sessions/sess_386rt0dodqs28lh3dqr5dp57t4, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
static new ThreadLocal tok_typesAndNamesOfParams_keepModifiers;
static L> tok_typesAndNamesOfParams(L tok) {
bool keepModifiers = isTrue(optParam(tok_typesAndNamesOfParams_keepModifiers));
try {
new L> out;
for (int i = 1; i < l(tok); ) {
S t = tok.get(i);
S pre = "";
if (eq(t, "final")) {
if (keepModifiers) pre += "final ";
t = get(tok, i += 2);
}
if (eq(t, "new")) { pre += "new "; t = get(tok, i += 2); }
assertTrue(isIdentifier(t));
i += 2;
S type = t, name = "?";
while (eq(get(tok, i), ".")) {
type += "." + assertIdentifier(get(tok, i+2));
i += 4;
}
// just a parameter name, no type
if (eqOneOf(get(tok, i), null, ",")) {
name = type; type = "?";
} else {
if (eq(tok.get(i), "<")) {
int j = findEndOfTypeArgs(tok, i)-1;
while (eq(get(tok, j), "[") && eq(get(tok, j+2), "]")) j += 4;
type += trimJoinSubList(tok, i, j+1);
S id = assertIdentifier(tok.get(j+2));
i = j+2;
}
while (eq(get(tok, i), "[") && eq(get(tok, i+2), "]")) {
i += 4;
type += "[]";
}
name = assertIdentifier(tok.get(i));
i += 2;
while (eq(get(tok, i), "[") && eq(get(tok, i+2), "]")) {
i += 4;
type += "[]";
}
if (i < l(tok)) {
assertEquals(get(tok, i), ",");
i += 2;
}
}
out.add(pair(pre + type, name));
}
ret out;
} catch e {
print("Bad parameter declaration: " + sfu(tok));
throw rethrow(e);
}
}