Index: src/Common/CodeLocationTools.cpp
===================================================================
--- src/Common/CodeLocationTools.cpp	(revision 4f6dda063e7b3a906904ff494b7cf4bb41f5a5c5)
+++ src/Common/CodeLocationTools.cpp	(revision 33b7d490d37c1f84e96a85cdf1c8baad2b08aeb8)
@@ -9,7 +9,7 @@
 // Author           : Andrew Beach
 // Created On       : Fri Dec  4 15:42:00 2020
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Feb  1 09:14:39 2022
-// Update Count     : 3
+// Last Modified By : Andrew Beach
+// Last Modified On : Mon Mar 14 15:14:00 2022
+// Update Count     : 4
 //
 
@@ -239,4 +239,25 @@
 };
 
+class LocalFillCore : public ast::WithGuards {
+	CodeLocation const * parent;
+public:
+	LocalFillCore( CodeLocation const & location ) : parent( &location ) {
+		assert( location.isSet() );
+	}
+
+	template<typename node_t>
+	auto previsit( node_t const * node )
+			-> typename std::enable_if<has_code_location<node_t>::value, node_t const *>::type {
+		if ( node->location.isSet() ) {
+			GuardValue( parent ) = &node->location;
+			return node;
+		} else {
+			node_t * mut = ast::mutate( node );
+			mut->location = *parent;
+			return mut;
+		}
+	}
+};
+
 } // namespace
 
@@ -278,2 +299,8 @@
 	ast::Pass<FillCore>::run( unit );
 }
+
+ast::Node const * localFillCodeLocations(
+		CodeLocation const & location , ast::Node const * node ) {
+	ast::Pass<LocalFillCore> visitor( location );
+	return node->accept( visitor );
+}
Index: src/Common/CodeLocationTools.hpp
===================================================================
--- src/Common/CodeLocationTools.hpp	(revision 4f6dda063e7b3a906904ff494b7cf4bb41f5a5c5)
+++ src/Common/CodeLocationTools.hpp	(revision 33b7d490d37c1f84e96a85cdf1c8baad2b08aeb8)
@@ -10,11 +10,13 @@
 // Created On       : Fri Dec  4 15:35:00 2020
 // Last Modified By : Andrew Beach
-// Last Modified On : Wed Dec  9  9:53:00 2020
-// Update Count     : 1
+// Last Modified On : Mon Mar 14 15:14:00 2022
+// Update Count     : 2
 //
 
 #pragma once
 
+class CodeLocation;
 namespace ast {
+	class Node;
 	class TranslationUnit;
 }
@@ -28,2 +30,7 @@
 // Assign a nearby code-location to any unset code locations in the forest.
 void forceFillCodeLocations( ast::TranslationUnit & unit );
+
+// Fill in code-locations with a parent code location,
+// using the provided CodeLocation as the base.
+ast::Node const *
+	localFillCodeLocations( CodeLocation const &, ast::Node const * );
