mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
* .forbids pragma: defining illegal effects for proc types This patch intends to define the opposite of the .tags pragma: a way to define effects which are not allowed in a proc. * updated documentation and changelogs for the forbids pragma * renamed notTagEffects to forbiddenEffects * corrected issues of forbids pragma the forbids pragma didn't handle simple restrictions properly and it also had issues with subtyping * removed incorrect character from changelog * added test to cover the interaction of methods and the forbids pragma * covering the interaction of the tags and forbids pragmas * updated manual about the forbids pragma * removed useless statement * corrected the subtyping of proc types using the forbids pragma * updated manual for the forbids pragma * updated documentations for forbids pragma * updated nim docs * updated docs with rsttester.nim * regenerated documentation * updated rst docs * Update changelog.md Co-authored-by: ringabout <43030857+ringabout@users.noreply.github.com> * updated changelog * corrected typo Co-authored-by: ringabout <43030857+ringabout@users.noreply.github.com>
16 lines
363 B
Nim
16 lines
363 B
Nim
discard """
|
|
action: compile
|
|
errormsg: "func1() has an illegal effect: IO"
|
|
line: 15
|
|
"""
|
|
|
|
type IO = object ## input/output effect
|
|
proc func1(): string {.tags: [IO].} = discard
|
|
proc func2(): string = discard
|
|
|
|
proc no_IO_please() {.forbids: [IO].} =
|
|
# this is OK because it didn't define any tag:
|
|
discard func2()
|
|
# the compiler prevents this:
|
|
let y = func1()
|