Sorry, I was a bit unclear.
What I'm wondering is whether this is sufficient.
```d
if (... &&
    !e->type->equals(eresult->type) &&
    eresult->type->hasWild() && !e->type->hasWild())	
   {
        eresult = eresult->copy();
       eresult->type = e-type.
```
If e->type were `string` and eresult type were `inout(int)` it would also pass this check and the type gets converted. This will not happen because things are typechecked earlier, but I think it's a good property of code to only do what it was intended to do, e.g. because it makes it easier to find mistakes during development.