Incorrect error "Recursive call not in tail position." when recursive function name is shadowed in the parameters or body of the function
Example1: function name is shadowed in body
type t = {
round : nat,
rounds: map<nat,nat>
};
export let new_round = (storage:t) : t => {
const new_round = storage.round + (1 as nat);
return {
...storage,
round : new_round,
rounds : Map.literal(list([ [0 as nat, 1 as nat] ])),
}
};
Error:
File "x.jsligo", line 10, characters 17-26:
9 | ...storage,
10 | round : new_round,
11 | rounds : Map.literal(list([ [0 as nat, 1 as nat] ])),
Recursive call not in tail position.
The value of a recursive call must be immediately returned by the defined function.
Example 2: function name is shadowed in parameters
export let func = (func : nat) : nat => {
let x = func;
return x;
}
Error:
File "x.jsligo", line 16, characters 12-16:
15 | export let func = (func : nat) : nat => {
16 | let x = func;
17 | return x;
Recursive call not in tail position.
The value of a recursive call must be immediately returned by the defined function.
Compiler version:
2022-05-03T18:50:38+00:00
9faa2515601bbb03a1122531083562e4c8b45d12
Commit
Commit
Date:
Rolling
SHA:
release
Edited by Didier Plaindoux