Well, I would say I'm not sure if the purpose of fromConstInitializer should modify the input argument for SliceExp it does and for CmpExp it does as of 653a78b. Is there a difference in the possible return values for EqualExp? I.e. so that EqualExp can return an error and the others not?

In any case the EqualExp should be more correct as it was. Depending on fromConstInitializer. Looking at IdentityExp it has the e->e1->op check. But in that case fromConstInitializer is not used.