Index: src/SymTab/Autogen.cc
===================================================================
--- src/SymTab/Autogen.cc	(revision af397ef8f0a43077863974fc725f7ae0d12ca892)
+++ src/SymTab/Autogen.cc	(revision daf1af80c44ed2335beaaef08ee5072ea619ef52)
@@ -262,5 +262,5 @@
 	// E ?=?(E volatile*, int),
 	//   ?=?(E _Atomic volatile*, int);
-	void makeEnumFunctions( EnumDecl *enumDecl, EnumInstType *refType, unsigned int functionNesting, std::list< Declaration * > &declsToAdd ) {
+	void makeEnumFunctions( EnumInstType *refType, unsigned int functionNesting, std::list< Declaration * > &declsToAdd ) {
 
 		// T ?=?(E *, E);
@@ -486,5 +486,5 @@
 
 	/// generates the body of a union assignment/copy constructor/field constructor
-	void makeUnionAssignBody( FunctionDecl * funcDecl, bool isDynamicLayout ) {
+	void makeUnionAssignBody( FunctionDecl * funcDecl ) {
 		FunctionType * ftype = funcDecl->get_functionType();
 		assert( ftype->get_parameters().size() == 2 );
@@ -506,6 +506,5 @@
 		// Make function polymorphic in same parameters as generic union, if applicable
 		const std::list< TypeDecl* > & typeParams = aggregateDecl->get_parameters(); // List of type variables to be placed on the generated functions
-		bool isDynamicLayout = hasDynamicLayout( aggregateDecl );  // NOTE this flag is an incredibly ugly kludge; we should fix the assignment signature instead (ditto for struct)
-
+		
 		// default ctor/dtor need only first parameter
 		// void ?{}(T *); void ^?{}(T *);
@@ -533,8 +532,8 @@
 		FunctionDecl *dtorDecl = genFunc( "^?{}", dtorType, functionNesting );
 
-		makeUnionAssignBody( assignDecl, isDynamicLayout );
+		makeUnionAssignBody( assignDecl );
 
 		// body of assignment and copy ctor is the same
-		makeUnionAssignBody( copyCtorDecl, isDynamicLayout );
+		makeUnionAssignBody( copyCtorDecl );
 
 		// create a constructor which takes the first member type as a parameter.
@@ -551,5 +550,5 @@
 				FunctionDecl * ctor = genFunc( "?{}", memCtorType, functionNesting );
 
-				makeUnionAssignBody( ctor, isDynamicLayout );
+				makeUnionAssignBody( ctor );
 				memCtors.push_back( ctor );
 				// only generate a ctor for the first field
@@ -578,5 +577,5 @@
 			EnumInstType *enumInst = new EnumInstType( Type::Qualifiers(), enumDecl->get_name() );
 			// enumInst->set_baseEnum( enumDecl );
-			makeEnumFunctions( enumDecl, enumInst, functionNesting, declsToAddAfter );
+			makeEnumFunctions( enumInst, functionNesting, declsToAddAfter );
 		}
 	}
Index: src/SymTab/Indexer.cc
===================================================================
--- src/SymTab/Indexer.cc	(revision af397ef8f0a43077863974fc725f7ae0d12ca892)
+++ src/SymTab/Indexer.cc	(revision daf1af80c44ed2335beaaef08ee5072ea619ef52)
@@ -518,10 +518,4 @@
 		acceptNewScope( tupleExpr->get_result(), *this );
 		maybeAccept( tupleExpr->get_tuple(), *this );
-	}
-
-	void Indexer::visit( MemberTupleExpr *tupleExpr ) {
-		acceptNewScope( tupleExpr->get_result(), *this );
-		maybeAccept( tupleExpr->get_member(), *this );
-		maybeAccept( tupleExpr->get_aggregate(), *this );
 	}
 
Index: src/SymTab/Indexer.h
===================================================================
--- src/SymTab/Indexer.h	(revision af397ef8f0a43077863974fc725f7ae0d12ca892)
+++ src/SymTab/Indexer.h	(revision daf1af80c44ed2335beaaef08ee5072ea619ef52)
@@ -74,5 +74,4 @@
 		virtual void visit( TupleExpr *tupleExpr );
 		virtual void visit( TupleIndexExpr *tupleExpr );
-		virtual void visit( MemberTupleExpr *tupleExpr );
 		virtual void visit( TupleAssignExpr *tupleExpr );
 		virtual void visit( StmtExpr * stmtExpr );
