Почему использование ввода гибкого массива в функции вызывает ошибку перевода в OpenModelica?

На мой взгляд, следующий простой function вполне допустимый код Modelica:

function foo "Returns true"
  input Boolean[:] x "Vector of booleans";
  output Boolean y "= true, in any case here";
algorithm
  y := true;
end foo;

Использование Check Model в OpenModelica v1.16.2 (64-bit) вызывает ошибку:

[1] 15:15:11 Translation Error
[foo: 2:3-2:42]: Failed to deduce dimension 1 of x due to missing binding equation.

Что-то не так с кодом Modelica или это проблема OME?

ИЗМЕНИТЬ

Просто чтобы показать, что на самом деле это не совсем очевидный случай:
Это сообщение, которое появляется после проверки foo в Wolfram System Modeler 12.2:

[3] 10:59 Проверка функции foo
Проверка функции foo успешно завершена.


person gwr    schedule 31.01.2021    source источник


Ответы (1)


Сообщение об ошибке должно быть таким: OpenModelica не проверяет и не создает экземпляры функций. Чтобы протестировать функцию, используйте ее в модели.

person sjoelund.se    schedule 31.01.2021
comment
Но тогда это должно быть просто message? Предоставление error, когда их нет или когда ошибки не проверялись (например, skipped), само по себе является error. - person gwr; 31.01.2021
comment
Я открыл новый выпуск в trac OpenModelica #6359. - person gwr; 31.01.2021
comment
Нет, это действительно должно быть сообщение об ошибке. Вы используете неправильный функционал. Или OMEdit должен сделать кнопки функций (и пакетов) серыми. - person sjoelund.se; 01.02.2021
comment
Хорошо, я понимаю вашу точку зрения, поскольку она действительно говорит Check Model, а не Validate Class в OMEdit, который отличается от Wolfram SystemModeler, к которому я в основном привык (сложно, поскольку кнопки выглядят одинаково). ;-) - person gwr; 01.02.2021