v / vlib / v2 / transformer / import_alias_test.v
63 lines · 59 sloc · 1.38 KB · ddb021b9866c3b4523b746fa2f4c16a594f8bd89
Raw
1module transformer
2
3import v2.ast
4import v2.pref as vpref
5import v2.types
6
7fn import_alias_test_transformer(aliases map[string]string) &Transformer {
8 env := &types.Environment{}
9 return &Transformer{
10 pref: &vpref.Preferences{}
11 env: unsafe { env }
12 cur_import_aliases: aliases.clone()
13 }
14}
15
16fn test_selector_type_name_resolves_nested_import_aliases() {
17 t := import_alias_test_transformer({
18 'bar': 'foo.bar'
19 'baz': 'foo.bar'
20 })
21 bar_leaf := ast.SelectorExpr{
22 lhs: ast.Expr(ast.Ident{
23 name: 'bar'
24 })
25 rhs: ast.Ident{
26 name: 'Leaf'
27 }
28 }
29 baz_leaf := ast.SelectorExpr{
30 lhs: ast.Expr(ast.Ident{
31 name: 'baz'
32 })
33 rhs: ast.Ident{
34 name: 'Leaf'
35 }
36 }
37 assert t.selector_type_name(bar_leaf, false) == 'Leaf'
38 assert t.selector_type_name(bar_leaf, true) == 'foo__bar__Leaf'
39 assert t.selector_type_name(baz_leaf, true) == 'foo__bar__Leaf'
40}
41
42fn test_generic_match_branch_variant_info_resolves_nested_import_alias() {
43 t := import_alias_test_transformer({
44 'bar': 'foo.bar'
45 })
46 lhs := ast.Expr(ast.SelectorExpr{
47 lhs: ast.Expr(ast.Ident{
48 name: 'bar'
49 })
50 rhs: ast.Ident{
51 name: 'Leaf'
52 }
53 })
54 base_name, variant_full, variant_module, ok := t.generic_match_branch_variant_info(lhs, [
55 ast.Expr(ast.Ident{
56 name: 'int'
57 }),
58 ])
59 assert ok
60 assert base_name == 'Leaf'
61 assert variant_full == 'foo__bar__Leaf_T_int'
62 assert variant_module == 'foo__bar'
63}
64