The 1st 3 aliases are identical commands, except /testcontinue-1 has everything in 1 long line, while /testcontinue-2 and /testcontinue-3 use different places to split it into 2 lines. I include a 4th alias /testbraket having a bug that seems unrelated, except that it appears to have begun at the same time as the /testcontinue-2 behavior, so including the 4th alias might help track down the issue.

/testcontinue-3

This has the correct behavior in all versions I've tested, including the current one. It continues the loop all the way through %i == 7

---

/testcontinue-2

This has the correct behavior in all versions I've tested up through v7.38, but in v7.41 it fails, probably due to the changelog 7.39 item:

Quote
26.Fixed while loop bug when multiple nested while loops are used on a single line separated by | line separators.

The /testcontinue-2 bad behavior is leaving the while() loop at i=2, i assume caused by the check for i=3, but it doesn't even display the 'goto next' message before leaving the loop.

---

/testcontinue-1

This has the correct behavior up through 7.67 but fails after that, so is probably related to changelog 7.68 item:

Quote
8.Fixed nested while loops break/continue bug.

The bad behavior is is that it executes the same /var command twice in a row even though there should be a 'before varset' and 'after varset' echo that should display between each execution of that /var command. I used the $$ to call attention to the repeat error rather than let it continue to the end.

* * *

The 4th alias /testbraket is the other bug which began at what I assume is the same time as the /testcontinue-2 bug, but I can't test the 7.39 behavior. The bad behavior now is that /testbraket ignores all following commands on the same row as the "text 2" echo, allowing it to continue showing the 3rd and 4th text echo instead of halting.

However, if /testbraket is edited to make the "text 2" echo be on the line below the curly bracket that precedes it, then there's no fail.

---

Code
alias testcontinue-1 {
  timer 1 0 echo 4 -s repeats same varset 2x in a row
  var -s %i 1, %prev 0 ,%tot 7 , %count 0 | while (%i < %tot) { echo 3 -a i %i : this %this prev %prev | if (3* iswm %i) { echo -s goto next $v1 $v2 | goto next } | echo -s before varset | var -s %thiS %i , %diff $$remove($calc(%this - %prev),0) , %preV %this | echo -s aftervarset | echo -s beforenext | :next | echo -s afternext | if (%i == 5) { var -s %pRev 0 | echo 4 -s continue this %this prev %prev | inc -s %I | continue } | inc %count | inc -s %i }
}

alias testcontinue-2 {
  timer 1 0   echo 4 -s stops at 2
  var -s %i 1, %prev 0 ,%tot 7 , %count 0 | while (%i < %tot) { echo 3 -a i %i : this %this prev %prev | if (3* iswm %i) { echo -s goto next $v1 $v2 | goto next } | echo -s before varset | var -s %thiS %i , %diff $$remove($calc(%this - %prev),0) , %preV %this | echo -s aftervarset | echo -s beforenext | :next | echo -s afternext | if (%i == 5) {
  var -s %pRev 0 | echo 4 -s continue this %this prev %prev | inc -s %I | continue } | inc %count | inc -s %i }
}

alias testcontinue-3 {
  timer 1 0 echo 4 -s normal end at 7
  var -s %i 1, %prev 0 ,%tot 7 , %count 0 | while (%i < %tot) { echo 3 -a i %i : this %this prev %prev | if (3* iswm %i) { echo -s goto next $v1 $v2 | goto next } | echo -s before varset | var -s %thiS %i , %diff $$remove($calc(%this - %prev),0) , %preV %this | echo -s aftervarset | echo -s beforenext | :next | echo -s afternext | if (%i == 5) { var -s %pRev 0 | echo 4 -s continue this %this prev %prev | inc -s %I | continue }
  inc %count | inc -s %i }
}

alias testbraket {
  echo -ag text 1
  { echo -ag text 2 | echo -ag this is ignored and so is the halt | halt
    echo -ag text 3
  }
  echo -ag text 4
}