assemblyscript icon indicating copy to clipboard operation
assemblyscript copied to clipboard

template string with recursive function lead to wrong result

Open HerrCai0907 opened this issue 1 month ago • 0 comments

Bug description

use recursive function + template string will lead to wrong result.

Steps to reproduce

function f(v: number): string {
  if (v <= 0) return "done";
  return `[ ${f(v - 1)}, ${f(v - 2)} ]`;
}

export function _start(): void {
  trace(f(10));
}
trace: [ [ [ [ [ [ [ [ [ [ done, done ], done ], [ done, done ] ], [ [ done, done ], done ] ], [ [ [ done, done ], done ], [ done, done ] ] ], [ [ [ [ done, done ], done ], [ done, done ] ], [ [ done, done ], done ] ] ], [ [ [ [ [ done, done ], done ], [ done, done ] ], [ [ done, done ], done ] ], [ [ [ done, done ], done ], [ done, done ] ] ] ], [ [ [ [ [ [ done, done ], done ], [ done, done ] ], [ [ done, done ], done ] ], [ [ [ done, done ], done ], [ done, done ] ] ], [ [ [ [ done, done ], done ], [ done, done ] ], [ [ done, done ], done ] ] ] ], [ [ [ [ [ [ [ done, done ], done ], [ done, done ] ], [ [ done, done ], done ] ], [ [ [ done, done ], done ], [ done, done ] ] ], [ [ [ [ done, done ], done ], [ done, done ] ], [ [ done, done ], done ] ] ], [ [ [ [ [ done, done ], done ], [ done, done ] ], [ [ done, done ], done ] ], [ [ [ done, done ], done ], [ done, done ] ] ] ] ], [ [ [ [ [ [ [ [ done, done ], done ], [ done, done ] ], [ [ done, done ], done ] ], [ [ [ done, done ], done ], [ done, done ] ] ], [ [ [ [ done, done ], done ], [ done, done ] ], [ [ done, done ], done ] ] ], [ [ [ [ [ done, done ], done ], [ done, done ] ], [ [ done, done ], done ] ], [ [ [ done, done ], done ], [ done, done ] ] ] ], [ [ [ [ [ [ done, done ], done ], [ done, done ] ], [ [ done, done ], done ] ], [ [ [ done, done ], done ], [ done, done ] ] ], [ [ [ [ done, done ], done ], [ done, done ] ], [ [ done, done ], done ] ] ] ] ]

AssemblyScript version

all

HerrCai0907 avatar Oct 21 '25 09:10 HerrCai0907