DEADSOFTWARE

Запрещён возврат массива или записи функцией
authorDeaDDooMER <deaddoomer@deadsoftware.ru>
Fri, 11 Aug 2017 12:02:36 +0000 (15:02 +0300)
committerDeaDDooMER <deaddoomer@deadsoftware.ru>
Fri, 11 Aug 2017 12:02:36 +0000 (15:02 +0300)
notes
src/oberon.c

diff --git a/notes b/notes
index 7d6b72b343800718f28760503f77260056198640..c245ba0cbb6003961504531c4a851f75f24b4641 100644 (file)
--- a/notes
+++ b/notes
@@ -1,8 +1,6 @@
 - Сделать проверку повторов в CASE и выполнять прирывание при отсутствии ELSE.
 - Сделать выполнение прерывания при отсутствии ELSE в операторе WITH.
 - Сделать нормальную проверку наличия RETURN.
-- Запретить массивы и записи как результат процедуры-функции.
-- Запретить модулю импорт самого себя.
 - Нужно проверить правила совместимости типов (Приложение A).
 
 - Нет модуля SYSTEM
index 36736a4bf9384333eb1226c1b6835f202cdabab1..59a5c3d5fa7f6f11dc9e65e6b1974f59fca12770 100644 (file)
@@ -2444,6 +2444,11 @@ oberon_formal_pars(oberon_context_t * ctx, oberon_type_t * signature)
                {
                        oberon_error(ctx, "function result is not type");
                }
+               if(typeobj -> type -> class == OBERON_TYPE_RECORD
+                       || typeobj -> type -> class == OBERON_TYPE_ARRAY)
+               {
+                       oberon_error(ctx, "records or arrays could not be result of function");
+               }
                signature -> base = typeobj -> type;
        }
 }