newruntime: removed old way of writing destructors

This commit is contained in:
Araq 2017-11-28 14:40:27 +01:00
commit a22dba4a8b
2 changed files with 8 additions and 13 deletions

View file

@ -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:

View file

@ -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
]) ])