Index: src/AST/Convert.cpp
===================================================================
--- src/AST/Convert.cpp	(revision 15934a6a632325b8563214d12538dafc1749ef28)
+++ src/AST/Convert.cpp	(revision 74ad8c043ad6a1b3f7d1c2a67de799c334d9dc2b)
@@ -1264,20 +1264,39 @@
 
 	const ast::Designation * visit( const ast::Designation * node ) override final {
-		(void)node;
+		auto designation = new Designation( get<Expression>().acceptL( node->designators ) );
+		designation->location = node->location;
+		this->node = designation;
 		return nullptr;
 	}
 
 	const ast::Init * visit( const ast::SingleInit * node ) override final {
-		(void)node;
+		auto init = new SingleInit(
+			get<Expression>().accept1( node->value ),
+			ast::MaybeConstruct == node->maybeConstructed
+		);
+		init->location = node->location;
+		this->node = init;
 		return nullptr;
 	}
 
 	const ast::Init * visit( const ast::ListInit * node ) override final {
-		(void)node;
+		auto init = new ListInit(
+			get<Initializer>().acceptL( node->initializers ),
+			get<Designation>().acceptL( node->designations ),
+			ast::MaybeConstruct == node->maybeConstructed
+		);
+		init->location = node->location;
+		this->node = init;
 		return nullptr;
 	}
 
 	const ast::Init * visit( const ast::ConstructorInit * node ) override final {
-		(void)node;
+		auto init = new ConstructorInit(
+			get<Statement>().accept1( node->ctor ),
+			get<Statement>().accept1( node->dtor ),
+			get<Initializer>().accept1( node->init )
+		);
+		init->location = node->location;
+		this->node = init;
 		return nullptr;
 	}
@@ -2554,18 +2573,35 @@
 	}
 
-	virtual void visit( Designation * ) override final {
-
-	}
-
-	virtual void visit( SingleInit * ) override final {
-
-	}
-
-	virtual void visit( ListInit * ) override final {
-
-	}
-
-	virtual void visit( ConstructorInit * ) override final {
-
+	virtual void visit( Designation * old ) override final {
+		this->node = new ast::Designation(
+			old->location,
+			GET_ACCEPT_V(designators, Expr)
+		);
+	}
+
+	virtual void visit( SingleInit * old ) override final {
+		this->node = new ast::SingleInit(
+			old->location,
+			GET_ACCEPT_1(value, Expr),
+			(old->get_maybeConstructed()) ? ast::MaybeConstruct : ast::DoConstruct
+		);
+	}
+
+	virtual void visit( ListInit * old ) override final {
+		this->node = new ast::ListInit(
+			old->location,
+			GET_ACCEPT_V(initializers, Init),
+			GET_ACCEPT_V(designations, Designation),
+			(old->get_maybeConstructed()) ? ast::MaybeConstruct : ast::DoConstruct
+		);
+	}
+
+	virtual void visit( ConstructorInit * old ) override final {
+		this->node = new ast::ConstructorInit(
+			old->location,
+			GET_ACCEPT_1(ctor, Stmt),
+			GET_ACCEPT_1(dtor, Stmt),
+			GET_ACCEPT_1(init, Init)
+		);
 	}
 
