У меня есть несколько идентичных ограничений для списков uint в моей среде проверки. Я написал макрос, чтобы я мог написать ограничения только один раз, и он распространит их на все остальные списки. Например, я хотел бы написать:
data_delay : list of uint;
req_delay : list of uint;
keep for each in [data_delay, req_delay] {
soft it == select {
1 : [0]; -- Back to back
5 : [1..5]; -- Short delay
2 : [5..12]; -- Medium delay
1 : [13..40]; -- Long delay
};
};
и макрос будет дублировать ограничения для обоих списков data_delay
и req_delay
. Макрос, который я написал:
define <multi_keep_for'statement> "keep for each in \[<detr'name>,...\] (<MEMBERS>{<struct_member>;...})" as computed {
for each in <detr'names> do {
result = appendf("%s keep for each in %s %s", result, it, <MEMBERS>);
};
};
Но получаю ошибку компиляции:
The type of 'data_delay' is 'list of uint', while expecting a numeric type
Я не понимаю проблемы - я использовал <detr'name>
, он должен представлять имя переменной, а не числового типа. Вы понимаете проблему? Спасибо за любую помощь