I have corrected the problem I had last night, and now the refactoring will always try and place the pattern in the case expression. I think this is more suitable. Also this is strange and I can't work out why the type checker is doing this.
Suppose I have the function (without type information)
f (Con1 x) = 34
then the typechecker converts to something of the form...
f d9 (Con1 x) = 34
it puts an extra pattern in for some reason and it only does this if the function has no type signature and it returns an Int.