FIXED: number_chars(N, "0' "), addressing #1580.

There may be a more elegant way to solve this.
This commit is contained in:
Markus Triska
2023-04-01 20:29:02 +02:00
parent 7279062d3c
commit fe27605497

View File

@@ -834,19 +834,40 @@ impl MachineState {
) -> CallResult {
let nx = self.store(self.deref(self.registers[2]));
if let Some(c) = string.chars().last() {
if layout_char!(c) {
let (line_num, col_num) = string.chars().fold((0, 0), |(line_num, col_num), c| {
if new_line_char!(c) {
(1 + line_num, 0)
} else {
(line_num, col_num + 1)
}
});
let err = ParserError::UnexpectedChar(c, line_num, col_num);
let err = self.syntax_error(err);
let mut charcode_space = false;
let mut cs = string.chars();
return Err(self.error_form(err, stub_gen()));
loop {
let c = cs.next();
if c == None {
break;
}
if c == Some('0')
&& cs.next() == Some('\'')
&& cs.next() == Some(' ')
&& cs.next() == None {
charcode_space = true;
break;
}
}
if !charcode_space {
if let Some(c) = string.chars().last() {
if layout_char!(c) {
let (line_num, col_num) = string.chars().fold((0, 0), |(line_num, col_num), c| {
if new_line_char!(c) {
(1 + line_num, 0)
} else {
(line_num, col_num + 1)
}
});
let err = ParserError::UnexpectedChar(c, line_num, col_num);
let err = self.syntax_error(err);
return Err(self.error_form(err, stub_gen()));
}
}
}