On 26.06.19 16:01, SHOO wrote:
GitHub: https://github.com/shoo/cushion
You've got bad `@trusted`s.
Quoting from there:
pragma(inline) T trustedCast(T, Arg)(Arg arg) @trusted
{
return cast(T)arg;
}
No.
pragma(inline) void call(Handler, Args...)(ref Handler handler, Args args)
@trusted
{
[...]
handler(args);
Noo.
pragma(inline) void add(Handler, Func)(ref Handler handler, Func func) @trusted
{
[...]
handler ~= func;
[...]
handler.insert(func);
[...]
handler.connect(func);
Nooo.
pragma(inline) void remove(Handler, Func)(ref Handler handler, Func func)
@trusted
{
[...]
__traits(getMember, handler, "remove")(func);
[...]
handler.disconnect(func);
[...]
handler.linearRemoveElement(func);
Noooo.
struct StateTransitor(
[...]
EventContainer = SList!EventType)
{
[...]> EventContainer _events;
[...]
void consume() @safe
{
[...]
() @trusted
{
[...]
_events.removeFront();
[...]
}();
}
Nooooo.