diff options
author | Araq <rumpf_a@web.de> | 2017-11-28 14:40:27 +0100 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2017-11-28 17:34:30 +0100 |
commit | a22dba4a8bcfc04ef444ae9fd6b762ec093ac9e4 (patch) | |
tree | ed6ecf0e8dcbe63ffe96bb95972c8456282987d6 | |
parent | 8fbe37b2d813f00ca934cee2fe17bc2e24f82f88 (diff) | |
download | Nim-a22dba4a8bcfc04ef444ae9fd6b762ec093ac9e4.tar.gz |
newruntime: removed old way of writing destructors
-rw-r--r-- | compiler/pragmas.nim | 6 | ||||
-rw-r--r-- | compiler/semdestruct.nim | 15 |
2 files changed, 8 insertions, 13 deletions
diff --git a/compiler/pragmas.nim b/compiler/pragmas.nim index f1d81f798..b598cadb2 100644 --- a/compiler/pragmas.nim +++ b/compiler/pragmas.nim @@ -23,7 +23,7 @@ const wMagic, wNosideeffect, wSideeffect, wNoreturn, wDynlib, wHeader, wCompilerproc, wProcVar, wDeprecated, wVarargs, wCompileTime, wMerge, wBorrow, wExtern, wImportCompilerProc, wThread, wImportCpp, wImportObjC, - wAsmNoStackFrame, wError, wDiscardable, wNoInit, wDestructor, wCodegenDecl, + wAsmNoStackFrame, wError, wDiscardable, wNoInit, wCodegenDecl, wGensym, wInject, wRaises, wTags, wLocks, wDelegator, wGcSafe, wOverride, wConstructor, wExportNims, wUsed, wLiftLocals} converterPragmas* = procPragmas @@ -759,10 +759,6 @@ proc singlePragma(c: PContext, sym: PSym, n: PNode, i: int, incl(sym.loc.flags, lfNoDecl) # implies nodecl, because otherwise header would not make sense 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: sym.flags.incl sfOverriden of wNosideeffect: diff --git a/compiler/semdestruct.nim b/compiler/semdestruct.nim index 4b61c6316..b16bf004f 100644 --- a/compiler/semdestruct.nim +++ b/compiler/semdestruct.nim @@ -23,7 +23,6 @@ new(destructorIsTrivial) var destructorName = getIdent"destroy_" destructorParam = getIdent"this_" - destructorPragma = newIdentNode(getIdent"destructor", unknownLineInfo()) proc instantiateDestructor(c: PContext, typ: PType): PType @@ -150,19 +149,19 @@ proc instantiateDestructor(c: PContext, typ: PType): PType = let generated = generateDestructor(c, t) if generated != nil: internalAssert t.sym != nil - var i = t.sym.info - let fullDef = newNode(nkProcDef, i, @[ - newIdentNode(destructorName, i), + let info = t.sym.info + let fullDef = newNode(nkProcDef, info, @[ + newIdentNode(destructorName, info), emptyNode, emptyNode, - newNode(nkFormalParams, i, @[ + newNode(nkFormalParams, info, @[ emptyNode, - newNode(nkIdentDefs, i, @[ - newIdentNode(destructorParam, i), + newNode(nkIdentDefs, info, @[ + newIdentNode(destructorParam, info), symNodeFromType(c, makeVarType(c, t), t.sym.info), emptyNode]), ]), - newNode(nkPragma, i, @[destructorPragma]), + emptyNode, emptyNode, generated ]) |