namespace Lua.Standard.Basic; public sealed class AssertFunction : LuaFunction { public override string Name => "assert"; public static readonly AssertFunction Instance = new(); protected override ValueTask InvokeAsyncCore(LuaFunctionExecutionContext context, Memory buffer, CancellationToken cancellationToken) { var arg0 = context.ReadArgument(0); if (!arg0.ToBoolean()) { var message = "assertion failed!"; if (context.ArgumentCount >= 2) { message = context.ReadArgument(1); } throw new LuaAssertionException(context.State.GetTraceback(), message); } return new(0); } }