Skip to content

Commit 1d36b50

Browse files
committed
Do not recurse into 'extra' nodes for now
1 parent fd39524 commit 1d36b50

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

extractor/src/extractor.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -75,14 +75,14 @@ struct Visitor<'a> {
7575
}
7676

7777
impl Visitor<'_> {
78-
fn enter_node(&mut self, node: Node) {
78+
fn enter_node(&mut self, node: Node) -> bool {
7979
if node.is_error() {
8080
println!(
8181
"error: {}:{}: parse error",
8282
&self.path,
8383
node.start_position().row,
8484
);
85-
return;
85+
return false;
8686
}
8787
if node.is_missing() {
8888
println!(
@@ -91,14 +91,15 @@ impl Visitor<'_> {
9191
node.start_position().row,
9292
node.kind()
9393
);
94-
return;
94+
return false;
9595
}
9696

9797
if node.is_extra() {
98-
return;
98+
return false;
9999
}
100100

101101
self.stack.push(Vec::new());
102+
return true;
102103
}
103104

104105
fn leave_node(&mut self, field_name: Option<&'static str>, node: Node) {
@@ -281,13 +282,12 @@ fn traverse(tree: &Tree, visitor: &mut Visitor) {
281282
let mut recurse = true;
282283
loop {
283284
if recurse && cursor.goto_first_child() {
284-
visitor.enter_node(cursor.node());
285+
recurse = visitor.enter_node(cursor.node());
285286
} else {
286287
visitor.leave_node(cursor.field_name(), cursor.node());
287288

288289
if cursor.goto_next_sibling() {
289-
recurse = true;
290-
visitor.enter_node(cursor.node());
290+
recurse = visitor.enter_node(cursor.node());
291291
} else if cursor.goto_parent() {
292292
recurse = false;
293293
} else {

0 commit comments

Comments
 (0)