Index: src/CodeGen/CodeGenerator.cc
===================================================================
--- src/CodeGen/CodeGenerator.cc	(revision 92360603d942184e66e5f92706ecc75c6b04f121)
+++ src/CodeGen/CodeGenerator.cc	(revision 5ccb10d750e81ef921035bdd254327997acd80ae)
@@ -547,12 +547,11 @@
 		if ( castExpr->get_result()->isVoid() ) {
 			output << "(void)" ;
-		} else if ( ! castExpr->get_result()->get_lvalue() ) {
-			// at least one result type of cast, but not an lvalue
+		} else {
+			// at least one result type of cast.
+			// Note: previously, lvalue casts were skipped. Since it's now impossible for the user to write
+			// an lvalue cast, this has been taken out.
 			output << "(";
 			output << genType( castExpr->get_result(), "", pretty, genC );
 			output << ")";
-		} else {
-			// otherwise, the cast is to an lvalue type, so the cast should be dropped, since the result of a cast is
-			// never an lvalue in C
 		} // if
 		castExpr->get_arg()->accept( *this );
@@ -679,4 +678,9 @@
 	}
 
+	void CodeGenerator::visit( TupleAssignExpr * tupleExpr ) {
+		assertf( ! genC, "TupleAssignExpr should not reach code generation." );
+		tupleExpr->stmtExpr->accept( *this );
+	}
+
 	void CodeGenerator::visit( UntypedTupleExpr * tupleExpr ) {
 		assertf( ! genC, "UntypedTupleExpr should not reach code generation." );
@@ -726,4 +730,11 @@
 		output << "(" << genType( compLitExpr->get_result(), "", pretty, genC ) << ")";
 		compLitExpr->get_initializer()->accept( *this );
+	}
+
+	void CodeGenerator::visit( UniqueExpr * unqExpr ) {
+		assertf( ! genC, "Unique expressions should not reach code generation." );
+		output << "unq<" << unqExpr->get_id() << ">{ ";
+		unqExpr->get_expr()->accept( *this );
+		output << " }";
 	}
 
Index: src/CodeGen/CodeGenerator.h
===================================================================
--- src/CodeGen/CodeGenerator.h	(revision 92360603d942184e66e5f92706ecc75c6b04f121)
+++ src/CodeGen/CodeGenerator.h	(revision 5ccb10d750e81ef921035bdd254327997acd80ae)
@@ -77,4 +77,6 @@
 		virtual void visit( CommaExpr *commaExpr );
 		virtual void visit( CompoundLiteralExpr *compLitExpr );
+		virtual void visit( UniqueExpr * );
+		virtual void visit( TupleAssignExpr * tupleExpr );
 		virtual void visit( UntypedTupleExpr *tupleExpr );
 		virtual void visit( TupleExpr *tupleExpr );
Index: src/CodeGen/GenType.cc
===================================================================
--- src/CodeGen/GenType.cc	(revision 92360603d942184e66e5f92706ecc75c6b04f121)
+++ src/CodeGen/GenType.cc	(revision 5ccb10d750e81ef921035bdd254327997acd80ae)
@@ -287,4 +287,8 @@
 			typeString = "_Atomic " + typeString;
 		} // if
+		if ( type->get_lvalue() && ! genC ) {
+			// when not generating C code, print lvalue for debugging.
+			typeString = "lvalue " + typeString;
+		}
 	}
 } // namespace CodeGen
