The "missing return" error is defined in the spec, by requiring a function to end in a terminating statement:
The list is necessarily not complete. So it is necessarily more advisory than anything else. What things to put in is mainly limited by how much complexity it would be to specify it and how important we deem it. Specifying this case seems pretty hard to specify (note that `i` could be modified in the loop body, so this always terminating requires some pretty complex statements about what is or is not in the loop body - in particular, if you want to do it on a purely syntactical level).
It also also can be replaced by `func TestMethod() int { return 0 }`, which is strictly better, more readable code, so I wouldn't even necessarily agree that it's a false-positive error message: You *should* fix that.