From 0e03246fc3ef5bd237f1e277cf3f6e08e49c998b Mon Sep 17 00:00:00 2001 From: servostar Date: Fri, 12 Jul 2024 20:07:35 +0200 Subject: [PATCH] added: type check for assignment --- src/set/set.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/set/set.c b/src/set/set.c index 67b6b9e..4556c1b 100644 --- a/src/set/set.c +++ b/src/set/set.c @@ -1714,7 +1714,12 @@ int createAssign(Statement *ParentStatement, AST_NODE_PTR currentNode) { return SEMANTIC_ERROR; } - // TODO: check assignment type compatability + if (!compareTypes(assign.destination->target_type, assign.value->result)) { + print_diagnostic(&assign.value->nodePtr->location, Error, "assignment requires `%s` but got `%s`", + type_to_string(assign.destination->target_type), + type_to_string(assign.value->result)); + return SEMANTIC_ERROR; + } ParentStatement->impl.assignment = assign; return SEMANTIC_OK;