mirror of
https://github.com/nim-lang/Nim.git
synced 2026-02-12 06:18:51 +00:00
fixes #2316
This commit is contained in:
@@ -1318,7 +1318,7 @@ proc isGCedMem*(t: PType): bool {.inline.} =
|
||||
t.kind == tyProc and t.callConv == ccClosure
|
||||
|
||||
proc propagateToOwner*(owner, elem: PType) =
|
||||
const HaveTheirOwnEmpty = {tySequence, tySet}
|
||||
const HaveTheirOwnEmpty = {tySequence, tySet, tyPtr, tyRef, tyProc}
|
||||
owner.flags = owner.flags + (elem.flags * {tfHasMeta})
|
||||
if tfNotNil in elem.flags:
|
||||
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()
|
||||
Reference in New Issue
Block a user