diff options
| author | Patrick Walton <[email protected]> | 2011-03-17 11:40:05 -0700 |
|---|---|---|
| committer | Patrick Walton <[email protected]> | 2011-03-17 11:40:05 -0700 |
| commit | 55587a554c5c786488af5a31e812bf2ab959e006 (patch) | |
| tree | a9e1b2412f4d195088495a8f2f0ab649637662d0 /src | |
| parent | rustc: Don't go over inner functions' locals during the writeback phase of ty... (diff) | |
| download | rust-55587a554c5c786488af5a31e812bf2ab959e006.tar.xz rust-55587a554c5c786488af5a31e812bf2ab959e006.zip | |
rustc: Sort object methods when parsing textual types in the AST
Diffstat (limited to 'src')
| -rw-r--r-- | src/comp/middle/ty.rs | 8 | ||||
| -rw-r--r-- | src/comp/middle/typeck.rs | 12 |
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; } |