diff --git a/src/abstract_tree/assignment.rs b/src/abstract_tree/assignment.rs index 2daa5b2..85fd854 100644 --- a/src/abstract_tree/assignment.rs +++ b/src/abstract_tree/assignment.rs @@ -38,10 +38,13 @@ impl AbstractTree for Assignment { let statement = Statement::from_syntax(statement_node, source, context)?; if let AssignmentOperator::Equal = operator { - context.set_type( - identifier.inner().clone(), - statement.expected_type(context)?, - )?; + let r#type = if let Some(definition) = &type_definition { + definition.inner().clone() + } else { + statement.expected_type(context)? + }; + + context.set_type(identifier.inner().clone(), r#type)?; } Ok(Assignment { diff --git a/tests/types.rs b/tests/types.rs index b1e88a6..8dabad4 100644 --- a/tests/types.rs +++ b/tests/types.rs @@ -12,8 +12,6 @@ fn simple_type_check() { #[test] fn argument_count_check() { - env_logger::builder().is_test(true).try_init().unwrap(); - let source = " foo = (x ) { x