| 1 | module js |
| 2 | |
| 3 | import v.ast |
| 4 | |
| 5 | fn (mut g JsGen) gen_branch_context_string() string { |
| 6 | mut arr := []string{} |
| 7 | |
| 8 | // gen `T=int,X=string` |
| 9 | if g.fn_decl != unsafe { nil } && g.fn_decl.generic_names.len > 0 |
| 10 | && g.fn_decl.generic_names.len == g.cur_concrete_types.len { |
| 11 | for i in 0 .. g.fn_decl.generic_names.len { |
| 12 | arr << g.fn_decl.generic_names[i] + '=' + |
| 13 | g.table.type_to_str(g.cur_concrete_types[i]).replace('main.', '') |
| 14 | } |
| 15 | } |
| 16 | |
| 17 | // TODO: support comptime `$for` |
| 18 | return arr.join(',') |
| 19 | } |
| 20 | |
| 21 | fn (mut g JsGen) comptime_if_result(branch ast.IfBranch) bool { |
| 22 | idx_str := g.gen_branch_context_string() + '|id=${branch.id}|' |
| 23 | $if debug_comptime_branch_context ? { |
| 24 | g.write('/* ${idx_str} */') |
| 25 | } |
| 26 | if comptime_is_true := g.table.comptime_is_true[idx_str] { |
| 27 | return comptime_is_true.val |
| 28 | } else { |
| 29 | panic('checker error: cond result idx string not found => [${idx_str}]') |
| 30 | return false |
| 31 | } |
| 32 | } |
| 33 | |