Index: src/Common/CodeLocation.h
===================================================================
--- src/Common/CodeLocation.h	(revision 80ac42dcb6d8ee04ca42836f7c2d59cbcc65bb01)
+++ src/Common/CodeLocation.h	(revision 7453a6885554a2ffbb472a01d68f820f660acf84)
@@ -20,16 +20,13 @@
 
 struct CodeLocation {
-	int linenumber;
-	std::string filename;
+	int first_line = -1, first_column = -1, last_line = -1, last_column = -1;
+	std::string filename = "";
 
 	/// Create a new unset CodeLocation.
-		CodeLocation()
-		: linenumber( -1 )
-		, filename("")
-	{}
+	CodeLocation() = default;
 
 	/// Create a new CodeLocation with the given values.
 	CodeLocation( const char* filename, int lineno )
-		: linenumber( lineno )
+		: first_line( lineno )
 		, filename(filename ? filename : "")
 	{}
@@ -38,5 +35,5 @@
 
 	bool isSet () const {
-		return -1 != linenumber;
+		return -1 != first_line;
 	}
 
@@ -46,5 +43,5 @@
 
 	bool followedBy( CodeLocation const & other, int seperation ) {
-		return (linenumber + seperation == other.linenumber &&
+		return (first_line + seperation == other.first_line &&
 		        filename == other.filename);
 	}
@@ -61,4 +58,4 @@
 inline std::ostream & operator<<( std::ostream & out, const CodeLocation & location ) {
 	// Column number ":1" allows IDEs to parse the error message and position the cursor in the source text.
-	return location.isSet() ? out << location.filename << ":" << location.linenumber << ":1 " : out;
+	return location.isSet() ? out << location.filename << ":" << location.first_line << ":1 " : out;
 }
Index: src/Common/SemanticError.h
===================================================================
--- src/Common/SemanticError.h	(revision 80ac42dcb6d8ee04ca42836f7c2d59cbcc65bb01)
+++ src/Common/SemanticError.h	(revision 7453a6885554a2ffbb472a01d68f820f660acf84)
@@ -32,5 +32,5 @@
 
 	void maybeSet( const CodeLocation & location ) {
-		if( this->location.linenumber < 0 ) {
+		if( this->location.isUnset() ) {
 			this->location = location;
 		}
