std/утверждения
Источник РедактироватьЭтот модуль реализует обработку утверждений.
Импорты
- ctypes, miscdollars
Процедуры
proc failedAssertImpl(msg: string) {....raises: [], tags: [], forbids: [].}- Вызывает
AssertionDefectсmsg, но это скрыто от системы эффектов. Вызывается при ошибке утверждения. Источник Редактировать proc raiseAssert(msg: string) {.noinline, noreturn, nosinks, ...raises: [], tags: [], forbids: [].}- Вызывает
AssertionDefectсmsg. Источник Редактировать
Шаблоны
template assert(cond: untyped; msg = "")
-
Вызывает
AssertionDefectсmsgеслиcondложно. Обратите внимание, чтоAssertionDefectскрыто от системы эффектов, поэтому не приводит к{.raises: [AssertionDefect].}. Это исключение предназначено только для перехвата фреймворками для тестирования модулей.Код не будет сгенерирован для
assertпри передаче-d:danger(подразумевается--assertions:off). См. переключатели командной строки.Пример:
assert 1 == 1
Пример: cmd: --assertions:off
assert 1 == 2 # no code generated, no failure here
Пример: cmd: -d:danger
assert 1 == 2 # ditto
Источник Редактировать template doAssert(cond: untyped; msg = "")
- Аналогично assert, но всегда включено независимо от
--assertions.Пример:
doAssert 1 == 1 # generates code even when built with `-d:danger` or `--assertions:off`
Источник Редактировать template doAssertRaises(exception: typedesc; code: untyped)
- Вызывает
AssertionDefectесли указаннаяcodeне вызываетexception.Пример:
doAssertRaises(ValueError): raise newException(ValueError, "Hello World") doAssertRaises(CatchableError): raise newException(ValueError, "Hello World") doAssertRaises(AssertionDefect): doAssert false
Источник Редактировать template onFailedAssert(msg, code: untyped): untyped {.dirty.}- Устанавливает обработчик ошибок утверждения, который будет перехватывать любые последующие утверждения
onFailedAssertв текущем области видимости.Пример:
type MyError = object of CatchableError lineinfo: tuple[filename: string, line: int, column: int] # block-wide policy to change the failed assert exception type in order to # include a lineinfo onFailedAssert(msg): raise (ref MyError)(msg: msg, lineinfo: instantiationInfo(-2)) doAssertRaises(MyError): doAssert false
Источник Редактировать
© 2006–2024 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/assertions.html