| 1 | module transformer |
| 2 | |
| 3 | import v2.ast |
| 4 | import v2.pref as vpref |
| 5 | import v2.types |
| 6 | |
| 7 | fn 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 | |
| 16 | fn 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 | |
| 42 | fn 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 | |