using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Runtime.CompilerServices;

namespace Nerfed.Runtime;

public class AssertionException(string msg) : Exception(msg);

public static class Assert
{
    [Conditional("DEBUG"), DebuggerHidden]
    public static void Debug([DoesNotReturnIf(false)] bool cond, [CallerArgumentExpression("cond")] string expression = "") {
        if (!cond) {
            throw new AssertionException(expression);
        }
    }

    [DebuggerHidden]
    public static void Always([DoesNotReturnIf(false)] bool cond, [CallerArgumentExpression("cond")] string expression = "") {
        if (!cond) {
            throw new AssertionException(expression);
        }
    }
}