"The net effect is that argument matching for primitives intended for end-user use is done in the same way as for interpreted functions except for the six exceptions where positional matching is required."
Note that these operations do not match their index arguments in the standard way: argument names are ignored and positional matching only is used. So m[j = 2, i = 1] is equivalent to m[2, 1] and not to m[1, 2]."
The key phrase being 'positional matching only'.
My suggested correction is to add  to the list of primitives requiring positional matching in the documentation.