Index: src/Validate/LinkReferenceToTypes.cpp
===================================================================
--- src/Validate/LinkReferenceToTypes.cpp	(revision 0bd46fdf0880513efbef382cb2e926954f5c6001)
+++ src/Validate/LinkReferenceToTypes.cpp	(revision 1e30df7c247fd856856ad97d81bc81faecf5bcd5)
@@ -203,4 +203,36 @@
 	}
 
+	// The following section 
+	auto mut = ast::mutate( decl );
+	std::vector<ast::ptr<ast::Decl>> buffer;
+	for ( auto it = decl->members.begin(); it != decl->members.end(); ++it) {
+		auto member = (*it).as<ast::ObjectDecl>();
+		if ( member->enumInLine ) {
+			auto targetEnum = symtab.lookupEnum( member->name );
+			if (targetEnum) {			
+				for (auto singleMamber : targetEnum->members) {
+					auto tm = singleMamber.as<ast::ObjectDecl>();
+					auto t = new ast::ObjectDecl(
+						member->location, // use the "inline" location
+						tm->name,
+						new ast::EnumInstType( decl, ast::CV::Const ),
+						// Construct a new EnumInstType as the type
+						tm->init,
+						tm->storage,
+						tm->linkage,
+						tm->bitfieldWidth,
+						{}, // enum member doesn't have attribute
+						tm->funcSpec
+					);
+					buffer.push_back(t);
+				}
+			}
+		} else {
+			buffer.push_back( *it );
+		}
+	}
+	mut->members = buffer;
+	decl = mut;
+
 	ForwardEnumsType::iterator fwds = forwardEnums.find( decl->name );
 	if ( fwds != forwardEnums.end() ) {
