Index: src/Parser/TypeData.cc
===================================================================
--- src/Parser/TypeData.cc	(revision f135b50a1177372bc7dd5a2dcf75591c4b6ee098)
+++ src/Parser/TypeData.cc	(revision f238fcc2eafd0e0a792e3db3f23ab47e63d45c2b)
@@ -918,7 +918,7 @@
 EnumDecl * buildEnum( const TypeData * td, std::list< Attribute * > attributes, LinkageSpec::Spec linkage ) {
 	assert( td->kind == TypeData::Enum );
-	Type* baseType = td->base ? typebuild(td->base) : nullptr;
+	Type * baseType = td->base ? typebuild(td->base) : nullptr;
 	EnumDecl * ret = new EnumDecl( *td->enumeration.name, attributes, linkage, baseType );
-	buildList( td->enumeration.constants, ret->get_members() ); // enumConstant is both a node and a list
+	buildList( td->enumeration.constants, ret->get_members() );
 	list< Declaration * >::iterator members = ret->get_members().begin();
 	for ( const DeclarationNode * cur = td->enumeration.constants; cur != nullptr; cur = dynamic_cast< DeclarationNode * >( cur->get_next() ), ++members ) {
@@ -926,4 +926,8 @@
 			ObjectDecl * member = dynamic_cast< ObjectDecl * >(* members);
 			member->set_init( new SingleInit( maybeMoveBuild< Expression >( cur->consume_enumeratorValue() ) ) );
+		} else {
+			if ( baseType && (!dynamic_cast<BasicType *>(baseType) || !dynamic_cast<BasicType *>(baseType)->isWholeNumber())) {
+				SemanticError( td->location, "A non whole number enum value decl must be explicitly initialized." );
+			}
 		} // if
 	} // for
