kw is
Зарезервированное слово
Список слов: §1.4
Синтаксис
Postfix = Primary { "(" [ Args ] ")" [ TrailingBlock ] | "[" Expr "]" | "." ( Ident | IntLit | "[" Expr "]" )
| "?." Ident | "?" | "!" | "as" Type | "is" Type } ;Грамматика: Прил. A
Определяется в
- 5.4 Условия — Тернарного оператора нет.
- 5.2 Приоритет и ассоциативность — Приоритет и ассоциативность
- 3.5 Объединения и опционалы — A | B — анонимное объединение.
- 13.4 Авторизация и политики — Объект политики
- 1.4 Ключевые слова — Зарезервированные (нельзя использовать как имена)
- 5.3 Перегрузка и пользовательские операторы — Перегрузка встроенных операторов — объявления op в impl
- 6.5 Ошибки — Исключений нет. Ошибка — значение типа, помеченного @error, возвращаемое через объединение.
- 18.2 Утверждения и фикстуры — assert expr выполняется во всех профилях, включая prod (профили отключают только контракты, §6.7, и вывод dbg, §2.2); при падении печатает з
Примеры
let kind = if n < 0 { "neg" } else if n == 0 { "zero" } else { "pos" }
if let User{ role: .Admin, name, .. } = u { greet(name) }
if x is Receipt { save(x) } // x сужен до Receiptpolicy Orders {
allow get(id) if caller.isUser(db.find(Order, id)?.userId)
allow list, recent if caller.has(role: .Support)
allow * if caller.service("billing")
deny delete unless caller.has(role: .Admin) && caller is .User(mfa: true, ..)
}
@public rpc health() -> Ok
@allow(role: .Admin) rpc purge() -> Ok
@internal rpc create(…) -> OrderСвязанные диагностики
chained-comparison, type-mismatch, data-rights, missing-policy, unknown-policy-target, not-callable, not-overloadable, operator-decl, range-not-iterable, fail-type, question-context, unhandled-error, fixture-yield