fixes #2316
This commit is contained in:
parent
0543784eb4
commit
6dbd41e875
2 changed files with 55 additions and 1 deletions
|
|
@ -1318,7 +1318,7 @@ proc isGCedMem*(t: PType): bool {.inline.} =
|
||||||
t.kind == tyProc and t.callConv == ccClosure
|
t.kind == tyProc and t.callConv == ccClosure
|
||||||
|
|
||||||
proc propagateToOwner*(owner, elem: PType) =
|
proc propagateToOwner*(owner, elem: PType) =
|
||||||
const HaveTheirOwnEmpty = {tySequence, tySet}
|
const HaveTheirOwnEmpty = {tySequence, tySet, tyPtr, tyRef, tyProc}
|
||||||
owner.flags = owner.flags + (elem.flags * {tfHasMeta})
|
owner.flags = owner.flags + (elem.flags * {tfHasMeta})
|
||||||
if tfNotNil in elem.flags:
|
if tfNotNil in elem.flags:
|
||||||
if owner.kind in {tyGenericInst, tyGenericBody, tyGenericInvocation}:
|
if owner.kind in {tyGenericInst, tyGenericBody, tyGenericInvocation}:
|
||||||
|
|
|
||||||
54
tests/init/tuninit2.nim
Normal file
54
tests/init/tuninit2.nim
Normal file
|
|
@ -0,0 +1,54 @@
|
||||||
|
# bug #2316
|
||||||
|
|
||||||
|
type
|
||||||
|
EventType = enum
|
||||||
|
QuitEvent = 5
|
||||||
|
AppMain* = ref object of RootObj
|
||||||
|
width: int
|
||||||
|
height: int
|
||||||
|
title: string
|
||||||
|
running: bool
|
||||||
|
event_type: EventType
|
||||||
|
App* = ref object of AppMain
|
||||||
|
draw_proc: proc(app: AppMain): void {.closure.}
|
||||||
|
events_proc: proc(app: AppMain): void {.closure.}
|
||||||
|
update_proc: proc(app: AppMain, dt: float): void {.closure.}
|
||||||
|
load_proc: proc(app: AppMain): void {.closure.}
|
||||||
|
|
||||||
|
|
||||||
|
proc initApp*(t: string, w, h: int): App =
|
||||||
|
App(width: w, height: h, title: t, event_type: EventType.QuitEvent)
|
||||||
|
|
||||||
|
|
||||||
|
method getTitle*(self: AppMain): string = self.title
|
||||||
|
method getWidth*(self: AppMain): int = self.width
|
||||||
|
method getHeight*(self: AppMain): int = self.height
|
||||||
|
|
||||||
|
|
||||||
|
method draw*(self: App, draw: proc(app: AppMain)): void =
|
||||||
|
self.draw_proc = draw
|
||||||
|
|
||||||
|
method load*(self: App, load: proc(a: AppMain)): void =
|
||||||
|
self.load_proc = load
|
||||||
|
|
||||||
|
method events*(self: App, events: proc(app: AppMain)): void =
|
||||||
|
self.events_proc = events
|
||||||
|
|
||||||
|
method update*(self: App, update: proc(app: AppMain, delta: float)): void =
|
||||||
|
self.update_proc = update
|
||||||
|
|
||||||
|
method run*(self: App): void = discard
|
||||||
|
|
||||||
|
var mygame = initApp("Example", 800, 600)
|
||||||
|
|
||||||
|
mygame.load(proc(app: AppMain): void =
|
||||||
|
echo app.getTitle()
|
||||||
|
echo app.getWidth()
|
||||||
|
echo app.getHeight()
|
||||||
|
)
|
||||||
|
|
||||||
|
mygame.events(proc(app: AppMain): void =
|
||||||
|
discard
|
||||||
|
)
|
||||||
|
|
||||||
|
mygame.run()
|
||||||
Loading…
Add table
Add a link
Reference in a new issue