Eiffel имеет функцию Design by Contract. В соответствии с этим для любой подпрограммы существует проверка того, что такие утверждения, как require
и ensure
, должны быть истинными. Однако мне не удалось выяснить, как применить правило через командную строку, согласно которому, если утверждения ложны, должна быть ошибка/исключение, выданное компилятором или во время выполнения.
Например, если это корневой класс,
class
APPLICATION
inherit
ARGUMENTS
create
make
feature {NONE}
object: TEST1
make
-- Run application.
do
create object
object.function(-1)
print(object.value)
end
end
а это класс TEST1
class
TEST1
feature
value: INTEGER
-- value for testing
function(val: INTEGER)
-- Assign
require
val>0
do
value:=val
ensure
value>0
end
end
Программа компилируется и выполняется без ошибок, несмотря на то, что оба утверждения нарушены.
Я компилирую с помощью
ec application.e
Однако Eiffel Studio сообщает о нарушении контракта.
Итак, как можно обеспечить это через командную строку? Есть ли какой-то определенный флаг?