Index: src/ResolvExpr/CandidateFinder.cpp
===================================================================
--- src/ResolvExpr/CandidateFinder.cpp	(revision 88a0ff6bf6d60cf5f082063e77f79648c618f122)
+++ src/ResolvExpr/CandidateFinder.cpp	(revision e3282fe8749df06d57ffb03b763aa2198090eae8)
@@ -1685,8 +1685,16 @@
 		// is unique.
 		CandidateList satisfied;
-		satisfyAssertions(candidate, localSyms, satisfied, errors);
+		bool needRecomputeKey = false;
+		if (candidate->need.empty()) {
+			satisfied.emplace_back(candidate);
+		}
+		else {
+			satisfyAssertions(candidate, localSyms, satisfied, errors);
+			needRecomputeKey = true;
+		}
 
 		for (auto & newCand : satisfied) {
 			// recomputes type key, if satisfyAssertions changed it
+			if (needRecomputeKey)
 			{
 				ast::ptr< ast::Type > newType = newCand->expr->result;
