Simplify CoreFV.FVAnn
When introducing type-in-type, Richard elaborated the free variable finder so that it finds three things at once (in CoreFV):
data FVAnn = FVAnn { fva_fvs :: DVarSet -- free in expression
, fva_ty_fvs :: DVarSet -- free only in expression's type
, fva_ty :: Type -- expression's type
}
I think fva_ty is needed only to support fva_ty_fvs. And fva_ty_fvs seems to be used only to support the calls to freeVarsOfType in FloatIn. And those calls in turn are only to suppor used_in_ty in FloatIn.sepBindsByDropPoint.
In conversation yesterday, Richard and I agreed that all this is unnecessary. Coercion bindings simply do not float inwards, so we do not need to take these precautions. (We should add a Note to explain why they don't float, and what problem might arise if they did.)
To confirm this I set used_in_ty to False and compiled from scratch; everything is fine.
So I propose that we
- get rid of the
ty_fvsargument tosepBindsByDropPoint - simplfy
FVAnnto just gather free variables (ie one field only)
Result: it's all simpler.
Richard will do this when he gets a moment. But I really hope for 8.2