difftastic/vendored_parsers/tree-sitter-hare/example/rt.ha

17 lines
492 B
Plaintext

use rt;
// Wraps an [rt::errno] to produce an [errors::opaque]. This is a non-portable
// interface which is mainly provided to support internal stdlib requirements.
export fn errno(errno: rt::errno) opaque = {
static assert(size(rt::errno) <= size(opaque_data));
let err = opaque { strerror = &rt_strerror, ... };
let ptr = &err.data: *rt::errno;
*ptr = errno;
return err;
};
fn rt_strerror(err: *opaque_data) const str = {
let err = &err: *rt::errno;
return rt::strerror(*err);
};