Index: src/AST/Decl.cpp
===================================================================
--- src/AST/Decl.cpp	(revision d3aa55e994d9978b6eeed324d12124cd1e92a452)
+++ src/AST/Decl.cpp	(revision 793eb2f7c8d2bbc20a7f482b1ddd024187c91f5d)
@@ -203,4 +203,7 @@
 }
 
+bool EnumDecl::isTyped() const { return base;}
+
+bool EnumDecl::isOpague() const { return isCfa && !isTyped(); } 
 }
 
Index: src/AST/Decl.hpp
===================================================================
--- src/AST/Decl.hpp	(revision d3aa55e994d9978b6eeed324d12124cd1e92a452)
+++ src/AST/Decl.hpp	(revision 793eb2f7c8d2bbc20a7f482b1ddd024187c91f5d)
@@ -308,17 +308,17 @@
 class EnumDecl final : public AggregateDecl {
 public:
-	// isTyped indicated if the enum has a declaration like:
+	// isCfa indicated if the enum has a declaration like:
 	// enum (type_optional) Name {...}
-	bool isTyped;
-	// if isTyped == true && base.get() == nullptr, it is a "void" type enum
+	bool isCfa;
+	// if isCfa == true && base.get() == nullptr, it is a "opague" enum
 	ptr<Type> base;
 	enum class EnumHiding { Visible, Hide } hide;
 	std::vector< ast::ptr<ast::EnumInstType>> inlinedDecl; // child enums
 
-	EnumDecl( const CodeLocation& loc, const std::string& name, bool isTyped = false,
+	EnumDecl( const CodeLocation& loc, const std::string& name, bool isCfa = false,
 		std::vector<ptr<Attribute>>&& attrs = {}, Linkage::Spec linkage = Linkage::Cforall,
 		Type const * base = nullptr, EnumHiding hide = EnumHiding::Hide,
 		std::unordered_map< std::string, long long > enumValues = std::unordered_map< std::string, long long >() )
-	: AggregateDecl( loc, name, std::move(attrs), linkage ), isTyped(isTyped), base(base), hide(hide), enumValues(enumValues) {}
+	: AggregateDecl( loc, name, std::move(attrs), linkage ), isCfa(isCfa), base(base), hide(hide), enumValues(enumValues) {}
 
 	/// gets the integer value for this enumerator, returning true iff value found
@@ -336,4 +336,6 @@
 
 	bool isSubTypeOf(const ast::EnumDecl *) const;
+	bool isTyped() const;
+	bool isOpague() const;
 private:
 	EnumDecl * clone() const override { return new EnumDecl{ *this }; }
