Ver código fonte

compile time error when a return value is expected from void functions

Kajetan Johannes Hammerle 4 anos atrás
pai
commit
ae8f99fc37
1 arquivos alterados com 5 adições e 0 exclusões
  1. 5 0
      Compiler.c

+ 5 - 0
Compiler.c

@@ -161,6 +161,9 @@ static void cCallFunction(const char* literal, bool noReturn) {
         cAddInt(arguments);
         cAddOperation(OP_NOTHING);
     } else {
+        if(!noReturn && !f->returns) {
+            cError("function '%s' needs a return value on line %d", f->name, line);
+        }
         cAddInt(f->address);
         cAddInt(arguments);
         if(f->returns && noReturn) {
@@ -358,6 +361,8 @@ static void cLinkQueuedFunctions() {
         Function* f = fmSearch(&functions, functions.queue[i].name, functions.queue[i].arguments);
         if(f == NULL) {
             cError("unknown function on line %d", functions.queue[i].line);
+        } else if(!functions.queue[i].noReturn && !f->returns) {
+            cError("function '%s' needs a return value on line %d", f->name, functions.queue[i].line);
         }
         cSetInt(functions.queue[i].reserved, f->address);
         if(functions.queue[i].noReturn && f->returns) {