diff options
| author | bors <bors@rust-lang.org> | 2013-12-19 09:51:40 -0800 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2013-12-19 09:51:40 -0800 |
| commit | bc17e4fda71f85fcf63090499d81749942c7ddd4 (patch) | |
| tree | f3aabbc560eca7366a4dad692287df0491dea0e8 /src/libsyntax | |
| parent | d760f994de00f4e700a03a650e5065c8391b7f73 (diff) | |
| parent | 6ad1c8e044ff4447b130ea023ba0ff5880567677 (diff) | |
| download | rust-bc17e4fda71f85fcf63090499d81749942c7ddd4.tar.gz rust-bc17e4fda71f85fcf63090499d81749942c7ddd4.zip | |
auto merge of #11070 : ezyang/rust/better-errors, r=alexcrichton
On the advice of @huonw, I've just replaced item_span outright. Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/ast_map.rs | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/libsyntax/ast_map.rs b/src/libsyntax/ast_map.rs index 961d8170fd3..63e8251b22c 100644 --- a/src/libsyntax/ast_map.rs +++ b/src/libsyntax/ast_map.rs @@ -490,14 +490,23 @@ pub fn node_item_query<Result>(items: map, id: NodeId, query: |@item| -> Result, } } -pub fn item_span(items: map, +pub fn node_span(items: map, id: ast::NodeId) -> Span { match items.find(&id) { Some(&node_item(item, _)) => item.span, - r => { - fail!(format!("item_span: expected item with id {} but found {:?}", - id, r)) - } + Some(&node_foreign_item(foreign_item, _, _, _)) => foreign_item.span, + Some(&node_trait_method(@required(ref type_method), _, _)) => type_method.span, + Some(&node_trait_method(@provided(ref method), _, _)) => method.span, + Some(&node_method(method, _, _)) => method.span, + Some(&node_variant(variant, _, _)) => variant.span, + Some(&node_expr(expr)) => expr.span, + Some(&node_stmt(stmt)) => stmt.span, + Some(&node_arg(pat)) => pat.span, + Some(&node_local(_)) => fail!("node_span: cannot get span from node_local"), + Some(&node_block(block)) => block.span, + Some(&node_struct_ctor(_, item, _)) => item.span, + Some(&node_callee_scope(expr)) => expr.span, + None => fail!("node_span: could not find id {}", id), } } |
