aboutsummaryrefslogtreecommitdiff
path: root/src/comp
diff options
context:
space:
mode:
Diffstat (limited to 'src/comp')
-rw-r--r--src/comp/middle/ty.rs8
-rw-r--r--src/comp/middle/typeck.rs12
2 files changed, 11 insertions, 9 deletions
diff --git a/src/comp/middle/ty.rs b/src/comp/middle/ty.rs
index 923d97ff..e049962d 100644
--- a/src/comp/middle/ty.rs
+++ b/src/comp/middle/ty.rs
@@ -793,6 +793,14 @@ fn method_idx(session.session sess, &span sp,
fail;
}
+fn sort_methods(vec[method] meths) -> vec[method] {
+ fn method_lteq(&method a, &method b) -> bool {
+ ret _str.lteq(a.ident, b.ident);
+ }
+
+ ret std.sort.merge_sort[method](bind method_lteq(_,_), meths);
+}
+
fn is_lval(@ast.expr expr) -> bool {
alt (expr.node) {
case (ast.expr_field(_,_,_)) { ret true; }
diff --git a/src/comp/middle/typeck.rs b/src/comp/middle/typeck.rs
index 12226d70..b689c502 100644
--- a/src/comp/middle/typeck.rs
+++ b/src/comp/middle/typeck.rs
@@ -376,7 +376,8 @@ fn ast_ty_to_ty(ty_getter getter, &@ast.ty ast_ty) -> @ty.t {
inputs=ins,
output=out));
}
- sty = ty.ty_obj(tmeths);
+
+ sty = ty.ty_obj(ty.sort_methods(tmeths));
}
}
@@ -545,14 +546,7 @@ fn collect_item_types(session.session sess, @ast.crate crate)
auto methods =
_vec.map[@ast.method,method](f, obj_info.methods);
- fn method_lteq(&method a, &method b) -> bool {
- ret _str.lteq(a.ident, b.ident);
- }
-
- methods = std.sort.merge_sort[method](bind method_lteq(_,_),
- methods);
-
- auto t_obj = plain_ty(ty.ty_obj(methods));
+ auto t_obj = plain_ty(ty.ty_obj(ty.sort_methods(methods)));
ret t_obj;
}