Does that happen automatically in some cases? I think I'm on 8.6 and I'm pretty sure I forgot the expr and it worked OK. Could have been a string operation or something, I don't have the code to check on hand.
Example:
% string index abc 1
b
% string index abc 1+1
c
% string index abc 1+1+1
bad index "1+1+1": must be integer?[+-]integer? or end?[+-]integer?
% string index abc end-1
b
[1] http://www.tcl.tk/man/tcl8.6/TclCmd/string.htm#M54