diff options
Diffstat (limited to 'src/sdlang/exception.d')
| -rw-r--r-- | src/sdlang/exception.d | 190 | 
1 files changed, 0 insertions, 190 deletions
| diff --git a/src/sdlang/exception.d b/src/sdlang/exception.d deleted file mode 100644 index 188991e..0000000 --- a/src/sdlang/exception.d +++ /dev/null @@ -1,190 +0,0 @@ -// SDLang-D -// Written in the D programming language. - -module sdlang.exception; - -import std.array; -import std.exception; -import std.range; -import std.stdio; -import std.string; - -import sdlang.ast; -import sdlang.util; - -/// Abstract parent class of all SDLang-D defined exceptions. -abstract class SDLangException : Exception -{ -	this(string msg, string file = __FILE__, size_t line = __LINE__) -	{ -		super(msg, file, line); -	} -} - -/// Thrown when a syntax error is encounterd while parsing. -class ParseException : SDLangException -{ -	Location location; -	bool hasLocation; - -	this(string msg, string file = __FILE__, size_t line = __LINE__) -	{ -		hasLocation = false; -		super(msg, file, line); -	} - -	this(Location location, string msg, string file = __FILE__, size_t line = __LINE__) -	{ -		hasLocation = true; -		super("%s: %s".format(location.toString(), msg), file, line); -	} -} - -/// Compatibility alias -deprecated("The new name is ParseException") -alias SDLangParseException = ParseException; - -/++ -Thrown when attempting to do something in the DOM that's unsupported, such as: - -$(UL -$(LI Adding the same instance of a tag or attribute to more than one parent.) -$(LI Writing SDLang where: -	$(UL -	$(LI The root tag has values, attributes or a namespace. ) -	$(LI An anonymous tag has a namespace. ) -	$(LI An anonymous tag has no values. ) -	$(LI A floating point value is infinity or NaN. ) -	) -)) -+/ -class ValidationException : SDLangException -{ -	this(string msg, string file = __FILE__, size_t line = __LINE__) -	{ -		super(msg, file, line); -	} -} - -/// Compatibility alias -deprecated("The new name is ValidationException") -alias SDLangValidationException = ValidationException; - -/// Thrown when someting is wrong with the provided arguments to a function. -class ArgumentException : SDLangException -{ -	this(string msg, string file = __FILE__, size_t line = __LINE__) -	{ -		super(msg, file, line); -	} -} - -/// Thrown by the DOM on empty range and out-of-range conditions. -abstract class DOMException : SDLangException -{ -	Tag base; /// The tag searched from - -	this(Tag base, string msg, string file = __FILE__, size_t line = __LINE__) -	{ -		this.base = base; -		super(msg, file, line); -	} - -	/// Prefixes a message with file/line information from the tag (if tag exists). -	/// Optionally takes output range as a sink. -	string customMsg(string msg) -	{ -		if(!base) -			return msg; - -		Appender!string sink; -		this.customMsg(sink, msg); -		return sink.data; -	} - -	///ditto -	void customMsg(Sink)(ref Sink sink, string msg) if(isOutputRange!(Sink,char)) -	{ -		if(base) -		{ -			sink.put(base.location.toString()); -			sink.put(": "); -			sink.put(msg); -		} -		else -			sink.put(msg); -	} - -	/// Outputs a message to stderr, prefixed with file/line information -	void writeCustomMsg(string msg) -	{ -		stderr.writeln( customMsg(msg) ); -	} -} - -/// Thrown by the DOM on empty range and out-of-range conditions. -class DOMRangeException : DOMException -{ -	this(Tag base, string msg, string file = __FILE__, size_t line = __LINE__) -	{ -		super(base, msg, file, line); -	} -} - -/// Compatibility alias -deprecated("The new name is DOMRangeException") -alias SDLangRangeException = DOMRangeException; - -/// Abstract parent class of `TagNotFoundException`, `ValueNotFoundException` -/// and `AttributeNotFoundException`. -/// -/// Thrown by the DOM's `sdlang.ast.Tag.expectTag`, etc. functions if a matching element isn't found. -abstract class DOMNotFoundException : DOMException -{ -	FullName tagName; /// The tag searched for - -	this(Tag base, FullName tagName, string msg, string file = __FILE__, size_t line = __LINE__) -	{ -		this.tagName = tagName; -		super(base, msg, file, line); -	} -} - -/// Thrown by the DOM's `sdlang.ast.Tag.expectTag`, etc. functions if a Tag isn't found. -class TagNotFoundException : DOMNotFoundException -{ -	this(Tag base, FullName tagName, string msg, string file = __FILE__, size_t line = __LINE__) -	{ -		super(base, tagName, msg, file, line); -	} -} - -/// Thrown by the DOM's `sdlang.ast.Tag.expectValue`, etc. functions if a Value isn't found. -class ValueNotFoundException : DOMNotFoundException -{ -	/// Expected type for the not-found value. -	TypeInfo valueType; - -	this(Tag base, FullName tagName, TypeInfo valueType, string msg, string file = __FILE__, size_t line = __LINE__) -	{ -		this.valueType = valueType; -		super(base, tagName, msg, file, line); -	} -} - -/// Thrown by the DOM's `sdlang.ast.Tag.expectAttribute`, etc. functions if an Attribute isn't found. -class AttributeNotFoundException : DOMNotFoundException -{ -	FullName attributeName; /// The attribute searched for - -	/// Expected type for the not-found attribute's value. -	TypeInfo valueType; - -	this(Tag base, FullName tagName, FullName attributeName, TypeInfo valueType, string msg, -		string file = __FILE__, size_t line = __LINE__) -	{ -		this.valueType = valueType; -		this.attributeName = attributeName; -		super(base, tagName, msg, file, line); -	} -} | 
