Index: src/ResolvExpr/Unify.cc
===================================================================
--- src/ResolvExpr/Unify.cc	(revision d958834bbaca85420da00e8a912914e2702ecacb)
+++ src/ResolvExpr/Unify.cc	(revision b729c016f3453a98c5a45b00f7672d37bbe58e02)
@@ -165,4 +165,18 @@
 		ast::Type * newFirst  = shallowCopy( first  );
 		ast::Type * newSecond = shallowCopy( second );
+		if ( auto temp = dynamic_cast<const ast::EnumInstType *>(first) ) {
+			if ( !dynamic_cast< const ast::EnumInstType * >( second ) ) {
+				const ast::EnumDecl * baseEnum = dynamic_cast<const ast::EnumDecl *>(temp->base.get());
+				if ( auto t = baseEnum->base.get() ) {
+					newFirst = ast::shallowCopy( t );
+				}
+			}
+		} else if ( auto temp = dynamic_cast<const ast::EnumInstType *>(second) ) {
+			const ast::EnumDecl * baseEnum = dynamic_cast<const ast::EnumDecl *>(temp->base.get());
+			if ( auto t = baseEnum->base.get() ) {
+				newSecond = ast::shallowCopy( t );
+			}
+		}
+
 		newFirst ->qualifiers = {};
 		newSecond->qualifiers = {};
@@ -988,5 +1002,5 @@
 				if ( isTuple && isTuple2 ) {
 					++it; ++jt;  // skip ttype parameters before break
-				} else if ( isTuple ) {
+				} else if ( isTuple ) { 
 					// bundle remaining params into tuple
 					pty2 = tupleFromExprs( param2, jt, params2.end(), pty->qualifiers );
