changed syntax from var::type = statement to var: type = statement

This commit is contained in:
Dummi26 2023-04-26 22:52:31 +02:00
parent dd017ffea4
commit d9c354685f

View File

@ -463,40 +463,38 @@ fn parse_statement_adv(
}; };
match nchar { match nchar {
Some(':') => { Some(':') => {
if let Some(':') = file.peek() { _ = file.next();
_ = file.next(); let file_pos_before_pot_type = *file.get_pos();
let file_pos_before_pot_type = *file.get_pos(); let parsed_type = parse_type(file);
let parsed_type = parse_type(file); file.skip_whitespaces();
file.skip_whitespaces(); if let Some('=') = file.next() {
if let Some('=') = file.next() { let err_equals_sign = *file.get_pos();
let err_equals_sign = *file.get_pos(); let start = start.trim();
let start = start.trim(); let derefs = start.chars().take_while(|c| *c == '*').count();
let derefs = start.chars().take_while(|c| *c == '*').count(); match parse_statement(file) {
match parse_statement(file) { Ok(v) => break v
Ok(v) => break v .output_to(start[derefs..].to_owned(), derefs)
.output_to(start[derefs..].to_owned(), derefs) .force_output_type(Some(match parsed_type {
.force_output_type(Some(match parsed_type { Ok(v) => v,
Ok(v) => v, Err(mut e) => {
Err(mut e) => { e.context.push((
e.context.push(( format!("interpreted this as an assignment to a variable with the format <var>::<var_type> = <statement>"), Some((err_start_of_statement, Some(err_equals_sign)))
format!("interpreted this as an assignment to a variable with the format <var>::<var_type> = <statement>"), Some((err_start_of_statement, Some(err_equals_sign))) ));
)); return Err(e);
return Err(e); }
} })),
})), Err(mut e) => {
Err(mut e) => { e.context.push((
e.context.push(( format!(
format!( "statement was supposed to be assigned to variable {start}"
"statement was supposed to be assigned to variable {start}" ),
), Some((err_start_of_statement, Some(err_equals_sign))),
Some((err_start_of_statement, Some(err_equals_sign))), ));
)); return Err(e);
return Err(e);
}
} }
} }
file.set_pos(file_pos_before_pot_type);
} }
file.set_pos(file_pos_before_pot_type);
return Ok(SStatement::new(SStatementEnum::EnumVariant( return Ok(SStatement::new(SStatementEnum::EnumVariant(
start, start,
parse_statement(file)?, parse_statement(file)?,