**rescript version**: 9.1.2 & 10.0.1 See the code in [playground](https://rescript-lang.org.cn/try?code=C4TwDgpgBMULxQN4CgpQCYENiYFxQCkBnAOgBVwJ0BBAJ1sxACYSBVASwDtgAOOhkCWAAaVFAC2AVxwAjADbQw+LsGQBfZMgACXOVwjIFsWhEzoAchAAewAEIhg0BOggBjAPYva8AHxIxLh5eJFg4YgC0PsTklDT0jCwc3HzxgpKcRJgAZhAA+gDmEMAAFChoaEZQYPAYbp4QtCRgYmiB9Y3VCNUA1FAAjC1VYmoAlOqaOpx6nAaVJmaWNmQA7u72jjVtXr7+rXVekfMW1nYOEJFy7rTFWw2Hpsc26+c+ckRyxTwjYxqGRbVBBo1MoYbB4QikCiQOICRIqFICEhZWjucQAGQgnHywAAFsU+gAGEaiNBKKAE8bIAD0VKgOIa0HEjCgMmgmBZknyUHYWSgkiI0Em0wMt1o9wWJxWazOkXY+U4VwMmCIAtosBu+waTXgcAQTBGQA) ```rescript type t = { data: Js.TypedArray2.Uint8Array.t, mutable p: int } @inline let readNextByte = decoder => { decoder.data ->Js.TypedArray2.Uint8Array.unsafe_get({ let p = decoder.p decoder.p = p + 1 p }) } @inline let readNextTwoByte = decoder => { decoder->readNextByte->lor(decoder->readNextByte->lsl(8)) } let decoder = { data: Js.TypedArray2.Uint8Array.fromLength(10), p: 0 } // here may be a bug if use @inline decoder->readNextTwoByte->ignore assert (decoder.p === 2) ``` The `decoder.p` should be 2 but 1 in this example. I found this bug in my project and created this example. 