I'm not sure it is specified anywhere, what are the rules for redefining fixtures? We have discussed it being possible to redefine fixtures with compatible types. beside requiring the analysis to be done at verify or eval time, this might not be what users expect. It seems unlikely that fixture annotated in different ways are intended to hold the same meaning.
I suggest we simplify the rule for allowing redefinitions to one of the following:
* if both overwriter and overwritee are unannotated
* if the overwriter or overwritee is unannotated
* if the overwriter or overwritee is unannotated or type *
In the 2nd and 3rd solutions, the fixture assumes the specific type, if there is one.
Graydon is implementing the 3rd solution. I think I prefer the 2nd one more because it is possible the user intended for the fixture to be generic if he explicitly annotated it with *.