From 1f4645ed2483c75bc29a61f7c590a305906e9ce4 Mon Sep 17 00:00:00 2001 From: MCorange Date: Sat, 17 Jan 2026 16:39:01 +0200 Subject: [PATCH] Upgrade to rust 2024 Wow this project is old --- Cargo.toml | 2 +- src/logger.rs | 10 +++++----- src/validator/calculate_types.rs | 4 ++-- src/validator/mod.rs | 10 +++++++--- 4 files changed, 15 insertions(+), 11 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 6528049..919fece 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "mclangc" version = "0.1.0" -edition = "2021" +edition = "2024" default-run = "mclangc" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/src/logger.rs b/src/logger.rs index 282da4d..14ef15d 100644 --- a/src/logger.rs +++ b/src/logger.rs @@ -110,7 +110,7 @@ pub mod log { #[macro_export] macro_rules! lerror { - ($loc:expr, $($arg:tt)*) => { + ($loc:expr_2021, $($arg:tt)*) => { if cfg!(debug_assertions) { crate::logger::_log_with_loc(Some((file!(), line!(), column!())), format!("{}", $loc), crate::logger::Level::Error, &format!($($arg)*)) } else { @@ -120,7 +120,7 @@ pub mod log { } #[macro_export] macro_rules! lwarn { - ($loc:expr, $($arg:tt)*) => { + ($loc:expr_2021, $($arg:tt)*) => { if cfg!(debug_assertions) { crate::logger::_log_with_loc(Some((file!(), line!(), column!())), format!("{}", $loc), crate::logger::Level::Warn, &format!($($arg)*)) } else { @@ -130,7 +130,7 @@ pub mod log { } #[macro_export] macro_rules! linfo { - ($loc:expr, $($arg:tt)*) => { + ($loc:expr_2021, $($arg:tt)*) => { if cfg!(debug_assertions) { crate::logger::_log_with_loc(Some((file!(), line!(), column!())), format!("{}", $loc), crate::logger::Level::Info, &format!($($arg)*)) } else { @@ -140,7 +140,7 @@ pub mod log { } #[macro_export] macro_rules! lhelp { - ($loc:expr, $($arg:tt)*) => { + ($loc:expr_2021, $($arg:tt)*) => { if cfg!(debug_assertions) { crate::logger::_log_with_loc(Some((file!(), line!(), column!())), format!("{}", $loc), crate::logger::Level::Help, &format!($($arg)*)) } else { @@ -150,7 +150,7 @@ pub mod log { } #[macro_export] macro_rules! ldebug { - ($loc:expr, $($arg:tt)*) => { + ($loc:expr_2021, $($arg:tt)*) => { if cfg!(debug_assertions) { crate::logger::_log_with_loc(Some((file!(), line!(), column!())), format!("{}", $loc), crate::logger::Level::Debug, &format!($($arg)*)) } else { diff --git a/src/validator/calculate_types.rs b/src/validator/calculate_types.rs index 90e2cea..67621dc 100644 --- a/src/validator/calculate_types.rs +++ b/src/validator/calculate_types.rs @@ -16,8 +16,8 @@ pub fn calc(prog: &mut Program) -> anyhow::Result<()> { pub fn calc_ast(prog: &mut Program, ast: &mut Ast) -> anyhow::Result<()> { match ast { - Ast::Statement(ref mut stat) => calc_stat(prog, stat.inner_mut())?, - Ast::Expr(ref mut expr) => calc_expr(prog, expr.inner_mut())?, + Ast::Statement(stat) => calc_stat(prog, stat.inner_mut())?, + Ast::Expr(expr) => calc_expr(prog, expr.inner_mut())?, } Ok(()) } diff --git a/src/validator/mod.rs b/src/validator/mod.rs index 95a3c55..6214699 100644 --- a/src/validator/mod.rs +++ b/src/validator/mod.rs @@ -19,7 +19,7 @@ pub fn validate_code(prog: &mut Program) -> anyhow::Result<()> { //dbg!(&prog.functions); for item in items.iter() { match item { - Ast::Statement(ref stat) => validate_stat(prog, &stat, CurrentState::Outside)?, + Ast::Statement(stat) => validate_stat(prog, &stat, CurrentState::Outside)?, Ast::Expr(_) => unreachable!() } } @@ -57,7 +57,11 @@ fn validate_stat(prog: &mut Program, stat: &LocBox, current_state: Cu fn validate_stat_let(prog: &mut Program, lt: &Let) -> anyhow::Result<()> { if let Some(val) = <.val && let Some(t) = <.typ { - let typ = validate_expr(prog, &val.inner())?; + let val_t = validate_expr(prog, &val.inner())?.unwrap(); + if val_t != *t.inner() { + lerror!(t.loc(), "Cannot assign {val_t} to {}", t.inner()); + bail!("") + } } Ok(()) } @@ -78,7 +82,7 @@ fn validate_ast(prog: &mut Program, ast: &Ast) -> anyhow::Result> { pub fn validate_expr(prog: &mut Program, expr: &Expr) -> anyhow::Result> { match expr { Expr::Break | Expr::Continue => Ok(None), - Expr::Return(ref ret) => { + Expr::Return(ret) => { if let Some(expr) = &**ret { validate_expr(prog, expr.inner()) } else {