Index: src/ResolvExpr/CandidateFinder.cpp
===================================================================
--- src/ResolvExpr/CandidateFinder.cpp	(revision 496ffc17cf8822f6bee4aed86e97230a1b3a0776)
+++ src/ResolvExpr/CandidateFinder.cpp	(revision 020fa100c9bc0916e08b181151ef5bacc4b91f0f)
@@ -659,5 +659,4 @@
 		void postvisit( const ast::OffsetofExpr * offsetofExpr );
 		void postvisit( const ast::OffsetPackExpr * offsetPackExpr );
-		void postvisit( const ast::EnumPosExpr * enumPosExpr );
 		void postvisit( const ast::LogicalExpr * logicalExpr );
 		void postvisit( const ast::ConditionalExpr * conditionalExpr );
@@ -1507,28 +1506,4 @@
 	void Finder::postvisit( const ast::OffsetPackExpr * offsetPackExpr ) {
 		addCandidate( offsetPackExpr, tenv );
-	}
-
-	void Finder::postvisit( const ast::EnumPosExpr * enumPosExpr ) {
-		CandidateFinder finder( context, tenv );
-		finder.find( enumPosExpr->expr );
-		CandidateList winners = findMinCost( finder.candidates );
-		if ( winners.size() != 1 ) SemanticError( enumPosExpr->expr.get(), "Ambiguous expression in position. ");
-		CandidateRef & choice = winners.front();
-		auto refExpr = referenceToRvalueConversion( choice->expr, choice->cost );
-		auto refResult = (refExpr->result).as<ast::EnumInstType>();
-		if ( !refResult ) {
-			SemanticError( refExpr, "Position for Non enum type is not supported" );
-		}
-		// determineEnumPosConstant( enumPosExpr, refResult );
-
-		const ast::NameExpr * const nameExpr = enumPosExpr->expr.strict_as<ast::NameExpr>();
-		const ast::EnumDecl * base = refResult->base;
-		if ( !base ) {
-			SemanticError( enumPosExpr, "Cannot be reference to a defined enumeration type" );
-		}
-		auto it = std::find_if( std::begin( base->members ), std::end( base->members ), 
-			[nameExpr]( ast::ptr<ast::Decl> decl ) { return decl->name == nameExpr->name; } );
-		unsigned position = it - base->members.begin();
-		addCandidate( ast::ConstantExpr::from_int( enumPosExpr->location, position ), tenv );
 	}
 
Index: src/ResolvExpr/ConversionCost.cc
===================================================================
--- src/ResolvExpr/ConversionCost.cc	(revision 496ffc17cf8822f6bee4aed86e97230a1b3a0776)
+++ src/ResolvExpr/ConversionCost.cc	(revision 020fa100c9bc0916e08b181151ef5bacc4b91f0f)
@@ -361,9 +361,5 @@
 }
 
-void ConversionCost::postvisit( const ast::EnumInstType * enumInstType ) {
-	//	const ast::EnumDecl * baseEnum = enumInstType->base;
-	// if ( const ast::Type * baseType = baseEnum->base ) {
-	// 	costCalc( baseType, dst, srcIsLvalue, symtab, env );
-	// } else {
+void ConversionCost::postvisit( const ast::EnumInstType * ) {
 	static ast::ptr<ast::BasicType> integer = { new ast::BasicType( ast::BasicType::SignedInt ) };
 	cost = costCalc( integer, dst, srcIsLvalue, symtab, env );
Index: src/ResolvExpr/Resolver.cc
===================================================================
--- src/ResolvExpr/Resolver.cc	(revision 496ffc17cf8822f6bee4aed86e97230a1b3a0776)
+++ src/ResolvExpr/Resolver.cc	(revision 020fa100c9bc0916e08b181151ef5bacc4b91f0f)
@@ -411,6 +411,4 @@
 		const ast::ConstructorInit * previsit( const ast::ConstructorInit * );
 
-		const ast::EnumPosExpr *	 previsit( const ast::EnumPosExpr * );
-
 		void resolveWithExprs(std::vector<ast::ptr<ast::Expr>> & exprs, std::list<ast::ptr<ast::Stmt>> & stmtsToAdd);
 
@@ -1232,9 +1230,4 @@
 	}
 
-	const ast::EnumPosExpr * Resolver::previsit( const ast::EnumPosExpr * enumPos ) {
-		visitor->maybe_accept( enumPos, &ast::EnumPosExpr::expr );
-		return enumPos;
-	}
-
 	// suppress error on autogen functions and mark invalid autogen as deleted.
 	bool Resolver::on_error(ast::ptr<ast::Decl> & decl) {
