Index: src/AST/Expr.cpp
===================================================================
--- src/AST/Expr.cpp	(revision a2e758ebdca5340747012d5baabc30ce367b85a8)
+++ src/AST/Expr.cpp	(revision 335f2d883b176ca380bde3efee3ab1b59fab5f7b)
@@ -159,13 +159,10 @@
 	assert( aggregate->result );
 
-	#warning Needs GenericSubsitution.cpp building to work correctly
-	result.set_and_mutate( mem->get_type() )->qualifiers |= aggregate->result->qualifiers | CV::Lvalue;  // FIXME temporary patch
-
-	// // take ownership of member type
-	// result = mem->get_type();
-	// // substitute aggregate generic parameters into member type
-	// genericSubsitution( aggregate->result ).apply( result );
-	// // ensure lvalue and appropriate restrictions from aggregate type
-	// result.get_and_mutate()->qualifiers |= aggregate->result->qualifiers | CV::Lvalue;
+	// take ownership of member type
+	result = mem->get_type();
+	// substitute aggregate generic parameters into member type
+	genericSubsitution( aggregate->result ).apply( result );
+	// ensure lvalue and appropriate restrictions from aggregate type
+	result.get_and_mutate()->qualifiers |= aggregate->result->qualifiers | CV::Lvalue;
 }
 
Index: src/AST/GenericSubstitution.cpp
===================================================================
--- src/AST/GenericSubstitution.cpp	(revision a2e758ebdca5340747012d5baabc30ce367b85a8)
+++ src/AST/GenericSubstitution.cpp	(revision 335f2d883b176ca380bde3efee3ab1b59fab5f7b)
@@ -36,5 +36,5 @@
 		}
 
-		void previsit( const ReferenceType * ty ) {
+		void previsit( const ReferenceType * ) {
 			// do nothing; allows substitution from base type
 		}
Index: src/AST/Pass.hpp
===================================================================
--- src/AST/Pass.hpp	(revision a2e758ebdca5340747012d5baabc30ce367b85a8)
+++ src/AST/Pass.hpp	(revision 335f2d883b176ca380bde3efee3ab1b59fab5f7b)
@@ -178,5 +178,6 @@
 	const ast::TypeSubstitution * visit( const ast::TypeSubstitution     * ) override final;
 
-	friend void acceptAll( std::list< ptr<Decl> > & decls, Pass<pass_t>& visitor );
+	template<typename pass_type>
+	friend void acceptAll( std::list< ptr<Decl> > & decls, Pass<pass_type>& visitor );
 private:
 
Index: src/AST/Print.cpp
===================================================================
--- src/AST/Print.cpp	(revision a2e758ebdca5340747012d5baabc30ce367b85a8)
+++ src/AST/Print.cpp	(revision 335f2d883b176ca380bde3efee3ab1b59fab5f7b)
@@ -7,9 +7,9 @@
 // Print.cpp --
 //
-// Author : Thierry Delisle
-// Created On : Tue May 21 16:20:15 2019
+// Author           : Thierry Delisle
+// Created On       : Tue May 21 16:20:15 2019
 // Last Modified By :
 // Last Modified On :
-// Update Count :
+// Update Count     :
 //
 
