Fix incorrect parent values after call to child_by_field_name

Refs tree-sitter/node-tree-sitter#61
Refs tree-sitter/tree-sitter-javascript#127
This commit is contained in:
Max Brunsfeld 2020-04-03 11:21:47 -07:00
parent 21175142af
commit 35f82ce301
2 changed files with 16 additions and 1 deletions

View file

@ -227,6 +227,19 @@ fn test_node_children_by_field_name() {
);
}
#[test]
fn test_node_parent_of_child_by_field_name() {
let mut parser = Parser::new();
parser.set_language(get_language("javascript")).unwrap();
let tree = parser.parse("foo(a().b[0].c.d.e())", None).unwrap();
let call_node = tree.root_node().named_child(0).unwrap().named_child(0).unwrap();
assert_eq!(call_node.kind(), "call_expression");
// Regression test - when a field points to a hidden node (in this case, `_expression`)
// the hidden node should not be added to the node parent cache.
assert_eq!(call_node.child_by_field_name("function").unwrap().parent(), Some(call_node));
}
#[test]
fn test_node_named_child() {
let tree = parse_json_example();