Merge branch 'devel' of github.com:nim-lang/Nim into devel
This commit is contained in:
commit
c02159dde4
4 changed files with 130 additions and 4 deletions
|
|
@ -215,7 +215,7 @@ proc genLineDir(p: BProc, t: PNode) =
|
||||||
{optLineTrace, optStackTrace}) and
|
{optLineTrace, optStackTrace}) and
|
||||||
(p.prc == nil or sfPure notin p.prc.flags) and tt.info.fileIndex >= 0:
|
(p.prc == nil or sfPure notin p.prc.flags) and tt.info.fileIndex >= 0:
|
||||||
if freshLineInfo(p, tt.info):
|
if freshLineInfo(p, tt.info):
|
||||||
linefmt(p, cpsStmts, "nimln_($1, $2);$N",
|
linefmt(p, cpsStmts, "nimln_($1, $2);$n",
|
||||||
line.rope, tt.info.quotedFilename)
|
line.rope, tt.info.quotedFilename)
|
||||||
|
|
||||||
proc postStmtActions(p: BProc) {.inline.} =
|
proc postStmtActions(p: BProc) {.inline.} =
|
||||||
|
|
@ -394,7 +394,8 @@ proc assignLocalVar(p: BProc, s: PSym) =
|
||||||
#assert(s.loc.k == locNone) # not yet assigned
|
#assert(s.loc.k == locNone) # not yet assigned
|
||||||
# this need not be fulfilled for inline procs; they are regenerated
|
# this need not be fulfilled for inline procs; they are regenerated
|
||||||
# for each module that uses them!
|
# for each module that uses them!
|
||||||
let decl = localVarDecl(p, s) & ";" & tnl
|
let nl = if optLineDir in gOptions: "" else: tnl
|
||||||
|
let decl = localVarDecl(p, s) & ";" & nl
|
||||||
line(p, cpsLocals, decl)
|
line(p, cpsLocals, decl)
|
||||||
localDebugInfo(p, s)
|
localDebugInfo(p, s)
|
||||||
|
|
||||||
|
|
@ -627,11 +628,11 @@ proc initFrame(p: BProc, procname, filename: Rope): Rope =
|
||||||
discard cgsym(p.module, "nimFrame")
|
discard cgsym(p.module, "nimFrame")
|
||||||
if p.maxFrameLen > 0:
|
if p.maxFrameLen > 0:
|
||||||
discard cgsym(p.module, "VarSlot")
|
discard cgsym(p.module, "VarSlot")
|
||||||
result = rfmt(nil, "\tnimfrs_($1, $2, $3, $4)$N",
|
result = rfmt(nil, "\tnimfrs_($1, $2, $3, $4);$n",
|
||||||
procname, filename, p.maxFrameLen.rope,
|
procname, filename, p.maxFrameLen.rope,
|
||||||
p.blocks[0].frameLen.rope)
|
p.blocks[0].frameLen.rope)
|
||||||
else:
|
else:
|
||||||
result = rfmt(nil, "\tnimfr_($1, $2)$N", procname, filename)
|
result = rfmt(nil, "\tnimfr_($1, $2);$n", procname, filename)
|
||||||
|
|
||||||
proc deinitFrame(p: BProc): Rope =
|
proc deinitFrame(p: BProc): Rope =
|
||||||
result = rfmt(p.module, "\t#popFrame();$n")
|
result = rfmt(p.module, "\t#popFrame();$n")
|
||||||
|
|
@ -1311,6 +1312,7 @@ proc myProcess(b: PPassContext, n: PNode): PNode =
|
||||||
if b == nil or passes.skipCodegen(n): return
|
if b == nil or passes.skipCodegen(n): return
|
||||||
var m = BModule(b)
|
var m = BModule(b)
|
||||||
m.initProc.options = initProcOptions(m)
|
m.initProc.options = initProcOptions(m)
|
||||||
|
softRnl = if optLineDir in gOptions: noRnl else: rnl
|
||||||
genStmts(m.initProc, n)
|
genStmts(m.initProc, n)
|
||||||
|
|
||||||
proc finishModule(m: BModule) =
|
proc finishModule(m: BModule) =
|
||||||
|
|
|
||||||
|
|
@ -228,6 +228,7 @@ proc prepend*(a: var Rope, b: string) = a = b & a
|
||||||
var
|
var
|
||||||
rnl* = tnl.newRope
|
rnl* = tnl.newRope
|
||||||
softRnl* = tnl.newRope
|
softRnl* = tnl.newRope
|
||||||
|
noRnl* = "".newRope
|
||||||
|
|
||||||
proc `%`*(frmt: FormatStr, args: openArray[Rope]): Rope =
|
proc `%`*(frmt: FormatStr, args: openArray[Rope]): Rope =
|
||||||
var i = 0
|
var i = 0
|
||||||
|
|
|
||||||
47
tools/nim.bash-completion
Normal file
47
tools/nim.bash-completion
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
# bash completion for nim -*- shell-script -*-
|
||||||
|
|
||||||
|
_nim()
|
||||||
|
{
|
||||||
|
local cur prev words cword split
|
||||||
|
_init_completion -s || return
|
||||||
|
|
||||||
|
COMPREPLY=()
|
||||||
|
cur=${COMP_WORDS[COMP_CWORD]}
|
||||||
|
|
||||||
|
if [ $COMP_CWORD -eq 1 ] ; then
|
||||||
|
# first item - suggest commands
|
||||||
|
kw="compile c doc doc2 compileToC cc compileToCpp cpp compileToOC objc js e rst2html rst2tex jsondoc jsondoc2 buildIndex genDepend dump check"
|
||||||
|
COMPREPLY=( $( compgen -W "${kw}" -- $cur ) )
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
case $prev in
|
||||||
|
--stackTrace|--lineTrace|--threads|-x|--checks|--objChecks|--fieldChecks|--rangeChecks|--boundChecks|--overflowChecks|-a|--assertions|--floatChecks|--nanChecks|--infChecks|--deadCodeElim)
|
||||||
|
# Options that require on/off
|
||||||
|
[[ "$cur" == "=" ]] && cur=""
|
||||||
|
COMPREPLY=( $(compgen -W 'on off' -- "$cur") )
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
--opt)
|
||||||
|
[[ "$cur" == "=" ]] && cur=""
|
||||||
|
COMPREPLY=( $(compgen -W 'none speed size' -- "$cur") )
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
--app)
|
||||||
|
[[ "$cur" == "=" ]] && cur=""
|
||||||
|
COMPREPLY=( $(compgen -W 'console gui lib staticlib' -- "$cur") )
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
kw="-r -p= --path= -d= --define= -u= --undef= -f --forceBuild --opt= --app= --stackTrace= --lineTrace= --threads= -x= --checks= --objChecks= --fieldChecks= --rangeChecks= --boundChecks= --overflowChecks= -a= --assertions= --floatChecks= --nanChecks= --infChecks= --deadCodeElim="
|
||||||
|
COMPREPLY=( $( compgen -W "${kw}" -- $cur ) )
|
||||||
|
_filedir '@(nim)'
|
||||||
|
#$split
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
return 0
|
||||||
|
|
||||||
|
} &&
|
||||||
|
complete -onospace -F _nim nim
|
||||||
|
|
||||||
|
# ex: ts=2 sw=2 et filetypesh
|
||||||
76
tools/nim.zsh-completion
Normal file
76
tools/nim.zsh-completion
Normal file
|
|
@ -0,0 +1,76 @@
|
||||||
|
#compdef nim
|
||||||
|
|
||||||
|
_nim() {
|
||||||
|
_arguments -C \
|
||||||
|
':command:((
|
||||||
|
{compile,c}\:compile\ project\ with\ default\ code\ generator\ C
|
||||||
|
doc\:generate\ the\ documentation\ for\ inputfile
|
||||||
|
doc2\:generate\ the\ documentation\ for\ inputfile
|
||||||
|
{compileToC,cc}\:compile\ project\ with\ C\ code\ generator
|
||||||
|
{compileToCpp,cpp}\:compile\ project\ to\ C++\ code
|
||||||
|
{compileToOC,objc}\:compile\ project\ to\ Objective\ C\ code
|
||||||
|
js\:compile\ project\ to\ Javascript
|
||||||
|
e\:run\ a\ Nimscript\ file
|
||||||
|
rst2html\:convert\ a\ reStructuredText\ file\ to\ HTML
|
||||||
|
rst2tex\:convert\ a\ reStructuredText\ file\ to\ TeX
|
||||||
|
jsondoc\:extract\ the\ documentation\ to\ a\ json\ file
|
||||||
|
jsondoc2\:extract\ documentation\ to\ a\ json\ file\ using\ doc2
|
||||||
|
buildIndex\:build\ an\ index\ for\ the\ whole\ documentation
|
||||||
|
genDepend\:generate\ a\ DOT\ file\ containing\ the\ module\ dependency\ graph
|
||||||
|
dump\:dump\ all\ defined\ conditionals\ and\ search\ paths
|
||||||
|
check\:checks\ the\ project\ for\ syntax\ and\ semantic
|
||||||
|
))' \
|
||||||
|
'*-r[run the application]' \
|
||||||
|
'*--run[run the application]' \
|
||||||
|
'*-p=[add path to search paths]' \
|
||||||
|
'*--path=[add path to search paths]' \
|
||||||
|
'*-d=[define a conditional symbol]' \
|
||||||
|
'*--define=[define a conditional symbol]' \
|
||||||
|
'*-u=[undefine a conditional symbol]' \
|
||||||
|
'*--undef=[undefine a conditional symbol]' \
|
||||||
|
'*-f[force rebuilding of all modules]' \
|
||||||
|
'*--forceBuild[force rebuilding of all modules]' \
|
||||||
|
'*--stackTrace=on[turn stack tracing on]' \
|
||||||
|
'*--stackTrace=off[turn stack tracing off]' \
|
||||||
|
'*--lineTrace=on[turn line tracing on]' \
|
||||||
|
'*--lineTrace=off[turn line tracing off]' \
|
||||||
|
'*--threads=on[turn support for multi-threading on]' \
|
||||||
|
'*--threads=off[turn support for multi-threading off]' \
|
||||||
|
'*-x=on[turn all runtime checks on]' \
|
||||||
|
'*-x=off[turn all runtime checks off]' \
|
||||||
|
'*--checks=on[turn all runtime checks on]' \
|
||||||
|
'*--checks=off[turn all runtime checks off]' \
|
||||||
|
'*--objChecks=on[turn obj conversion checks on]' \
|
||||||
|
'*--objChecks=off[turn obj conversion checks off]' \
|
||||||
|
'*--fieldChecks=on[turn case variant field checks on]' \
|
||||||
|
'*--fieldChecks=off[turn case variant field checks off]' \
|
||||||
|
'*--rangeChecks=on[turn range checks on]' \
|
||||||
|
'*--rangeChecks=off[turn range checks off]' \
|
||||||
|
'*--boundChecks=on[turn bound checks on]' \
|
||||||
|
'*--boundChecks=off[turn bound checks off]' \
|
||||||
|
'*--overflowChecks=on[turn int over-/underflow checks on]' \
|
||||||
|
'*--overflowChecks=off[turn int over-/underflow checks off]' \
|
||||||
|
'*-a[turn assertions on]' \
|
||||||
|
'*-a[turn assertions off]' \
|
||||||
|
'*--assertions=on[turn assertions on]' \
|
||||||
|
'*--assertions=off[turn assertions off]' \
|
||||||
|
'*--floatChecks=on[turn all floating point (NaN/Inf) checks on]' \
|
||||||
|
'*--floatChecks=off[turn all floating point (NaN/Inf) checks off]' \
|
||||||
|
'*--nanChecks=on[turn NaN checks on]' \
|
||||||
|
'*--nanChecks=off[turn NaN checks off]' \
|
||||||
|
'*--infChecks=on[turn Inf checks on]' \
|
||||||
|
'*--infChecks=off[turn Inf checks off]' \
|
||||||
|
'*--deadCodeElim=on[whole program dead code elimination on]' \
|
||||||
|
'*--deadCodeElim=off[whole program dead code elimination off]' \
|
||||||
|
'*--opt=none[do not optimize]' \
|
||||||
|
'*--opt=speed[optimize for speed|size - use -d:release for a release build]' \
|
||||||
|
'*--opt=size[optimize for size]' \
|
||||||
|
'*--debugger:native|endb[use native debugger (gdb) | ENDB (experimental)]' \
|
||||||
|
'*--app=console[generate a console app]' \
|
||||||
|
'*--app=gui[generate a GUI app]' \
|
||||||
|
'*--app=lib[generate a dynamic library]' \
|
||||||
|
'*--app=staticlib[generate a static library]' \
|
||||||
|
':filename:_files -g"*.nim"'
|
||||||
|
}
|
||||||
|
|
||||||
|
_nim "$@"
|
||||||
Loading…
Add table
Add a link
Reference in a new issue