Support nil contents.

This commit is contained in:
Tom Alexander 2023-10-31 22:48:09 -04:00
parent d2f2bdf88d
commit 645d9abf9c
Signed by: talexander
GPG Key ID: D3A179C9A53C0EDE

View File

@ -100,20 +100,28 @@ fn assert_bounds<'b, 's, S: StandardProperties<'s> + ?Sized>(
// Check contents-begin/contents-end // Check contents-begin/contents-end
{ {
let (begin, end) = ( if let Some(rust_contents) = rust.get_contents() {
standard_properties let (begin, end) = (
.contents_begin standard_properties
.ok_or("Token should have a begin.")?, .contents_begin
standard_properties .ok_or("Token should have a contents-begin.")?,
.contents_end standard_properties
.ok_or("Token should have an end.")?, .contents_end
); .ok_or("Token should have an contents-end.")?,
let (rust_begin, rust_end) = get_rust_byte_offsets(original_document, rust.get_contents()); // 0-based );
let rust_begin_char_offset = original_document[..rust_begin].chars().count() + 1; // 1-based let (rust_begin, rust_end) = get_rust_byte_offsets(original_document, rust_contents); // 0-based
let rust_end_char_offset = let rust_begin_char_offset = original_document[..rust_begin].chars().count() + 1; // 1-based
rust_begin_char_offset + original_document[rust_begin..rust_end].chars().count(); // 1-based let rust_end_char_offset =
if rust_begin_char_offset != begin || rust_end_char_offset != end { rust_begin_char_offset + original_document[rust_begin..rust_end].chars().count(); // 1-based
Err(format!("Rust contents bounds (in chars) ({rust_begin}, {rust_end}) do not match emacs contents bounds ({emacs_begin}, {emacs_end})", rust_begin = rust_begin_char_offset, rust_end = rust_end_char_offset, emacs_begin=begin, emacs_end=end))?; if rust_begin_char_offset != begin || rust_end_char_offset != end {
Err(format!("Rust contents bounds (in chars) ({rust_begin}, {rust_end}) do not match emacs contents bounds ({emacs_begin}, {emacs_end})", rust_begin = rust_begin_char_offset, rust_end = rust_end_char_offset, emacs_begin=begin, emacs_end=end))?;
}
} else {
if standard_properties.contents_begin.is_some()
|| standard_properties.contents_end.is_some()
{
Err(format!("Rust contents is None but emacs contents bounds are ({emacs_begin:?}, {emacs_end:?})", emacs_begin=standard_properties.contents_begin, emacs_end=standard_properties.contents_end))?;
}
} }
} }