diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2016-07-08 22:24:28 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2016-07-08 22:24:28 +0200 |
commit | e2267ef5c95e400e20ac48bea9c662241bc01f18 (patch) | |
tree | 7f3dec1d840266b55e27853ac38b83d6add91d18 | |
parent | 089c31765fd7d0fc2c4beb4869dd9a42c78b4ab8 (diff) | |
download | Nim-e2267ef5c95e400e20ac48bea9c662241bc01f18.tar.gz |
Nimscript supports hint() and warning() procs; refs #3688
-rw-r--r-- | compiler/commands.nim | 2 | ||||
-rw-r--r-- | compiler/scriptconfig.nim | 9 | ||||
-rw-r--r-- | lib/system/nimscript.nim | 13 | ||||
-rw-r--r-- | tests/newconfig/tfoo.nims | 3 |
4 files changed, 24 insertions, 3 deletions
diff --git a/compiler/commands.nim b/compiler/commands.nim index cf1e16b28..22512c563 100644 --- a/compiler/commands.nim +++ b/compiler/commands.nim @@ -158,7 +158,7 @@ var enableNotes: TNoteKinds disableNotes: TNoteKinds -proc processSpecificNote(arg: string, state: TSpecialWord, pass: TCmdLinePass, +proc processSpecificNote*(arg: string, state: TSpecialWord, pass: TCmdLinePass, info: TLineInfo; orig: string) = var id = "" # arg = "X]:on|off" var i = 0 diff --git a/compiler/scriptconfig.nim b/compiler/scriptconfig.nim index d04fd5231..ca42cc8fa 100644 --- a/compiler/scriptconfig.nim +++ b/compiler/scriptconfig.nim @@ -13,7 +13,7 @@ import ast, modules, passes, passaux, condsyms, options, nimconf, lists, sem, semdata, llstream, vm, vmdef, commands, msgs, - os, times, osproc + os, times, osproc, wordrecg # we support 'cmpIgnoreStyle' natively for efficiency: from strutils import cmpIgnoreStyle @@ -116,7 +116,12 @@ proc setupVM*(module: PSym; scriptName: string): PEvalContext = setResult(a, options.command) cbconf switch: processSwitch(a.getString 0, a.getString 1, passPP, unknownLineInfo()) - + cbconf hintImpl: + processSpecificNote(a.getString 0, wHint, passPP, unknownLineInfo(), + a.getString 1) + cbconf warningImpl: + processSpecificNote(a.getString 0, wWarning, passPP, unknownLineInfo(), + a.getString 1) proc runNimScript*(scriptName: string; freshDefines=true) = passes.gIncludeFile = includeModule diff --git a/lib/system/nimscript.nim b/lib/system/nimscript.nim index d587d772f..db6d72d7b 100644 --- a/lib/system/nimscript.nim +++ b/lib/system/nimscript.nim @@ -39,6 +39,9 @@ proc getCurrentDir(): string = builtin proc rawExec(cmd: string): int {.tags: [ExecIOEffect], raises: [OSError].} = builtin +proc warningImpl(arg, orig: string) = discard +proc hintImpl(arg, orig: string) = discard + proc paramStr*(i: int): string = ## Retrieves the ``i``'th command line parameter. builtin @@ -52,6 +55,16 @@ proc switch*(key: string, val="") = ## example ``switch("checks", "on")``. builtin +proc warning*(name: string; val: bool) = + ## Disables or enables a specific warning. + let v = if val: "on" else: "off" + warningImpl(name & "]:" & v, "warning[" & name & "]:" & v) + +proc hint*(name: string; val: bool) = + ## Disables or enables a specific hint. + let v = if val: "on" else: "off" + hintImpl(name & "]:" & v, "hint[" & name & "]:" & v) + proc getCommand*(): string = ## Gets the Nim command that the compiler has been invoked with, for example ## "c", "js", "build", "help". diff --git a/tests/newconfig/tfoo.nims b/tests/newconfig/tfoo.nims index 519a868d5..8d1461c78 100644 --- a/tests/newconfig/tfoo.nims +++ b/tests/newconfig/tfoo.nims @@ -8,6 +8,9 @@ import ospaths --forceBuild +warning("uninit", off) +hint("processing", off) + task listDirs, "lists every subdirectory": for x in listDirs("."): echo "DIR ", x |