From: DeaDDooMER Date: Fri, 11 Aug 2017 12:02:36 +0000 (+0300) Subject: Запрещён возврат массива или записи функцией X-Git-Url: http://deadsoftware.ru/gitweb?a=commitdiff_plain;h=c535b4be889716bfd37a4f0dd888f398534bc306;p=dsw-obn.git Запрещён возврат массива или записи функцией --- diff --git a/notes b/notes index 7d6b72b..c245ba0 100644 --- a/notes +++ b/notes @@ -1,8 +1,6 @@ - Сделать проверку повторов в CASE и выполнять прирывание при отсутствии ELSE. - Сделать выполнение прерывания при отсутствии ELSE в операторе WITH. - Сделать нормальную проверку наличия RETURN. -- Запретить массивы и записи как результат процедуры-функции. -- Запретить модулю импорт самого себя. - Нужно проверить правила совместимости типов (Приложение A). - Нет модуля SYSTEM diff --git a/src/oberon.c b/src/oberon.c index 36736a4..59a5c3d 100644 --- a/src/oberon.c +++ b/src/oberon.c @@ -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; } }