| use std::path::PathBuf; |
| |
| use rustc_span::source_map::{FilePathMapping, SourceMap}; |
| use rustc_span::symbol::sym; |
| use rustc_span::{BytePos, Span}; |
| |
| use super::{DocFragment, DocFragmentKind, source_span_for_markdown_range_inner}; |
| |
| #[test] |
| fn single_backtick() { |
| let sm = SourceMap::new(FilePathMapping::empty()); |
| sm.new_source_file(PathBuf::from("foo.rs").into(), r#"#[doc = "`"] fn foo() {}"#.to_string()); |
| let span = source_span_for_markdown_range_inner( |
| &sm, |
| "`", |
| &(0..1), |
| &[DocFragment { |
| span: Span::with_root_ctxt(BytePos(8), BytePos(11)), |
| item_id: None, |
| kind: DocFragmentKind::RawDoc, |
| doc: sym::empty, // unused placeholder |
| indent: 0, |
| }], |
| ) |
| .unwrap(); |
| assert_eq!(span.lo(), BytePos(9)); |
| assert_eq!(span.hi(), BytePos(10)); |
| } |
| |
| #[test] |
| fn utf8() { |
| // regression test for https://github.com/rust-lang/rust/issues/141665 |
| let sm = SourceMap::new(FilePathMapping::empty()); |
| sm.new_source_file(PathBuf::from("foo.rs").into(), r#"#[doc = "⚠"] fn foo() {}"#.to_string()); |
| let span = source_span_for_markdown_range_inner( |
| &sm, |
| "⚠", |
| &(0..3), |
| &[DocFragment { |
| span: Span::with_root_ctxt(BytePos(8), BytePos(14)), |
| item_id: None, |
| kind: DocFragmentKind::RawDoc, |
| doc: sym::empty, // unused placeholder |
| indent: 0, |
| }], |
| ) |
| .unwrap(); |
| assert_eq!(span.lo(), BytePos(9)); |
| assert_eq!(span.hi(), BytePos(12)); |
| } |