Index: src/Validate/ImplementEnumFunc.cpp
===================================================================
--- src/Validate/ImplementEnumFunc.cpp	(revision 6d9aa7989fd14486da164e5e2bf757e49c2096cb)
+++ src/Validate/ImplementEnumFunc.cpp	(revision acb33f15d3e545defb3cca21e653745f42fa6553)
@@ -72,16 +72,4 @@
 		ast::DeclWithType* decl = declPtr.get_and_mutate();
 		decl->attributes.push_back(new ast::Attribute("unused"));
-	}
-
-	ast::ObjectDecl* dstParam() const {
-		return new ast::ObjectDecl(getLocation(), "_dst",
-		                           new ast::ReferenceType(new ast::EnumAttrType(
-		                               ast::deepCopy(instType))));
-	}
-
-	ast::ObjectDecl* srcParam() const {
-		return new ast::ObjectDecl(
-			getLocation(), "_src",
-			new ast::EnumAttrType(ast::deepCopy(instType)));
 	}
 
@@ -329,8 +317,4 @@
 }
 
-inline ast::EnumAttrType * getPosnType( const ast::EnumDecl * decl ) {
-	return new ast::EnumAttrType(new ast::EnumInstType(decl), ast::EnumAttribute::Posn);
-}
-
 ast::ObjectDecl* EnumAttrFuncGenerator::genAttrArrayProto(
 	const ast::EnumAttribute attr, const CodeLocation& location,
@@ -360,6 +344,7 @@
 			func->location,
 			new ast::VariableExpr( func->location, func->params.front() ),
-			new ast::EnumAttrType( new ast::EnumInstType(decl),
-				ast::EnumAttribute::Posn))});
+			new ast::BasicType( ast::BasicKind::UnsignedInt ),
+			ast::GeneratedFlag::ExplicitCast
+		)});
 	func->stmts = new ast::CompoundStmt(
 		func->location, {new ast::ReturnStmt(func->location, untyped)});
@@ -370,6 +355,6 @@
 		func->location,
 		new ast::VariableExpr(func->location, func->params.front()),
-		new ast::EnumAttrType(new ast::EnumInstType(decl),
-							  ast::EnumAttribute::Posn));
+		new ast::BasicType( ast::BasicKind::UnsignedInt ),
+			ast::GeneratedFlag::ExplicitCast);
 	func->stmts = new ast::CompoundStmt(
 		func->location, {new ast::ReturnStmt(func->location, castExpr)});
