diff options
Diffstat (limited to 'src/comp')
| -rw-r--r-- | src/comp/middle/ty.rs | 26 | ||||
| -rw-r--r-- | src/comp/middle/typeck.rs | 8 |
2 files changed, 26 insertions, 8 deletions
diff --git a/src/comp/middle/ty.rs b/src/comp/middle/ty.rs index 72564078..c6394c34 100644 --- a/src/comp/middle/ty.rs +++ b/src/comp/middle/ty.rs @@ -115,10 +115,17 @@ fn ty_to_str(&@t typ) -> str { option.t[ast.ident] ident, vec[arg] inputs, @t output) -> str { auto f = fn_input_to_str; - auto s = "fn"; - if (proto == ast.proto_iter) { - s = "iter"; + + auto s; + alt (proto) { + case (ast.proto_iter) { + s = "iter"; + } + case (ast.proto_fn) { + s = "fn"; + } } + alt (ident) { case (some[ast.ident](?i)) { s += " "; @@ -206,9 +213,16 @@ fn ty_to_str(&@t typ) -> str { } case (ty_obj(?meths)) { - auto f = method_to_str; - auto m = _vec.map[method,str](f, meths); - s += "obj {\n\t" + _str.connect(m, "\n\t") + "\n}"; + alt (typ.cname) { + case (some[str](?cs)) { + s += cs; + } + case (_) { + auto f = method_to_str; + auto m = _vec.map[method,str](f, meths); + s += "obj {\n\t" + _str.connect(m, "\n\t") + "\n}"; + } + } } case (ty_var(?v)) { diff --git a/src/comp/middle/typeck.rs b/src/comp/middle/typeck.rs index c849483e..dbeeb8f9 100644 --- a/src/comp/middle/typeck.rs +++ b/src/comp/middle/typeck.rs @@ -538,19 +538,22 @@ fn collect_item_types(session.session sess, @ast.crate crate) fn ty_of_obj(@ty_item_table id_to_ty_item, @ty_table item_to_ty, + &ast.ident id, &ast._obj obj_info) -> @ty.t { auto f = bind ty_of_method(id_to_ty_item, item_to_ty, _); auto methods = _vec.map[@ast.method,method](f, obj_info.methods); - auto t_obj = plain_ty(ty.ty_obj(ty.sort_methods(methods))); + auto t_obj = @rec(struct=ty.ty_obj(ty.sort_methods(methods)), + cname=some[str](id)); ret t_obj; } fn ty_of_obj_ctor(@ty_item_table id_to_ty_item, @ty_table item_to_ty, + &ast.ident id, &ast._obj obj_info) -> @ty.t { - auto t_obj = ty_of_obj(id_to_ty_item, item_to_ty, obj_info); + auto t_obj = ty_of_obj(id_to_ty_item, item_to_ty, id, obj_info); let vec[arg] t_inputs = vec(); for (ast.obj_field f in obj_info.fields) { auto g = bind getter(id_to_ty_item, item_to_ty, _); @@ -584,6 +587,7 @@ fn collect_item_types(session.session sess, @ast.crate crate) // TODO: handle ty-params auto t_ctor = ty_of_obj_ctor(id_to_ty_item, item_to_ty, + ident, obj_info); item_to_ty.insert(def_id, t_ctor); ret t_ctor; |