Warning: session_start(): open(/var/lib/php/sessions/sess_aj3etln1oaqstgoh1982ahmu6s, 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
// Describes a value during script optimization/type inference.
// In the best case, the exact value is known.
// Next best case is we're knowing its precise type (value of object.getClass()).
// Third best case is we're knowing it's castable to a certain type.
// A completely unknown value is described simply by "new LASValueDescriptor".
sclass LASValueDescriptor {
bool knownValue() { false; }
O value() { null; }
Class javaClass() { null; }
bool javaClassIsExact() { false; }
bool canBeNull() { true; }
bool canFail() { false; }
bool willFail() { false; }
srecord Exact(Class c, bool canBeNull) > LASValueDescriptor {
Class javaClass() { ret c; }
bool javaClassIsExact() { true; }
bool canBeNull() { ret canBeNull; }
}
srecord NonExact(Class c, bool canBeNull) > LASValueDescriptor {
Class javaClass() { ret c; }
bool javaClassIsExact() { false; }
bool canBeNull() { ret canBeNull; }
}
srecord KnownValue(O value) > LASValueDescriptor {
bool knownValue() { true; }
O value() { ret value; }
Class javaClass() { ret value?.getClass(); }
bool javaClassIsExact() { ret value != null; }
bool canBeNull() { ret value == null; }
}
// Indicates an exception can be thrown instead of returning a value.
// Probably we don't need this.
sclass WillFail > LASValueDescriptor {
bool canFail() { true; }
bool willFail() { true; }
}
static LASValueDescriptor fromClass(Class c) {
ret new NonExact(c, true);
}
}