Upgrade to rust 2024

Wow this project is old
This commit is contained in:
Gvidas Juknevičius 2026-01-17 16:39:01 +02:00
parent 158b76fe39
commit 1f4645ed24
4 changed files with 15 additions and 11 deletions

View File

@ -1,7 +1,7 @@
[package] [package]
name = "mclangc" name = "mclangc"
version = "0.1.0" version = "0.1.0"
edition = "2021" edition = "2024"
default-run = "mclangc" default-run = "mclangc"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

View File

@ -110,7 +110,7 @@ pub mod log {
#[macro_export] #[macro_export]
macro_rules! lerror { macro_rules! lerror {
($loc:expr, $($arg:tt)*) => { ($loc:expr_2021, $($arg:tt)*) => {
if cfg!(debug_assertions) { if cfg!(debug_assertions) {
crate::logger::_log_with_loc(Some((file!(), line!(), column!())), format!("{}", $loc), crate::logger::Level::Error, &format!($($arg)*)) crate::logger::_log_with_loc(Some((file!(), line!(), column!())), format!("{}", $loc), crate::logger::Level::Error, &format!($($arg)*))
} else { } else {
@ -120,7 +120,7 @@ pub mod log {
} }
#[macro_export] #[macro_export]
macro_rules! lwarn { macro_rules! lwarn {
($loc:expr, $($arg:tt)*) => { ($loc:expr_2021, $($arg:tt)*) => {
if cfg!(debug_assertions) { if cfg!(debug_assertions) {
crate::logger::_log_with_loc(Some((file!(), line!(), column!())), format!("{}", $loc), crate::logger::Level::Warn, &format!($($arg)*)) crate::logger::_log_with_loc(Some((file!(), line!(), column!())), format!("{}", $loc), crate::logger::Level::Warn, &format!($($arg)*))
} else { } else {
@ -130,7 +130,7 @@ pub mod log {
} }
#[macro_export] #[macro_export]
macro_rules! linfo { macro_rules! linfo {
($loc:expr, $($arg:tt)*) => { ($loc:expr_2021, $($arg:tt)*) => {
if cfg!(debug_assertions) { if cfg!(debug_assertions) {
crate::logger::_log_with_loc(Some((file!(), line!(), column!())), format!("{}", $loc), crate::logger::Level::Info, &format!($($arg)*)) crate::logger::_log_with_loc(Some((file!(), line!(), column!())), format!("{}", $loc), crate::logger::Level::Info, &format!($($arg)*))
} else { } else {
@ -140,7 +140,7 @@ pub mod log {
} }
#[macro_export] #[macro_export]
macro_rules! lhelp { macro_rules! lhelp {
($loc:expr, $($arg:tt)*) => { ($loc:expr_2021, $($arg:tt)*) => {
if cfg!(debug_assertions) { if cfg!(debug_assertions) {
crate::logger::_log_with_loc(Some((file!(), line!(), column!())), format!("{}", $loc), crate::logger::Level::Help, &format!($($arg)*)) crate::logger::_log_with_loc(Some((file!(), line!(), column!())), format!("{}", $loc), crate::logger::Level::Help, &format!($($arg)*))
} else { } else {
@ -150,7 +150,7 @@ pub mod log {
} }
#[macro_export] #[macro_export]
macro_rules! ldebug { macro_rules! ldebug {
($loc:expr, $($arg:tt)*) => { ($loc:expr_2021, $($arg:tt)*) => {
if cfg!(debug_assertions) { if cfg!(debug_assertions) {
crate::logger::_log_with_loc(Some((file!(), line!(), column!())), format!("{}", $loc), crate::logger::Level::Debug, &format!($($arg)*)) crate::logger::_log_with_loc(Some((file!(), line!(), column!())), format!("{}", $loc), crate::logger::Level::Debug, &format!($($arg)*))
} else { } else {

View File

@ -16,8 +16,8 @@ pub fn calc(prog: &mut Program) -> anyhow::Result<()> {
pub fn calc_ast(prog: &mut Program, ast: &mut Ast) -> anyhow::Result<()> { pub fn calc_ast(prog: &mut Program, ast: &mut Ast) -> anyhow::Result<()> {
match ast { match ast {
Ast::Statement(ref mut stat) => calc_stat(prog, stat.inner_mut())?, Ast::Statement(stat) => calc_stat(prog, stat.inner_mut())?,
Ast::Expr(ref mut expr) => calc_expr(prog, expr.inner_mut())?, Ast::Expr(expr) => calc_expr(prog, expr.inner_mut())?,
} }
Ok(()) Ok(())
} }

View File

@ -19,7 +19,7 @@ pub fn validate_code(prog: &mut Program) -> anyhow::Result<()> {
//dbg!(&prog.functions); //dbg!(&prog.functions);
for item in items.iter() { for item in items.iter() {
match item { match item {
Ast::Statement(ref stat) => validate_stat(prog, &stat, CurrentState::Outside)?, Ast::Statement(stat) => validate_stat(prog, &stat, CurrentState::Outside)?,
Ast::Expr(_) => unreachable!() Ast::Expr(_) => unreachable!()
} }
} }
@ -57,7 +57,11 @@ fn validate_stat(prog: &mut Program, stat: &LocBox<Statement>, current_state: Cu
fn validate_stat_let(prog: &mut Program, lt: &Let) -> anyhow::Result<()> { fn validate_stat_let(prog: &mut Program, lt: &Let) -> anyhow::Result<()> {
if let Some(val) = &lt.val && let Some(t) = &lt.typ { if let Some(val) = &lt.val && let Some(t) = &lt.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(()) Ok(())
} }
@ -78,7 +82,7 @@ fn validate_ast(prog: &mut Program, ast: &Ast) -> anyhow::Result<Option<Type>> {
pub fn validate_expr(prog: &mut Program, expr: &Expr) -> anyhow::Result<Option<Type>> { pub fn validate_expr(prog: &mut Program, expr: &Expr) -> anyhow::Result<Option<Type>> {
match expr { match expr {
Expr::Break | Expr::Continue => Ok(None), Expr::Break | Expr::Continue => Ok(None),
Expr::Return(ref ret) => { Expr::Return(ret) => {
if let Some(expr) = &**ret { if let Some(expr) = &**ret {
validate_expr(prog, expr.inner()) validate_expr(prog, expr.inner())
} else { } else {