Gwion coverage report


Directory: src/
File: src/import/import_tdef.c
Date: 2023-01-30 18:32:28
Exec Total Coverage
Lines: 24 27 88.9%
Functions: 3 3 100.0%
Branches: 12 20 60.0%

Line Branch Exec Source
1 #include "gwion_util.h"
2 #include "gwion_ast.h"
3 #include "gwion_env.h"
4 #include "vm.h"
5 #include "traverse.h"
6 #include "instr.h"
7 #include "emit.h"
8 #include "gwion.h"
9 #include "object.h"
10 #include "operator.h"
11 #include "import.h"
12 #include "gwi.h"
13
14 4 ANN m_int gwi_typedef_ini(const Gwi gwi, const restrict m_str type,
15 const restrict m_str name) {
16
2/2
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 3 times.
4 CHECK_BB(ck_ini(gwi, ck_tdef));
17 3 gwi->ck->name = name;
18
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
3 CHECK_BB(check_typename_def(gwi, gwi->ck));
19
1/2
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
3 return (gwi->ck->td = gwi_str2td(gwi, type)) ? GW_OK : GW_ERROR;
20 }
21
22 2 ANN Type gwi_typedef_end(const Gwi gwi, const ae_flag flag) {
23
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
2 CHECK_BO(ck_ok(gwi, ck_tdef));
24 2 Type_Decl *td = gwi->ck->td;
25 2 td->flag |= flag;
26 const Type_Def tdef =
27 2 new_type_def(gwi->gwion->mp, td, gwi->ck->sym, gwi->loc);
28
2/2
✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1 times.
2 if (gwi->ck->tmpl) tdef->tmpl = gwi_tmpl(gwi);
29 2 gwi->ck->td = NULL;
30 2 gwi->ck->tmpl = NULL;
31 2 const m_bool ret = traverse_type_def(gwi->gwion->env, tdef);
32
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
2 if (gwi->gwion->data->cdoc) {
33 gwfmt_indent(gwi->gwfmt);
34 gwfmt_type_def(gwi->gwfmt, tdef);
35 }
36 2 const Type t = tdef->type;
37
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
2 if (ret > 0)
38 set_tflag(t, tflag_scan0 | tflag_scan1 | tflag_scan2 | tflag_check |
39 tflag_emit);
40 2 free_type_def(gwi->gwion->mp, tdef);
41 2 ck_end(gwi);
42
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
2 return ret > 0 ? t : NULL;
43 }
44
45 1 ANN void ck_clean_tdef(MemPool mp, ImportCK *ck) {
46
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 if (ck->td) free_type_decl(mp, ck->td);
47
1/2
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
1 if (ck->tmpl) free_id_list(mp, ck->tmpl);
48 1 }
49