diff options
author | flywind <43030857+xflywind@users.noreply.github.com> | 2021-01-04 03:24:52 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-04 10:24:52 +0100 |
commit | c80261bc00c2be59216f945e7915699f6adab690 (patch) | |
tree | 57a7fa9ffc2cea5ad786897d9e006e7bc0c1f3a4 | |
parent | 763fef59fa9bf618f9b546dcb199872b5d8ee890 (diff) | |
download | Nim-c80261bc00c2be59216f945e7915699f6adab690.tar.gz |
fix #12311 (#16578)
-rw-r--r-- | lib/system.nim | 11 | ||||
-rw-r--r-- | tests/system/tsystem_misc.nim | 7 |
2 files changed, 14 insertions, 4 deletions
diff --git a/lib/system.nim b/lib/system.nim index 618fd5dd7..e220ba7a3 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -2412,10 +2412,13 @@ when notJSnotNims: {.error: "Only closure function and iterator are allowed!".} proc finished*[T: proc](x: T): bool {.noSideEffect, inline.} = - ## can be used to determine if a first class iterator has finished. - {.emit: """ - `result` = ((NI*) `x`.ClE_0)[1] < 0; - """.} + ## It can be used to determine if a first class iterator has finished. + when T is "iterator": + {.emit: """ + `result` = ((NI*) `x`.ClE_0)[1] < 0; + """.} + else: + {.error: "Only closure iterator is allowed!".} when defined(js): include "system/jssys" diff --git a/tests/system/tsystem_misc.nim b/tests/system/tsystem_misc.nim index 508715905..cb879d3b3 100644 --- a/tests/system/tsystem_misc.nim +++ b/tests/system/tsystem_misc.nim @@ -210,3 +210,10 @@ block: # Ordinal # doAssert enum is Ordinal # fails # doAssert Ordinal is SomeOrdinal # doAssert SomeOrdinal is Ordinal + +block: + proc p() = discard + + doAssert not compiles(echo p.rawProc.repr) + doAssert not compiles(echo p.rawEnv.repr) + doAssert not compiles(echo p.finished) |