diff options
author | Araq <rumpf_a@web.de> | 2019-07-10 00:27:23 +0200 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2019-07-10 00:29:58 +0200 |
commit | bd689849f28ba98b9b2581605234a2b52fb2e392 (patch) | |
tree | 868b293cda5151623b6083044bd7a7a0c187713e /compiler/pragmas.nim | |
parent | c6c9e30379dbf1016f336495b073b233fe1a2563 (diff) | |
download | Nim-bd689849f28ba98b9b2581605234a2b52fb2e392.tar.gz |
nim styleChecker: implemented all the missing features (bugfix)
Diffstat (limited to 'compiler/pragmas.nim')
-rw-r--r-- | compiler/pragmas.nim | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/compiler/pragmas.nim b/compiler/pragmas.nim index 94e6a4332..b50b9ece2 100644 --- a/compiler/pragmas.nim +++ b/compiler/pragmas.nim @@ -12,7 +12,7 @@ import os, platform, condsyms, ast, astalgo, idents, semdata, msgs, renderer, wordrecg, ropes, options, strutils, extccomp, math, magicsys, trees, - types, lookups, lineinfos, pathutils + types, lookups, lineinfos, pathutils, linter const FirstCallConv* = wNimcall @@ -610,9 +610,9 @@ proc pragmaLine(c: PContext, n: PNode) = proc processPragma(c: PContext, n: PNode, i: int) = let it = n[i] - if it.kind notin nkPragmaCallKinds and it.len == 2: invalidPragma(c, n) - elif it[0].kind != nkIdent: invalidPragma(c, n) - elif it[1].kind != nkIdent: invalidPragma(c, n) + if it.kind notin nkPragmaCallKinds and it.safeLen == 2: invalidPragma(c, n) + elif it.safeLen != 2 or it[0].kind != nkIdent or it[1].kind != nkIdent: + invalidPragma(c, n) var userPragma = newSym(skTemplate, it[1].ident, nil, it.info, c.config.options) userPragma.ast = newNode(nkPragma, n.info, n.sons[i+1..^1]) @@ -762,6 +762,9 @@ proc singlePragma(c: PContext, sym: PSym, n: PNode, i: var int, let ident = considerQuotedIdent(c, key) var userPragma = strTableGet(c.userPragmas, ident) if userPragma != nil: + if {optStyleHint, optStyleError} * c.config.globalOptions != {}: + styleCheckUse(c.config, key.info, userPragma) + # number of pragmas increase/decrease with user pragma expansion inc c.instCounter if c.instCounter > 100: @@ -774,6 +777,8 @@ proc singlePragma(c: PContext, sym: PSym, n: PNode, i: var int, else: let k = whichKeyword(ident) if k in validPragmas: + if {optStyleHint, optStyleError} * c.config.globalOptions != {}: + checkPragmaUse(c.config, key.info, ident.s) case k of wExportc: makeExternExport(c, sym, getOptionalStr(c, it, "$1"), it.info) |