In general, this occurs when passing inout argument to another function with two arguments when one of them is also inout. This also includes all standard operators like +=, -=, *= ...
For now as I understand, compiler makes implicit copy. In Swift 5.9 borrowing / consuming modifiers can be used. Making borrowing and consuming conventions in func mergeDict explicit, seems that such situation should not be possible.
Should we improve compiler diagnostics to emit a warning in such cases and require an explicit copy of inout parameter?