Warning: session_start(): open(/var/lib/php/sessions/sess_hqe0v0ddb8peu9b1hcm9n0ejng, 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
!7
sinterface Bla {
default S bla() { ret "ok"; }
}
sclass Blubb implements Bla {
}
p-exp {
assertEqualsVerbose("ok", call(new Blubb, "bla"));
}
final sclass _MethodCache {
final Class c;
final HashMap> cache = new HashMap;
*(Class *c) { _init(); }
void _init() {
Class _c = c;
while (_c != null) {
for (Method m : _c.getDeclaredMethods()) {
m.setAccessible(true);
multiMapPut(cache, m.getName(), m);
}
// add default methods
for (Class intf : allInterfacesImplementedBy(c))
for (Method m : intf.getDeclaredMethods())
if (m.isDefault()) {
m.setAccessible(true);
multiMapPut(cache, m.getName(), m);
}
_c = _c.getSuperclass();
}
ifdef _MethodCache_debug
print("MethodCache " + this + ": " + className(c) + " => " + keys(cache));
endifdef
}
// Returns only matching methods
Method findMethod(S method, O[] args) ctex {
L m = cache.get(method);
ifdef _MethodCache_debug
print("findMethod " + this + ": " + className(c) + "/" + method + " => " + m);
endifdef
if (m == null) null;
int n = m.size();
for i to n: {
Method me = m.get(i);
if (call_checkArgs(me, args, false))
ret me;
}
null;
}
}