diff options
author | awr <41453959+awr1@users.noreply.github.com> | 2018-09-04 16:46:43 -0500 |
---|---|---|
committer | awr <41453959+awr1@users.noreply.github.com> | 2018-09-04 16:46:43 -0500 |
commit | c2b09a499c7b4fe255bb57ade50e2736f89aba2c (patch) | |
tree | e5a8a712277a14293e4f7149aa4f47e3366ba65f /compiler/pragmas.nim | |
parent | cd3d4faa79d0ae90afa706393ec67f0721ed87be (diff) | |
download | Nim-c2b09a499c7b4fe255bb57ade50e2736f89aba2c.tar.gz |
Fix merge
Diffstat (limited to 'compiler/pragmas.nim')
-rw-r--r-- | compiler/pragmas.nim | 29 |
1 files changed, 7 insertions, 22 deletions
diff --git a/compiler/pragmas.nim b/compiler/pragmas.nim index fae215556..8f6b6e362 100644 --- a/compiler/pragmas.nim +++ b/compiler/pragmas.nim @@ -347,7 +347,13 @@ proc processExperimental(c: PContext; n: PNode) = 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: + if not isTopLevel(c): + localError(c.config, n.info, + "Code reordering experimental pragma only valid at toplevel") + c.module.flags.incl sfReorder except ValueError: localError(c.config, n[1].info, "unknown experimental feature") else: @@ -732,27 +738,6 @@ proc semCustomPragma(c: PContext, n: PNode): PNode = elif n.kind == nkExprColonExpr: result.kind = n.kind # pragma(arg) -> pragma: arg -proc processExperimental(c: PContext; n: PNode) = - if n.kind notin nkPragmaCallKinds or n.len != 2: - c.features.incl oldExperimentalFeatures - else: - n[1] = c.semConstExpr(c, n[1]) - case n[1].kind - of nkStrLit, nkRStrLit, nkTripleStrLit: - try: - let feature = parseEnum[Feature](n[1].strVal) - c.features.incl feature - if feature == codeReordering: - if not isTopLevel(c): - localError(c.config, n.info, - "Code reordering experimental pragma only valid at toplevel") - else: - c.module.flags.incl sfReorder - except ValueError: - localError(c.config, n[1].info, "unknown experimental feature") - else: - localError(c.config, n.info, errStringLiteralExpected) - proc singlePragma(c: PContext, sym: PSym, n: PNode, i: var int, validPragmas: TSpecialWords): bool = var it = n.sons[i] |