From f554b09efc1df5eb70f92175310559b3c936c605 Mon Sep 17 00:00:00 2001 From: Andrew Segavac Date: Sun, 17 Aug 2025 15:44:17 -0600 Subject: [PATCH] got redo working --- src/ast.rs | 8 ++++---- src/interpreter.rs | 2 +- src/main.rs | 3 --- src/trait_checking.rs | 2 +- src/type_checking.rs | 4 ++-- 5 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/ast.rs b/src/ast.rs index a2cf07b..ac683fa 100644 --- a/src/ast.rs +++ b/src/ast.rs @@ -1,4 +1,4 @@ -use std::{cell::RefCell, clone}; +use std::cell::RefCell; #[derive(Debug, Clone, PartialEq, Eq)] pub struct IdGenerator { @@ -118,7 +118,7 @@ impl TypeUsage { } pub fn replace_type(&self, old: &str, new: &Identifier) -> TypeUsage { - return match &self { + match &self { TypeUsage::Function(function) => { return TypeUsage::Function(FunctionTypeUsage { arguments: function.arguments.iter().map(|arg| arg.replace_type(old, new)).collect(), @@ -126,7 +126,7 @@ impl TypeUsage { }); } TypeUsage::Named(named) => { - let name = if (named.name.name.value == old) { + let name = if named.name.name.value == old { new.clone() } else { named.name.clone() @@ -138,7 +138,7 @@ impl TypeUsage { } TypeUsage::Namespace(namespace) => return TypeUsage::Namespace(namespace.clone()), TypeUsage::Unknown(unkown) => return TypeUsage::Unknown(unkown.clone()), - }; + } } } diff --git a/src/interpreter.rs b/src/interpreter.rs index d6968e0..bd5541c 100644 --- a/src/interpreter.rs +++ b/src/interpreter.rs @@ -413,7 +413,7 @@ impl TreeWalkInterpreter { } ast::Subexpression::VariableUsage(variable_usage) => { if !ctx.environment.contains_key(&variable_usage.name.name.value) { - panic!(variable_usage.name.name.value.clone()); + panic!("{}", variable_usage.name.name.value.clone()); } let variable_value = match &ctx.environment[&variable_usage.name.name.value] { NamedEntity::Variable(v) => v.clone(), diff --git a/src/main.rs b/src/main.rs index 800cbc8..eaddf9d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -32,9 +32,6 @@ fn main() { .get_matches(); let input = matches.value_of("INPUT").unwrap(); - let default_output = input.rsplitn(2, ".").collect::>().last().unwrap().clone(); - let _output = matches.value_of("OUTPUT").unwrap_or(default_output); - let contents = fs::read_to_string(input).expect("input file not found"); let unknown_id_gen = ast::IdGenerator::new("S"); let module_ast = grammar::ModuleParser::new().parse(&unknown_id_gen, &contents).unwrap(); //TODO: convert to error diff --git a/src/trait_checking.rs b/src/trait_checking.rs index 731f27f..1144abe 100644 --- a/src/trait_checking.rs +++ b/src/trait_checking.rs @@ -132,7 +132,7 @@ impl TraitChecker { for impl_function in impl_.functions.iter() { let mut found = false; for trait_item in trait_declaration.functions.iter() { - let declaration = match trait_item { + match trait_item { ast::TraitItem::FunctionDeclaration(declaration) => { if impl_function.declaration.name.name.value == declaration.name.name.value { found = true; diff --git a/src/type_checking.rs b/src/type_checking.rs index 3e9ad7f..b387527 100644 --- a/src/type_checking.rs +++ b/src/type_checking.rs @@ -536,12 +536,12 @@ impl Context { fn add_impl(&self, impl_: &ast::Impl, traits: &HashMap) -> Result { let mut functions = HashMap::new(); for func in impl_.functions.iter() { - if (func.declaration.arguments.len() == 0) { + if func.declaration.arguments.len() == 0 { continue; } match &func.declaration.arguments[0].type_ { ast::TypeUsage::Named(named) => { - if (named.name.name.value != "Self") { + if named.name.name.value != "Self" { continue; } }