mirror of
https://github.com/nim-lang/Nim.git
synced 2025-12-28 17:04:41 +00:00
resolved conflicts with master
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -58,6 +58,7 @@ examples/cross_calculator/android/tags
|
||||
# Generated files.
|
||||
/compile.json
|
||||
/compiler/c2nim/c2nim
|
||||
/compiler/nimrod.dot
|
||||
/compiler/pas2nim/pas2nim
|
||||
/compiler/service
|
||||
/examples/allany
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#
|
||||
#
|
||||
# The Nimrod Compiler
|
||||
# (c) Copyright 2013 Andreas Rumpf
|
||||
# (c) Copyright 2014 Andreas Rumpf
|
||||
#
|
||||
# See the file "copying.txt", included in this
|
||||
# distribution, for details about the copyright.
|
||||
@@ -249,10 +249,13 @@ proc processSwitch(switch, arg: string, pass: TCmdLinePass, info: TLineInfo) =
|
||||
expectArg(switch, arg, pass, info)
|
||||
addPath(processPath(arg), info)
|
||||
of "babelpath":
|
||||
if pass in {passCmd2, passPP}:
|
||||
if pass in {passCmd2, passPP} and not options.gNoBabelPath:
|
||||
expectArg(switch, arg, pass, info)
|
||||
let path = processPath(arg, notRelativeToProj=true)
|
||||
babelPath(path, info)
|
||||
babelpath(path, info)
|
||||
of "nobabelpath":
|
||||
expectNoArg(switch, arg, pass, info)
|
||||
options.gNoBabelPath = true
|
||||
of "excludepath":
|
||||
expectArg(switch, arg, pass, info)
|
||||
let path = processPath(arg)
|
||||
|
||||
@@ -614,7 +614,7 @@ proc callCCompiler*(projectfile: string) =
|
||||
exefile = splitFile(projectfile).name & platform.OS[targetOS].exeExt
|
||||
builddll = ""
|
||||
if options.outFile.len > 0:
|
||||
exefile = options.outFile
|
||||
exefile = options.outFile.expandTilde
|
||||
if not noAbsolutePaths():
|
||||
if not exefile.isAbsolute():
|
||||
exefile = joinPath(splitFile(projectfile).dir, exefile)
|
||||
|
||||
@@ -1,591 +0,0 @@
|
||||
digraph nimrod {
|
||||
times -> strutils;
|
||||
os -> strutils;
|
||||
os -> times;
|
||||
posix -> times;
|
||||
os -> posix;
|
||||
nhashes -> strutils;
|
||||
nstrtabs -> os;
|
||||
nstrtabs -> nhashes;
|
||||
nstrtabs -> strutils;
|
||||
options -> os;
|
||||
options -> lists;
|
||||
options -> strutils;
|
||||
options -> nstrtabs;
|
||||
msgs -> options;
|
||||
msgs -> strutils;
|
||||
msgs -> os;
|
||||
crc -> strutils;
|
||||
platform -> strutils;
|
||||
ropes -> msgs;
|
||||
ropes -> strutils;
|
||||
ropes -> platform;
|
||||
ropes -> nhashes;
|
||||
ropes -> crc;
|
||||
idents -> nhashes;
|
||||
idents -> strutils;
|
||||
ast -> msgs;
|
||||
ast -> nhashes;
|
||||
ast -> nversion;
|
||||
ast -> options;
|
||||
ast -> strutils;
|
||||
ast -> crc;
|
||||
ast -> ropes;
|
||||
ast -> idents;
|
||||
ast -> lists;
|
||||
astalgo -> ast;
|
||||
astalgo -> nhashes;
|
||||
astalgo -> strutils;
|
||||
astalgo -> options;
|
||||
astalgo -> msgs;
|
||||
astalgo -> ropes;
|
||||
astalgo -> idents;
|
||||
condsyms -> ast;
|
||||
condsyms -> astalgo;
|
||||
condsyms -> msgs;
|
||||
condsyms -> nhashes;
|
||||
condsyms -> platform;
|
||||
condsyms -> strutils;
|
||||
condsyms -> idents;
|
||||
hashes -> strutils;
|
||||
strtabs -> os;
|
||||
strtabs -> hashes;
|
||||
strtabs -> strutils;
|
||||
osproc -> strutils;
|
||||
osproc -> os;
|
||||
osproc -> strtabs;
|
||||
osproc -> streams;
|
||||
osproc -> posix;
|
||||
extccomp -> lists;
|
||||
extccomp -> ropes;
|
||||
extccomp -> os;
|
||||
extccomp -> strutils;
|
||||
extccomp -> osproc;
|
||||
extccomp -> platform;
|
||||
extccomp -> condsyms;
|
||||
extccomp -> options;
|
||||
extccomp -> msgs;
|
||||
wordrecg -> nhashes;
|
||||
wordrecg -> strutils;
|
||||
wordrecg -> idents;
|
||||
commands -> os;
|
||||
commands -> msgs;
|
||||
commands -> options;
|
||||
commands -> nversion;
|
||||
commands -> condsyms;
|
||||
commands -> strutils;
|
||||
commands -> extccomp;
|
||||
commands -> platform;
|
||||
commands -> lists;
|
||||
commands -> wordrecg;
|
||||
llstream -> strutils;
|
||||
lexbase -> llstream;
|
||||
lexbase -> strutils;
|
||||
scanner -> nhashes;
|
||||
scanner -> options;
|
||||
scanner -> msgs;
|
||||
scanner -> strutils;
|
||||
scanner -> platform;
|
||||
scanner -> idents;
|
||||
scanner -> lexbase;
|
||||
scanner -> llstream;
|
||||
scanner -> wordrecg;
|
||||
nimconf -> llstream;
|
||||
nimconf -> nversion;
|
||||
nimconf -> commands;
|
||||
nimconf -> os;
|
||||
nimconf -> strutils;
|
||||
nimconf -> msgs;
|
||||
nimconf -> platform;
|
||||
nimconf -> condsyms;
|
||||
nimconf -> scanner;
|
||||
nimconf -> options;
|
||||
nimconf -> idents;
|
||||
nimconf -> wordrecg;
|
||||
pnimsyn -> llstream;
|
||||
pnimsyn -> scanner;
|
||||
pnimsyn -> idents;
|
||||
pnimsyn -> strutils;
|
||||
pnimsyn -> ast;
|
||||
pnimsyn -> msgs;
|
||||
pbraces -> llstream;
|
||||
pbraces -> scanner;
|
||||
pbraces -> idents;
|
||||
pbraces -> strutils;
|
||||
pbraces -> ast;
|
||||
pbraces -> msgs;
|
||||
pbraces -> pnimsyn;
|
||||
rnimsyn -> scanner;
|
||||
rnimsyn -> options;
|
||||
rnimsyn -> idents;
|
||||
rnimsyn -> strutils;
|
||||
rnimsyn -> ast;
|
||||
rnimsyn -> msgs;
|
||||
rnimsyn -> lists;
|
||||
filters -> llstream;
|
||||
filters -> os;
|
||||
filters -> wordrecg;
|
||||
filters -> idents;
|
||||
filters -> strutils;
|
||||
filters -> ast;
|
||||
filters -> astalgo;
|
||||
filters -> msgs;
|
||||
filters -> options;
|
||||
filters -> rnimsyn;
|
||||
ptmplsyn -> llstream;
|
||||
ptmplsyn -> os;
|
||||
ptmplsyn -> wordrecg;
|
||||
ptmplsyn -> idents;
|
||||
ptmplsyn -> strutils;
|
||||
ptmplsyn -> ast;
|
||||
ptmplsyn -> astalgo;
|
||||
ptmplsyn -> msgs;
|
||||
ptmplsyn -> options;
|
||||
ptmplsyn -> rnimsyn;
|
||||
ptmplsyn -> filters;
|
||||
syntaxes -> strutils;
|
||||
syntaxes -> llstream;
|
||||
syntaxes -> ast;
|
||||
syntaxes -> astalgo;
|
||||
syntaxes -> idents;
|
||||
syntaxes -> scanner;
|
||||
syntaxes -> options;
|
||||
syntaxes -> msgs;
|
||||
syntaxes -> pnimsyn;
|
||||
syntaxes -> pbraces;
|
||||
syntaxes -> ptmplsyn;
|
||||
syntaxes -> filters;
|
||||
syntaxes -> rnimsyn;
|
||||
paslex -> nhashes;
|
||||
paslex -> options;
|
||||
paslex -> msgs;
|
||||
paslex -> strutils;
|
||||
paslex -> platform;
|
||||
paslex -> idents;
|
||||
paslex -> lexbase;
|
||||
paslex -> wordrecg;
|
||||
paslex -> scanner;
|
||||
pasparse -> os;
|
||||
pasparse -> llstream;
|
||||
pasparse -> scanner;
|
||||
pasparse -> paslex;
|
||||
pasparse -> idents;
|
||||
pasparse -> wordrecg;
|
||||
pasparse -> strutils;
|
||||
pasparse -> ast;
|
||||
pasparse -> astalgo;
|
||||
pasparse -> msgs;
|
||||
pasparse -> options;
|
||||
rodread -> os;
|
||||
rodread -> options;
|
||||
rodread -> strutils;
|
||||
rodread -> nversion;
|
||||
rodread -> ast;
|
||||
rodread -> astalgo;
|
||||
rodread -> msgs;
|
||||
rodread -> platform;
|
||||
rodread -> condsyms;
|
||||
rodread -> ropes;
|
||||
rodread -> idents;
|
||||
rodread -> crc;
|
||||
trees -> ast;
|
||||
trees -> astalgo;
|
||||
trees -> scanner;
|
||||
trees -> msgs;
|
||||
trees -> strutils;
|
||||
types -> ast;
|
||||
types -> astalgo;
|
||||
types -> trees;
|
||||
types -> msgs;
|
||||
types -> strutils;
|
||||
types -> platform;
|
||||
magicsys -> ast;
|
||||
magicsys -> astalgo;
|
||||
magicsys -> nhashes;
|
||||
magicsys -> msgs;
|
||||
magicsys -> platform;
|
||||
magicsys -> nversion;
|
||||
magicsys -> times;
|
||||
magicsys -> idents;
|
||||
magicsys -> rodread;
|
||||
nimsets -> ast;
|
||||
nimsets -> astalgo;
|
||||
nimsets -> trees;
|
||||
nimsets -> nversion;
|
||||
nimsets -> msgs;
|
||||
nimsets -> platform;
|
||||
nimsets -> bitsets;
|
||||
nimsets -> types;
|
||||
nimsets -> rnimsyn;
|
||||
passes -> strutils;
|
||||
passes -> lists;
|
||||
passes -> options;
|
||||
passes -> ast;
|
||||
passes -> astalgo;
|
||||
passes -> llstream;
|
||||
passes -> msgs;
|
||||
passes -> platform;
|
||||
passes -> os;
|
||||
passes -> condsyms;
|
||||
passes -> idents;
|
||||
passes -> rnimsyn;
|
||||
passes -> types;
|
||||
passes -> extccomp;
|
||||
passes -> math;
|
||||
passes -> magicsys;
|
||||
passes -> nversion;
|
||||
passes -> nimsets;
|
||||
passes -> syntaxes;
|
||||
passes -> times;
|
||||
passes -> rodread;
|
||||
treetab -> nhashes;
|
||||
treetab -> ast;
|
||||
treetab -> astalgo;
|
||||
treetab -> types;
|
||||
semdata -> strutils;
|
||||
semdata -> lists;
|
||||
semdata -> options;
|
||||
semdata -> scanner;
|
||||
semdata -> ast;
|
||||
semdata -> astalgo;
|
||||
semdata -> trees;
|
||||
semdata -> treetab;
|
||||
semdata -> wordrecg;
|
||||
semdata -> ropes;
|
||||
semdata -> msgs;
|
||||
semdata -> platform;
|
||||
semdata -> os;
|
||||
semdata -> condsyms;
|
||||
semdata -> idents;
|
||||
semdata -> rnimsyn;
|
||||
semdata -> types;
|
||||
semdata -> extccomp;
|
||||
semdata -> math;
|
||||
semdata -> magicsys;
|
||||
semdata -> nversion;
|
||||
semdata -> nimsets;
|
||||
semdata -> pnimsyn;
|
||||
semdata -> times;
|
||||
semdata -> passes;
|
||||
semdata -> rodread;
|
||||
lookups -> ast;
|
||||
lookups -> astalgo;
|
||||
lookups -> idents;
|
||||
lookups -> semdata;
|
||||
lookups -> types;
|
||||
lookups -> msgs;
|
||||
lookups -> options;
|
||||
lookups -> rodread;
|
||||
lookups -> rnimsyn;
|
||||
importer -> strutils;
|
||||
importer -> os;
|
||||
importer -> ast;
|
||||
importer -> astalgo;
|
||||
importer -> msgs;
|
||||
importer -> options;
|
||||
importer -> idents;
|
||||
importer -> rodread;
|
||||
importer -> lookups;
|
||||
importer -> semdata;
|
||||
importer -> passes;
|
||||
rodwrite -> os;
|
||||
rodwrite -> options;
|
||||
rodwrite -> strutils;
|
||||
rodwrite -> nversion;
|
||||
rodwrite -> ast;
|
||||
rodwrite -> astalgo;
|
||||
rodwrite -> msgs;
|
||||
rodwrite -> platform;
|
||||
rodwrite -> condsyms;
|
||||
rodwrite -> ropes;
|
||||
rodwrite -> idents;
|
||||
rodwrite -> crc;
|
||||
rodwrite -> rodread;
|
||||
rodwrite -> passes;
|
||||
rodwrite -> importer;
|
||||
semfold -> strutils;
|
||||
semfold -> lists;
|
||||
semfold -> options;
|
||||
semfold -> ast;
|
||||
semfold -> astalgo;
|
||||
semfold -> trees;
|
||||
semfold -> treetab;
|
||||
semfold -> nimsets;
|
||||
semfold -> times;
|
||||
semfold -> nversion;
|
||||
semfold -> platform;
|
||||
semfold -> math;
|
||||
semfold -> msgs;
|
||||
semfold -> os;
|
||||
semfold -> condsyms;
|
||||
semfold -> idents;
|
||||
semfold -> rnimsyn;
|
||||
semfold -> types;
|
||||
evals -> strutils;
|
||||
evals -> magicsys;
|
||||
evals -> lists;
|
||||
evals -> options;
|
||||
evals -> ast;
|
||||
evals -> astalgo;
|
||||
evals -> trees;
|
||||
evals -> treetab;
|
||||
evals -> nimsets;
|
||||
evals -> msgs;
|
||||
evals -> os;
|
||||
evals -> condsyms;
|
||||
evals -> idents;
|
||||
evals -> rnimsyn;
|
||||
evals -> types;
|
||||
evals -> passes;
|
||||
evals -> semfold;
|
||||
procfind -> ast;
|
||||
procfind -> astalgo;
|
||||
procfind -> msgs;
|
||||
procfind -> semdata;
|
||||
procfind -> types;
|
||||
procfind -> trees;
|
||||
pragmas -> os;
|
||||
pragmas -> platform;
|
||||
pragmas -> condsyms;
|
||||
pragmas -> ast;
|
||||
pragmas -> astalgo;
|
||||
pragmas -> idents;
|
||||
pragmas -> semdata;
|
||||
pragmas -> msgs;
|
||||
pragmas -> rnimsyn;
|
||||
pragmas -> wordrecg;
|
||||
pragmas -> ropes;
|
||||
pragmas -> options;
|
||||
pragmas -> strutils;
|
||||
pragmas -> lists;
|
||||
pragmas -> extccomp;
|
||||
pragmas -> math;
|
||||
pragmas -> magicsys;
|
||||
pragmas -> trees;
|
||||
sem -> strutils;
|
||||
sem -> nhashes;
|
||||
sem -> lists;
|
||||
sem -> options;
|
||||
sem -> scanner;
|
||||
sem -> ast;
|
||||
sem -> astalgo;
|
||||
sem -> trees;
|
||||
sem -> treetab;
|
||||
sem -> wordrecg;
|
||||
sem -> ropes;
|
||||
sem -> msgs;
|
||||
sem -> os;
|
||||
sem -> condsyms;
|
||||
sem -> idents;
|
||||
sem -> rnimsyn;
|
||||
sem -> types;
|
||||
sem -> platform;
|
||||
sem -> math;
|
||||
sem -> magicsys;
|
||||
sem -> pnimsyn;
|
||||
sem -> nversion;
|
||||
sem -> nimsets;
|
||||
sem -> semdata;
|
||||
sem -> evals;
|
||||
sem -> semfold;
|
||||
sem -> importer;
|
||||
sem -> procfind;
|
||||
sem -> lookups;
|
||||
sem -> rodread;
|
||||
sem -> pragmas;
|
||||
sem -> passes;
|
||||
rst -> os;
|
||||
rst -> msgs;
|
||||
rst -> strutils;
|
||||
rst -> platform;
|
||||
rst -> nhashes;
|
||||
rst -> ropes;
|
||||
rst -> options;
|
||||
highlite -> nhashes;
|
||||
highlite -> options;
|
||||
highlite -> msgs;
|
||||
highlite -> strutils;
|
||||
highlite -> platform;
|
||||
highlite -> idents;
|
||||
highlite -> lexbase;
|
||||
highlite -> wordrecg;
|
||||
highlite -> scanner;
|
||||
docgen -> ast;
|
||||
docgen -> astalgo;
|
||||
docgen -> strutils;
|
||||
docgen -> nhashes;
|
||||
docgen -> options;
|
||||
docgen -> nversion;
|
||||
docgen -> msgs;
|
||||
docgen -> os;
|
||||
docgen -> ropes;
|
||||
docgen -> idents;
|
||||
docgen -> wordrecg;
|
||||
docgen -> math;
|
||||
docgen -> syntaxes;
|
||||
docgen -> rnimsyn;
|
||||
docgen -> scanner;
|
||||
docgen -> rst;
|
||||
docgen -> times;
|
||||
docgen -> highlite;
|
||||
ccgutils -> ast;
|
||||
ccgutils -> astalgo;
|
||||
ccgutils -> ropes;
|
||||
ccgutils -> lists;
|
||||
ccgutils -> nhashes;
|
||||
ccgutils -> strutils;
|
||||
ccgutils -> types;
|
||||
ccgutils -> msgs;
|
||||
cgmeth -> options;
|
||||
cgmeth -> ast;
|
||||
cgmeth -> astalgo;
|
||||
cgmeth -> msgs;
|
||||
cgmeth -> idents;
|
||||
cgmeth -> rnimsyn;
|
||||
cgmeth -> types;
|
||||
cgmeth -> magicsys;
|
||||
cgen -> ast;
|
||||
cgen -> astalgo;
|
||||
cgen -> strutils;
|
||||
cgen -> nhashes;
|
||||
cgen -> trees;
|
||||
cgen -> platform;
|
||||
cgen -> magicsys;
|
||||
cgen -> extccomp;
|
||||
cgen -> options;
|
||||
cgen -> nversion;
|
||||
cgen -> nimsets;
|
||||
cgen -> msgs;
|
||||
cgen -> crc;
|
||||
cgen -> bitsets;
|
||||
cgen -> idents;
|
||||
cgen -> lists;
|
||||
cgen -> types;
|
||||
cgen -> ccgutils;
|
||||
cgen -> os;
|
||||
cgen -> times;
|
||||
cgen -> ropes;
|
||||
cgen -> math;
|
||||
cgen -> passes;
|
||||
cgen -> rodread;
|
||||
cgen -> wordrecg;
|
||||
cgen -> rnimsyn;
|
||||
cgen -> treetab;
|
||||
cgen -> cgmeth;
|
||||
jsgen -> ast;
|
||||
jsgen -> astalgo;
|
||||
jsgen -> strutils;
|
||||
jsgen -> nhashes;
|
||||
jsgen -> trees;
|
||||
jsgen -> platform;
|
||||
jsgen -> magicsys;
|
||||
jsgen -> extccomp;
|
||||
jsgen -> options;
|
||||
jsgen -> nversion;
|
||||
jsgen -> nimsets;
|
||||
jsgen -> msgs;
|
||||
jsgen -> crc;
|
||||
jsgen -> bitsets;
|
||||
jsgen -> idents;
|
||||
jsgen -> lists;
|
||||
jsgen -> types;
|
||||
jsgen -> os;
|
||||
jsgen -> times;
|
||||
jsgen -> ropes;
|
||||
jsgen -> math;
|
||||
jsgen -> passes;
|
||||
jsgen -> ccgutils;
|
||||
jsgen -> wordrecg;
|
||||
jsgen -> rnimsyn;
|
||||
jsgen -> rodread;
|
||||
interact -> llstream;
|
||||
interact -> strutils;
|
||||
interact -> ropes;
|
||||
interact -> nstrtabs;
|
||||
interact -> msgs;
|
||||
passaux -> strutils;
|
||||
passaux -> ast;
|
||||
passaux -> astalgo;
|
||||
passaux -> passes;
|
||||
passaux -> msgs;
|
||||
passaux -> options;
|
||||
depends -> os;
|
||||
depends -> options;
|
||||
depends -> ast;
|
||||
depends -> astalgo;
|
||||
depends -> msgs;
|
||||
depends -> ropes;
|
||||
depends -> idents;
|
||||
depends -> passes;
|
||||
depends -> importer;
|
||||
transf -> strutils;
|
||||
transf -> lists;
|
||||
transf -> options;
|
||||
transf -> ast;
|
||||
transf -> astalgo;
|
||||
transf -> trees;
|
||||
transf -> treetab;
|
||||
transf -> evals;
|
||||
transf -> msgs;
|
||||
transf -> os;
|
||||
transf -> idents;
|
||||
transf -> rnimsyn;
|
||||
transf -> types;
|
||||
transf -> passes;
|
||||
transf -> semfold;
|
||||
transf -> magicsys;
|
||||
transf -> cgmeth;
|
||||
main -> llstream;
|
||||
main -> strutils;
|
||||
main -> ast;
|
||||
main -> astalgo;
|
||||
main -> scanner;
|
||||
main -> syntaxes;
|
||||
main -> rnimsyn;
|
||||
main -> options;
|
||||
main -> msgs;
|
||||
main -> os;
|
||||
main -> lists;
|
||||
main -> condsyms;
|
||||
main -> paslex;
|
||||
main -> pasparse;
|
||||
main -> rodread;
|
||||
main -> rodwrite;
|
||||
main -> ropes;
|
||||
main -> trees;
|
||||
main -> wordrecg;
|
||||
main -> sem;
|
||||
main -> semdata;
|
||||
main -> idents;
|
||||
main -> passes;
|
||||
main -> docgen;
|
||||
main -> extccomp;
|
||||
main -> cgen;
|
||||
main -> jsgen;
|
||||
main -> platform;
|
||||
main -> interact;
|
||||
main -> nimconf;
|
||||
main -> importer;
|
||||
main -> passaux;
|
||||
main -> depends;
|
||||
main -> transf;
|
||||
main -> evals;
|
||||
main -> types;
|
||||
parseopt -> os;
|
||||
parseopt -> strutils;
|
||||
nimrod -> times;
|
||||
nimrod -> commands;
|
||||
nimrod -> scanner;
|
||||
nimrod -> condsyms;
|
||||
nimrod -> options;
|
||||
nimrod -> msgs;
|
||||
nimrod -> nversion;
|
||||
nimrod -> nimconf;
|
||||
nimrod -> ropes;
|
||||
nimrod -> extccomp;
|
||||
nimrod -> strutils;
|
||||
nimrod -> os;
|
||||
nimrod -> platform;
|
||||
nimrod -> main;
|
||||
nimrod -> parseopt;
|
||||
}
|
||||
@@ -111,6 +111,7 @@ var
|
||||
gDirtyBufferIdx* = 0'i32 # indicates the fileIdx of the dirty version of
|
||||
# the tracked source X, saved by the CAAS client.
|
||||
gDirtyOriginalIdx* = 0'i32 # the original source file of the dirtified buffer.
|
||||
gNoBabelPath* = false
|
||||
|
||||
proc importantComments*(): bool {.inline.} = gCmd in {cmdDoc, cmdIdeTools}
|
||||
proc usesNativeGC*(): bool {.inline.} = gSelectedGC >= gcRefc
|
||||
|
||||
@@ -62,3 +62,9 @@ Currently, the following C compilers are supported under Windows:
|
||||
| http://www.digitalmars.com/download/freecompiler.html
|
||||
|
||||
However, most testing is done with GCC.
|
||||
|
||||
Bootstrapping from Github
|
||||
-------------------------
|
||||
|
||||
Take a look at the readme file on github `here <https://github.com/Araq/Nimrod#readme>`_
|
||||
for instructions.
|
||||
|
||||
@@ -699,7 +699,18 @@ proc formatNamedVars*(frmt: string, varnames: openArray[string],
|
||||
|
||||
|
||||
proc defaultConfig*(): PStringTable =
|
||||
## creates a default configuration for HTML generation.
|
||||
## Returns a default configuration for embedded HTML generation.
|
||||
##
|
||||
## The returned ``PStringTable`` contains the paramters used by the HTML
|
||||
## engine to build the final output. For information on what these parameters
|
||||
## are and their purpose, please look up the file ``config/nimdoc.cfg``
|
||||
## bundled with the compiler.
|
||||
##
|
||||
## The only difference between the contents of that file and the values
|
||||
## provided by this proc is the ``doc.file`` variable. The ``doc.file``
|
||||
## variable of the configuration file contains HTML to build standalone
|
||||
## pages, while this proc returns just the content for procs like
|
||||
## ``rstToHtml`` to generate the bare minimum HTML.
|
||||
result = newStringTable(modeStyleInsensitive)
|
||||
|
||||
template setConfigVar(key, val: expr) =
|
||||
|
||||
@@ -233,8 +233,11 @@ proc asyncSockHandleWrite(h: PObject) =
|
||||
let sock = PAsyncSocket(h)
|
||||
try:
|
||||
let bytesSent = sock.socket.sendAsync(sock.sendBuffer)
|
||||
assert bytesSent > 0
|
||||
if bytesSent != sock.sendBuffer.len:
|
||||
if bytesSent == 0:
|
||||
# Apparently the socket cannot be written to. Even though select
|
||||
# just told us that it can be... This used to be an assert. Just
|
||||
# do nothing instead.
|
||||
elif bytesSent != sock.sendBuffer.len:
|
||||
sock.sendBuffer = sock.sendBuffer[bytesSent .. -1]
|
||||
elif bytesSent == sock.sendBuffer.len:
|
||||
sock.sendBuffer = ""
|
||||
|
||||
@@ -220,9 +220,8 @@ proc parseResponse(s: TSocket, getBody: bool, timeout: int): TResponse =
|
||||
inc(linei, le)
|
||||
if line[linei] != ':': httpError("invalid headers")
|
||||
inc(linei) # Skip :
|
||||
linei += skipWhitespace(line, linei)
|
||||
|
||||
result.headers[name] = line[linei.. -1]
|
||||
result.headers[name] = line[linei.. -1].strip()
|
||||
if not fullyRead:
|
||||
httpError("Connection was closed before full request has been made")
|
||||
if getBody:
|
||||
|
||||
@@ -387,6 +387,14 @@ proc existsDir*(dir: string): bool {.rtl, extern: "nos$1", tags: [FReadDir].} =
|
||||
var res: TStat
|
||||
return stat(dir, res) >= 0'i32 and S_ISDIR(res.st_mode)
|
||||
|
||||
proc fileExists*(filename: string): bool {.inline.} =
|
||||
## Synonym for existsFile
|
||||
existsFile(filename)
|
||||
|
||||
proc dirExists*(dir: string): bool {.inline.} =
|
||||
## Synonym for existsDir
|
||||
existsDir(dir)
|
||||
|
||||
proc getLastModificationTime*(file: string): TTime {.rtl, extern: "nos$1".} =
|
||||
## Returns the `file`'s last modification time.
|
||||
when defined(posix):
|
||||
|
||||
@@ -132,6 +132,10 @@ proc toUTF8*(c: TRune): string {.rtl, extern: "nuc$1".} =
|
||||
result = newString(1)
|
||||
result[0] = chr(i)
|
||||
|
||||
proc `$`*(rune: TRune): string =
|
||||
## converts a rune to a string
|
||||
rune.toUTF8
|
||||
|
||||
proc `$`*(runes: seq[TRune]): string =
|
||||
## converts a sequence of runes to a string
|
||||
result = ""
|
||||
|
||||
@@ -2708,7 +2708,23 @@ proc locals*(): TObject {.magic: "Locals", noSideEffect.} =
|
||||
## in the current scope. This is quite fast as it does not rely
|
||||
## on any debug or runtime information. Note that in constrast to what
|
||||
## the official signature says, the return type is not ``TObject`` but a
|
||||
## tuple of a structure that depends on the current scope.
|
||||
## tuple of a structure that depends on the current scope. Example:
|
||||
##
|
||||
## .. code-block:: nimrod
|
||||
## proc testLocals() =
|
||||
## var
|
||||
## a = "something"
|
||||
## b = 4
|
||||
## c = locals()
|
||||
## d = "super!"
|
||||
##
|
||||
## b = 1
|
||||
## for name, value in fieldPairs(c):
|
||||
## echo "name ", name, " with value ", value
|
||||
## echo "B is ", b
|
||||
## # -> name a with value something
|
||||
## # -> name b with value 4
|
||||
## # -> B is 1
|
||||
discard
|
||||
|
||||
when not defined(booting):
|
||||
@@ -2719,4 +2735,3 @@ when not defined(booting):
|
||||
|
||||
template isStatic*(x): expr = compiles(static(x))
|
||||
# checks whether `x` is a value known at compile-time
|
||||
|
||||
|
||||
57
tests/showoff/tformatopt.nim
Normal file
57
tests/showoff/tformatopt.nim
Normal file
@@ -0,0 +1,57 @@
|
||||
discard """
|
||||
output: '''(a: 3
|
||||
b: 4
|
||||
s: abc
|
||||
)'''
|
||||
"""
|
||||
|
||||
import macros
|
||||
|
||||
proc invalidFormatString() =
|
||||
echo "invalidFormatString"
|
||||
|
||||
template formatImpl(handleChar: expr) =
|
||||
var i = 0
|
||||
while i < f.len:
|
||||
if f[i] == '$':
|
||||
case f[i+1]
|
||||
of '1'..'9':
|
||||
var j = 0
|
||||
i += 1
|
||||
while f[i] in {'0'..'9'}:
|
||||
j = j * 10 + ord(f[i]) - ord('0')
|
||||
i += 1
|
||||
result.add(a[j-1])
|
||||
else:
|
||||
invalidFormatString()
|
||||
else:
|
||||
result.add(handleChar(f[i]))
|
||||
i += 1
|
||||
|
||||
proc `%`*(f: string, a: openArray[string]): string =
|
||||
template identity(x: expr): expr = x
|
||||
result = ""
|
||||
formatImpl(identity)
|
||||
|
||||
macro optFormat{`%`(f, a)}(f: string{lit}, a: openArray[string]): expr =
|
||||
result = newNimNode(nnkBracket)
|
||||
let f = f.strVal
|
||||
formatImpl(newLit)
|
||||
result = nestList(!"&", result)
|
||||
|
||||
template optAdd1{x = y; add(x, z)}(x, y, z: string) =
|
||||
x = y & z
|
||||
|
||||
proc `/&` [T: object](x: T): string =
|
||||
result = "("
|
||||
for name, value in fieldPairs(x):
|
||||
result.add("$1: $2\n" % [name, $value])
|
||||
result.add(")")
|
||||
|
||||
type
|
||||
MyObject = object
|
||||
a, b: int
|
||||
s: string
|
||||
|
||||
let obj = MyObject(a: 3, b: 4, s: "abc")
|
||||
echo(/&obj)
|
||||
11
tests/showoff/thello2.nim
Normal file
11
tests/showoff/thello2.nim
Normal file
@@ -0,0 +1,11 @@
|
||||
discard """
|
||||
output: '''(a: 3, b: 4, s: abc)'''
|
||||
"""
|
||||
|
||||
type
|
||||
MyObject = object
|
||||
a, b: int
|
||||
s: string
|
||||
|
||||
let obj = MyObject(a: 3, b: 4, s: "abc")
|
||||
echo obj
|
||||
11
tests/showoff/thtml1.nim
Normal file
11
tests/showoff/thtml1.nim
Normal file
@@ -0,0 +1,11 @@
|
||||
discard """
|
||||
output: "<br>"
|
||||
"""
|
||||
|
||||
template htmlTag(tag: expr) {.immediate.} =
|
||||
proc tag(): string = "<" & astToStr(tag) & ">"
|
||||
|
||||
htmlTag(br)
|
||||
htmlTag(html)
|
||||
|
||||
echo br()
|
||||
37
tests/showoff/thtml2.nim
Normal file
37
tests/showoff/thtml2.nim
Normal file
@@ -0,0 +1,37 @@
|
||||
discard """
|
||||
output: "<html><head><title>now look at this</title></head><body><ul><li>Nimrod is quite capable</li></ul></body></html>"
|
||||
"""
|
||||
|
||||
import strutils
|
||||
|
||||
template html(name: expr, matter: stmt) {.immediate.} =
|
||||
proc name(): string =
|
||||
result = "<html>"
|
||||
matter
|
||||
result.add("</html>")
|
||||
|
||||
template nestedTag(tag: expr) {.immediate.} =
|
||||
template tag(matter: stmt) {.immediate.} =
|
||||
result.add("<" & astToStr(tag) & ">")
|
||||
matter
|
||||
result.add("</" & astToStr(tag) & ">")
|
||||
|
||||
template simpleTag(tag: expr) {.immediate.} =
|
||||
template tag(matter: expr) {.immediate.} =
|
||||
result.add("<$1>$2</$1>" % [astToStr(tag), matter])
|
||||
|
||||
nestedTag body
|
||||
nestedTag head
|
||||
nestedTag ul
|
||||
simpleTag title
|
||||
simpleTag li
|
||||
|
||||
|
||||
html mainPage:
|
||||
head:
|
||||
title "now look at this"
|
||||
body:
|
||||
ul:
|
||||
li "Nimrod is quite capable"
|
||||
|
||||
echo mainPage()
|
||||
22
tests/showoff/tonce.nim
Normal file
22
tests/showoff/tonce.nim
Normal file
@@ -0,0 +1,22 @@
|
||||
discard """
|
||||
output: '''first call of p
|
||||
some call of p
|
||||
new instantiation
|
||||
some call of p'''
|
||||
"""
|
||||
|
||||
template once(body: stmt) =
|
||||
var x {.global.} = false
|
||||
if not x:
|
||||
x = true
|
||||
body
|
||||
|
||||
proc p() =
|
||||
once:
|
||||
echo "first call of p"
|
||||
echo "some call of p"
|
||||
|
||||
p()
|
||||
once:
|
||||
echo "new instantiation"
|
||||
p()
|
||||
14
tests/showoff/tquasiquote.nim
Normal file
14
tests/showoff/tquasiquote.nim
Normal file
@@ -0,0 +1,14 @@
|
||||
discard """
|
||||
outputsub: '''tquasiquote.nim(14,8): Check failed: 1 > 2'''
|
||||
"""
|
||||
|
||||
import macros
|
||||
|
||||
macro check(ex: expr): stmt =
|
||||
var info = ex.lineInfo
|
||||
var expString = ex.toStrLit
|
||||
result = quote do:
|
||||
if not `ex`:
|
||||
echo `info`, ": Check failed: ", `expString`
|
||||
|
||||
check 1 > 2
|
||||
@@ -17,8 +17,8 @@ REM call the compiler:
|
||||
# var linkCmd = ""
|
||||
# for ff in items(c.cfiles[winIndex][cpuIndex]):
|
||||
# let f = ff.toWin
|
||||
ECHO %CC% %COMP_FLAGS% -Inimcache -c ?{f} -o ?{changeFileExt(f, "o")}
|
||||
%CC% %COMP_FLAGS% -Inimcache -c ?{f} -o ?{changeFileExt(f, "o")}
|
||||
ECHO %CC% %COMP_FLAGS% -Ic_code -c ?{f} -o ?{changeFileExt(f, "o")}
|
||||
%CC% %COMP_FLAGS% -Ic_code -c ?{f} -o ?{changeFileExt(f, "o")}
|
||||
# linkCmd.add(" " & changeFileExt(f, "o"))
|
||||
# end for
|
||||
|
||||
|
||||
@@ -128,8 +128,8 @@ case $myos in
|
||||
# var linkCmd = ""
|
||||
# for ff in items(c.cfiles[osA][cpuA]):
|
||||
# let f = ff.toUnix
|
||||
echo "$CC $COMP_FLAGS -Inimcache -c ?{f} -o ?{changeFileExt(f, "o")}"
|
||||
$CC $COMP_FLAGS -Inimcache -c ?{f} -o ?{changeFileExt(f, "o")}
|
||||
echo "$CC $COMP_FLAGS -Ic_code -c ?{f} -o ?{changeFileExt(f, "o")}"
|
||||
$CC $COMP_FLAGS -Ic_code -c ?{f} -o ?{changeFileExt(f, "o")}
|
||||
# add(linkCmd, " \\\n" & changeFileExt(f, "o"))
|
||||
# end for
|
||||
echo "$LINKER -o ?{"$binDir/" & toLower(c.name)} ?linkCmd $LINK_FLAGS"
|
||||
|
||||
@@ -392,7 +392,7 @@ proc readCFiles(c: var TConfigData, osA, cpuA: int) =
|
||||
quit("Cannot open: " & f)
|
||||
|
||||
proc buildDir(os, cpu: int): string =
|
||||
return "nimcache" / ($os & "_" & $cpu)
|
||||
return "c_code" / ($os & "_" & $cpu)
|
||||
|
||||
proc getOutputDir(c: var TConfigData): string =
|
||||
if c.outdir.len > 0: c.outdir else: "build"
|
||||
@@ -432,11 +432,11 @@ proc writeInstallScripts(c: var TConfigData) =
|
||||
writeFile(deinstallShFile, generateDeinstallScript(c), "\10")
|
||||
|
||||
proc srcdist(c: var TConfigData) =
|
||||
if not existsDir(getOutputDir(c) / "nimcache"):
|
||||
createDir(getOutputDir(c) / "nimcache")
|
||||
if not existsDir(getOutputDir(c) / "c_code"):
|
||||
createDir(getOutputDir(c) / "c_code")
|
||||
for x in walkFiles(c.libpath / "lib/*.h"):
|
||||
echo(getOutputDir(c) / "nimcache" / extractFilename(x))
|
||||
copyFile(dest=getOutputDir(c) / "nimcache" / extractFilename(x), source=x)
|
||||
echo(getOutputDir(c) / "c_code" / extractFilename(x))
|
||||
copyFile(dest=getOutputDir(c) / "c_code" / extractFilename(x), source=x)
|
||||
var winIndex = -1
|
||||
var intel32Index = -1
|
||||
var intel64Index = -1
|
||||
|
||||
@@ -9,6 +9,8 @@ Bug reports: http://github.com/Araq/Nimrod/issues.
|
||||
For quickest feedback, join our IRC channel: irc://irc.freenode.net/nimrod
|
||||
(logs at `<http://build.nimrod-code.org/irclogs/>`_).
|
||||
|
||||
Check out our Twitter account for latest news and announcements: `@nimrodlang <http://twitter.com/nimrodlang>`_.
|
||||
|
||||
How to help
|
||||
===========
|
||||
|
||||
|
||||
Reference in New Issue
Block a user