@@ -22,6 +22,155 @@ import middle::metadata;
22
22
import util:: common:: * ;
23
23
import util:: data:: interner;
24
24
25
+ export ann_to_monotype;
26
+ export ann_to_type;
27
+ export ann_to_type_params;
28
+ export ann_to_ty_param_substs_opt_and_ty;
29
+ export any_item_native;
30
+ export any_item_rust;
31
+ export arg;
32
+ export args_eq;
33
+ export bind_params_in_type;
34
+ export block_ty;
35
+ export constr_def;
36
+ export constr_general;
37
+ export constr_table;
38
+ export count_ty_params;
39
+ export ctxt;
40
+ export decl_local_ty;
41
+ export def_has_ty_params;
42
+ export eq_ty;
43
+ export expr_ann;
44
+ export expr_has_ty_params;
45
+ export expr_ty;
46
+ export fold_ty;
47
+ export field;
48
+ export field_idx;
49
+ export field_num;
50
+ export fm_general;
51
+ export get_element_type;
52
+ export hash_ty;
53
+ export idx_nil;
54
+ export is_lval;
55
+ export item_table;
56
+ export lookup_item_type;
57
+ export method;
58
+ export method_idx;
59
+ export method_ty_to_fn_ty;
60
+ export mk_bool;
61
+ export mk_bot;
62
+ export mk_box;
63
+ export mk_chan;
64
+ export mk_char;
65
+ export mk_ctxt;
66
+ export mk_float;
67
+ export mk_fn;
68
+ export mk_imm_box;
69
+ export mk_imm_tup;
70
+ export mk_imm_vec;
71
+ export mk_int;
72
+ export mk_istr;
73
+ export mk_ivec;
74
+ export mk_mach;
75
+ export mk_native;
76
+ export mk_native_fn;
77
+ export mk_nil;
78
+ export mk_obj;
79
+ export mk_param;
80
+ export mk_port;
81
+ export mk_ptr;
82
+ export mk_rec;
83
+ export mk_str;
84
+ export mk_tag;
85
+ export mk_task;
86
+ export mk_tup;
87
+ export mk_type;
88
+ export mk_uint;
89
+ export mk_var;
90
+ export mk_vec;
91
+ export mode;
92
+ export mo_val;
93
+ export mo_alias;
94
+ export mt;
95
+ export node_type_table;
96
+ export pat_ann;
97
+ export pat_ty;
98
+ export path_to_str;
99
+ export rename;
100
+ export ret_ty_of_fn;
101
+ export ret_ty_of_fn_ty;
102
+ export ret_ty_to_fn_ty;
103
+ export sequence_element_type;
104
+ export sequence_is_interior;
105
+ export struct;
106
+ export sort_methods;
107
+ export stmt_ann;
108
+ export strip_boxes;
109
+ export sty;
110
+ export substitute_type_params;
111
+ export t;
112
+ export tag_variants;
113
+ export tag_variant_with_id;
114
+ export ty_param_substs_opt_and_ty;
115
+ export ty_param_count_and_ty;
116
+ export ty_native_fn;
117
+ export ty_bool;
118
+ export ty_bot;
119
+ export ty_box;
120
+ export ty_chan;
121
+ export ty_char;
122
+ export ty_float;
123
+ export ty_fn;
124
+ export ty_fn_abi;
125
+ export ty_fn_proto;
126
+ export ty_fn_ret;
127
+ export ty_int;
128
+ export ty_istr;
129
+ export ty_ivec;
130
+ export ty_machine;
131
+ export ty_native;
132
+ export ty_nil;
133
+ export ty_obj;
134
+ export ty_param;
135
+ export ty_port;
136
+ export ty_ptr;
137
+ export ty_rec;
138
+ export ty_str;
139
+ export ty_tag;
140
+ export ty_task;
141
+ export ty_tup;
142
+ export ty_type;
143
+ export ty_uint;
144
+ export ty_var;
145
+ export ty_var_id;
146
+ export ty_vec;
147
+ export ty_param_substs_opt_and_ty_to_monotype;
148
+ export ty_fn_args;
149
+ export type_contains_params;
150
+ export type_contains_vars;
151
+ export type_err;
152
+ export type_err_to_str;
153
+ export type_has_dynamic_size;
154
+ export type_has_pointers;
155
+ export type_is_bool;
156
+ export type_is_bot;
157
+ export type_is_box;
158
+ export type_is_boxed;
159
+ export type_is_chan;
160
+ export type_is_fp;
161
+ export type_is_integral;
162
+ export type_is_native;
163
+ export type_is_nil;
164
+ export type_is_scalar;
165
+ export type_is_sequence;
166
+ export type_is_signed;
167
+ export type_is_structural;
168
+ export type_is_tup_like;
169
+ export type_owns_heap_mem;
170
+ export type_param;
171
+ export unify;
172
+ export variant_info;
173
+ export walk_ty;
25
174
26
175
// Data types
27
176
tag mode { mo_val; mo_alias ( bool) ; }
@@ -80,9 +229,6 @@ fn method_ty_to_fn_ty(&ctxt cx, method m) -> t {
80
229
81
230
82
231
// Never construct these manually. These are interned.
83
- //
84
- // TODO: It'd be really nice to be able to hide this definition from the
85
- // outside world, to enforce the above invariants.
86
232
type raw_t =
87
233
rec ( sty struct ,
88
234
option:: t[ str] cname ,
@@ -1737,6 +1883,21 @@ fn is_lval(&@ast::expr expr) -> bool {
1737
1883
//
1738
1884
// http://www.cs.man.ac.uk/~hoderk/ubench/unification_full.pdf
1739
1885
mod unify {
1886
+
1887
+ export fixup_result;
1888
+ export fixup_vars;
1889
+ export fix_ok;
1890
+ export fix_err;
1891
+ export mk_var_bindings;
1892
+ export resolve_type_bindings;
1893
+ export resolve_type_structure;
1894
+ export resolve_type_var;
1895
+ export result;
1896
+ export unify;
1897
+ export ures_ok;
1898
+ export ures_err;
1899
+ export var_bindings;
1900
+
1740
1901
tag result { ures_ok( t) ; ures_err( type_err) ; }
1741
1902
tag union_result { unres_ok; unres_err( type_err) ; }
1742
1903
tag fixup_result {
0 commit comments