fix #1638
This commit is contained in:
parent
ab6703e4eb
commit
f014935bac
|
|
@ -169,10 +169,10 @@ namespace SyntaxVisitors
|
|||
if (pars != null)
|
||||
foreach (var ps in pars.params_list)
|
||||
{
|
||||
if (ps.param_kind != parametr_kind.none)
|
||||
if (ps.param_kind != parametr_kind.none && ps.param_kind != parametr_kind.params_parametr)
|
||||
throw new SyntaxVisitorError("FUNCTIONS_WITH_YIELDS_CANNOT_CONTAIN_VAR_CONST_PARAMS_MODIFIERS", pars.source_context);
|
||||
if (ps.inital_value != null)
|
||||
throw new SyntaxVisitorError("FUNCTIONS_WITH_YIELDS_CANNOT_CONTAIN_DEFAULT_PARAMETERS", pars.source_context);
|
||||
/*if (ps.inital_value != null)
|
||||
throw new SyntaxVisitorError("FUNCTIONS_WITH_YIELDS_CANNOT_CONTAIN_DEFAULT_PARAMETERS", pars.source_context);*/
|
||||
}
|
||||
|
||||
HasYields = true;
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ namespace SyntaxVisitors
|
|||
if (pars != null)
|
||||
foreach (var ps in pars.params_list)
|
||||
{
|
||||
if (ps.param_kind != parametr_kind.none)
|
||||
if (ps.param_kind != parametr_kind.none && ps.param_kind != parametr_kind.params_parametr)
|
||||
throw new SyntaxVisitorError("FUNCTIONS_WITH_YIELDS_CANNOT_CONTAIN_VAR_CONST_PARAMS_MODIFIERS", pars.source_context);
|
||||
if (ps.inital_value != null)
|
||||
throw new SyntaxVisitorError("FUNCTIONS_WITH_YIELDS_CANNOT_CONTAIN_DEFAULT_PARAMETERS", pars.source_context);
|
||||
|
|
|
|||
11
TestSuite/yieldparams.pas
Normal file
11
TestSuite/yieldparams.pas
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
function Get(params x: array of integer): sequence of integer;
|
||||
begin
|
||||
yield x[0];
|
||||
yield x[1];
|
||||
end;
|
||||
|
||||
begin
|
||||
var a := Get(1,2).ToArray;
|
||||
assert(a[0] = 1);
|
||||
assert(a[1] = 2);
|
||||
end.
|
||||
|
|
@ -4,7 +4,7 @@
|
|||
YIELD_FUNC_MUST_RETURN_SEQUENCE=Функции с yield должны непосредственно возвращать тип sequence of T или IEnumerable<T>
|
||||
YIELD_FUNC_CANNOT_RETURN_SEQUENCE_OF_ANONYMOUS_DELEGATES=Функции с yield не могут возвращать последовательность анонимных делегатов
|
||||
ONLY_FUNCTIONS_CAN_CONTAIN_YIELDS=Только функции могут содержать yield
|
||||
FUNCTIONS_WITH_YIELDS_CANNOT_CONTAIN_VAR_CONST_PARAMS_MODIFIERS=В параметрах функции с yield не должно быть модификаторов 'var', 'const' или 'params'
|
||||
FUNCTIONS_WITH_YIELDS_CANNOT_CONTAIN_VAR_CONST_PARAMS_MODIFIERS=В параметрах функции с yield не должно быть модификаторов 'var' или 'const'
|
||||
FUNCTIONS_WITH_YIELDS_CANNOT_CONTAIN_DEFAULT_PARAMETERS=Функция с yield не должна иметь параметров по умолчанию
|
||||
FUNCTIONS_WITH_YIELDS_CANNOT_CONTAIN_RESULT=Функция с yield не может содержать переменную Result
|
||||
FUNCTIONS_WITH_YIELDS_CANNOT_CONTAIN_LOCK=Функции с yield не могут содержать оператор lock
|
||||
|
|
|
|||
Loading…
Reference in a new issue