summary refs log tree commit diff stats
path: root/compiler/pragmas.nim
diff options
context:
space:
mode:
authorawr <41453959+awr1@users.noreply.github.com>2018-09-04 15:31:38 -0500
committerawr <41453959+awr1@users.noreply.github.com>2018-09-04 15:31:38 -0500
commite6a4213faeb28530e33663d27ff446a5b74b4a5e (patch)
tree058159c0bbbcb5e5962a41edf3026718d6a7c035 /compiler/pragmas.nim
parent1d93991929e7691fdd7218a0d9638d420a0f2492 (diff)
downloadNim-e6a4213faeb28530e33663d27ff446a5b74b4a5e.tar.gz
transformed {.reorder: on.} into {.experimental: codeReordering.}, added tests
Diffstat (limited to 'compiler/pragmas.nim')
-rw-r--r--compiler/pragmas.nim13
1 files changed, 5 insertions, 8 deletions
diff --git a/compiler/pragmas.nim b/compiler/pragmas.nim
index 263068344..0ef87720d 100644
--- a/compiler/pragmas.nim
+++ b/compiler/pragmas.nim
@@ -48,7 +48,7 @@ const
     wDeadCodeElimUnused,  # deprecated, always on
     wDeprecated,
     wFloatchecks, wInfChecks, wNanChecks, wPragma, wEmit, wUnroll,
-    wLinearScanEnd, wPatterns, wEffects, wNoForward, wReorder, wComputedGoto,
+    wLinearScanEnd, wPatterns, wEffects, wComputedGoto,
     wInjectStmt, wDeprecated, wExperimental, wThis}
   lambdaPragmas* = {FirstCallConv..LastCallConv, wImportc, wExportc, wNodecl,
     wNosideeffect, wSideeffect, wNoreturn, wDynlib, wHeader,
@@ -227,10 +227,6 @@ proc onOff(c: PContext, n: PNode, op: TOptions, resOptions: var TOptions) =
   if isTurnedOn(c, n): resOptions = resOptions + op
   else: resOptions = resOptions - op
 
-proc pragmaNoForward(c: PContext, n: PNode; flag=sfNoForward) =
-  if isTurnedOn(c, n): incl(c.module.flags, flag)
-  else: excl(c.module.flags, flag)
-
 proc processCallConv(c: PContext, n: PNode) =
   if n.kind in nkPragmaCallKinds and n.len == 2 and n.sons[1].kind == nkIdent:
     let sw = whichKeyword(n.sons[1].ident)
@@ -724,7 +720,10 @@ proc processExperimental(c: PContext; n: PNode; s: PSym) =
     case n[1].kind
     of nkStrLit, nkRStrLit, nkTripleStrLit:
       try:
-        c.features.incl parseEnum[Feature](n[1].strVal)
+        let feature = parseEnum[Feature](n[1].strVal)
+        c.features.incl feature
+        if feature == codeReordering:
+          c.module.flags.incl sfReorder
       except ValueError:
         localError(c.config, n[1].info, "unknown experimental feature")
     else:
@@ -815,8 +814,6 @@ proc singlePragma(c: PContext, sym: PSym, n: PNode, i: var int,
         noVal(c, it)
         incl(sym.flags, {sfThread, sfGlobal})
       of wDeadCodeElimUnused: discard  # deprecated, dead code elim always on
-      of wNoForward: pragmaNoForward(c, it)
-      of wReorder: pragmaNoForward(c, it, sfReorder)
       of wMagic: processMagic(c, it, sym)
       of wCompileTime:
         noVal(c, it)