Ctrl K
ComunidadGuías…

libs/ast_generic/Unit_AST_generic.ml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
module G = AST_generic

let t = Testo.create

let sid (binding : int) : G.SId.t =
  G.SId.of_tok ~binding ~file:"test.ml" (Tok.unsafe_fake_tok "x")

let id_info_with_payloads ~(type_name : string) ~(callee : int)
    ~(const : G.const_type) ~(hidden : bool) : G.id_info =
  let info = G.empty_id_info () in
  let ty = G.ty_builtin (type_name, Tok.unsafe_fake_tok type_name) in
  info.G.id_type := Some ty;
  info.G.id_instance_type := Some ty;
  info.G.id_callee_definition := Some (sid callee);
  info.G.id_svalue := Some (G.Cst const);
  info.G.id_flags :=
    IdFlags.make ~hidden ~case_insensitive:false ~final:false ~static:false;
  info

let test_id_info_payloads_ignored () =
  let resolved : G.resolved_name option = Some (G.Global, sid 1) in
  let a =
    id_info_with_payloads ~type_name:"int" ~callee:2 ~const:G.Cint
      ~hidden:false
  in
  let b =
    id_info_with_payloads ~type_name:"string" ~callee:3 ~const:G.Cstr
      ~hidden:true
  in
  a.G.id_resolved := resolved;
  b.G.id_resolved := resolved;
  if G.compare_id_info a b <> 0 then assert false;
  if not (G.equal_id_info a b) then assert false

let test_id_info_resolved_distinguished () =
  let a = G.empty_id_info () in
  let b = G.empty_id_info () in
  a.G.id_resolved := Some (G.Global, sid 1);
  b.G.id_resolved := Some (G.Global, sid 2);
  if G.compare_id_info a b = 0 then assert false

let tests =
  Testo.categorize "AST_generic"
    [
      t "id_info_payloads_ignored" test_id_info_payloads_ignored;
      t "id_info_resolved_distinguished" test_id_info_resolved_distinguished;
    ]