summary refs log tree commit diff stats
path: root/tests/effects/tstrict_effects.nim
blob: eee8fb71ac93d0482f18747fdbaab83b5f49f70e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
discard """
  errormsg: "s1 can raise an unlisted exception: CatchableError"
  line: 27
"""

{.push warningAsError[Effect]: on.}
{.experimental: "strictEffects".}

# bug #18376

{.push raises: [Defect].}
type Call = proc (x: int): int {.gcsafe, raises: [Defect, CatchableError].}

type Bar* = object
  foo*: Call

proc passOn*(x: Call) = discard

proc barCal(b: var Bar, s: string, s1: Call) =
  #compiler complains that his line can throw CatchableError
  passOn s1


proc passOnB*(x: Call) {.effectsOf: x.} = discard

proc barCal2(b: var Bar, s: string, s1: Call) =
  passOnB s1
pyright (c) 2010 Marco Peereboom <marco@peereboom.us> * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ </pre> </body> </html>