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
|
// from 7.12.2 f) of 13211-1:1995
|
||||||
#[derive(Debug, Clone, Copy)]
|
#[derive(Debug, Clone, Copy)]
|
||||||
pub enum RepFlag {
|
pub enum RepFlag {
|
||||||
// Character,
|
Character,
|
||||||
CharacterCode,
|
CharacterCode,
|
||||||
InCharacterCode,
|
InCharacterCode,
|
||||||
MaxArity,
|
MaxArity,
|
||||||
@@ -586,7 +586,7 @@ pub enum RepFlag {
|
|||||||
impl RepFlag {
|
impl RepFlag {
|
||||||
pub fn as_str(self) -> &'static str {
|
pub fn as_str(self) -> &'static str {
|
||||||
match self {
|
match self {
|
||||||
// RepFlag::Character => "character",
|
RepFlag::Character => "character",
|
||||||
RepFlag::CharacterCode => "character_code",
|
RepFlag::CharacterCode => "character_code",
|
||||||
RepFlag::InCharacterCode => "in_character_code",
|
RepFlag::InCharacterCode => "in_character_code",
|
||||||
RepFlag::MaxArity => "max_arity",
|
RepFlag::MaxArity => "max_arity",
|
||||||
|
|||||||
@@ -830,8 +830,16 @@ impl MachineState {
|
|||||||
if let Ok(entries) = fs::read_dir(path) {
|
if let Ok(entries) = fs::read_dir(path) {
|
||||||
for entry in entries {
|
for entry in entries {
|
||||||
if let Ok(entry) = entry {
|
if let Ok(entry) = entry {
|
||||||
let name = entry.file_name().into_string().unwrap();
|
match entry.file_name().into_string() {
|
||||||
files.push(self.heap.put_complete_string(&name));
|
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