I have encountered cases where JuMP will modify an expression if it is used in a constraint. This seems like undesirable behavior, as the expression could be used later thinking it is the same as the original. Here is a minimum working example:
julia> using JuMP
julia> model = Model();
julia> @variable(model, 0 <= x <= 5);
julia> @expression(model, e, x + 5)
x + 5
julia> @constraint(model, -10 <= e <= 10)
x in [-15, 5]
julia> e
x