Index: src/Common/CodeLocation.h
===================================================================
--- src/Common/CodeLocation.h	(revision 8f6dfe7bd6f31ce1ccdbf80675ca4614aa0c6e68)
+++ src/Common/CodeLocation.h	(revision 8f6dfe7bd6f31ce1ccdbf80675ca4614aa0c6e68)
@@ -0,0 +1,70 @@
+//
+// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
+//
+// The contents of this file are covered under the licence agreement in the
+// file "LICENCE" distributed with Cforall.
+//
+// CodeLocation.h --
+//
+// Author           : Andrew Beach
+// Created On       : Thr Aug 17 11:23:00 2017
+// Last Modified By : Andrew Beach
+// Last Modified On : Thr Aug 17 14:07:00 2017
+// Update Count     : 0
+//
+
+#pragma once
+
+#include <string>
+
+struct CodeLocation {
+	int linenumber;
+	std::string filename;
+
+	/// Create a new unset CodeLocation.
+		CodeLocation()
+		: linenumber( -1 )
+		, filename("")
+	{}
+
+	/// Create a new CodeLocation with the given values.
+	CodeLocation( const char* filename, int lineno )
+		: linenumber( lineno )
+		, filename(filename ? filename : "")
+	{}
+
+	CodeLocation( const CodeLocation& rhs ) = default;
+
+	bool isSet () const {
+		return -1 != linenumber;
+	}
+
+	bool isUnset () const {
+		return !isSet();
+	}
+
+	void unset () {
+		linenumber = -1;
+		filename = "";
+	}
+
+	// Use field access for set.
+
+	bool followedBy( CodeLocation const & other, int seperation ) {
+		return (linenumber + seperation == other.linenumber &&
+		        filename == other.filename);
+	}
+
+	bool operator==( CodeLocation const & other ) {
+		return followedBy( other, 0 );
+	}
+
+	bool operator!=( CodeLocation const & other ) {
+		return !(*this == other);
+	}
+};
+
+inline std::string to_string( const CodeLocation& location ) {
+    return location.isSet() ? location.filename + ":" + std::to_string(location.linenumber) + " " : "";
+}
+
Index: src/Common/SemanticError.h
===================================================================
--- src/Common/SemanticError.h	(revision be9288a525b285ac5a849a870863a162fd3d36c7)
+++ src/Common/SemanticError.h	(revision 8f6dfe7bd6f31ce1ccdbf80675ca4614aa0c6e68)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul 21 22:18:59 2017
-// Update Count     : 6
+// Last Modified By : Andrew Beach
+// Last Modified On : Thr Aug 17 14:01:00 2017
+// Update Count     : 7
 //
 
@@ -21,5 +21,5 @@
 #include <string>     // for string
 
-#include "utility.h"  // for CodeLocation, toString
+#include "CodeLocation.h"  // for CodeLocation, toString
 
 struct error {
Index: src/Common/utility.h
===================================================================
--- src/Common/utility.h	(revision be9288a525b285ac5a849a870863a162fd3d36c7)
+++ src/Common/utility.h	(revision 8f6dfe7bd6f31ce1ccdbf80675ca4614aa0c6e68)
@@ -9,7 +9,7 @@
 // Author           : Richard C. Bilson
 // Created On       : Mon May 18 07:44:20 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Jul 21 22:19:13 2017
-// Update Count     : 33
+// Last Modified By : Andrew Beach
+// Last Modified On : Thr Aug 17 11:38:00 2017
+// Update Count     : 34
 //
 
@@ -341,42 +341,4 @@
 }
 
-struct CodeLocation {
-	int linenumber;
-	std::string filename;
-
-	/// Create a new unset CodeLocation.
-	CodeLocation()
-		: linenumber( -1 )
-		, filename("")
-	{}
-
-	/// Create a new CodeLocation with the given values.
-	CodeLocation( const char* filename, int lineno )
-		: linenumber( lineno )
-		, filename(filename ? filename : "")
-	{}
-
-	CodeLocation( const CodeLocation& rhs ) = default;
-
-	bool isSet () const {
-		return -1 != linenumber;
-	}
-
-	bool isUnset () const {
-		return !isSet();
-	}
-
-	void unset () {
-		linenumber = -1;
-		filename = "";
-	}
-
-	// Use field access for set.
-};
-
-inline std::string to_string( const CodeLocation& location ) {
-	return location.isSet() ? location.filename + ":" + std::to_string(location.linenumber) + " " : "";
-}
-
 // Local Variables: //
 // tab-width: 4 //
