but you never did import Core: Int64, so your definition is actually creating a totally new function that just happens to have the name Int64.
The last part is why the printing of Int64 changes. I don’t totally understand the code that controls it (you can find it here: julia/show.jl at 038d8665afd2eeeaca81ba5ebd3da1ece40e69bc · JuliaLang/julia · GitHub ), but it seems that Julia tries to abbreviate Core.Int64 to Int64 since Int64 is defined in the Main module and is identical to Core.Int64. After your code is imported, there’s a brand new function called Int64, which has nothing to do with Core.Int64, so Julia has to print the entire Core.Int64 when showing the type name.
Now there’s a further question of why that behavior depends on the order of operations, which I admit I don’t totally understand.
So, to summarize:
Nothing has changed type, just the way some types are printed was changed to avoid conflicting with your Int64 and other definitions…
… but the real problem is that you presumably meant to do Core.Int64(...) = ... or import Core: Int64; Int64(...) = ... . I would recommend the former, as it’s more obvious to future readers of the code what is going on.