Support nil contents.
This commit is contained in:
		
							parent
							
								
									d2f2bdf88d
								
							
						
					
					
						commit
						645d9abf9c
					
				| @ -100,20 +100,28 @@ fn assert_bounds<'b, 's, S: StandardProperties<'s> + ?Sized>( | ||||
| 
 | ||||
|     // Check contents-begin/contents-end
 | ||||
|     { | ||||
|         let (begin, end) = ( | ||||
|             standard_properties | ||||
|                 .contents_begin | ||||
|                 .ok_or("Token should have a begin.")?, | ||||
|             standard_properties | ||||
|                 .contents_end | ||||
|                 .ok_or("Token should have an 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_end_char_offset = | ||||
|             rust_begin_char_offset + original_document[rust_begin..rust_end].chars().count(); // 1-based
 | ||||
|         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))?; | ||||
|         if let Some(rust_contents) = rust.get_contents() { | ||||
|             let (begin, end) = ( | ||||
|                 standard_properties | ||||
|                     .contents_begin | ||||
|                     .ok_or("Token should have a contents-begin.")?, | ||||
|                 standard_properties | ||||
|                     .contents_end | ||||
|                     .ok_or("Token should have an contents-end.")?, | ||||
|             ); | ||||
|             let (rust_begin, rust_end) = get_rust_byte_offsets(original_document, rust_contents); // 0-based
 | ||||
|             let rust_begin_char_offset = original_document[..rust_begin].chars().count() + 1; // 1-based
 | ||||
|             let rust_end_char_offset = | ||||
|                 rust_begin_char_offset + original_document[rust_begin..rust_end].chars().count(); // 1-based
 | ||||
|             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))?; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Tom Alexander
						Tom Alexander