Est-ce que le bug pourrait venir de la fonction `env_lookup_type` ?
let env_lookup_type ctx (v : vref): lexp = let (_, idx) = v in let (r, _, _, ltp) = _env_lookup ctx v in (L.push_susp ltp (S.shift (idx - 0 + 0)))
J'ai essayé plusieurs indices et j'ai repéré quelque chose d'étrange lorsque je fais un shift de idx, j’obtiens Macro[20] mais lorsque je fais un shift de idx + 1 j’obtiens Macro[22].
Voici une liste de tests qui montre le comportement du shift.
Shift: idx macro_type=inductive_ (Macro) (Macro_ (List[33] Sexp[47]) -> Sexp[47]) ltp=Macro[20] (= inductive-cons Macro[21] Macro_)
Shift: idx + 1 macro_type=inductive_ (Macro) (Macro_ (List[33] Sexp[47]) -> Sexp[47]) ltp=Macro[22] (= float_)
Shift: idx + 2 macro_type=inductive_ (Macro) (Macro_ (List[33] Sexp[47]) -> Sexp[47]) ltp=Macro[24] (= node_)
Shift: idx - 1 macro_type=inductive_ (Macro) (Macro_ (List[33] Sexp[47]) -> Sexp[47]) ltp=Macro[18] (= sexp_dispatch_)