diff --git a/reid/examples/testcodegen.rs b/reid/examples/testcodegen.rs deleted file mode 100644 index 8c053ac..0000000 --- a/reid/examples/testcodegen.rs +++ /dev/null @@ -1,186 +0,0 @@ -use std::path::PathBuf; - -use reid::mir::{self, *}; -use reid_lib::Context; - -fn main() { - let fibonacci_name = "fibonacci".to_owned(); - let fibonacci_n = "N".to_owned(); - - let fibonacci = FunctionDefinition { - name: fibonacci_name.clone(), - is_pub: false, - is_imported: false, - return_type: TypeKind::I32, - parameters: vec![(fibonacci_n.clone(), TypeKind::I32)], - kind: FunctionDefinitionKind::Local( - Block { - statements: vec![Statement( - StmtKind::Expression(Expression( - ExprKind::If(IfExpression( - // If N < 3 - Box::new(Expression( - ExprKind::BinOp( - BinaryOperator::Cmp(CmpOperator::GT), - Box::new(Expression( - ExprKind::Variable(NamedVariableRef( - TypeKind::I32, - "N".to_string(), - Default::default(), - )), - Default::default(), - )), - Box::new(Expression( - ExprKind::Literal(Literal::I32(2)), - Default::default(), - )), - ), - Default::default(), - )), - // Then - Block { - statements: vec![], - return_expression: Some(( - ReturnKind::Hard, - // return fibonacci(n-1) + fibonacci(n-2) - Box::new(Expression( - ExprKind::BinOp( - BinaryOperator::Add, - // fibonacci(n-1) - Box::new(Expression( - ExprKind::FunctionCall(FunctionCall { - name: fibonacci_name.clone(), - return_type: TypeKind::I32, - parameters: vec![Expression( - ExprKind::BinOp( - BinaryOperator::Minus, - Box::new(Expression( - ExprKind::Variable( - NamedVariableRef( - TypeKind::I32, - fibonacci_n.clone(), - Default::default(), - ), - ), - Default::default(), - )), - Box::new(Expression( - ExprKind::Literal(Literal::I32(1)), - Default::default(), - )), - ), - Default::default(), - )], - }), - Default::default(), - )), - // fibonacci(n-2) - Box::new(Expression( - ExprKind::FunctionCall(FunctionCall { - name: fibonacci_name.clone(), - return_type: TypeKind::I32, - parameters: vec![Expression( - ExprKind::BinOp( - BinaryOperator::Minus, - Box::new(Expression( - ExprKind::Variable( - NamedVariableRef( - TypeKind::I32, - fibonacci_n.clone(), - Default::default(), - ), - ), - Default::default(), - )), - Box::new(Expression( - ExprKind::Literal(Literal::I32(2)), - Default::default(), - )), - ), - Default::default(), - )], - }), - Default::default(), - )), - ), - Default::default(), - )), - )), - meta: Default::default(), - }, - // No else-block - None, - )), - Default::default(), - )), - Default::default(), - )], - // return 1 - return_expression: Some(( - ReturnKind::Soft, - Box::new(Expression( - ExprKind::Literal(Literal::I32(1)), - Default::default(), - )), - )), - meta: Default::default(), - }, - Default::default(), - ), - }; - - let main = FunctionDefinition { - name: "main".to_owned(), - is_pub: false, - is_imported: false, - return_type: TypeKind::I32, - parameters: vec![], - kind: FunctionDefinitionKind::Local( - Block { - statements: vec![], - return_expression: Some(( - ReturnKind::Soft, - Box::new(Expression( - ExprKind::FunctionCall(FunctionCall { - name: fibonacci_name.clone(), - return_type: TypeKind::I32, - parameters: vec![Expression( - ExprKind::Literal(Literal::I32(5)), - Default::default(), - )], - }), - Default::default(), - )), - )), - meta: Default::default(), - }, - Default::default(), - ), - }; - - let mir_context = mir::Context { - modules: vec![Module { - name: "test module".to_owned(), - module_id: SourceModuleId::default(), - imports: vec![], - functions: vec![fibonacci, main], - typedefs: Vec::new(), - path: None, - is_main: true, - }], - base: PathBuf::new(), - }; - println!("test1"); - - let context = Context::new("testcodegen"); - let codegen = mir_context.codegen(&context); - println!("test2"); - - codegen.compile(); - println!("test3"); - - // match codegen_module.module.print_to_string() { - // Ok(v) => println!("{}", v), - // Err(e) => println!("Err: {:?}", e), - // } -}