Add random mutation tests
This commit is contained in:
parent
e305012b31
commit
233d616ebf
12 changed files with 443 additions and 127 deletions
|
|
@ -18,6 +18,7 @@ use std::io::{self, Read, Seek};
|
|||
use std::marker::PhantomData;
|
||||
use std::os::raw::{c_char, c_void};
|
||||
use std::ptr;
|
||||
use std::slice;
|
||||
use std::str;
|
||||
use std::u16;
|
||||
|
||||
|
|
@ -427,6 +428,18 @@ impl Tree {
|
|||
) -> TreePropertyCursor<'a, P> {
|
||||
TreePropertyCursor::new(self, property_sheet, source)
|
||||
}
|
||||
|
||||
pub fn changed_ranges(&self, other: &Tree) -> Vec<Range> {
|
||||
unsafe {
|
||||
let mut count = 0;
|
||||
let ptr =
|
||||
ffi::ts_tree_get_changed_ranges(self.0, other.0, &mut count as *mut _ as *mut u32);
|
||||
let ranges = slice::from_raw_parts(ptr, count);
|
||||
let result = ranges.into_iter().map(|r| r.clone().into()).collect();
|
||||
free(ptr as *mut c_void);
|
||||
result
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
unsafe impl Send for Tree {}
|
||||
|
|
@ -558,10 +571,6 @@ impl<'tree> Node<'tree> {
|
|||
}
|
||||
|
||||
pub fn to_sexp(&self) -> String {
|
||||
extern "C" {
|
||||
fn free(pointer: *mut c_void);
|
||||
}
|
||||
|
||||
let c_string = unsafe { ffi::ts_node_string(self.0) };
|
||||
let result = unsafe { CStr::from_ptr(c_string) }
|
||||
.to_str()
|
||||
|
|
@ -788,6 +797,17 @@ impl Into<ffi::TSRange> for Range {
|
|||
}
|
||||
}
|
||||
|
||||
impl From<ffi::TSRange> for Range {
|
||||
fn from(range: ffi::TSRange) -> Self {
|
||||
Self {
|
||||
start_byte: range.start_byte as usize,
|
||||
end_byte: range.end_byte as usize,
|
||||
start_point: range.start_point.into(),
|
||||
end_point: range.end_point.into(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<P> PropertySheet<P> {
|
||||
pub fn new(language: Language, json: &str) -> Result<Self, PropertySheetError>
|
||||
where
|
||||
|
|
@ -860,3 +880,7 @@ impl<P> PropertySheet<P> {
|
|||
})
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" {
|
||||
fn free(pointer: *mut c_void);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue