У меня есть следующий код в моей среде проверки:
// 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..
?
спасибо за помощь