Add ast_map::node_span function
This commit is contained in:
parent
14b3ad194a
commit
612fe3d2d6
1 changed files with 57 additions and 0 deletions
|
@ -2,6 +2,7 @@ import std::smallintmap;
|
|||
import std::option;
|
||||
import syntax::ast::*;
|
||||
import syntax::visit;
|
||||
import syntax::codemap;
|
||||
import visit::vt;
|
||||
|
||||
tag ast_node {
|
||||
|
@ -113,6 +114,62 @@ fn new_smallintmap_adapter[@K,
|
|||
ret adapter(map, key_idx, idx_key);
|
||||
}
|
||||
|
||||
fn node_span(node: &ast_node) -> codemap::span {
|
||||
alt node {
|
||||
node_item(item) { item.span }
|
||||
node_obj_ctor(item) { item.span }
|
||||
node_native_item(nitem) { nitem.span }
|
||||
node_expr(expr) { expr.span }
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
#[test]
|
||||
fn test_node_span_item() {
|
||||
let expected: codemap::span = {lo: 20u, hi: 30u};
|
||||
let node = node_item(@{ident: "test",
|
||||
attrs: ~[],
|
||||
id: 0,
|
||||
node: item_mod({view_items: ~[],
|
||||
items: ~[]}),
|
||||
span: expected});
|
||||
assert node_span(node) == expected;
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_node_span_obj_ctor() {
|
||||
let expected: codemap::span = {lo: 20u, hi: 30u};
|
||||
let node = node_obj_ctor(@{ident: "test",
|
||||
attrs: ~[],
|
||||
id: 0,
|
||||
node: item_mod({view_items: ~[],
|
||||
items: ~[]}),
|
||||
span: expected});
|
||||
assert node_span(node) == expected;
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_node_span_native_item() {
|
||||
let expected: codemap::span = {lo: 20u, hi: 30u};
|
||||
let node = node_native_item(@{ident: "test",
|
||||
attrs: ~[],
|
||||
node: native_item_ty,
|
||||
id: 0,
|
||||
span: expected});
|
||||
assert node_span(node) == expected;
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_node_span_expr() {
|
||||
let expected: codemap::span = {lo: 20u, hi: 30u};
|
||||
let node = node_expr(@{id: 0,
|
||||
node: expr_break,
|
||||
span: expected});
|
||||
assert node_span(node) == expected;
|
||||
}
|
||||
}
|
||||
|
||||
// Local Variables:
|
||||
// mode: rust
|
||||
// fill-column: 78;
|
||||
|
|
Loading…
Reference in a new issue