The bytecode looks correct after peep:
===2085 8ee byte(2) ===2085 8ef byte(0) ===2085 8f0 entry ===2085 8f0 function start ===2086 8f0 string(52) ===2086 8f2 call builtin 1(35) ===2087 8f4 string(53) ===2087 8f6 assign local(0) ===2088 8f8 push 1 ===2088 8f9 push 64-bit int(2147483647,-1) ===2088 904 range ===2088 905 get_iterator ===2088 906 push 0 ===2088 907 push 0 ===2088 908 & local(1) ===2088 90a foreach start(4) ===2088 90f label(5) ===2089 90f mark & string(27) ===2089 911 local(1) ===2089 913 call builtin(35) ===2088 915 foreach loop(5) ===2088 91a label(4) ===2088 91a pop_n_elems(5) ===2090 91c string(52) ===2090 91e call builtin 1(35) ===2091 920 return 0
/ Martin Stjernholm, Roxen IS
Previous text:
2003-11-13 22:30: Subject: -DNOT_INSTALLED
I trig it all the time now, although I really rather not since it's another bug I'd like to be hunting now. Sigh.. :P
Anyway, it's this construct that fails to loop:
string s = "foo"; foreach (s[1..];; int c) werror ("%O\n", c);
The loop is never entered. If the range is removed then it works. I'm continuing the investigation, but hints are welcome.
/ Martin Stjernholm, Roxen IS