mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 08:54:53 +00:00
102 lines
1.4 KiB
Nim
102 lines
1.4 KiB
Nim
discard """
|
|
matrix: "--warningAsError:ProveInit --warningAsError:Uninit"
|
|
"""
|
|
|
|
{.experimental: "strictdefs".}
|
|
|
|
type Test = object
|
|
id: int
|
|
|
|
proc foo {.noreturn.} = discard
|
|
|
|
block:
|
|
proc test(x: bool): Test =
|
|
if x:
|
|
foo()
|
|
else:
|
|
foo()
|
|
|
|
block:
|
|
proc test(x: bool): Test =
|
|
if x:
|
|
result = Test()
|
|
else:
|
|
foo()
|
|
|
|
discard test(true)
|
|
|
|
block:
|
|
proc test(x: bool): Test =
|
|
if x:
|
|
result = Test()
|
|
else:
|
|
return Test()
|
|
|
|
discard test(true)
|
|
|
|
block:
|
|
proc test(x: bool): Test =
|
|
if x:
|
|
return Test()
|
|
else:
|
|
return Test()
|
|
|
|
discard test(true)
|
|
|
|
block:
|
|
proc test(x: bool): Test =
|
|
if x:
|
|
result = Test()
|
|
else:
|
|
result = Test()
|
|
return
|
|
|
|
discard test(true)
|
|
|
|
block:
|
|
proc test(x: bool): Test =
|
|
if x:
|
|
result = Test()
|
|
return
|
|
else:
|
|
raise newException(ValueError, "unreachable")
|
|
|
|
discard test(true)
|
|
|
|
# bug #21615
|
|
# bug #16735
|
|
|
|
block:
|
|
type Test {.requiresInit.} = object
|
|
id: int
|
|
|
|
proc bar(): int =
|
|
raise newException(CatchableError, "error")
|
|
|
|
proc test(): Test =
|
|
raise newException(CatchableError, "")
|
|
|
|
template catchError(body) =
|
|
var done = false
|
|
try:
|
|
body
|
|
except CatchableError:
|
|
done = true
|
|
doAssert done
|
|
|
|
catchError:
|
|
echo test()
|
|
|
|
catchError:
|
|
echo bar()
|
|
|
|
block:
|
|
proc foo(x: ptr int) =
|
|
discard
|
|
|
|
proc main =
|
|
var s: int
|
|
foo(addr s)
|
|
|
|
main()
|