debug a reserved keyword (even for enums?)

Kagamin spam at here.lot
Sat Apr 11 09:40:32 UTC 2026


Use pascal case.
```d
/// Message severity level
enum Level
{
	/// Most verbose log level
	Verbose=0,
	/// ditto
	Finest=0,
	/// Deep debugging level, there's never enough of them
	Finer=1,
	/// Fine grained debugging
	Fine=2,
	/// Diagnostic information with technical details
	Debug=3,
	/// Reserve debug level when you suddenly need it
	Trace=4,
	/// High level event, e.g. user action
	Info=5,
	/// Noncritical problem
	Warn=6,
	/// Recoverable failure of current operation
	Error=7,
	/// Severe errors and other important information like program 
version
	Critical=8,
	/// Program crash
	Fatal=9,
	/// Filter only
	Mute=10
}

/**
Logging helper.
Examples:
---
private immutable Log=Logger(0);
Log.Debug("debug", number);
Log.Info("message");
Log.Warn("failure", errorCode);
Log.Error("system error", errorCode);
---
*/
struct Logger
{
	/// Logger name, can be filtered by `NameFilter`
	string Name;
	pure this(int, string name=__MODULE__){ Name=name; }
	immutable:
	private void Log3(Level level, in char[] message, long number, 
int line)
	{
		//pragma(inline, false);
		version(LogMute){}
		else Log(level,message,number,line,Name);
	}
	private void Log3(Level level, in MLog[] message, int line)
	{
		//pragma(inline, false);
		version(LogMute){}
		else Log2(level,message,line,Name);
	}
	/// Log message at specified level
	void Write(Level level, in char[] message=null, long number=0, 
int line=__LINE__)
	{
		if(level>=LevelFilter)Log3(level,message,number,line);
	}
	/// ditto
	void Write(Level level, scope const MLog[] message, int 
line=__LINE__)
	{
		if(level>=LevelFilter)Log3(level,message,line);
	}
	/// ditto
	alias Write opCall;
	/// Log debug message
	void Debug(in char[] message, long number=0, int line=__LINE__)
	{
		if(Level.Debug>=LevelFilter)Log3(Level.Debug,message,number,line);
	}
	/// ditto
	void Debug(scope const MLog[] message, int line=__LINE__)
	{
		if(Level.Debug>=LevelFilter)Log3(Level.Debug,message,line);
	}
	/// Log informational message
	void Info(in char[] message, long number=0, int line=__LINE__)
	{
		if(Level.Info>=LevelFilter)Log3(Level.Info,message,number,line);
	}
	/// Log warning message
	void Warn(in char[] message, long number=0, int line=__LINE__)
	{
		Log3(Level.Warn,message,number,line);
	}
	/// Log error message
	void Error(in char[] message, long number=0, int line=__LINE__)
	{
		Log3(Level.Error,message,number,line);
	}
}
```


More information about the Digitalmars-d mailing list