newruntime: removed old way of writing destructors
This commit is contained in:
parent
8fbe37b2d8
commit
a22dba4a8b
2 changed files with 8 additions and 13 deletions
|
|
@ -23,7 +23,7 @@ const
|
||||||
wMagic, wNosideeffect, wSideeffect, wNoreturn, wDynlib, wHeader,
|
wMagic, wNosideeffect, wSideeffect, wNoreturn, wDynlib, wHeader,
|
||||||
wCompilerproc, wProcVar, wDeprecated, wVarargs, wCompileTime, wMerge,
|
wCompilerproc, wProcVar, wDeprecated, wVarargs, wCompileTime, wMerge,
|
||||||
wBorrow, wExtern, wImportCompilerProc, wThread, wImportCpp, wImportObjC,
|
wBorrow, wExtern, wImportCompilerProc, wThread, wImportCpp, wImportObjC,
|
||||||
wAsmNoStackFrame, wError, wDiscardable, wNoInit, wDestructor, wCodegenDecl,
|
wAsmNoStackFrame, wError, wDiscardable, wNoInit, wCodegenDecl,
|
||||||
wGensym, wInject, wRaises, wTags, wLocks, wDelegator, wGcSafe,
|
wGensym, wInject, wRaises, wTags, wLocks, wDelegator, wGcSafe,
|
||||||
wOverride, wConstructor, wExportNims, wUsed, wLiftLocals}
|
wOverride, wConstructor, wExportNims, wUsed, wLiftLocals}
|
||||||
converterPragmas* = procPragmas
|
converterPragmas* = procPragmas
|
||||||
|
|
@ -759,10 +759,6 @@ proc singlePragma(c: PContext, sym: PSym, n: PNode, i: int,
|
||||||
incl(sym.loc.flags, lfNoDecl)
|
incl(sym.loc.flags, lfNoDecl)
|
||||||
# implies nodecl, because otherwise header would not make sense
|
# implies nodecl, because otherwise header would not make sense
|
||||||
if sym.loc.r == nil: sym.loc.r = rope(sym.name.s)
|
if sym.loc.r == nil: sym.loc.r = rope(sym.name.s)
|
||||||
of wDestructor:
|
|
||||||
sym.flags.incl sfOverriden
|
|
||||||
if sym.name.s.normalize != "destroy":
|
|
||||||
localError(n.info, errGenerated, "destructor has to be named 'destroy'")
|
|
||||||
of wOverride:
|
of wOverride:
|
||||||
sym.flags.incl sfOverriden
|
sym.flags.incl sfOverriden
|
||||||
of wNosideeffect:
|
of wNosideeffect:
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,6 @@ new(destructorIsTrivial)
|
||||||
var
|
var
|
||||||
destructorName = getIdent"destroy_"
|
destructorName = getIdent"destroy_"
|
||||||
destructorParam = getIdent"this_"
|
destructorParam = getIdent"this_"
|
||||||
destructorPragma = newIdentNode(getIdent"destructor", unknownLineInfo())
|
|
||||||
|
|
||||||
proc instantiateDestructor(c: PContext, typ: PType): PType
|
proc instantiateDestructor(c: PContext, typ: PType): PType
|
||||||
|
|
||||||
|
|
@ -150,19 +149,19 @@ proc instantiateDestructor(c: PContext, typ: PType): PType =
|
||||||
let generated = generateDestructor(c, t)
|
let generated = generateDestructor(c, t)
|
||||||
if generated != nil:
|
if generated != nil:
|
||||||
internalAssert t.sym != nil
|
internalAssert t.sym != nil
|
||||||
var i = t.sym.info
|
let info = t.sym.info
|
||||||
let fullDef = newNode(nkProcDef, i, @[
|
let fullDef = newNode(nkProcDef, info, @[
|
||||||
newIdentNode(destructorName, i),
|
newIdentNode(destructorName, info),
|
||||||
emptyNode,
|
emptyNode,
|
||||||
emptyNode,
|
emptyNode,
|
||||||
newNode(nkFormalParams, i, @[
|
newNode(nkFormalParams, info, @[
|
||||||
emptyNode,
|
emptyNode,
|
||||||
newNode(nkIdentDefs, i, @[
|
newNode(nkIdentDefs, info, @[
|
||||||
newIdentNode(destructorParam, i),
|
newIdentNode(destructorParam, info),
|
||||||
symNodeFromType(c, makeVarType(c, t), t.sym.info),
|
symNodeFromType(c, makeVarType(c, t), t.sym.info),
|
||||||
emptyNode]),
|
emptyNode]),
|
||||||
]),
|
]),
|
||||||
newNode(nkPragma, i, @[destructorPragma]),
|
emptyNode,
|
||||||
emptyNode,
|
emptyNode,
|
||||||
generated
|
generated
|
||||||
])
|
])
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue