Upgrade to rust 2024
Wow this project is old
This commit is contained in:
parent
158b76fe39
commit
1f4645ed24
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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(())
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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) = <.val && let Some(t) = <.typ {
|
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(())
|
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 {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user