Spec-Zone.ru › Nim 1

утверждения

Импорты

miscdollars

Процедуры

proc raiseAssert(msg: string) {...}{.noinline, noreturn, nosinks, raises: [],
                                tags: [].}
Исходный код Изменить
proc failedAssertImpl(msg: string) {...}{.raises: [], tags: [].}
Исходный код Изменить

Шаблоны

template assert(cond: untyped; msg = "")

Вызывает AssertionDefect с msg если cond ложно. Обратите внимание, что AssertionDefect скрыто от системы эффектов, поэтому оно не генерирует {.raises: [AssertionDefect].}. Это исключение должно быть перехвачено только фреймворками для тестирования модулей.

Компилятор может вообще не генерировать код для assert если это рекомендовано с помощью -d:danger или --assertions:off переключателей командной строки.

static: assert 1 == 9, "This assertion generates code when not built with -d:danger or --assertions:off"
Исходный код Изменить
template doAssert(cond: untyped; msg = "")
Аналогично assert, но всегда включено независимо от --assertions.
static: doAssert 1 == 9, "This assertion generates code when built with/without -d:danger or --assertions:off"
Исходный код Изменить
template onFailedAssert(msg, code: untyped): untyped {...}{.dirty.}
Устанавливает обработчик сбоя утверждения, который перехватит любые операторы assert, следующие за onFailedAssert в текущем объеме модуля.
# module-wide policy to change the failed assert
# exception type in order to include a lineinfo
onFailedAssert(msg):
  var e = new(TMyError)
  e.msg = msg
  e.lineinfo = instantiationInfo(-2)
  raise e
Исходный код Изменить
template doAssertRaises(exception: typedesc; code: untyped)
Вызывает AssertionDefect если указанное code не вызывает указанное исключение. Пример:
doAssertRaises(ValueError):
  raise newException(ValueError, "Hello World")
Исходный код Изменить

© 2006–2021 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/assertions.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API