From ce2278ce45876c2ce9ac0ff489a3b36f417f39d2 Mon Sep 17 00:00:00 2001 From: sofia Date: Thu, 17 Jul 2025 20:20:07 +0300 Subject: [PATCH] Fix using custom type-labels for e.g. return type --- reid/src/ast/parse.rs | 2 +- reid/src/ast/process.rs | 2 +- reid_src/array_structs.reid | 15 ++++++++++----- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/reid/src/ast/parse.rs b/reid/src/ast/parse.rs index 1004dea..e1f95c6 100644 --- a/reid/src/ast/parse.rs +++ b/reid/src/ast/parse.rs @@ -39,7 +39,7 @@ impl Parse for Type { "u64" => TypeKind::U64, "u128" => TypeKind::U128, "string" => TypeKind::String, - _ => Err(stream.expected_err("known type identifier")?)?, + _ => TypeKind::Custom(ident), } } else { return Err(stream.expected_err("type identifier")?)?; diff --git a/reid/src/ast/process.rs b/reid/src/ast/process.rs index 34a6a98..c83789d 100644 --- a/reid/src/ast/process.rs +++ b/reid/src/ast/process.rs @@ -275,7 +275,7 @@ impl From for mir::TypeKind { mir::TypeKind::Array(Box::new(mir::TypeKind::from(*type_kind.clone())), *length) } ast::TypeKind::String => mir::TypeKind::StringPtr, - ast::TypeKind::Custom(_) => todo!("Add processing for custom types"), + ast::TypeKind::Custom(name) => mir::TypeKind::CustomType(name.clone()), } } } diff --git a/reid_src/array_structs.reid b/reid_src/array_structs.reid index a67d139..628c393 100644 --- a/reid_src/array_structs.reid +++ b/reid_src/array_structs.reid @@ -5,19 +5,24 @@ struct Test { second: [u32; 4] } -fn main() -> v u32 { - let mut value = [Test { +fn test() -> [Test; 1] { + let value = [Test { field: 5, - second: [6, 3, "hello", 8], + second: [6, 3, 4, 8], }]; + return value; +} + +fn main() -> u32 { + let mut value = test(); let val1 = 0; let val2 = 1; // value[val1].second[val2 + 1] = 99; - let mut b = valude[val1]; + let mut b = value[val1]; b.second[2] = 99; - return value[val1].sezcond[2]; + return value[val1].second[2]; }