removed flawed thread analysis pass

This commit is contained in:
Araq
2014-04-20 14:00:04 +02:00
parent 39e4e3f205
commit be6474af63
17 changed files with 23 additions and 476 deletions

View File

@@ -1,6 +1,6 @@
discard """
line: 21
errormsg: "invalid type: 'TTable[string, proc (string)]'"
errormsg: "invalid type: 'TTable[string, proc (string){.gcsafe.}]'"
"""
import tables

View File

@@ -1,18 +1,18 @@
discard """
line: 18
errormsg: "type mismatch: got (proc (TScgi) | proc (PAsyncSocket, PStringTable, string))"
errormsg: "type mismatch: got (proc (TScgi) | proc (PAsyncSocket, PStringTable, string){.gcsafe.})"
"""
#bug #442
import scgi, sockets, asyncio, strtabs
proc handleSCGIRequest[TScgi: TScgiState | PAsyncScgiState](s: TScgi) =
nil
discard
proc handleSCGIRequest(client: PAsyncSocket, headers: PStringTable,
input: string) =
nil
discard
proc test(handle: proc (client: PAsyncSocket, headers: PStringTable,
input: string), b: int) =
nil
discard
test(handleSCGIRequest)

View File

@@ -1,6 +1,6 @@
discard """
line: 12
errormsg: "type mismatch: got (proc (int){.closure.})"
errormsg: "type mismatch: got (proc (int){.closure, gcsafe.})"
"""
proc ugh[T](x: T) {.closure.} =

View File

@@ -1,7 +1,7 @@
discard """
file: "tthreadanalysis2.nim"
line: 42
errormsg: "write to foreign heap"
line: 37
errormsg: "'threadFunc' is not GC-safe"
cmd: "nimrod $target --hints:on --threads:on $options $file"
"""
@@ -10,7 +10,7 @@ import os
var
thr: array [0..5, TThread[tuple[a, b: int]]]
proc doNothing() = nil
proc doNothing() = discard
type
PNode = ref TNode

View File

@@ -1,51 +0,0 @@
discard """
file: "tthreadanalysis3.nim"
line: 35
errormsg: "write to foreign heap"
cmd: "nimrod $target --hints:on --threads:on $options $file"
"""
import os
var
thr: array [0..5, TThread[tuple[a, b: int]]]
proc doNothing() = nil
type
PNode = ref TNode
TNode = object {.pure.}
le, ri: PNode
data: string
var
root: PNode
proc buildTree(depth: int): PNode =
if depth == 3: return nil
new(result)
result.le = buildTree(depth-1)
result.ri = buildTree(depth-1)
result.data = $depth
proc echoLeTree(n: PNode) =
var it = n
while it != nil:
echo it.data
it = it.le
proc threadFunc(interval: tuple[a, b: int]) {.thread.} =
doNothing()
for i in interval.a..interval.b:
var r = buildTree(i)
echoLeTree(r) # for local data
echoLeTree(root) # and the same for foreign data :-)
proc main =
root = buildTree(5)
for i in 0..high(thr):
createThread(thr[i], threadFunc, (i*100, i*100+50))
joinThreads(thr)
main()