$1 is not a function argument in that. $1 hasn't been a function argument in any of the examples in this thread.
The problem is writing an expression where one of the operands has a side-effect that can alter the value of another operand. This is very hard to detect through static analysis of source code; it's probably not especially easy to detect at run-time either. Heuristics may be able to catch some common cases.