1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
use crate::{diag, diagnostics::Diagnostics};
use move_command_line_common::character_sets::is_permitted_char;
use move_ir_types::location::*;
use move_symbol_pool::Symbol;
use std::collections::BTreeMap;
pub type CommentMap = BTreeMap<Symbol, MatchedFileCommentMap>;
pub type MatchedFileCommentMap = BTreeMap<u32, String>;
pub type FileCommentMap = BTreeMap<(u32, u32), String>;
pub fn verify_string(fname: Symbol, string: &str) -> Result<(), Diagnostics> {
match string
.chars()
.enumerate()
.find(|(_, c)| !is_permitted_char(*c))
{
None => Ok(()),
Some((idx, chr)) => {
let loc = Loc::new(fname, idx as u32, idx as u32);
let msg = format!(
"Invalid character '{}' found when reading file. Only ASCII printable characters, \
tabs (\\t), and line endings (\\n) are permitted.",
chr
);
Err(Diagnostics::from(vec![diag!(
Syntax::InvalidCharacter,
(loc, msg)
)]))
}
}
}