Index: src/CodeGen/CodeGenerator.cc
===================================================================
--- src/CodeGen/CodeGenerator.cc	(revision 058f549aa36a522d2e89bddf81f736ef628c045e)
+++ src/CodeGen/CodeGenerator.cc	(revision bc3127d4673a19c1f70b8cc4cc5902edde3e61d8)
@@ -195,7 +195,5 @@
 		}
 
-		output << kind;
-		if ( aggDecl->get_name() != "" )
-			output << aggDecl->get_name();
+		output << kind << aggDecl->get_name();
 
 		if ( aggDecl->has_body() ) {
@@ -233,6 +231,5 @@
 		genAttributes( enumDecl->get_attributes() );
 
-		if ( enumDecl->get_name() != "" )
-			output << enumDecl->get_name();
+		output << enumDecl->get_name();
 
 		std::list< Declaration* > &memb = enumDecl->get_members();
@@ -260,5 +257,9 @@
 	}
 
-	void CodeGenerator::visit( __attribute__((unused)) TraitDecl * traitDecl ) {}
+	void CodeGenerator::visit( TraitDecl * traitDecl ) {
+		assertf( ! genC, "TraitDecl nodes should not reach code generation." );
+		extension( traitDecl );
+		handleAggregate( traitDecl, "trait " );
+	}
 
 	void CodeGenerator::visit( TypedefDecl * typeDecl ) {
