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, from_expansion: false, }], ) .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, from_expansion: false, }], ) .unwrap(); assert_eq!(span.lo(), BytePos(9)); assert_eq!(span.hi(), BytePos(12)); }