Specman e: keep type .. не может уточнить тип поля

У меня есть следующий код в моей среде проверки:

// seq_file.e
extend SPECIFIC_TYPE sequence {
    keep type driver is a SPECIFIC_TYPE sequence_driver;
    event some_event is @driver.as_a(SPECIFIC_TYPE sequence_driver).some_event;
};

extend SPECIFIC_TYPE SEQ_NAME sequence {
   body()@driver.clock is only {
      var foo := driver.specific_type_field;
   };
};

Обратите внимание, что благодаря keep type driver is a.. нет необходимости в приведении driver к строке, начинающейся с var foo...

НО, keep type driver is a.. не влияет на some_event, т.е. если из строки удалить приведение as_a, то возникает ошибка компиляции говорит 'driver' does not have 'some_event' though its subtype do. use driver.as_a(SPECIFIC_TYPE sequence_driver).

Почему keep type driver is a.. не может передать driver в строке some_event..?

спасибо за помощь


person Halona    schedule 05.07.2018    source источник


Ответы (1)


Ваше наблюдение верно: ограничение типа учитывается для доступа к полю (и для вызова метода), но не для выборки событий. Это ограничение, и оно может быть снято в следующих версиях. Я предлагаю связаться с официальной поддержкой Specman для получения точной информации о планах.

person Rodion Melnikov    schedule 05.07.2018