Index: src/InitTweak/FixInit.cc
===================================================================
--- src/InitTweak/FixInit.cc	(revision 3351cc0e1e27b4c8378091ffd05c8b3a1eaf0c9e)
+++ src/InitTweak/FixInit.cc	(revision 5fe35d604ff44afc2ac1fbd0310797d09fa78823)
@@ -943,17 +943,4 @@
 		}
 
-		void addIds( SymTab::Indexer & indexer, const std::list< DeclarationWithType * > & decls ) {
-			for ( auto d : decls ) {
-				indexer.addId( d );
-			}
-		}
-
-		void addTypes( SymTab::Indexer & indexer, const std::list< TypeDecl * > & tds ) {
-			for ( auto td : tds ) {
-				indexer.addType( td );
-				addIds( indexer, td->assertions );
-			}
-		}
-
 		void GenStructMemberCalls::previsit( FunctionDecl * funcDecl ) {
 			GuardValue( function );
@@ -1012,7 +999,5 @@
 				// need to explicitly re-add function parameters to the indexer in order to resolve copy constructors
 				auto guard = makeFuncGuard( [this]() { indexer.enterScope(); }, [this]() { indexer.leaveScope(); } );
-				addTypes( indexer, function->type->forall );
-				addIds( indexer, function->type->returnVals );
-				addIds( indexer, function->type->parameters );
+				indexer.addFunctionType( function->type );
 
 				// need to iterate through members in reverse in order for
@@ -1029,5 +1014,5 @@
 					// insert and resolve default/copy constructor call for each field that's unhandled
 					std::list< Statement * > stmt;
-					Expression * arg2 = 0;
+					Expression * arg2 = nullptr;
 					if ( isCopyConstructor( function ) ) {
 						// if copy ctor, need to pass second-param-of-this-function.field
