Index: src/CodeGen/CodeGenerator.cc
===================================================================
--- src/CodeGen/CodeGenerator.cc	(revision 4390fb6c47ec12d50fb1bde675943fbc98fe057a)
+++ src/CodeGen/CodeGenerator.cc	(revision 32fc0d64b66490b35aeb2dab3a5d1bd42fc784b0)
@@ -197,28 +197,4 @@
 		if ( objectDecl->isDeleted && options.genC ) return;
 
-		// objectDecl->checkAssignedValue();
-		/* Temporary add the enum check here; need a better location */
-		// {
-		// 	EnumInstType * enumTypePtr = dynamic_cast< EnumInstType *>(objectDecl->get_type());
-		// 	if (enumTypePtr) {
-		// 		EnumDecl * enumBase = enumTypePtr -> baseEnum;
-		// 		if ( enumTypePtr && enumBase->base ) {
-		// 			std::list< Declaration * > & enumMembers = enumBase->get_members();
-		// 			auto in_enum = [&]( Declaration * enumMem ) -> bool {
-		// 				ObjectDecl * obj = dynamic_cast< ObjectDecl* >( enumMem );
-		// 				if ( mangleName( obj ) == mangleName( objectDecl ) ) {
-		// 					return true;
-		// 				}
-		// 				return false;
-		// 			};
-		// 			if ( std::find_if( enumMembers.begin(), enumMembers.end(), in_enum ) == enumMembers.end() ) {
- 		// 				output<< "/* Cannot assign a Non-enum member value to a typed enum variable. */" ;
-		// 			}
-				
-		// 		}
-		// 	}
-			
-		// }
-
 		// gcc allows an empty declarator (no name) for bit-fields and C states: 6.7.2.1 Structure and union specifiers,
 		// point 4, page 113: If the (bit field) value is zero, the declaration shall have no declarator.  For anything
@@ -302,5 +278,5 @@
 		if (enumDecl->base && ! memb.empty() && 
 		(dynamic_cast<BasicType *>(enumDecl->base)
-		 && !dynamic_cast<BasicType *>(enumDecl->base)->kind == BasicType::Kind::SignedInt)) {
+		 && !(dynamic_cast<BasicType *>(enumDecl->base)->kind == BasicType::Kind::SignedInt))) {
 			ObjectDecl * last = nullptr;
 			for ( std::list< Declaration* >::iterator i = memb.begin(); i != memb.end();  i++) {
Index: src/SynTree/Declaration.h
===================================================================
--- src/SynTree/Declaration.h	(revision 4390fb6c47ec12d50fb1bde675943fbc98fe057a)
+++ src/SynTree/Declaration.h	(revision 32fc0d64b66490b35aeb2dab3a5d1bd42fc784b0)
@@ -119,5 +119,5 @@
   public:
 	Type * type;
-	Initializer * init; // For Enum, the init is a pointer that contain the enum value; see Parser::TypeData::buildEnum
+	Initializer * init;
 	Expression * bitfieldWidth;
 
@@ -144,4 +144,7 @@
 	virtual void print( std::ostream & os, Indenter indent = {} ) const override;
 	virtual void printShort( std::ostream & os, Indenter indent = {} ) const override;
+
+	// TODO: Move to the right place
+	void checkAssignedValue() const;
 };
 
