Skip to content

Commit 19a48d1

Browse files
committed
---
yaml --- r: 4556 b: refs/heads/master c: 612fe3d h: refs/heads/master v: v3
1 parent f6d3b02 commit 19a48d1

File tree

2 files changed

+58
-1
lines changed

2 files changed

+58
-1
lines changed

[refs]

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: 14b3ad194ac80ec0bb4e6f570113bf15db587449
2+
refs/heads/master: 612fe3d2d6fa0dcb3d92a0d83ec7f2418dd8c7ce

trunk/src/comp/middle/ast_map.rs

+57
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import std::smallintmap;
22
import std::option;
33
import syntax::ast::*;
44
import syntax::visit;
5+
import syntax::codemap;
56
import visit::vt;
67

78
tag ast_node {
@@ -113,6 +114,62 @@ fn new_smallintmap_adapter[@K,
113114
ret adapter(map, key_idx, idx_key);
114115
}
115116

117+
fn node_span(node: &ast_node) -> codemap::span {
118+
alt node {
119+
node_item(item) { item.span }
120+
node_obj_ctor(item) { item.span }
121+
node_native_item(nitem) { nitem.span }
122+
node_expr(expr) { expr.span }
123+
}
124+
}
125+
126+
#[cfg(test)]
127+
mod test {
128+
#[test]
129+
fn test_node_span_item() {
130+
let expected: codemap::span = {lo: 20u, hi: 30u};
131+
let node = node_item(@{ident: "test",
132+
attrs: ~[],
133+
id: 0,
134+
node: item_mod({view_items: ~[],
135+
items: ~[]}),
136+
span: expected});
137+
assert node_span(node) == expected;
138+
}
139+
140+
#[test]
141+
fn test_node_span_obj_ctor() {
142+
let expected: codemap::span = {lo: 20u, hi: 30u};
143+
let node = node_obj_ctor(@{ident: "test",
144+
attrs: ~[],
145+
id: 0,
146+
node: item_mod({view_items: ~[],
147+
items: ~[]}),
148+
span: expected});
149+
assert node_span(node) == expected;
150+
}
151+
152+
#[test]
153+
fn test_node_span_native_item() {
154+
let expected: codemap::span = {lo: 20u, hi: 30u};
155+
let node = node_native_item(@{ident: "test",
156+
attrs: ~[],
157+
node: native_item_ty,
158+
id: 0,
159+
span: expected});
160+
assert node_span(node) == expected;
161+
}
162+
163+
#[test]
164+
fn test_node_span_expr() {
165+
let expected: codemap::span = {lo: 20u, hi: 30u};
166+
let node = node_expr(@{id: 0,
167+
node: expr_break,
168+
span: expected});
169+
assert node_span(node) == expected;
170+
}
171+
}
172+
116173
// Local Variables:
117174
// mode: rust
118175
// fill-column: 78;

0 commit comments

Comments
 (0)