Index: src/Validate/ImplementEnumFunc.cpp
===================================================================
--- src/Validate/ImplementEnumFunc.cpp	(revision 9d5eacb77f6659b84df326bf35fe21bcde7e425b)
+++ src/Validate/ImplementEnumFunc.cpp	(revision 236f13390c74aff36386095c9fc9fff394243822)
@@ -25,7 +25,7 @@
 		: decl(decl),
 		  functionNesting{functionNesting},
-		  quasi_void_decl(new ast::StructDecl(decl->location, 
-		  	"quasi_void", ast::AggregateDecl::Struct,
-			{}, ast::Linkage::AutoGen)),
+		//   quasi_void_decl(new ast::StructDecl(decl->location,
+		//   	"quasi_void", ast::AggregateDecl::Struct,
+		// 	{}, ast::Linkage::AutoGen)),
 		  proto_linkage{ast::Linkage::Cforall} {}
 
@@ -208,21 +208,21 @@
 
 ast::FunctionDecl* EnumAttrFuncGenerator::genValueProto() const {
-	if (decl->isTyped())
-		return genProto(
-			"value",
-			{new ast::ObjectDecl(getLocation(), "_i", new ast::EnumInstType(decl))},
-			{new ast::ObjectDecl(getLocation(), "_ret",
-								ast::deepCopy(decl->base))});
-	else
-		return genQuasiValueProto();
-}
-
-ast::FunctionDecl* EnumAttrFuncGenerator::genQuasiValueProto() const {
+	assert (decl->isTyped());
 	return genProto(
 		"value",
 		{new ast::ObjectDecl(getLocation(), "_i", new ast::EnumInstType(decl))},
 		{new ast::ObjectDecl(getLocation(), "_ret",
-		                		new ast::StructInstType(quasi_void_decl))});
-}
+							ast::deepCopy(decl->base))});
+	// else
+	// 	return genQuasiValueProto();
+}
+
+// ast::FunctionDecl* EnumAttrFuncGenerator::genQuasiValueProto() const {
+// 	return genProto(
+// 		"value",
+// 		{new ast::ObjectDecl(getLocation(), "_i", new ast::EnumInstType(decl))},
+// 		{new ast::ObjectDecl(getLocation(), "_ret",
+// 		                		new ast::StructInstType(quasi_void_decl))});
+// }
 
 ast::FunctionDecl* EnumAttrFuncGenerator::genFromIntProto() const {
@@ -390,16 +390,16 @@
 }
 
-void EnumAttrFuncGenerator::genQuasiValueBody(ast::FunctionDecl* func) const {
-	auto location = func->location;
-	const ast::ObjectDecl * objDecl = new ast::ObjectDecl(
-		location, "_out", new ast::StructInstType( quasi_void_decl ));
-	const ast::DeclStmt * declStmt = new ast::DeclStmt(location, objDecl);
-	const ast::VariableExpr * varExpr = new ast::VariableExpr(location, objDecl);
-	const ast::ReturnStmt * retStmt = new ast::ReturnStmt(location, varExpr);
-
-	func->stmts = new ast::CompoundStmt(
-		location, {declStmt, retStmt}
-	);
-}
+// void EnumAttrFuncGenerator::genQuasiValueBody(ast::FunctionDecl* func) const {
+// 	auto location = func->location;
+// 	const ast::ObjectDecl * objDecl = new ast::ObjectDecl(
+// 		location, "_out", new ast::StructInstType( quasi_void_decl ));
+// 	const ast::DeclStmt * declStmt = new ast::DeclStmt(location, objDecl);
+// 	const ast::VariableExpr * varExpr = new ast::VariableExpr(location, objDecl);
+// 	const ast::ReturnStmt * retStmt = new ast::ReturnStmt(location, varExpr);
+
+// 	func->stmts = new ast::CompoundStmt(
+// 		location, {declStmt, retStmt}
+// 	);
+// }
 
 void EnumAttrFuncGenerator::genPosnBody(ast::FunctionDecl* func) const {
@@ -433,10 +433,11 @@
 			genValueOrLabelBody(funcProto, arrayProto);
 			produceDecl(funcProto);
-		}  else {
-			ast::FunctionDecl* funcProto = genQuasiValueProto();
-			produceForwardDecl(funcProto);
-			genQuasiValueBody(funcProto);
-			produceDecl(funcProto);
-		}
+		}  
+		// else {
+		// 	ast::FunctionDecl* funcProto = genQuasiValueProto();
+		// 	produceForwardDecl(funcProto);
+		// 	// genQuasiValueBody(funcProto);
+		// 	produceDecl(funcProto);
+		// }
 	} else if (attr == ast::EnumAttribute::Label) {
 		std::vector<ast::ptr<ast::Init>> inits = genLabelInit();
