diff --git a/src/librustc/middle/trans/debuginfo.rs b/src/librustc/middle/trans/debuginfo.rs index f6a2574d50d4..668c676b18c8 100644 --- a/src/librustc/middle/trans/debuginfo.rs +++ b/src/librustc/middle/trans/debuginfo.rs @@ -769,22 +769,22 @@ fn create_function(fcx: fn_ctxt) -> @metadata { ast_map::node_item(item, _) => { match /*bad*/copy item.node { ast::item_fn(decl, _, _, _) => { - (item.ident, Some(decl.output), item.id) + (item.ident, decl.output, item.id) } _ => fcx.ccx.sess.span_bug(item.span, ~"create_function: item \ bound to non-function") } } ast_map::node_method(method, _, _) => { - (method.ident, Some(method.decl.output), method.id) + (method.ident, method.decl.output, method.id) } ast_map::node_expr(expr) => { match /*bad*/copy expr.node { ast::expr_fn(_, decl, _, _) => { - ((dbg_cx.names)(~"fn"), Some(decl.output), expr.id) + ((dbg_cx.names)(~"fn"), decl.output, expr.id) } ast::expr_fn_block(decl, _, _) => { - ((dbg_cx.names)(~"fn"), Some(decl.output), expr.id) + ((dbg_cx.names)(~"fn"), decl.output, expr.id) } _ => fcx.ccx.sess.span_bug(expr.span, ~"create_function: \ @@ -792,7 +792,7 @@ fn create_function(fcx: fn_ctxt) -> @metadata { } } ast_map::node_dtor(_, _, did, _) => { - ((dbg_cx.names)(~"dtor"), None, did.node) + ((dbg_cx.names)(~"dtor"), ast_util::dtor_ty(), did.node) } _ => fcx.ccx.sess.bug(~"create_function: unexpected \ sort of node") @@ -810,8 +810,7 @@ fn create_function(fcx: fn_ctxt) -> @metadata { let loc = cx.sess.codemap.lookup_char_pos(sp.lo); let file_node = create_file(cx, loc.file.name).node; - let ty_node = if ret_ty.is_some() && cx.sess.opts.extra_debuginfo { - let ret_ty = ret_ty.unwrap(); + let ty_node = if cx.sess.opts.extra_debuginfo { match ret_ty.node { ast::ty_nil => llnull(), _ => create_ty(cx, ty::node_id_to_type(cx.tcx, id), ret_ty).node diff --git a/src/libsyntax/ast_util.rs b/src/libsyntax/ast_util.rs index fe0da2e17b82..3afceeef59e6 100644 --- a/src/libsyntax/ast_util.rs +++ b/src/libsyntax/ast_util.rs @@ -440,8 +440,10 @@ fn operator_prec(op: ast::binop) -> uint { } } +fn dtor_ty() -> @ast::Ty { @ast::Ty {id: 0, node: ty_nil, span: dummy_sp()} } + fn dtor_dec() -> fn_decl { - let nil_t = @ast::Ty { id: 0, node: ty_nil, span: dummy_sp() }; + let nil_t = dtor_ty(); // dtor has no args ast::fn_decl { inputs: ~[],