directory_files/2: throw representation error if into_string() fails
Suggested by @notoria in #606. Many thanks!
This commit is contained in:
@@ -575,7 +575,7 @@ impl DomainErrorType {
|
||||
// from 7.12.2 f) of 13211-1:1995
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
pub enum RepFlag {
|
||||
// Character,
|
||||
Character,
|
||||
CharacterCode,
|
||||
InCharacterCode,
|
||||
MaxArity,
|
||||
@@ -586,7 +586,7 @@ pub enum RepFlag {
|
||||
impl RepFlag {
|
||||
pub fn as_str(self) -> &'static str {
|
||||
match self {
|
||||
// RepFlag::Character => "character",
|
||||
RepFlag::Character => "character",
|
||||
RepFlag::CharacterCode => "character_code",
|
||||
RepFlag::InCharacterCode => "in_character_code",
|
||||
RepFlag::MaxArity => "max_arity",
|
||||
|
||||
@@ -830,8 +830,16 @@ impl MachineState {
|
||||
if let Ok(entries) = fs::read_dir(path) {
|
||||
for entry in entries {
|
||||
if let Ok(entry) = entry {
|
||||
let name = entry.file_name().into_string().unwrap();
|
||||
files.push(self.heap.put_complete_string(&name));
|
||||
match entry.file_name().into_string() {
|
||||
Ok(name) => { files.push(self.heap.put_complete_string(&name)); }
|
||||
_ => {
|
||||
let stub = MachineError::functor_stub(clause_name!("directory_files"), 2);
|
||||
let err = MachineError::representation_error(RepFlag::Character);
|
||||
let err = self.error_form(err, stub);
|
||||
|
||||
return Err(err);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user