mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 08:54:53 +00:00
107 lines
2.5 KiB
Nim
107 lines
2.5 KiB
Nim
{.experimental: "strictdefs".}
|
|
|
|
type Test = object
|
|
id: int
|
|
|
|
proc foo {.noreturn.} = discard
|
|
|
|
proc test1(): Test =
|
|
if true: #[tt.Warning
|
|
^ Cannot prove that 'result' is initialized. This will become a compile time error in the future. [ProveInit]]#
|
|
return Test()
|
|
else:
|
|
return
|
|
|
|
proc test0(): Test =
|
|
if true: #[tt.Warning
|
|
^ Cannot prove that 'result' is initialized. This will become a compile time error in the future. [ProveInit]]#
|
|
return
|
|
else:
|
|
foo()
|
|
|
|
proc test2(): Test =
|
|
if true: #[tt.Warning
|
|
^ Cannot prove that 'result' is initialized. This will become a compile time error in the future. [ProveInit]]#
|
|
return
|
|
else:
|
|
return
|
|
|
|
proc test3(): Test =
|
|
if true: #[tt.Warning
|
|
^ Cannot prove that 'result' is initialized. This will become a compile time error in the future. [ProveInit]]#
|
|
return
|
|
else:
|
|
return Test()
|
|
|
|
proc test4(): Test =
|
|
if true: #[tt.Warning
|
|
^ Cannot prove that 'result' is initialized. This will become a compile time error in the future. [ProveInit]]#
|
|
return
|
|
else:
|
|
result = Test()
|
|
return
|
|
|
|
proc test5(x: bool): Test =
|
|
case x: #[tt.Warning
|
|
^ Cannot prove that 'result' is initialized. This will become a compile time error in the future. [ProveInit]]#
|
|
of true:
|
|
return
|
|
else:
|
|
return Test()
|
|
|
|
proc test6(x: bool): Test =
|
|
case x: #[tt.Warning
|
|
^ Cannot prove that 'result' is initialized. This will become a compile time error in the future. [ProveInit]]#
|
|
of true:
|
|
return
|
|
else:
|
|
return
|
|
|
|
proc test7(x: bool): Test =
|
|
case x: #[tt.Warning
|
|
^ Cannot prove that 'result' is initialized. This will become a compile time error in the future. [ProveInit]]#
|
|
of true:
|
|
return
|
|
else:
|
|
discard
|
|
|
|
proc test8(x: bool): Test =
|
|
case x: #[tt.Warning
|
|
^ Cannot prove that 'result' is initialized. This will become a compile time error in the future. [ProveInit]]#
|
|
of true:
|
|
discard
|
|
else:
|
|
raise
|
|
|
|
proc hasImportStmt(): bool =
|
|
if false: #[tt.Warning
|
|
^ Cannot prove that 'result' is initialized. This will become a compile time error in the future. [ProveInit]]#
|
|
return true
|
|
else:
|
|
discard
|
|
|
|
discard hasImportStmt()
|
|
|
|
block:
|
|
proc hasImportStmt(): bool =
|
|
if false: #[tt.Warning
|
|
^ Cannot prove that 'result' is initialized. This will become a compile time error in the future. [ProveInit]]#
|
|
return true
|
|
else:
|
|
return
|
|
|
|
discard hasImportStmt()
|
|
|
|
block:
|
|
block:
|
|
proc foo(x: var int) =
|
|
discard
|
|
|
|
proc main =
|
|
var s: int
|
|
foo(s)#[tt.Warning
|
|
^ use explicit initialization of 's' for clarity [Uninit]]#
|
|
|
|
main()
|
|
|