From 6b3e004224ccba39199606f2683265c9e4606e43 Mon Sep 17 00:00:00 2001 From: Tucker Evans Date: Mon, 30 Sep 2019 19:05:12 -0400 Subject: Add check that function returns value --- sem_check.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'sem_check.c') diff --git a/sem_check.c b/sem_check.c index fd85c98..e30d8c5 100644 --- a/sem_check.c +++ b/sem_check.c @@ -206,3 +206,30 @@ ptree *t; yyerror("Incorrect types in fuction arguments"); } + +int func_ret(t, name) +ptree *t; +char *name; +{ + if (!t) + return 0; + + if (t->type == ASSIGNOP && t->l) + if (t->l->type == ID && !strcmp(t->l->attr.nval->name, name)) + return 1; + + return func_ret(t->l, name) || func_ret(t->r, name); +} + +void check_func_return(t,name) +ptree *t; +char *name; +{ + char buf[100]; + + if (!func_ret(t,name)) { + snprintf(buf, 100, "Function %s does not return a value\n", + name); + yyerror(buf); + } +} -- cgit v1.1