diff options
Diffstat (limited to 'tests/compile')
126 files changed, 0 insertions, 3061 deletions
diff --git a/tests/compile/mrecmod.nim b/tests/compile/mrecmod.nim deleted file mode 100755 index fab9654d5..000000000 --- a/tests/compile/mrecmod.nim +++ /dev/null @@ -1 +0,0 @@ -import trecmod diff --git a/tests/compile/mrecmod2.nim b/tests/compile/mrecmod2.nim deleted file mode 100755 index 9557ce729..000000000 --- a/tests/compile/mrecmod2.nim +++ /dev/null @@ -1,9 +0,0 @@ -# Module B -import trecmod2 - -proc p*(x: trecmod2.T1): trecmod2.T1 = - # this works because the compiler has already - # added T1 to trecmod2's interface symbol table - return x + 1 - - diff --git a/tests/compile/mtempl5.nim b/tests/compile/mtempl5.nim deleted file mode 100644 index 51e8461b8..000000000 --- a/tests/compile/mtempl5.nim +++ /dev/null @@ -1,10 +0,0 @@ - -var - gx = 88 - gy = 44 - -template templ*(): int = - bind gx, gy - gx + gy - - diff --git a/tests/compile/mvarious.nim b/tests/compile/mvarious.nim deleted file mode 100755 index 333b34d33..000000000 --- a/tests/compile/mvarious.nim +++ /dev/null @@ -1,6 +0,0 @@ -# Test a submodule - -#type -# TStringArr = array [0.. *] of string - -proc exportme* = nil diff --git a/tests/compile/sunset.tmpl b/tests/compile/sunset.tmpl deleted file mode 100755 index 6475bac4e..000000000 --- a/tests/compile/sunset.tmpl +++ /dev/null @@ -1,68 +0,0 @@ -#! stdtmpl -#proc sunsetTemplate*(current, ticker, content: string, -# tabs: openarray[array[0..1, string]]): string = -# result = "" -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> - -<head> - <title>Nimrod Programming System</title> - <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> - <link rel="stylesheet" type="text/css" href="style/style.css" /> -</head> - -<body> - <div id="main"> - <div id="links"> - <!-- **** INSERT LINKS HERE **** --> - </div> - <div id="logo"><h1>Nimrod Programming System</h1></div> - <div id="content"> - <div id="menu"> - <ul> - #for item in items(tabs): - #var name = item[0] - #var t = item[1] - #if t == current: - <li><a id="selected" href="${t}.html" title = "Nimrod - $name">$name</a></li> - #else: - <li><a href="${t}.html" title = "Nimrod - $name">$name</a></li> - #end if - #end for - </ul> - </div> - <div id="column1"> - <div class="sidebaritem"> - <div class="sbihead"> - <h1>latest news</h1> - </div> - <div class="sbicontent"> - $ticker - </div> - </div> - <div class="sidebaritem"> - <div class="sbihead"> - <h1>additional links</h1> - </div> - <div class="sbilinks"> - <!-- **** INSERT ADDITIONAL LINKS HERE **** --> - <ul> - <li><a class="reference" href="http://llvm.org">LLVM</a></li> - <li><a class="reference" href="http://gcc.gnu.org">GCC</a></li> - </ul> - </div> - </div> - </div> - <div id="column2"> - $content - </div> - </div> - <div id="footer"> - copyright © 2008 Andreas Rumpf | Last update: ${getDateStr()} - | <a class="reference" href="http://validator.w3.org/check?uri=referer">XHTML 1.1</a> - | <a class="reference" href="http://jigsaw.w3.org/css-validator/check/referer">CSS</a> - | <a class="reference" href="http://www.dcarter.co.uk">design by dcarter</a> - </div> - </div> -</body> -</html> diff --git a/tests/compile/tambsym2.nim b/tests/compile/tambsym2.nim deleted file mode 100755 index ecd9a4784..000000000 --- a/tests/compile/tambsym2.nim +++ /dev/null @@ -1,8 +0,0 @@ - -from sdl import PSurface - -discard SDL.CreateRGBSurface(SDL.SWSURFACE, 23, 34, - 32, 0x00FF0000, 0x0000FF00, 0x000000FF, 0xff000000'i32) - - - diff --git a/tests/compile/tarrindx.nim b/tests/compile/tarrindx.nim deleted file mode 100755 index 13919cc2c..000000000 --- a/tests/compile/tarrindx.nim +++ /dev/null @@ -1,13 +0,0 @@ -# test another strange bug ... (I hate this compiler; it is much too buggy!) - -proc putEnv(key, val: string) = - # XXX: we have to leak memory here, as we cannot - # free it before the program ends (says Borland's - # documentation) - var - env: ptr array[0..500000, char] - env = cast[ptr array[0..500000, char]](alloc(len(key) + len(val) + 2)) - for i in 0..len(key)-1: env[i] = key[i] - env[len(key)] = '=' - for i in 0..len(val)-1: - env[len(key)+1+i] = val[i] diff --git a/tests/compile/tassign.nim b/tests/compile/tassign.nim deleted file mode 100755 index f51c20783..000000000 --- a/tests/compile/tassign.nim +++ /dev/null @@ -1,31 +0,0 @@ -# Test the assignment operator for complex types which need RTTI - -type - TRec = object - x, y: int - s: string - seq: seq[string] - arr: seq[seq[array[0..3, string]]] - TRecSeq = seq[TRec] - -proc test() = - var - a, b: TRec - a.x = 1 - a.y = 2 - a.s = "Hallo!" - a.seq = @["abc", "def", "ghi", "jkl"] - a.arr = @[] - setLen(a.arr, 4) - a.arr[0] = @[] - a.arr[1] = @[] - - b = a # perform a deep copy here! - b.seq = @["xyz", "huch", "was", "soll"] - writeln(stdout, len(a.seq)) - writeln(stdout, a.seq[3]) - writeln(stdout, len(b.seq)) - writeln(stdout, b.seq[3]) - writeln(stdout, b.y) - -test() diff --git a/tests/compile/tcan_alias_generic.nim b/tests/compile/tcan_alias_generic.nim deleted file mode 100755 index e90bdc6d2..000000000 --- a/tests/compile/tcan_alias_generic.nim +++ /dev/null @@ -1,11 +0,0 @@ -## -## can_alias_generic Nimrod Module -## -## Created by Eric Doughty-Papassideris on 2011-02-16. -## Copyright (c) 2011 FWA. All rights reserved. - -type - TGen[T] = object - TGen2[T] = TGen[T] - - diff --git a/tests/compile/tcan_alias_specialised_generic.nim b/tests/compile/tcan_alias_specialised_generic.nim deleted file mode 100755 index a8f1972c8..000000000 --- a/tests/compile/tcan_alias_specialised_generic.nim +++ /dev/null @@ -1,15 +0,0 @@ -discard """ - disabled: true -""" - -## -## can_alias_specialised_generic Nimrod Module -## -## Created by Eric Doughty-Papassideris on 2011-02-16. -## Copyright (c) 2011 FWA. All rights reserved. - -type - TGen[T] = object - TSpef = TGen[string] - - diff --git a/tests/compile/tcan_inherit_generic.nim b/tests/compile/tcan_inherit_generic.nim deleted file mode 100755 index 76d9fab1f..000000000 --- a/tests/compile/tcan_inherit_generic.nim +++ /dev/null @@ -1,17 +0,0 @@ -## -## can_inherit_generic Nimrod Module -## -## Created by Eric Doughty-Papassideris on 2011-02-16. -## Copyright (c) 2011 FWA. All rights reserved. - -type - TGen[T] = object - x, y: T - - TSpef[T] = object of TGen[T] - - -var s: TSpef[float] -s.x = 0.4 -s.y = 0.6 - diff --git a/tests/compile/tcan_specialise_generic.nim b/tests/compile/tcan_specialise_generic.nim deleted file mode 100755 index f98a8bf95..000000000 --- a/tests/compile/tcan_specialise_generic.nim +++ /dev/null @@ -1,11 +0,0 @@ -## -## can_specialise_generic Nimrod Module -## -## Created by Eric Doughty-Papassideris on 2011-02-16. -## Copyright (c) 2011 FWA. All rights reserved. - -type - TGen[T] = object - TSpef = object of TGen[string] - - diff --git a/tests/compile/tccgen1.nim b/tests/compile/tccgen1.nim deleted file mode 100755 index b1d8835f2..000000000 --- a/tests/compile/tccgen1.nim +++ /dev/null @@ -1,67 +0,0 @@ - - -type - Feature = tuple[name: string, version: string] - PDOMImplementation* = ref DOMImplementation - DOMImplementation = object - Features: seq[Feature] # Read-Only - - PNode* = ref Node - Node = object - attributes*: seq[PAttr] - childNodes*: seq[PNode] - FLocalName: string # Read-only - FNamespaceURI: string # Read-only - FNodeName: string # Read-only - nodeValue*: string - FNodeType: int # Read-only - FOwnerDocument: PDocument # Read-Only - FParentNode: PNode # Read-Only - prefix*: string # Setting this should change some values... TODO! - - PElement* = ref Element - Element = object of Node - FTagName: string # Read-only - - PCharacterData = ref CharacterData - CharacterData = object of Node - data*: string - - PDocument* = ref Document - Document = object of Node - FImplementation: PDOMImplementation # Read-only - FDocumentElement: PElement # Read-only - - PAttr* = ref Attr - Attr = object of Node - FName: string # Read-only - FSpecified: bool # Read-only - value*: string - FOwnerElement: PElement # Read-only - - PDocumentFragment* = ref DocumentFragment - DocumentFragment = object of Node - - PText* = ref Text - Text = object of CharacterData - - PComment* = ref comment - Comment = object of CharacterData - - PCDataSection* = ref CDataSection - CDataSection = object of Text - - PProcessingInstruction* = ref ProcessingInstruction - ProcessingInstruction = object of Node - data*: string - FTarget: string # Read-only - -proc `namespaceURI=`*(n: var PNode, value: string) = - n.FNamespaceURI = value - -proc main = - var n: PNode - new(n) - n.namespaceURI = "test" - -main() diff --git a/tests/compile/tcmdline.nim b/tests/compile/tcmdline.nim deleted file mode 100755 index f4ee20d31..000000000 --- a/tests/compile/tcmdline.nim +++ /dev/null @@ -1,14 +0,0 @@ -# Test the command line - -import - os, strutils - -var - i: int - params = paramCount() -i = 0 -writeln(stdout, "This exe: " & getAppFilename()) -writeln(stdout, "Number of parameters: " & $params) -while i <= params: - writeln(stdout, paramStr(i)) - i = i + 1 diff --git a/tests/compile/tcodegenbug1.nim b/tests/compile/tcodegenbug1.nim deleted file mode 100755 index 909101db1..000000000 --- a/tests/compile/tcodegenbug1.nim +++ /dev/null @@ -1,55 +0,0 @@ -import os - -type - TStatusEnum* = enum - sUnknown = -1, sBuildFailure, sBuildInProgress, sBuildSuccess, - sTestFailure, sTestInProgress, sTestSuccess, # ORDER MATTERS! - sDocGenFailure, sDocGenInProgress, sDocGenSuccess, - sCSrcGenFailure, sCSrcGenInProgress, sCSrcGenSuccess - - TStatus* = object - status*: TStatusEnum - desc*: string - hash*: string - -proc initStatus*(): TStatus = - result.status = sUnknown - result.desc = "" - result.hash = "" - -proc isInProgress*(status: TStatusEnum): bool = - return status in {sBuildInProgress, sTestInProgress, sDocGenInProgress, - sCSrcGenInProgress} - -proc `$`*(status: TStatusEnum): string = - case status - of sBuildFailure: - return "build failure" - of sBuildInProgress: - return "build in progress" - of sBuildSuccess: - return "build finished" - of sTestFailure: - return "testing failure" - of sTestInProgress: - return "testing in progress" - of sTestSuccess: - return "testing finished" - of sDocGenFailure: - return "documentation generation failed" - of sDocGenInProgress: - return "generating documentation" - of sDocGenSuccess: - return "documentation generation succeeded" - of sCSrcGenFailure: - return "csource generation failed" - of sCSrcGenInProgress: - return "csource generation in progress" - of sCSrcGenSuccess: - return "csource generation succeeded" - of sUnknown: - return "unknown" - -proc makeCommitPath*(platform, hash: string): string = - return platform / "nimrod_" & hash.substr(0, 11) # 11 Chars. - diff --git a/tests/compile/tcolors.nim b/tests/compile/tcolors.nim deleted file mode 100755 index 9d1034405..000000000 --- a/tests/compile/tcolors.nim +++ /dev/null @@ -1,39 +0,0 @@ -import strutils - -type - TColor = distinct int32 - -proc rgb(r, g, b: range[0..255]): TColor = - result = TColor(r or g shl 8 or b shl 16) - -proc `$`(c: TColor): string = - result = "#" & toHex(int32(c), 6) - -echo rgb(34, 55, 255) - -when false: - type - TColor = distinct int32 - TColorComponent = distinct int8 - - proc red(a: TColor): TColorComponent = - result = TColorComponent(int32(a) and 0xff'i32) - - proc green(a: TColor): TColorComponent = - result = TColorComponent(int32(a) shr 8'i32 and 0xff'i32) - - proc blue(a: TColor): TColorComponent = - result = TColorComponent(int32(a) shr 16'i32 and 0xff'i32) - - proc rgb(r, g, b: range[0..255]): TColor = - result = TColor(r or g shl 8 or b shl 8) - - proc `+!` (a, b: TColorComponent): TColorComponent = - ## saturated arithmetic: - result = TColorComponent(min(ze(int8(a)) + ze(int8(b)), 255)) - - proc `+` (a, b: TColor): TColor = - ## saturated arithmetic for colors makes sense, I think: - return rgb(red(a) +! red(b), green(a) +! green(b), blue(a) +! blue(b)) - - rgb(34, 55, 255) diff --git a/tests/compile/tconsteval.nim b/tests/compile/tconsteval.nim deleted file mode 100755 index dcc7080ea..000000000 --- a/tests/compile/tconsteval.nim +++ /dev/null @@ -1,31 +0,0 @@ -discard """ -""" - -import strutils - -const - HelpText = """ -+-----------------------------------------------------------------+ -| Maintenance program for Nimrod | -| Version $1| -| (c) 2009 Andreas Rumpf | -+-----------------------------------------------------------------+ -Compiled at: $2, $3 - -Usage: - koch [options] command [options for command] -Options: - --force, -f, -B, -b forces rebuild - --help, -h shows this help and quits -Possible Commands: - boot [options] bootstraps with given command line options - clean cleans Nimrod project; removes generated files - web generates the website - csource [options] builds the C sources for installation - zip builds the installation ZIP package - inno builds the Inno Setup installer -""" % [NimrodVersion & repeatChar(44-len(NimrodVersion)), - CompileDate, CompileTime] - -echo helpText - diff --git a/tests/compile/tconstraints.nim b/tests/compile/tconstraints.nim deleted file mode 100755 index 7aef0d645..000000000 --- a/tests/compile/tconstraints.nim +++ /dev/null @@ -1,15 +0,0 @@ - - -proc myGenericProc[T: object|tuple|int|ptr|ref|distinct](x: T): string = - result = $x - -type - TMyObj = tuple[x, y: int] - -var - x: TMyObj - -assert myGenericProc(232) == "232" -assert myGenericProc(x) == "(x: 0, y: 0)" - - diff --git a/tests/compile/tconvcolors.nim b/tests/compile/tconvcolors.nim deleted file mode 100755 index 07e829550..000000000 --- a/tests/compile/tconvcolors.nim +++ /dev/null @@ -1,5 +0,0 @@ - -import colors - -echo int32(colWhite), 'A' - diff --git a/tests/compile/tconvert.nim b/tests/compile/tconvert.nim deleted file mode 100755 index f96cf2688..000000000 --- a/tests/compile/tconvert.nim +++ /dev/null @@ -1,38 +0,0 @@ -import - Cairo - -converter FloatConversion64(x: int): float64 = return toFloat(x) -converter FloatConversion32(x: int): float32 = return toFloat(x) -converter FloatConversionPlain(x: int): float = return toFloat(x) - -const width = 500 -const height = 500 -const outFile = "CairoTest.png" - -var surface = Cairo.ImageSurfaceCreate(CAIRO.FORMAT_RGB24, width, height) -var ç = Cairo.Create(surface) - -ç.SetSourceRGB(1, 1, 1) -ç.Paint() - -ç.SetLineWidth(10) -ç.SetLineCap(CAIRO.LINE_CAP_ROUND) - -const count = 12 -var winc = width / count -var hinc = width / count -for i in 1 .. count-1: - var amount = i / count - ç.SetSourceRGB(0, 1 - amount, amount) - ç.MoveTo(i * winc, hinc) - ç.LineTo(width - i * winc, height - hinc) - ç.Stroke() - - ç.SetSourceRGB(1 - amount, 0, amount) - ç.MoveTo(winc, i * hinc) - ç.LineTo(width - winc, height - i * hinc) - ç.Stroke() - -echo(surface.WriteToPNG(outFile)) -surface.Destroy() - diff --git a/tests/compile/tcputime.nim b/tests/compile/tcputime.nim deleted file mode 100755 index 2fc46ee64..000000000 --- a/tests/compile/tcputime.nim +++ /dev/null @@ -1,13 +0,0 @@ - -import times, os - -var e = epochTime() -var c = cpuTime() - -os.sleep(1500) - -e = epochTime() - e -c = cpuTime() - c - -echo "epochTime: ", e, " cpuTime: ", c - diff --git a/tests/compile/tdialogs.nim b/tests/compile/tdialogs.nim deleted file mode 100755 index d161a976d..000000000 --- a/tests/compile/tdialogs.nim +++ /dev/null @@ -1,17 +0,0 @@ -# Test the dialogs module - -import dialogs, gtk2 - -gtk2.nimrod_init() - -var x = ChooseFilesToOpen(nil) -for a in items(x): - writeln(stdout, a) - -info(nil, "start with an info box") -warning(nil, "now a warning ...") -error(nil, "... and an error!") - -writeln(stdout, ChooseFileToOpen(nil)) -writeln(stdout, ChooseFileToSave(nil)) -writeln(stdout, ChooseDir(nil)) diff --git a/tests/compile/tdictdestruct.nim b/tests/compile/tdictdestruct.nim deleted file mode 100755 index 09e173b7c..000000000 --- a/tests/compile/tdictdestruct.nim +++ /dev/null @@ -1,20 +0,0 @@ - -type - TDict[TK, TV] = object - k: TK - v: TV - PDict[TK, TV] = ref TDict[TK, TV] - -proc fakeNew[T](x: var ref T, destroy: proc (a: ref T)) = - nil - -proc destroyDict[TK, TV](a: PDict[TK, TV]) = - return -proc newDict[TK, TV](a: TK, b: TV): PDict[TK, TV] = - Fakenew(result, destroyDict[TK, TV]) - -# Problem: destroyDict is not instantiated when newDict is instantiated! - -discard newDict("a", "b") - - diff --git a/tests/compile/tdiscardable.nim b/tests/compile/tdiscardable.nim deleted file mode 100644 index c0551ba2f..000000000 --- a/tests/compile/tdiscardable.nim +++ /dev/null @@ -1,13 +0,0 @@ -# Test the discardable pragma - -proc p(x, y: int): int {.discardable.} = - return x + y - -# test that it is inherited from generic procs too: -proc q[T](x, y: T): T {.discardable.} = - return x + y - - -p(8, 2) -q[float](0.8, 0.2) - diff --git a/tests/compile/tdllvar.nim b/tests/compile/tdllvar.nim deleted file mode 100755 index ab767770c..000000000 --- a/tests/compile/tdllvar.nim +++ /dev/null @@ -1,16 +0,0 @@ -import os - -proc getDllName: string = - result = "mylib.dll" - if ExistsFile(result): return - result = "mylib2.dll" - if ExistsFile(result): return - quit("could not load dynamic library") - -proc myImport(s: cstring) {.cdecl, importc, dynlib: getDllName().} -proc myImport2(s: int) {.cdecl, importc, dynlib: getDllName().} - -myImport("test2") -myImport2(12) - - diff --git a/tests/compile/tdumpast.nim b/tests/compile/tdumpast.nim deleted file mode 100755 index d044e1da1..000000000 --- a/tests/compile/tdumpast.nim +++ /dev/null @@ -1,32 +0,0 @@ -# Dump the contents of a PNimrodNode - -import macros - -template plus(a, b: expr): expr = - a + b - -macro call(e: expr): expr = - return newCall("foo", newStrLitNode("bar")) - -macro dumpAST(n: stmt): stmt = - # dump AST as a side-effect and return the inner node - echo n.lispRepr - echo n.treeRepr - - var plusAst = getAst(plus(1, 2)) - echo plusAst.lispRepr - - var callAst = getAst(call()) - echo callAst.lispRepr - - var e = parseExpr("foo(bar + baz)") - echo e.lispRepr - - result = n[1] - -dumpAST: - proc add(x, y: int): int = - return x + y - - proc sub(x, y: int): int = return x - y - diff --git a/tests/compile/tdumpast2.nim b/tests/compile/tdumpast2.nim deleted file mode 100644 index fb31af0ec..000000000 --- a/tests/compile/tdumpast2.nim +++ /dev/null @@ -1,35 +0,0 @@ -# Dump the contents of a PNimrodNode - -import macros - -proc dumpit(n: PNimrodNode): string {.compileTime.} = - if n == nil: return "nil" - result = $n.kind - add(result, "(") - case n.kind - of nnkEmpty: nil # same as nil node in this representation - of nnkNilLit: add(result, "nil") - of nnkCharLit..nnkInt64Lit: add(result, $n.intVal) - of nnkFloatLit..nnkFloat64Lit: add(result, $n.floatVal) - of nnkStrLit..nnkTripleStrLit: add(result, $n.strVal) - of nnkIdent: add(result, $n.ident) - of nnkSym, nnkNone: assert false - else: - add(result, dumpit(n[0])) - for j in 1..n.len-1: - add(result, ", ") - add(result, dumpit(n[j])) - add(result, ")") - -macro dumpAST(n: stmt): stmt = - # dump AST as a side-effect and return the inner node - echo dumpit(n) - result = n[1] - -dumpAST: - proc add(x, y: int): int = - return x + y - - proc sub(x, y: int): int = return x - y - - diff --git a/tests/compile/techo.nim b/tests/compile/techo.nim deleted file mode 100755 index 0fa4b5fe0..000000000 --- a/tests/compile/techo.nim +++ /dev/null @@ -1,3 +0,0 @@ -# Simplest Nimrod program - -echo "Hello, World!" diff --git a/tests/compile/temptyecho.nim b/tests/compile/temptyecho.nim deleted file mode 100755 index 5f1aa6515..000000000 --- a/tests/compile/temptyecho.nim +++ /dev/null @@ -1,2 +0,0 @@ -echo() - diff --git a/tests/compile/tendian.nim b/tests/compile/tendian.nim deleted file mode 100755 index 256e2653c..000000000 --- a/tests/compile/tendian.nim +++ /dev/null @@ -1,3 +0,0 @@ -# test the new endian magic - -writeln(stdout, repr(system.cpuEndian)) diff --git a/tests/compile/tenum.nim b/tests/compile/tenum.nim deleted file mode 100755 index 6e53b9c08..000000000 --- a/tests/compile/tenum.nim +++ /dev/null @@ -1,8 +0,0 @@ -# Test enums - -type - E = enum a, b, c, x, y, z - -var - en: E -en = a diff --git a/tests/compile/tenum2.nim b/tests/compile/tenum2.nim deleted file mode 100755 index feba36dd6..000000000 --- a/tests/compile/tenum2.nim +++ /dev/null @@ -1,16 +0,0 @@ -# Test that enum with holes is handled correctly by case statement - -type - TEnumHole = enum - eA = 0, - eB = 4, - eC = 5 - -var - e: TEnumHole = eB - -case e -of eA: echo "A" -of eB: echo "B" -of eC: echo "C" - diff --git a/tests/compile/tenum3.nim b/tests/compile/tenum3.nim deleted file mode 100755 index 09a516932..000000000 --- a/tests/compile/tenum3.nim +++ /dev/null @@ -1,16 +0,0 @@ -# Test enum with explicit size - -type - TEnumHole {.size: sizeof(int).} = enum - eA = 0, - eB = 4, - eC = 5 - -var - e: TEnumHole = eB - -case e -of eA: echo "A" -of eB: echo "B" -of eC: echo "C" - diff --git a/tests/compile/teval1.nim b/tests/compile/teval1.nim deleted file mode 100755 index 8172ebe28..000000000 --- a/tests/compile/teval1.nim +++ /dev/null @@ -1,19 +0,0 @@ -import macros - -proc testProc: string {.compileTime.} = - result = "" - result = result & "" - -when true: - macro test(n: stmt): stmt = - result = newNimNode(nnkStmtList) - echo "#", testProc(), "#" - test: - "hi" - -const - x = testProc() - -echo "##", x, "##" - - diff --git a/tests/compile/tfib.nim b/tests/compile/tfib.nim deleted file mode 100755 index 09a4d5038..000000000 --- a/tests/compile/tfib.nim +++ /dev/null @@ -1,11 +0,0 @@ - -iterator fibonacci(): int = - var a = 0 - var b = 1 - while true: - yield a - var c = b - b = a - a = a + c - - diff --git a/tests/compile/tforwardgeneric.nim b/tests/compile/tforwardgeneric.nim deleted file mode 100644 index 84bef15cc..000000000 --- a/tests/compile/tforwardgeneric.nim +++ /dev/null @@ -1,11 +0,0 @@ -discard """ - output: "1.0000000000000000e+00 10" -""" - -proc p[T](a, b: T): T - -echo p(0.9, 0.1), " ", p(9, 1) - -proc p[T](a, b: T): T = - result = a + b - diff --git a/tests/compile/tforwty.nim b/tests/compile/tforwty.nim deleted file mode 100755 index 0f1d3697f..000000000 --- a/tests/compile/tforwty.nim +++ /dev/null @@ -1,9 +0,0 @@ -# Test 13: forward types - -type - PSym = ref TSym - - TSym = object - next: PSym - -var s: PSym diff --git a/tests/compile/tforwty2.nim b/tests/compile/tforwty2.nim deleted file mode 100755 index 5d15e112a..000000000 --- a/tests/compile/tforwty2.nim +++ /dev/null @@ -1,22 +0,0 @@ -# Test for a hard to fix internal error -# occured in the SDL library - -{.push dynlib: "SDL.dll", callconv: cdecl.} - -type - PSDL_semaphore = ptr TSDL_semaphore - TSDL_semaphore {.final.} = object - sem: Pointer #PSem_t; - when not defined(USE_NAMED_SEMAPHORES): - sem_data: int - when defined(BROKEN_SEMGETVALUE): - # This is a little hack for MacOS X - - # It's not thread-safe, but it's better than nothing - sem_value: cint - -type - PSDL_Sem = ptr TSDL_Sem - TSDL_Sem = TSDL_Semaphore - -proc SDL_CreateSemaphore(initial_value: Int32): PSDL_Sem {. - importc: "SDL_CreateSemaphore".} diff --git a/tests/compile/tgenericmatcher.nim b/tests/compile/tgenericmatcher.nim deleted file mode 100755 index 6ff0dd505..000000000 --- a/tests/compile/tgenericmatcher.nim +++ /dev/null @@ -1,22 +0,0 @@ -discard """ - disabled: true -""" - -type - TMatcherKind = enum - mkTerminal, mkSequence, mkAlternation, mkRepeat - TMatcher[T] = object - case kind: TMatcherKind - of mkTerminal: - value: T - of mkSequence, mkAlternation: - matchers: seq[TMatcher[T]] - of mkRepeat: - matcher: PMatcher[T] - min, max: int - PMatcher[T] = ref TMatcher[T] - -var - m: PMatcher[int] - - diff --git a/tests/compile/tgenericmatcher2.nim b/tests/compile/tgenericmatcher2.nim deleted file mode 100755 index aa2f9dbb3..000000000 --- a/tests/compile/tgenericmatcher2.nim +++ /dev/null @@ -1,18 +0,0 @@ - -type - TMatcherKind = enum - mkTerminal, mkSequence, mkAlternation, mkRepeat - TMatcher[T] = object - case kind: TMatcherKind - of mkTerminal: - value: T - of mkSequence, mkAlternation: - matchers: seq[TMatcher[T]] - of mkRepeat: - matcher: ref TMatcher[T] - min, max: int - -var - m: ref TMatcher[int] - - diff --git a/tests/compile/tgenericprocvar.nim b/tests/compile/tgenericprocvar.nim deleted file mode 100755 index 7825db4c3..000000000 --- a/tests/compile/tgenericprocvar.nim +++ /dev/null @@ -1,5 +0,0 @@ -proc foo[T](thing: T) = - discard thing - -var a: proc (thing: int) = foo[int] - diff --git a/tests/compile/tgenericrefs.nim b/tests/compile/tgenericrefs.nim deleted file mode 100755 index 3b7940098..000000000 --- a/tests/compile/tgenericrefs.nim +++ /dev/null @@ -1,28 +0,0 @@ -discard """ - disabled: true -""" - -# Compiles: - -type - TA[T] = object - PA[T] = ref TA[T] -var a: PA[string] - -# Compiles unless you use var a: PA[string] -type - PA = ref TA - TA[T] = object - - -# Cannot instantiate: -type - TA[T] = object - a: PA[T] - PA[T] = ref TA[T] - -type - PA[T] = ref TA[T] - TA[T] = object - - diff --git a/tests/compile/tgenericvariant.nim b/tests/compile/tgenericvariant.nim deleted file mode 100755 index 51d01355a..000000000 --- a/tests/compile/tgenericvariant.nim +++ /dev/null @@ -1,23 +0,0 @@ -type - TMaybe[T] = object - case empty: Bool - of False: value: T - else: nil - -proc Just*[T](val: T): TMaybe[T] = - result.empty = False - result.value = val - -proc Nothing[T](): TMaybe[T] = - result.empty = True - -proc safeReadLine(): TMaybe[string] = - var r = stdin.readLine() - if r == "": return Nothing[string]() - else: return Just(r) - -when isMainModule: - var Test = Just("Test") - echo(Test.value) - var mSomething = safeReadLine() - echo(mSomething.value) diff --git a/tests/compile/tgetstartmilsecs.nim b/tests/compile/tgetstartmilsecs.nim deleted file mode 100755 index 5a3368e0f..000000000 --- a/tests/compile/tgetstartmilsecs.nim +++ /dev/null @@ -1,7 +0,0 @@ -# -import times, os - -var start = epochTime() -os.sleep(1000) - -echo epochTime() - start #OUT 1000 diff --git a/tests/compile/tgtk.nim b/tests/compile/tgtk.nim deleted file mode 100755 index 7febb0ab8..000000000 --- a/tests/compile/tgtk.nim +++ /dev/null @@ -1,51 +0,0 @@ - -import - gtk2, glib2, atk, gdk2, gdk2pixbuf, libglade2, pango, - pangoutils - -proc hello(widget: PWidget, data: pointer) {.cdecl.} = - write(stdout, "Hello World\n") - -proc delete_event(widget: PWidget, event: PEvent, - data: pointer): bool {.cdecl.} = - # If you return FALSE in the "delete_event" signal handler, - # GTK will emit the "destroy" signal. Returning TRUE means - # you don't want the window to be destroyed. - # This is useful for popping up 'are you sure you want to quit?' - # type dialogs. - write(stdout, "delete event occurred\n") - # Change TRUE to FALSE and the main window will be destroyed with - # a "delete_event". - return false - -# Another callback -proc mydestroy(widget: PWidget, data: pointer) {.cdecl.} = - gtk2.main_quit() - -proc mymain() = - # GtkWidget is the storage type for widgets - gtk2.nimrod_init() - var window = window_new(gtk2.WINDOW_TOPLEVEL) - discard g_signal_connect(window, "delete_event", - Gcallback(delete_event), nil) - discard g_signal_connect(window, "destroy", Gcallback(mydestroy), nil) - # Sets the border width of the window. - set_border_width(window, 10) - - # Creates a new button with the label "Hello World". - var button = button_new("Hello World") - - discard g_signal_connect(button, "clicked", Gcallback(hello), nil) - - # This packs the button into the window (a gtk container). - add(window, button) - - # The final step is to display this newly created widget. - show(button) - - # and the window - show(window) - - gtk2.main() - -mymain() diff --git a/tests/compile/thallo.nim b/tests/compile/thallo.nim deleted file mode 100755 index ff90c5c0a..000000000 --- a/tests/compile/thallo.nim +++ /dev/null @@ -1,83 +0,0 @@ -# Hallo - -import - os, strutils, macros - -type - TMyEnum = enum - meA, meB, meC, meD - -when isMainModule: - {.hint: "this is the main file".} - -proc fac[T](x: T): T = - # test recursive generic procs - if x <= 1: return 1 - else: return x.`*`(fac(x-1)) - -macro macrotest(n: expr): stmt = - expectKind(n, nnkCall) - expectMinLen(n, 2) - result = newNimNode(nnkStmtList, n) - for i in 2..n.len-1: - result.add(newCall("write", n[1], n[i])) - result.add(newCall("writeln", n[1], newStrLitNode(""))) - -macro debug(n: expr): stmt = - result = newNimNode(nnkStmtList, n) - for i in 1..n.len-1: - result.add(newCall("write", newIdentNode("stdout"), toStrLit(n[i]))) - result.add(newCall("write", newIdentNode("stdout"), newStrLitNode(": "))) - result.add(newCall("writeln", newIdentNode("stdout"), n[i])) - -macrotest(stdout, "finally", 4, 5, "variable", "argument lists") -macrotest(stdout) - -#GC_disable() - -echo("This was compiled by Nimrod version " & system.nimrodVersion) -writeln(stdout, "Hello", " World", "!") - -echo(["a", "b", "c", "d"].len) -for x in items(["What's", "your", "name", "?", ]): - echo(x) -var `name` = readLine(stdin) -{.breakpoint.} -echo("Hi " & thallo.name & "!\n") -debug(name) - -var testseq: seq[string] = @[ - "a", "b", "c", "d", "e" -] -echo(repr(testseq)) - -var dummy = "hello" -echo(substr(dummy, 2, 3)) - -echo($meC) - -# test tuples: -for x, y in items([(1, 2), (3, 4), (6, 1), (5, 2)]): - echo x - echo y - -proc simpleConst(): int = return 34 - -# test constant evaluation: -const - constEval3 = simpleConst() - constEval = "abc".contains('b') - constEval2 = fac(7) - -echo(constEval3) -echo(constEval) -echo(constEval2) -echo(1.`+`(2)) - -for i in 2..6: - for j in countdown(i+4, 2): - echo(fac(i * j)) - -when isMainModule: - {.hint: "this is the main file".} - diff --git a/tests/compile/thexrange.nim b/tests/compile/thexrange.nim deleted file mode 100755 index 875a5bab3..000000000 --- a/tests/compile/thexrange.nim +++ /dev/null @@ -1,8 +0,0 @@ - -type - TArray = array[0x0012..0x0013, int] - -var a: TArray - -echo a[0] #OUT 0 - diff --git a/tests/compile/tident.nim b/tests/compile/tident.nim deleted file mode 100755 index 1ed9894c6..000000000 --- a/tests/compile/tident.nim +++ /dev/null @@ -1,22 +0,0 @@ - -type - TIdObj* = object of TObject - id*: int # unique id; use this for comparisons and not the pointers - - PIdObj* = ref TIdObj - PIdent* = ref TIdent - TIdent*{.acyclic.} = object - s*: string - -proc myNewString(L: int): string {.inline.} = - result = newString(L) - if result.len == L: echo("Length correct") - else: echo("bug") - for i in 0..L-1: - if result[i] == '\0': - echo("Correct") - else: - echo("Wrong") - -var s = myNewString(8) - diff --git a/tests/compile/tindent1.nim b/tests/compile/tindent1.nim deleted file mode 100755 index 0527b6e57..000000000 --- a/tests/compile/tindent1.nim +++ /dev/null @@ -1,24 +0,0 @@ - -const romanNumbers1 = - [ - ("M", 1000), ("D", 500), ("C", 100), - ("L", 50), ("X", 10), ("V", 5), ("I", 1) ] - -const romanNumbers2 = - [ - ("M", 1000), ("D", 500), ("C", 100), - ("L", 50), ("X", 10), ("V", 5), ("I", 1) - ] - -const romanNumbers3 = - [ - ("M", 1000), ("D", 500), ("C", 100), - ("L", 50), ("X", 10), ("V", 5), ("I", 1) - ] - -const romanNumbers4 = [ - ("M", 1000), ("D", 500), ("C", 100), - ("L", 50), ("X", 10), ("V", 5), ("I", 1) - ] - - diff --git a/tests/compile/tio.nim b/tests/compile/tio.nim deleted file mode 100755 index 5ae119f77..000000000 --- a/tests/compile/tio.nim +++ /dev/null @@ -1,7 +0,0 @@ -# test the file-IO - -proc main() = - for line in lines("thello.nim"): - writeln(stdout, line) - -main() diff --git a/tests/compile/titer.nim b/tests/compile/titer.nim deleted file mode 100755 index 19a11dc4e..000000000 --- a/tests/compile/titer.nim +++ /dev/null @@ -1,44 +0,0 @@ -# Test the new iterators - -iterator xrange(fromm, to: int, step = 1): int = - var a = fromm - while a <= to: - yield a - inc(a, step) - -iterator interval[T](a, b: T): T = - var x = a - while x <= b: - yield x - inc(x) - -# -#iterator lines(filename: string): (line: string) = -# var -# f: tTextfile -# shouldClose = open(f, filename) -# if shouldClose: -# setSpace(line, 256) -# while readTextLine(f, line): -# yield line -# finally: -# if shouldClose: close(f) -# - -for i in xrange(0, 5): - for k in xrange(1, 7): - write(stdout, "test") - -for j in interval(45, 45): - write(stdout, "test2!") - write(stdout, "test3?") - -for x in items(["hi", "what's", "your", "name"]): - echo(x) - -const - stringArray = ["hi", "what's", "your", "name"] - -for i in 0..len(stringArray)-1: - echo(stringArray[i]) - diff --git a/tests/compile/titer2.nim b/tests/compile/titer2.nim deleted file mode 100755 index dab2713e8..000000000 --- a/tests/compile/titer2.nim +++ /dev/null @@ -1,51 +0,0 @@ -discard """ - output: '''true''' - cmd: "nimrod cc --gc:none --hints:on $# $#" -""" - -import hashes - -type - TSlotEnum = enum seEmpty, seFilled, seDeleted - TKeyValuePair[A, B] = tuple[slot: TSlotEnum, key: A, val: B] - TKeyValuePairSeq[A, B] = seq[TKeyValuePair[A, B]] - TTable* {.final.}[A, B] = object - data: TKeyValuePairSeq[A, B] - counter: int - -iterator mycountup(a, b: int): int = - var res = a - while res <= b: - yield res - inc(res) - -when true: - iterator pairs*[A, B](t: TTable[A, B]): tuple[key: A, val: B] = - ## iterates over any (key, value) pair in the table `t`. - for h in mycountup(0, high(t.data)): - var k = t.data[h].key - if t.data[h].slot == seFilled: yield (k, t.data[h].val) -else: - iterator pairs*(t: TTable[int, string]): tuple[key: int, val: string] = - ## iterates over any (key, value) pair in the table `t`. - for h in mycountup(0, high(t.data)): - var k = t.data[h].key - if t.data[h].slot == seFilled: yield (k, t.data[h].val) - -proc initTable*[A, B](initialSize=64): TTable[A, B] = - ## creates a new hash table that is empty. `initialSize` needs to be - ## a power of two. - result.counter = 0 - newSeq(result.data, initialSize) - -block Test1: - # generic cache does not instantiate the same iterator[types] twice. This - # means we have only one instantiation of 'h'. However, this is the same for - # a non-generic iterator! - - var t = initTable[int, string]() - for k, v in t.pairs: nil - for k, v in t.pairs: nil - -echo "true" - diff --git a/tests/compile/titer_no_tuple_unpack.nim b/tests/compile/titer_no_tuple_unpack.nim deleted file mode 100755 index da5e1bc46..000000000 --- a/tests/compile/titer_no_tuple_unpack.nim +++ /dev/null @@ -1,13 +0,0 @@ - -iterator xrange(fromm, to: int, step = 1): tuple[x, y: int] = - var a = fromm - while a <= to: - yield (a, a+1) - inc(a, step) - -for a, b in xrange(3, 7): - echo a, " ", b - -for tup in xrange(3, 7): - echo tup - diff --git a/tests/compile/tlastmod.nim b/tests/compile/tlastmod.nim deleted file mode 100755 index 75b047fc8..000000000 --- a/tests/compile/tlastmod.nim +++ /dev/null @@ -1,18 +0,0 @@ -# test the new LastModificationTime() proc - -import - os, times, strutils - -proc main() = - var - a, b: TTime - a = getLastModificationTime(ParamStr(1)) - b = getLastModificationTime(ParamStr(2)) - writeln(stdout, $a) - writeln(stdout, $b) - if a < b: - Write(stdout, "$2 is newer than $1\n" % [ParamStr(1), ParamStr(2)]) - else: - Write(stdout, "$1 is newer than $2\n" % [ParamStr(1), ParamStr(2)]) - -main() diff --git a/tests/compile/tlexer.nim b/tests/compile/tlexer.nim deleted file mode 100755 index 10a8ab51d..000000000 --- a/tests/compile/tlexer.nim +++ /dev/null @@ -1,60 +0,0 @@ -discard """ - disabled: true -""" - -# We start with a comment -# This is the same comment - -# This is a new one! - -import - lexbase, os, strutils - -type - TMyRec {.final.} = object - x, y: int # coordinates - c: char # a character - a: int32 # an integer - - PMyRec = ref TMyRec # a reference to `TMyRec` - -proc splitText(txt: string): seq[string] # splits a text into several lines - # the comment continues here - # this is not easy to parse! - -proc anotherSplit(txt: string): seq[string] = - # the comment should belong to `anotherSplit`! - # another problem: comments are statements! - -const - x = 0B0_10001110100_0000101001000111101011101111111011000101001101001001'f64 # x ~~ 1.72826e35 - myNan = 0B01111111100000101100000000001000'f32 # NAN - y = """ - a rather long text. - Over many - lines. - """ - s = "\xff" - a = {0..234} - b = {0..high(int)} - v = 0'i32 - z = 6767566'f32 - -# small test program for lexbase - -proc main*(infile: string, a, b: int, someverylongnamewithtype = 0, - anotherlongthingie = 3) = - var - myInt: int = 0 - s: seq[string] - # this should be an error! - if initBaseLexer(L, infile, 30): nil - else: - writeln(stdout, "could not open: " & infile) - writeln(stdout, "Success!") - call(3, # we use 3 - 12, # we use 12 - 43) # we use 43 - - -main(ParamStr(1), 9, 0) diff --git a/tests/compile/tlibs.nim b/tests/compile/tlibs.nim deleted file mode 100755 index 5dd70b0e8..000000000 --- a/tests/compile/tlibs.nim +++ /dev/null @@ -1,24 +0,0 @@ -# Test wether the bindings at least compile... - -import - unicode, cgi, terminal, libcurl, - parsexml, parseopt, parsecfg, - osproc, complex, - sdl, smpeg, sdl_gfx, sdl_net, sdl_mixer, sdl_ttf, - sdl_image, sdl_mixer_nosmpeg, - cursorfont, xatom, xf86vmode, xkb, xrandr, xshm, xvlib, keysym, xcms, xi, - xkblib, xrender, xutil, x, xf86dga, xinerama, xlib, xresource, xv, - gtk2, glib2, pango, gdk2, - cairowin32, cairoxlib, - odbcsql, - gl, glut, glu, glx, glext, wingl, - lua, lualib, lauxlib, mysql, sqlite3, python, tcl, - db_postgres, db_mysql, db_sqlite, ropes, sockets, browsers, httpserver, - httpclient, parseutils, unidecode, xmldom, xmldomparser, xmltree, xmlparser, - htmlparser, re, graphics, colors, pegs - -when defined(linux): - import - zlib, zipfiles - -writeln(stdout, "test compilation of binding modules") diff --git a/tests/compile/tlinearscanend.nim b/tests/compile/tlinearscanend.nim deleted file mode 100755 index 15fd0c70a..000000000 --- a/tests/compile/tlinearscanend.nim +++ /dev/null @@ -1,24 +0,0 @@ - -import strutils - -var x = 343 - -case stdin.readline.parseInt -of 0: - echo "most common case" -of 1: - {.linearScanEnd.} - echo "second most common case" -of 2: echo "unlikely: use branch table" -else: - echo "unlikely too: use branch table" - - -case x -of 23: echo "23" -of 343: echo "343" -of 21: echo "21" -else: - {.linearScanEnd.} - echo "default" - diff --git a/tests/compile/tloops.nim b/tests/compile/tloops.nim deleted file mode 100755 index 74a3992c9..000000000 --- a/tests/compile/tloops.nim +++ /dev/null @@ -1,64 +0,0 @@ -# Test nested loops and some other things - -proc andTest() = - var a = 0 == 5 and 6 == 6 - -proc incx(x: var int) = # is built-in proc - x = x + 1 - -proc decx(x: var int) = - x = x - 1 - -proc First(y: var int) = - var x: int - i_ncx(x) - if x == 10: - y = 0 - else: - if x == 0: - incx(x) - else: - x=11 - -proc TestLoops() = - var i, j: int - while i >= 0: - if i mod 3 == 0: - break - i = i + 1 - while j == 13: - j = 13 - break - break - - while True: - break - - -proc Foo(n: int): int = - var - a, old: int - b, c: bool - F_irst(a) - if a == 10: - a = 30 - elif a == 11: - a = 22 - elif a == 12: - a = 23 - elif b: - old = 12 - else: - a = 40 - - # - b = false or 2 == 0 and 3 == 9 - a = 0 + 3 * 5 + 6 + 7 + +8 # 36 - while b: - a = a + 3 - a = a + 5 - write(stdout, "Hello!") - - -# We should come till here :-) -discard Foo(345) diff --git a/tests/compile/tmacro1.nim b/tests/compile/tmacro1.nim deleted file mode 100755 index e96997c47..000000000 --- a/tests/compile/tmacro1.nim +++ /dev/null @@ -1,21 +0,0 @@ -import macros - -macro test*(a: stmt): stmt = - var nodes: tuple[a, b: int] - nodes.a = 4 - nodes[1] = 45 - - type - TTypeEx = object - x, y: int - case b: bool - of false: nil - of true: z: float - - var t: TTypeEx - t.b = true - t.z = 4.5 - -test: - "hi" - diff --git a/tests/compile/tmacrostmt.nim b/tests/compile/tmacrostmt.nim deleted file mode 100755 index 5d1403dac..000000000 --- a/tests/compile/tmacrostmt.nim +++ /dev/null @@ -1,17 +0,0 @@ -import macros -macro case_token(n: stmt): stmt = - # creates a lexical analyzer from regular expressions - # ... (implementation is an exercise for the reader :-) - nil - -case_token: # this colon tells the parser it is a macro statement -of r"[A-Za-z_]+[A-Za-z_0-9]*": - return tkIdentifier -of r"0-9+": - return tkInteger -of r"[\+\-\*\?]+": - return tkOperator -else: - return tkUnknown - -case_token: inc i diff --git a/tests/compile/tmandelbrot.nim b/tests/compile/tmandelbrot.nim deleted file mode 100644 index 1e39c8756..000000000 --- a/tests/compile/tmandelbrot.nim +++ /dev/null @@ -1,57 +0,0 @@ -discard """ - cmd: "nimrod cc --hints:on -d:release $# $#" -""" - -# -*- nimrod -*- - -import math -import os -import strutils - -type TComplex = tuple[re, im: float] - -proc `+` (a, b: TComplex): TComplex = - return (a.re + b.re, a.im + b.im) - -proc `*` (a, b: TComplex): TComplex = - result.re = a.re * b.re - a.im * b.im - result.im = a.re * b.im + a.im * b.re - -proc abs2 (a: TComplex): float = - return a.re * a.re + a.im * a.im - -var size = parseInt (paramStr (1)) -var bit = 128 -var byteAcc = 0 - -stdout.writeln ("P4") -stdout.write ($size) -stdout.write (" ") -stdout.writeln ($size) - -var fsize = float (size) -for y in 0 .. size-1: - var fy = 2.0 * float (y) / fsize - 1.0 - for x in 0 .. size-1: - var z = (0.0, 0.0) - var c = (float (2*x) / fsize - 1.5, fy) - - block iter: - for i in 0 .. 49: - z = z*z + c - if abs2 (z) >= 4.0: - break iter - byteAcc = byteAcc + bit - - if bit > 1: - bit = bit div 2 - else: - stdout.write (chr (byteAcc)) - bit = 128 - byteAcc = 0 - - if bit != 128: - stdout.write (chr (byteAcc)) - bit = 128 - byteAcc = 0 - diff --git a/tests/compile/tmarshal.nim b/tests/compile/tmarshal.nim deleted file mode 100755 index 5471d347a..000000000 --- a/tests/compile/tmarshal.nim +++ /dev/null @@ -1,65 +0,0 @@ -discard """ - output: "" -""" - -import marshal - -template testit(x: expr) = echo($$to[type(x)]($$x)) - -var x: array[0..4, array[0..4, string]] = [ - ["test", "1", "2", "3", "4"], ["test", "1", "2", "3", "4"], - ["test", "1", "2", "3", "4"], ["test", "1", "2", "3", "4"], - ["test", "1", "2", "3", "4"]] -testit(x) -var test2: tuple[name: string, s: int] = ("tuple test", 56) -testit(test2) - -type - TE = enum - blah, blah2 - - TestObj = object - test, asd: int - case test2: TE - of blah: - help: string - else: - nil - - PNode = ref TNode - TNode = object - next, prev: PNode - data: string - -proc buildList(): PNode = - new(result) - new(result.next) - new(result.prev) - result.data = "middle" - result.next.data = "next" - result.prev.data = "prev" - result.next.next = result.prev - result.next.prev = result - result.prev.next = result - result.prev.prev = result.next - -var test3: TestObj -test3.test = 42 -test3.test2 = blah -testit(test3) - -var test4: ref tuple[a, b: string] -new(test4) -test4.a = "ref string test: A" -test4.b = "ref string test: B" -testit(test4) - -var test5 = @[(0,1),(2,3),(4,5)] -testit(test5) - -var test7 = buildList() -testit(test7) - -var test6: set[char] = {'A'..'Z', '_'} -testit(test6) - diff --git a/tests/compile/tmath.nim b/tests/compile/tmath.nim deleted file mode 100755 index 6a1dae54d..000000000 --- a/tests/compile/tmath.nim +++ /dev/null @@ -1,85 +0,0 @@ -# tests for the interpreter - -proc loops(a: var int) = - nil - #var - # b: int - #b = glob - #while b != 0: - # b = b + 1 - #a = b - -proc mymax(a, b: int): int = - #loops(result) - result = a - if b > a: result = b - -proc test(a, b: int) = - var - x, y: int - x = 0 - y = 7 - if x == a + b * 3 - 7 or - x == 8 or - x == y and y > -56 and y < 699: - y = 0 - elif y == 78 and x == 0: - y = 1 - elif y == 0 and x == 0: - y = 2 - else: - y = 3 - -type - TTokType = enum - tkNil, tkType, tkConst, tkVar, tkSymbol, tkIf, - tkWhile, tkFor, tkLoop, tkCase, tkLabel, tkGoto - -proc testCase(t: TTokType): int = - case t - of tkNil, tkType, tkConst: result = 0 - of tkVar: result = 1 - of tkSymbol: result = 2 - of tkIf..tkFor: result = 3 - of tkLoop: result = 56 - else: result = -1 - test(0, 9) # test the call - -proc TestLoops() = - var - i, j: int - - while i >= 0: - if i mod 3 == 0: - break - i = i + 1 - while j == 13: - j = 13 - break - break - - while True: - break - - -var - glob: int - a: array [0..5, int] - -proc main() = - #glob = 0 - #loops( glob ) - var - res: int - s: string - #write(stdout, mymax(23, 45)) - write(stdout, "Hallo! Wie heißt du? ") - s = readLine(stdin) - # test the case statement - case s - of "Andreas": write(stdout, "Du bist mein Meister!\n") - of "Rumpf": write(stdout, "Du bist in der Familie meines Meisters!\n") - else: write(stdout, "ich kenne dich nicht!\n") - write(stdout, "Du heisst " & s & "\n") - -main() diff --git a/tests/compile/tmodulealias.nim b/tests/compile/tmodulealias.nim deleted file mode 100755 index a7d155e51..000000000 --- a/tests/compile/tmodulealias.nim +++ /dev/null @@ -1,19 +0,0 @@ -discard """ - disabled: true -""" - -when defined(windows): - import winlean -else: - import posix - -when defined(Windows): - template orig: expr = - winlean -else: - template orig: expr = - posix - -proc socket(domain, typ, protocol: int): int = - result = orig.socket(ord(domain), ord(typ), ord(protocol))) - diff --git a/tests/compile/tnamedparams.nim b/tests/compile/tnamedparams.nim deleted file mode 100755 index 4b0cd5361..000000000 --- a/tests/compile/tnamedparams.nim +++ /dev/null @@ -1,8 +0,0 @@ -import pegs - -discard parsePeg( - pattern = "input", - filename = "filename", - line = 1, - col = 23) - diff --git a/tests/compile/tnestedproc.nim b/tests/compile/tnestedproc.nim deleted file mode 100644 index 49ec6f9a7..000000000 --- a/tests/compile/tnestedproc.nim +++ /dev/null @@ -1,12 +0,0 @@ -discard """ - output: "11" -""" - -proc p(x, y: int): int = - result = x + y - -echo p((proc (): int = - var x = 7 - return x)(), - (proc (): int = return 4)()) - diff --git a/tests/compile/tnew.nim b/tests/compile/tnew.nim deleted file mode 100755 index 6527541a2..000000000 --- a/tests/compile/tnew.nim +++ /dev/null @@ -1,49 +0,0 @@ -# Test the implementation of the new operator -# and the code generation for gc walkers -# (and the garbage collector): - -type - PNode = ref TNode - TNode = object - data: int - str: string - le, ri: PNode - - TStressTest = ref array [0..45, array [1..45, TNode]] - -proc finalizer(n: PNode) = - write(stdout, n.data) - write(stdout, " is now freed\n") - -proc newNode(data: int, le, ri: PNode): PNode = - new(result, finalizer) - result.le = le - result.ri = ri - result.data = data - -# now loop and build a tree -proc main() = - var - i = 0 - p: TStressTest - while i < 1000: - var n: PNode - - n = newNode(i, nil, newNode(i + 10000, nil, nil)) - inc(i) - new(p) - - write(stdout, "Simple tree node allocation worked!\n") - i = 0 - while i < 1000: - var m = newNode(i + 20000, nil, nil) - var k = newNode(i + 30000, nil, nil) - m.le = m - m.ri = k - k.le = m - k.ri = k - inc(i) - - write(stdout, "Simple cycle allocation worked!\n") - -main() diff --git a/tests/compile/tnewlibs.nim b/tests/compile/tnewlibs.nim deleted file mode 100755 index aca2e3c30..000000000 --- a/tests/compile/tnewlibs.nim +++ /dev/null @@ -1,16 +0,0 @@ -# Test wether the bindings at least compile... - -import - tcl, - sdl, smpeg, sdl_gfx, sdl_net, sdl_mixer, sdl_ttf, - sdl_image, sdl_mixer_nosmpeg, - gtk2, glib2, pango, gdk2, - unicode, cgi, terminal, libcurl, - parsexml, parseopt, parsecfg, - osproc, - cairowin32, cairoxlib, - gl, glut, glu, glx, glext, wingl, - lua, lualib, lauxlib, mysql, sqlite3, - - -writeln(stdout, "test compilation of binding modules") diff --git a/tests/compile/tnewsets.nim b/tests/compile/tnewsets.nim deleted file mode 100755 index 415fe8f7e..000000000 --- a/tests/compile/tnewsets.nim +++ /dev/null @@ -1,6 +0,0 @@ -# new test for sets: - -const elem = ' ' - -var s: set[char] = {elem} -assert(elem in s and 'a' not_in s and 'c' not_in s ) diff --git a/tests/compile/tnewuns.nim b/tests/compile/tnewuns.nim deleted file mode 100755 index 5181e467c..000000000 --- a/tests/compile/tnewuns.nim +++ /dev/null @@ -1,12 +0,0 @@ -# test the new unsigned operations: - -import - strutils - -var - x, y: int - -x = 1 -y = high(int) - -writeln(stdout, $ ( x +% y ) ) diff --git a/tests/compile/tnimrodnode_for_runtime.nim b/tests/compile/tnimrodnode_for_runtime.nim deleted file mode 100755 index e73c8430f..000000000 --- a/tests/compile/tnimrodnode_for_runtime.nim +++ /dev/null @@ -1,13 +0,0 @@ -discard """ - output: "bla" - disabled: true -""" - -import macros -proc makeMacro: PNimrodNode = - result = nil - -var p = makeMacro() - -echo "bla" - diff --git a/tests/compile/tnoargopenarray.nim b/tests/compile/tnoargopenarray.nim deleted file mode 100755 index 872ec86d2..000000000 --- a/tests/compile/tnoargopenarray.nim +++ /dev/null @@ -1,7 +0,0 @@ - -import db_sqlite - -var db: TDbConn -Exec(db, sql"create table blabla()") - - diff --git a/tests/compile/tobjcov.nim b/tests/compile/tobjcov.nim deleted file mode 100755 index 17bc8d80d..000000000 --- a/tests/compile/tobjcov.nim +++ /dev/null @@ -1,17 +0,0 @@ -# Covariance is not type safe: - -type - TA = object - a: int - TB = object of TA - b: array[0..5000_000, int] - -proc ap(x: var TA) = x.a = -1 -proc bp(x: var TB) = x.b[high(x.b)] = -1 - -# in Nimrod proc (x: TB) is compatible to proc (x: TA), -# but this is not type safe: -var f = cast[proc (x: var TA)](bp) -var a: TA -f(a) # bp expects a TB, but gets a TA - diff --git a/tests/compile/tobject2.nim b/tests/compile/tobject2.nim deleted file mode 100755 index 8f69a6bac..000000000 --- a/tests/compile/tobject2.nim +++ /dev/null @@ -1,21 +0,0 @@ -# Tests the object implementation - -type - TPoint2d = object - x, y: int - - TPoint3d = object of TPoint2d - z: int # added a field - -proc getPoint( p: var TPoint2d) = - {.breakpoint.} - writeln(stdout, p.x) - -var - p: TPoint3d - -TPoint2d(p).x = 34 -p.y = 98 -p.z = 343 - -getPoint(p) diff --git a/tests/compile/tobjects.nim b/tests/compile/tobjects.nim deleted file mode 100755 index 8305e2838..000000000 --- a/tests/compile/tobjects.nim +++ /dev/null @@ -1,42 +0,0 @@ -type - TBase = object - x, y: int - - TSubclassKind = enum ka, kb, kc, kd, ke, kf - TSubclass = object of TBase - case c: TSubclassKind - of ka, kb, kc, kd: - a, b: int - of ke: - d, e, f: char - else: nil - n: bool - -var - global: int - -var - s: string - r: float = 0.0 - i: int = 500 + 400 - -case i -of 500..999: write(stdout, "ha!\n") -of 1000..3000, 12: write(stdout, "ganz schön groß\n") -of 1, 2, 3: write(stdout, "1 2 oder 3\n") -else: write(stdout, "sollte nicht passieren\n") - -case readLine(stdin) -of "Rumpf": write(stdout, "Hallo Meister!\n") -of "Andreas": write(stdout, "Hallo Meister!\n") -else: write(stdout, "Nicht mein Meister!\n") - -global = global + 1 -write(stdout, "Hallo wie heißt du? \n") -s = readLine(stdin) -i = 0 -while i < len(s): - if s[i] == 'c': write(stdout, "'c' in deinem Namen gefunden\n") - i = i + 1 - -write(stdout, "Du heißt " & s) diff --git a/tests/compile/toop.nim b/tests/compile/toop.nim deleted file mode 100755 index db6d9e595..000000000 --- a/tests/compile/toop.nim +++ /dev/null @@ -1,21 +0,0 @@ -discard """ - disabled: true -""" - -type - TA = object - x, y: int - - TB = object of TA - z: int - - TC = object of TB - whatever: string - -proc p(a: var TA) = nil -proc p(b: var TB) = nil - -var c: TC - -p(c) - diff --git a/tests/compile/toptions.nim b/tests/compile/toptions.nim deleted file mode 100755 index 95bb5cfbc..000000000 --- a/tests/compile/toptions.nim +++ /dev/null @@ -1,22 +0,0 @@ -# Converted by Pas2mor v1.54 -# Used command line arguments: -# -m -q -o bootstrap\options.mor options.pas -# - -type - # please make sure we have under 32 options (improves code efficiency!) - TOption = enum - optNone, optForceFullMake, optBoehmGC, optRefcGC, optRangeCheck, - optBoundsCheck, optOverflowCheck, optNilCheck, optAssert, optLineDir, - optWarns, optHints, optDeadCodeElim, optListCmd, optCompileOnly, - optSafeCode, # only allow safe code - optStyleCheck, optOptimizeSpeed, optOptimizeSize, optGenDynLib, - optGenGuiApp, optStackTrace - - TOptionset = set[TOption] - -var - gOptions: TOptionset = {optRefcGC, optRangeCheck, optBoundsCheck, - optOverflowCheck, optAssert, optWarns, optHints, optLineDir, optStackTrace} - compilerArgs: int - gExitcode: int8 diff --git a/tests/compile/tos.nim b/tests/compile/tos.nim deleted file mode 100755 index fa9993cc9..000000000 --- a/tests/compile/tos.nim +++ /dev/null @@ -1,12 +0,0 @@ -# test some things of the os module - -import os - -proc walkDirTree(root: string) = - for k, f in walkDir(root): - case k - of pcFile, pcLinkToFile: echo(f) - of pcDir: walkDirTree(f) - of pcLinkToDir: nil - -walkDirTree(".") diff --git a/tests/compile/toverprc.nim b/tests/compile/toverprc.nim deleted file mode 100755 index 43271b684..000000000 --- a/tests/compile/toverprc.nim +++ /dev/null @@ -1,27 +0,0 @@ -# Test overloading of procs when used as function pointers - -import strutils - -proc parseInt(x: float): int {.noSideEffect.} = nil -proc parseInt(x: bool): int {.noSideEffect.} = nil -proc parseInt(x: float32): int {.noSideEffect.} = nil -proc parseInt(x: int8): int {.noSideEffect.} = nil -proc parseInt(x: TFile): int {.noSideEffect.} = nil -proc parseInt(x: char): int {.noSideEffect.} = nil -proc parseInt(x: int16): int {.noSideEffect.} = nil - -type - TParseInt = proc (x: string): int {.noSideEffect.} - -var - q = TParseInt(parseInt) - p: TParseInt = parseInt - -proc takeParseInt(x: proc (y: string): int {.noSideEffect.}): int = - result = x("123") - -echo "Give a list of numbers (separated by spaces): " -var x = stdin.readline.split.each(parseInt).max -echo x, " is the maximum!" -echo "another number: ", takeParseInt(parseInt) - diff --git a/tests/compile/tparedef.nim b/tests/compile/tparedef.nim deleted file mode 100755 index dedebf6b7..000000000 --- a/tests/compile/tparedef.nim +++ /dev/null @@ -1,4 +0,0 @@ -# This test is now superfluous: - -proc a(a: int) = - return diff --git a/tests/compile/tparscfg.nim b/tests/compile/tparscfg.nim deleted file mode 100755 index 618ecadd6..000000000 --- a/tests/compile/tparscfg.nim +++ /dev/null @@ -1,25 +0,0 @@ - -import - os, parsecfg, strutils, streams - -var f = newFileStream(paramStr(1), fmRead) -if f != nil: - var p: TCfgParser - open(p, f, paramStr(1)) - while true: - var e = next(p) - case e.kind - of cfgEof: - echo("EOF!") - break - of cfgSectionStart: ## a ``[section]`` has been parsed - echo("new section: " & e.section) - of cfgKeyValuePair: - echo("key-value-pair: " & e.key & ": " & e.value) - of cfgOption: - echo("command: " & e.key & ": " & e.value) - of cfgError: - echo(e.msg) - close(p) -else: - echo("cannot open: " & paramStr(1)) diff --git a/tests/compile/tparsefloat.nim b/tests/compile/tparsefloat.nim deleted file mode 100755 index 38ed2db6d..000000000 --- a/tests/compile/tparsefloat.nim +++ /dev/null @@ -1,3 +0,0 @@ -import strutils - -echo ParseFloat("5000") / ParseFloat("10") diff --git a/tests/compile/tparsopt.nim b/tests/compile/tparsopt.nim deleted file mode 100755 index 2b2da7e51..000000000 --- a/tests/compile/tparsopt.nim +++ /dev/null @@ -1,27 +0,0 @@ -# Test the new parseopt module - -import - parseopt - -proc writeHelp() = - writeln(stdout, "Usage: tparsopt [options] filename [options]") - -proc writeVersion() = - writeln(stdout, "Version: 1.0.0") - -var - filename = "" -for kind, key, val in getopt(): - case kind - of cmdArgument: - filename = key - of cmdLongOption, cmdShortOption: - case key - of "help", "h": writeHelp() - of "version", "v": writeVersion() - else: - writeln(stdout, "Unknown command line option: ", key, ": ", val) - of cmdEnd: assert(false) # cannot happen -if filename == "": - # no filename has been given, so we show the help: - writeHelp() diff --git a/tests/compile/tposix.nim b/tests/compile/tposix.nim deleted file mode 100755 index bf0b49586..000000000 --- a/tests/compile/tposix.nim +++ /dev/null @@ -1,16 +0,0 @@ -# Test Posix interface - -when not defined(windows): - - import posix - - var - u: Tutsname - - discard uname(u) - - writeln(stdout, u.sysname) - writeln(stdout, u.nodename) - writeln(stdout, u.release) - writeln(stdout, u.machine) - diff --git a/tests/compile/tprep.nim b/tests/compile/tprep.nim deleted file mode 100755 index 4ef9e2543..000000000 --- a/tests/compile/tprep.nim +++ /dev/null @@ -1,30 +0,0 @@ -# Test the features that used to belong to the preprocessor - -import - times - -#{.warning: "This is only a test warning!".} - -const - case2 = true - case3 = true - -when defined(case1): - {.hint: "Case 1".} - when case3: - {.hint: "Case 1.3".} -elif case2: - {.hint: "Case 2".} - when case3: - {.hint: "Case 2.3".} -elif case3: - {.hint: "Case 3".} -else: - {.hint: "unknown case".} - -var - s: string -write(stdout, "compiled at " & system.compileDate & - " " & compileTime & "\n") -echo getDateStr() -echo getClockStr() diff --git a/tests/compile/tpush.nim b/tests/compile/tpush.nim deleted file mode 100755 index 5fb411a79..000000000 --- a/tests/compile/tpush.nim +++ /dev/null @@ -1,15 +0,0 @@ -# test the new pragmas - -{.push warnings: off, hints: off.} -proc noWarning() = - var - x: int - echo(x) - -{.pop.} - -proc WarnMe() = - var - x: int - echo(x) - diff --git a/tests/compile/tquicksort.nim b/tests/compile/tquicksort.nim deleted file mode 100755 index 6706a185e..000000000 --- a/tests/compile/tquicksort.nim +++ /dev/null @@ -1,26 +0,0 @@ -proc QuickSort(list: seq[int]): seq[int] = - if len(list) == 0: - return @[] - var pivot = list[0] - var left: seq[int] = @[] - var right: seq[int] = @[] - for i in low(list)..high(list): - if list[i] < pivot: - left.add(list[i]) - elif list[i] > pivot: - right.add(list[i]) - result = QuickSort(left) & - pivot & - QuickSort(right) - -proc echoSeq(a: seq[int]) = - for i in low(a)..high(a): - echo(a[i]) - -var - list: seq[int] - -list = QuickSort(@[89,23,15,23,56,123,356,12,7,1,6,2,9,4,3]) -echoSeq(list) - - diff --git a/tests/compile/tquit.nim b/tests/compile/tquit.nim deleted file mode 100755 index d4dc1522d..000000000 --- a/tests/compile/tquit.nim +++ /dev/null @@ -1,6 +0,0 @@ -# Test the new beforeQuit variable: - -proc myExit() {.noconv.} = - write(stdout, "just exiting...\n") - -addQuitProc(myExit) diff --git a/tests/compile/tradix.nim b/tests/compile/tradix.nim deleted file mode 100755 index e7ca210e4..000000000 --- a/tests/compile/tradix.nim +++ /dev/null @@ -1,319 +0,0 @@ -# implements and tests an efficient radix tree - -## another method to store an efficient array of pointers: -## We use a radix tree with node compression. -## There are two node kinds: - -const bitsPerUnit = 8*sizeof(int) - -type - TRadixNodeKind = enum rnLinear, rnFull, rnLeafBits, rnLeafLinear - PRadixNode = ptr TRadixNode - TRadixNode {.pure.} = object - kind: TRadixNodeKind - TRadixNodeLinear = object of TRadixNode - len: byte - keys: array [0..31, byte] - vals: array [0..31, PRadixNode] - - TRadixNodeFull = object of TRadixNode - b: array [0..255, PRadixNode] - TRadixNodeLeafBits = object of TRadixNode - b: array [0..7, int] - TRadixNodeLeafLinear = object of TRadixNode - len: byte - keys: array [0..31, byte] - -var - root: PRadixNode - -proc searchInner(r: PRadixNode, a: int): PRadixNode = - case r.kind - of rnLinear: - var x = cast[ptr TRadixNodeLinear](r) - for i in 0..ze(x.len)-1: - if ze(x.keys[i]) == a: return x.vals[i] - of rnFull: - var x = cast[ptr TRadixNodeFull](r) - return x.b[a] - else: assert(false) - -proc testBit(w, i: int): bool {.inline.} = - result = (w and (1 shl (i %% BitsPerUnit))) != 0 - -proc setBit(w: var int, i: int) {.inline.} = - w = w or (1 shl (i %% bitsPerUnit)) - -proc resetBit(w: var int, i: int) {.inline.} = - w = w and not (1 shl (i %% bitsPerUnit)) - -proc testOrSetBit(w: var int, i: int): bool {.inline.} = - var x = (1 shl (i %% bitsPerUnit)) - if (w and x) != 0: return true - w = w or x - -proc searchLeaf(r: PRadixNode, a: int): bool = - case r.kind - of rnLeafBits: - var x = cast[ptr TRadixNodeLeafBits](r) - return testBit(x.b[a /% BitsPerUnit], a) - of rnLeafLinear: - var x = cast[ptr TRadixNodeLeafLinear](r) - for i in 0..ze(x.len)-1: - if ze(x.keys[i]) == a: return true - else: assert(false) - -proc exclLeaf(r: PRadixNode, a: int) = - case r.kind - of rnLeafBits: - var x = cast[ptr TRadixNodeLeafBits](r) - resetBit(x.b[a /% BitsPerUnit], a) - of rnLeafLinear: - var x = cast[ptr TRadixNodeLeafLinear](r) - var L = ze(x.len) - for i in 0..L-1: - if ze(x.keys[i]) == a: - x.keys[i] = x.keys[L-1] - dec(x.len) - return - else: assert(false) - -proc in_Operator*(r: PRadixNode, a: TAddress): bool = - if r == nil: return false - var x = searchInner(r, a shr 24 and 0xff) - if x == nil: return false - x = searchInner(x, a shr 16 and 0xff) - if x == nil: return false - x = searchInner(x, a shr 8 and 0xff) - if x == nil: return false - return searchLeaf(x, a and 0xff) - -proc excl*(r: PRadixNode, a: TAddress): bool = - if r == nil: return false - var x = searchInner(r, a shr 24 and 0xff) - if x == nil: return false - x = searchInner(x, a shr 16 and 0xff) - if x == nil: return false - x = searchInner(x, a shr 8 and 0xff) - if x == nil: return false - exclLeaf(x, a and 0xff) - -proc addLeaf(r: var PRadixNode, a: int): bool = - if r == nil: - # a linear node: - var x = cast[ptr TRadixNodeLinear](alloc(sizeof(TRadixNodeLinear))) - x.kind = rnLeafLinear - x.len = 1'i8 - x.keys[0] = toU8(a) - r = x - return false # not already in set - case r.kind - of rnLeafBits: - var x = cast[ptr TRadixNodeLeafBits](r) - return testOrSetBit(x.b[a /% BitsPerUnit], a) - of rnLeafLinear: - var x = cast[ptr TRadixNodeLeafLinear](r) - var L = ze(x.len) - for i in 0..L-1: - if ze(x.keys[i]) == a: return true - if L <= high(x.keys): - x.keys[L] = toU8(a) - inc(x.len) - else: - # transform into a full node: - var y = cast[ptr TRadixNodeLeafBits](alloc0(sizeof(TRadixNodeLeafBits))) - y.kind = rnLeafBits - for i in 0..ze(x.len)-1: - var u = ze(x.keys[i]) - setBit(y.b[u /% BitsPerUnit], u) - setBit(y.b[a /% BitsPerUnit], a) - dealloc(r) - r = y - else: assert(false) - -proc addInner(r: var PRadixNode, a: int, d: int): bool = - if d == 0: - return addLeaf(r, a and 0xff) - var k = a shr d and 0xff - if r == nil: - # a linear node: - var x = cast[ptr TRadixNodeLinear](alloc(sizeof(TRadixNodeLinear))) - x.kind = rnLinear - x.len = 1'i8 - x.keys[0] = toU8(k) - r = x - return addInner(x.vals[0], a, d-8) - case r.kind - of rnLinear: - var x = cast[ptr TRadixNodeLinear](r) - var L = ze(x.len) - for i in 0..L-1: - if ze(x.keys[i]) == k: # already exists - return addInner(x.vals[i], a, d-8) - if L <= high(x.keys): - x.keys[L] = toU8(k) - inc(x.len) - return addInner(x.vals[L], a, d-8) - else: - # transform into a full node: - var y = cast[ptr TRadixNodeFull](alloc0(sizeof(TRadixNodeFull))) - y.kind = rnFull - for i in 0..L-1: y.b[ze(x.keys[i])] = x.vals[i] - dealloc(r) - r = y - return addInner(y.b[k], a, d-8) - of rnFull: - var x = cast[ptr TRadixNodeFull](r) - return addInner(x.b[k], a, d-8) - else: assert(false) - -proc incl*(r: var PRadixNode, a: TAddress) {.inline.} = - discard addInner(r, a, 24) - -proc testOrIncl*(r: var PRadixNode, a: TAddress): bool {.inline.} = - return addInner(r, a, 24) - -iterator innerElements(r: PRadixNode): tuple[prefix: int, n: PRadixNode] = - if r != nil: - case r.kind - of rnFull: - var r = cast[ptr TRadixNodeFull](r) - for i in 0..high(r.b): - if r.b[i] != nil: - yield (i, r.b[i]) - of rnLinear: - var r = cast[ptr TRadixNodeLinear](r) - for i in 0..ze(r.len)-1: - yield (ze(r.keys[i]), r.vals[i]) - else: assert(false) - -iterator leafElements(r: PRadixNode): int = - if r != nil: - case r.kind - of rnLeafBits: - var r = cast[ptr TRadixNodeLeafBits](r) - # iterate over any bit: - for i in 0..high(r.b): - if r.b[i] != 0: # test all bits for zero - for j in 0..BitsPerUnit-1: - if testBit(r.b[i], j): - yield i*BitsPerUnit+j - of rnLeafLinear: - var r = cast[ptr TRadixNodeLeafLinear](r) - for i in 0..ze(r.len)-1: - yield ze(r.keys[i]) - else: assert(false) - -iterator elements*(r: PRadixNode): TAddress {.inline.} = - for p1, n1 in innerElements(r): - for p2, n2 in innerElements(n1): - for p3, n3 in innerElements(n2): - for p4 in leafElements(n3): - yield p1 shl 24 or p2 shl 16 or p3 shl 8 or p4 - -proc main() = - const - numbers = [128, 1, 2, 3, 4, 255, 17, -8, 45, 19_000] - var - r: PRadixNode = nil - for x in items(numbers): - echo testOrIncl(r, x) - for x in elements(r): echo(x) - -main() - - -when false: - proc traverse(r: PRadixNode, prefix: int, d: int) = - if r == nil: return - case r.kind - of rnLeafBits: - assert(d == 0) - var x = cast[ptr TRadixNodeLeafBits](r) - # iterate over any bit: - for i in 0..high(x.b): - if x.b[i] != 0: # test all bits for zero - for j in 0..BitsPerUnit-1: - if testBit(x.b[i], j): - visit(prefix or i*BitsPerUnit+j) - of rnLeafLinear: - assert(d == 0) - var x = cast[ptr TRadixNodeLeafLinear](r) - for i in 0..ze(x.len)-1: - visit(prefix or ze(x.keys[i])) - of rnFull: - var x = cast[ptr TRadixNodeFull](r) - for i in 0..high(r.b): - if r.b[i] != nil: - traverse(r.b[i], prefix or (i shl d), d-8) - of rnLinear: - var x = cast[ptr TRadixNodeLinear](r) - for i in 0..ze(x.len)-1: - traverse(x.vals[i], prefix or (ze(x.keys[i]) shl d), d-8) - - type - TRadixIter {.final.} = object - r: PRadixNode - p: int - x: int - - proc init(i: var TRadixIter, r: PRadixNode) = - i.r = r - i.x = 0 - i.p = 0 - - proc nextr(i: var TRadixIter): PRadixNode = - if i.r == nil: return nil - case i.r.kind - of rnFull: - var r = cast[ptr TRadixNodeFull](i.r) - while i.x <= high(r.b): - if r.b[i.x] != nil: - i.p = i.x - return r.b[i.x] - inc(i.x) - of rnLinear: - var r = cast[ptr TRadixNodeLinear](i.r) - if i.x < ze(r.len): - i.p = ze(r.keys[i.x]) - result = r.vals[i.x] - inc(i.x) - else: assert(false) - - proc nexti(i: var TRadixIter): int = - result = -1 - case i.r.kind - of rnLeafBits: - var r = cast[ptr TRadixNodeLeafBits](i.r) - # iterate over any bit: - for i in 0..high(r.b): - if x.b[i] != 0: # test all bits for zero - for j in 0..BitsPerUnit-1: - if testBit(x.b[i], j): - visit(prefix or i*BitsPerUnit+j) - of rnLeafLinear: - var r = cast[ptr TRadixNodeLeafLinear](i.r) - if i.x < ze(r.len): - result = ze(r.keys[i.x]) - inc(i.x) - - iterator elements(r: PRadixNode): TAddress {.inline.} = - var - a, b, c, d: TRadixIter - init(a, r) - while true: - var x = nextr(a) - if x != nil: - init(b, x) - while true: - var y = nextr(b) - if y != nil: - init(c, y) - while true: - var z = nextr(c) - if z != nil: - init(d, z) - while true: - var q = nexti(d) - if q != -1: - yield a.p shl 24 or b.p shl 16 or c.p shl 8 or q diff --git a/tests/compile/treadln.nim b/tests/compile/treadln.nim deleted file mode 100755 index 1117ab5f9..000000000 --- a/tests/compile/treadln.nim +++ /dev/null @@ -1,12 +0,0 @@ -# test the improved readline handling that does not care whether its -# Macintosh, Unix or Windows text format. - -var - inp: TFile - line: string - -if open(inp, "readme.txt"): - while not EndOfFile(inp): - line = readLine(inp) - echo("#" & line & "#") - close(inp) diff --git a/tests/compile/treadx.nim b/tests/compile/treadx.nim deleted file mode 100755 index 13acb0514..000000000 --- a/tests/compile/treadx.nim +++ /dev/null @@ -1,12 +0,0 @@ -import posix - -var inp = "" -var buf: array[0..10, char] -while true: - var r = read(0, addr(buf), sizeof(buf)-1) - add inp, $buf - if r != sizeof(buf)-1: break - -echo inp -#dafkladskölklödsaf ölksdakölfölksfklwe4iojr389wr 89uweokf sdlkf jweklr jweflksdj fioewjfsdlfsd - diff --git a/tests/compile/trecmod.nim b/tests/compile/trecmod.nim deleted file mode 100755 index 9d39d3ff7..000000000 --- a/tests/compile/trecmod.nim +++ /dev/null @@ -1,2 +0,0 @@ -# recursive module -import mrecmod diff --git a/tests/compile/trecmod2.nim b/tests/compile/trecmod2.nim deleted file mode 100755 index 85fe2215f..000000000 --- a/tests/compile/trecmod2.nim +++ /dev/null @@ -1,10 +0,0 @@ -type - T1* = int # Module A exports the type ``T1`` - -import mrecmod2 # the compiler starts parsing B - -proc main() = - var i = p(3) # works because B has been parsed completely here - -main() - diff --git a/tests/compile/trectuple.nim b/tests/compile/trectuple.nim deleted file mode 100755 index 4d5febbfa..000000000 --- a/tests/compile/trectuple.nim +++ /dev/null @@ -1,9 +0,0 @@ - -type - PNode = ref TNode - TNode = tuple[self: PNode] - -var node: PNode -new(node) -node.self = node - diff --git a/tests/compile/trectuples.nim b/tests/compile/trectuples.nim deleted file mode 100644 index c59cfe880..000000000 --- a/tests/compile/trectuples.nim +++ /dev/null @@ -1,10 +0,0 @@ - -type Node = tuple[left: ref Node] - -proc traverse(root: ref Node) = - if root.left != nil: traverse(root.left) - -type A = tuple[B: ptr A] -proc C(D: ptr A) = C(D.B) - - diff --git a/tests/compile/trepr.nim b/tests/compile/trepr.nim deleted file mode 100755 index b15081e48..000000000 --- a/tests/compile/trepr.nim +++ /dev/null @@ -1,32 +0,0 @@ -# test the new "repr" built-in proc - -type - TEnum = enum - en1, en2, en3, en4, en5, en6 - - TPoint {.final.} = object - x, y, z: int - s: array [0..1, string] - e: TEnum - -var - p: TPoint - q: ref TPoint - s: seq[ref TPoint] - -p.x = 0 -p.y = 13 -p.z = 45 -p.s[0] = "abc" -p.s[1] = "xyz" -p.e = en6 - -new(q) -q[] = p - -s = @[q, q, q, q] - -writeln(stdout, repr(p)) -writeln(stdout, repr(q)) -writeln(stdout, repr(s)) -writeln(stdout, repr(en4)) diff --git a/tests/compile/tseq2.nim b/tests/compile/tseq2.nim deleted file mode 100755 index 03bdb3fab..000000000 --- a/tests/compile/tseq2.nim +++ /dev/null @@ -1,13 +0,0 @@ - - -proc `*` *(a, b: seq[int]): seq[int] = - # allocate a new sequence: - newSeq(result, len(a)) - # multiply two int sequences: - for i in 0..len(a)-1: result[i] = a[i] * b[i] - -when isMainModule: - # test the new ``*`` operator for sequences: - assert(@[1, 2, 3] * @[1, 2, 3] == @[1, 4, 9]) - - diff --git a/tests/compile/tseqcon2.nim b/tests/compile/tseqcon2.nim deleted file mode 100755 index 4f2763ffe..000000000 --- a/tests/compile/tseqcon2.nim +++ /dev/null @@ -1,9 +0,0 @@ -import os - -proc rec_dir(dir: string): seq[string] = - result = @[] - for kind, path in walk_dir(dir): - if kind == pcDir: - add(result, rec_dir(path)) - else: - add(result, path) diff --git a/tests/compile/tshadow_magic_type.nim b/tests/compile/tshadow_magic_type.nim deleted file mode 100755 index 5cd27435e..000000000 --- a/tests/compile/tshadow_magic_type.nim +++ /dev/null @@ -1,24 +0,0 @@ -type - TListItemType* = enum - RedisNil, RedisString - - TListItem* = object - case kind*: TListItemType - of RedisString: - str*: string - else: nil - TRedisList* = seq[TListItem] - -# Caused by this. -proc seq*() = - nil - -proc lrange*(key: string): TRedisList = - var foo: TListItem - foo.kind = RedisNil - result = @[foo] - -when isMainModule: - var p = lrange("mylist") - for i in items(p): - echo(i.str) diff --git a/tests/compile/tsizeof.nim b/tests/compile/tsizeof.nim deleted file mode 100755 index f7b70dd4d..000000000 --- a/tests/compile/tsizeof.nim +++ /dev/null @@ -1,10 +0,0 @@ -# Test the sizeof proc - -type - TMyRecord {.final.} = object - x, y: int - b: bool - r: float - s: string - -write(stdout, sizeof(TMyRecord)) diff --git a/tests/compile/tslurp.nim b/tests/compile/tslurp.nim deleted file mode 100644 index c99fefe23..000000000 --- a/tests/compile/tslurp.nim +++ /dev/null @@ -1,6 +0,0 @@ - -const - myRes = slurp"readme.txt" - -echo myRes - diff --git a/tests/compile/tsockets.nim b/tests/compile/tsockets.nim deleted file mode 100755 index cc7d18b87..000000000 --- a/tests/compile/tsockets.nim +++ /dev/null @@ -1,11 +0,0 @@ -import sockets -var s: TSocket -s = socket() - -s.connect("www.google.com", TPort(80)) - -var recvData: string = "" -echo(s.recvLine(recvData)) -echo(recvData) - - diff --git a/tests/compile/tsortdev.nim b/tests/compile/tsortdev.nim deleted file mode 100755 index c4e63fab4..000000000 --- a/tests/compile/tsortdev.nim +++ /dev/null @@ -1,72 +0,0 @@ -discard """ - disabled: true -""" - -import math, algorithm - -proc sorted[T](a: openArray[T], order: TSortOrder): bool = - result = true - for i in 0 .. < a.high: - if cmp(a[i], a[i+1]) * order > 0: - echo "Out of order: ", a[i], " ", a[i+1] - result = false - -proc bubbleSort[T](a: var openArray[T], - cmp: proc (x, y: T): int = cmp, - order = TSortOrder.Ascending) = - while true: - var sorted = true - for i in 0 .. a.len-2: - if cmp(a[i], a[i+1]) * order > 0: - swap(a[i], a[i+1]) - sorted = false - if sorted: break - -when isMainModule: - proc main() = - const order = Ascending - var data: seq[string] = @[] - - for i in 0..10_000: - var L = random(59) - setLen(data, L) - for j in 0 .. L-1: - data[j] = $(math.random(90) - 10) - var copy = data - sort(data, cmp, order) - if not sorted(data, order): - #for x in items(data): echo x - break - else: - echo "SUCCESS!" - bubblesort(copy, cmp, order) - if copy.len != data.len: - quit "lengths differ!" - for i in 0 .. copy.high: - if copy[i] != data[i]: - quit "algorithms differ!" - - for i in 0..10_000: - var data: seq[int] = @[] - var L = random(59) - setLen(data, L) - for j in 0 .. L-1: - data[j] = (math.random(90) - 10) - var copy = data - sort(data, cmp[int], order) - if not sorted(data, order): - #for x in items(data): echo x - break - else: - echo "SUCCESS!" - bubblesort(copy) - if copy.len != data.len: - quit "lengths differ!" - for i in 0 .. copy.high: - if copy[i] != data[i]: - quit "algorithms differ!" - - main() - -echo "done" - diff --git a/tests/compile/tspecialised_is_equivalent.nim b/tests/compile/tspecialised_is_equivalent.nim deleted file mode 100755 index 60b976e90..000000000 --- a/tests/compile/tspecialised_is_equivalent.nim +++ /dev/null @@ -1,15 +0,0 @@ -## -## specialised_is_equivalent Nimrod Module -## -## Created by Eric Doughty-Papassideris on 2011-02-16. -## Copyright (c) 2011 FWA. All rights reserved. - -type - TGen[T] = tuple[a: T] - TSpef = tuple[a: string] - -var - a: TGen[string] - b: TSpef -a = b - diff --git a/tests/compile/tstrace.nim b/tests/compile/tstrace.nim deleted file mode 100755 index 3032a34a3..000000000 --- a/tests/compile/tstrace.nim +++ /dev/null @@ -1,16 +0,0 @@ -# Test the new stacktraces (great for debugging!) - -{.push stack_trace: on.} - -proc recTest(i: int) = - # enter - if i < 10: - recTest(i+1) - else: # should printStackTrace() - var p: ptr int = nil - p[] = 12 - # leave - -{.pop.} - -recTest(0) diff --git a/tests/compile/tstrdesc.nim b/tests/compile/tstrdesc.nim deleted file mode 100755 index 1c2e85b4b..000000000 --- a/tests/compile/tstrdesc.nim +++ /dev/null @@ -1,14 +0,0 @@ -var - x: array [0..2, int] - -x = [0, 1, 2] - -type - TStringDesc {.final.} = object - len, space: int # len and space without counting the terminating zero - data: array [0..0, char] # for the '\0' character - -var - emptyString {.exportc: "emptyString".}: TStringDesc - - diff --git a/tests/compile/tstrdist.nim b/tests/compile/tstrdist.nim deleted file mode 100755 index 3e1939e73..000000000 --- a/tests/compile/tstrdist.nim +++ /dev/null @@ -1,26 +0,0 @@ -# compute the edit distance between two strings - -proc editDistance(a, b: string): int = - var - c: seq[int] - n = a.len - m = b.len - newSeq(c, (n+1)*(m+1)) - for i in 0..n: - c[i*n] = i # [i,0] - for j in 0..m: - c[j] = j # [0,j] - - for i in 1..n: - for j in 1..m: - var x = c[(i-1)*n + j]+1 - var y = c[i*n + j-1]+1 - var z: int - if a[i-1] == b[j-1]: - z = c[(i-1)*n + j-1] - else: - z = c[(i-1)*n + j-1]+1 - c[(i-1)*n + (j-1)] = min(x,min(y,z)) - return c[n*m] - -write(stdout, editDistance("abc", "abd")) diff --git a/tests/compile/tstreams.nim b/tests/compile/tstreams.nim deleted file mode 100755 index 640565a27..000000000 --- a/tests/compile/tstreams.nim +++ /dev/null @@ -1,7 +0,0 @@ -import streams - -var outp = newFileStream(stdout) -var inp = newFileStream(stdin) -write(outp, "Hello! What is your name?") -var line = readLine(inp) -write(outp, "Nice name: " & line) diff --git a/tests/compile/tstrset.nim b/tests/compile/tstrset.nim deleted file mode 100755 index e19ccee4d..000000000 --- a/tests/compile/tstrset.nim +++ /dev/null @@ -1,74 +0,0 @@ -# test a simple yet highly efficient set of strings - -type - TRadixNodeKind = enum rnLinear, rnFull, rnLeaf - PRadixNode = ref TRadixNode - TRadixNode = object - kind: TRadixNodeKind - TRadixNodeLinear = object of TRadixNode - len: byte - keys: array [0..31, char] - vals: array [0..31, PRadixNode] - TRadixNodeFull = object of TRadixNode - b: array [char, PRadixNode] - TRadixNodeLeaf = object of TRadixNode - s: string - PRadixNodeLinear = ref TRadixNodeLinear - PRadixNodeFull = ref TRadixNodeFull - PRadixNodeLeaf = ref TRadixNodeLeaf - -proc search(r: PRadixNode, s: string): PRadixNode = - var r = r - var i = 0 - while r != nil: - case r.kind - of rnLinear: - var x = PRadixNodeLinear(r) - for j in 0..ze(x.len)-1: - if x.keys[j] == s[i]: - if s[i] == '\0': return r - r = x.vals[j] - inc(i) - break - break # character not found - of rnFull: - var x = PRadixNodeFull(r) - var y = x.b[s[i]] - if s[i] == '\0': - return if y != nil: r else: nil - r = y - inc(i) - of rnLeaf: - var x = PRadixNodeLeaf(r) - var j = 0 - while true: - if x.s[j] != s[i]: return nil - if s[i] == '\0': return r - inc(j) - inc(i) - -proc in_Operator*(r: PRadixNode, s: string): bool = - return search(r, s) != nil - -proc testOrincl*(r: var PRadixNode, s: string): bool = - nil - -proc incl*(r: var PRadixNode, s: string) = discard testOrIncl(r, s) - -proc excl*(r: var PRadixNode, s: string) = - var x = search(r, s) - if x == nil: return - case x.kind - of rnLeaf: PRadixNodeLeaf(x).s = "" - of rnFull: PRadixNodeFull(x).b['\0'] = nil - of rnLinear: - var x = PRadixNodeLinear(x) - for i in 0..ze(x.len)-1: - if x.keys[i] == '\0': - swap(x.keys[i], x.keys[ze(x.len)-1]) - dec(x.len) - break - -var - root: PRadixNode - diff --git a/tests/compile/tstrtabs.nim b/tests/compile/tstrtabs.nim deleted file mode 100755 index 251ec77ef..000000000 --- a/tests/compile/tstrtabs.nim +++ /dev/null @@ -1,12 +0,0 @@ -import strtabs - -var tab = newStringTable({"key1": "val1", "key2": "val2"}, - modeStyleInsensitive) -for i in 0..80: - tab["key_" & $i] = "value" & $i - -for key, val in pairs(tab): - writeln(stdout, key, ": ", val) -writeln(stdout, "length of table ", $tab.len) - -writeln(stdout, `%`("$key1 = $key2; ${PATH}", tab, {useEnvironment})) diff --git a/tests/compile/ttableconstr.nim b/tests/compile/ttableconstr.nim deleted file mode 100755 index 9433e9985..000000000 --- a/tests/compile/ttableconstr.nim +++ /dev/null @@ -1,16 +0,0 @@ -# Test if the new table constructor syntax works: - -template ignoreExpr(e: expr): stmt = - nil - -# test first class '..' syntactical citizen: -ignoreExpr x <> 2..4 -# test table constructor: -ignoreExpr({:}) -ignoreExpr({2: 3, "key": "value"}) - -# NEW: -assert 56 in 50..100 - -assert 56 in ..60 - diff --git a/tests/compile/ttempl.nim b/tests/compile/ttempl.nim deleted file mode 100755 index 2c4785325..000000000 --- a/tests/compile/ttempl.nim +++ /dev/null @@ -1,27 +0,0 @@ -# Test the new template file mechanism - -import - os, times - -include "sunset.tmpl" - -const - tabs = [["home", "index"], - ["news", "news"], - ["documentation", "documentation"], - ["download", "download"], - ["FAQ", "question"], - ["links", "links"]] - - -var i = 0 -for item in items(tabs): - var content = $i - var file: TFile - if open(file, changeFileExt(item[1], "html"), fmWrite): - write(file, sunsetTemplate(current=item[1], ticker="", content=content, - tabs=tabs)) - close(file) - else: - write(stdout, "cannot open file for writing") - inc(i) diff --git a/tests/compile/ttempl3.nim b/tests/compile/ttempl3.nim deleted file mode 100755 index 7b2c70f79..000000000 --- a/tests/compile/ttempl3.nim +++ /dev/null @@ -1,42 +0,0 @@ - -template withOpenFile(f: expr, filename: string, mode: TFileMode, - actions: stmt): stmt = - block: - var f: TFile - if open(f, filename, mode): - try: - actions - finally: - close(f) - else: - quit("cannot open for writing: " & filename) - -withOpenFile(txt, "ttempl3.txt", fmWrite): - writeln(txt, "line 1") - txt.writeln("line 2") - -# Test zero argument template: -template ha: expr = myVar[0] - -var - myVar: array[0..1, int] - -ha = 1 -echo(ha) - - -# Test identifier generation: -template prefix(name: expr): expr = `"hu" name` - -var `hu "XYZ"` = "yay" - -echo prefix(XYZ) - -template typedef(name: expr, typ: typeDesc) = - type - `T name`* = typ - `P name`* = ref `T name` - -typedef(myint, int) -var x: PMyInt - diff --git a/tests/compile/ttempl4.nim b/tests/compile/ttempl4.nim deleted file mode 100755 index a5ad2000f..000000000 --- a/tests/compile/ttempl4.nim +++ /dev/null @@ -1,8 +0,0 @@ - -template `:=`(name, val: expr): stmt = - var name = val - -ha := 1 * 4 -hu := "ta-da" == "ta-da" -echo ha, hu - diff --git a/tests/compile/ttempl5.nim b/tests/compile/ttempl5.nim deleted file mode 100644 index 85692e97b..000000000 --- a/tests/compile/ttempl5.nim +++ /dev/null @@ -1,5 +0,0 @@ - -import mtempl5 - -echo templ() - diff --git a/tests/compile/ttemplreturntype.nim b/tests/compile/ttemplreturntype.nim deleted file mode 100755 index 642fa1b72..000000000 --- a/tests/compile/ttemplreturntype.nim +++ /dev/null @@ -1,4 +0,0 @@ - -template `=~` (a: int, b: int): bool = false -var foo = 2 =~ 3 - diff --git a/tests/compile/tthread_generic.nim b/tests/compile/tthread_generic.nim deleted file mode 100644 index beae4b652..000000000 --- a/tests/compile/tthread_generic.nim +++ /dev/null @@ -1,39 +0,0 @@ -discard """ - cmd: "nimrod cc --hints:on --threads:on $# $#" -""" - -type - TThreadFuncArgs[T] = object of TObject - a: proc(): T {.thread.} - b: proc(val: T) {.thread.} - -proc handleThreadFunc(arg: TThreadFuncArgs[int]){.thread.} = - var func = arg.a - var callback = arg.b - var output = func() - callback(output) - -proc `@||->`*[T](func: proc(): T {.thread.}, - callback: proc(val: T){.thread.}): TThread[TThreadFuncArgs[T]] = - var thr: TThread[TThreadFuncArgs[T]] - var args: TThreadFuncArgs[T] - args.a = func - args.b = callback - createThread(thr, handleThreadFunc, args) - return thr - -proc `||->`*[T](func: proc(): T{.thread.}, callback: proc(val: T){.thread.}) = - discard func @||-> callback - -when isMainModule: - import os - proc testFunc(): int {.thread.} = - return 1 - proc callbackFunc(val: int) {.thread.} = - echo($(val)) - - var thr = (testFunc @||-> callbackFunc) - echo("test") - joinThread(thr) - os.sleep(3000) - diff --git a/tests/compile/ttime.nim b/tests/compile/ttime.nim deleted file mode 100755 index bad818816..000000000 --- a/tests/compile/ttime.nim +++ /dev/null @@ -1,6 +0,0 @@ -# test the new time module - -import - times - -write(stdout, $getTime()) diff --git a/tests/compile/ttuple1.nim b/tests/compile/ttuple1.nim deleted file mode 100755 index 5787cc309..000000000 --- a/tests/compile/ttuple1.nim +++ /dev/null @@ -1,16 +0,0 @@ -const romanNumbers = [ - ("M", 1000), ("D", 500), ("C", 100), - ("L", 50), ("X", 10), ("V", 5), ("I", 1) ] - -var c = 0 -for key, val in items(romanNumbers): - inc(c) - stdout.write(key & "=" & $val) - if c < romanNumbers.len: stdout.write(", ") else: echo"" -#echo"" - -proc PrintBiTuple(t: tuple[k: string, v: int]): int = - stdout.write(t.k & "=" & $t.v & ", ") - return 0 - - diff --git a/tests/compile/ttypeconverter1.nim b/tests/compile/ttypeconverter1.nim deleted file mode 100755 index b9a5e88ae..000000000 --- a/tests/compile/ttypeconverter1.nim +++ /dev/null @@ -1,8 +0,0 @@ - -converter p(i: int): bool = return i != 0 - -if 1: - echo if 4: "foo" else: "barr" -while 0: - echo "bar" - diff --git a/tests/compile/ttypeselectors.nim b/tests/compile/ttypeselectors.nim deleted file mode 100644 index 7d76cafef..000000000 --- a/tests/compile/ttypeselectors.nim +++ /dev/null @@ -1,37 +0,0 @@ -import macros - -template selectType(x: int): typeDesc = - when x < 10: - int - else: - string - -template simpleTypeTempl: typeDesc = - string - -macro typeFromMacro(s: expr): typeDesc = - result = newIdentNode"string" - -proc t1*(x: int): simpleTypeTempl() = - result = "test" - -proc t2*(x: int): selectType(100) = - result = "test" - -proc t3*(x: int): selectType(1) = - result = 10 - -proc t4*(x: int): typeFromMacro() = - result = "test" - -var x*: selectType(50) = "test" - -proc t5*(x: selectType(5)) = - var y = x + 10 - echo y - -var y*: type(t2(100)) = "test" - -proc t6*(x: type(t3(0))): type(t1(0)) = - result = $x - diff --git a/tests/compile/tuserpragma.nim b/tests/compile/tuserpragma.nim deleted file mode 100755 index 784baa176..000000000 --- a/tests/compile/tuserpragma.nim +++ /dev/null @@ -1,7 +0,0 @@ - -{.pragma: rtl, cdecl, exportc.} - -proc myproc(x, y: int): int {.rtl} = - nil - - diff --git a/tests/compile/tvarious.nim b/tests/compile/tvarious.nim deleted file mode 100755 index 52dd46184..000000000 --- a/tests/compile/tvarious.nim +++ /dev/null @@ -1,43 +0,0 @@ -# Test various aspects - -import - mvarious - -type - PA = ref TA - PB = ref TB - - TB = object - a: PA - - TA = object - b: TB - x: int - -proc getPA(): PA = - var - b: bool - b = not false - return nil - -var - global: int - -var - s: string - i: int - r: TA - -r.b.a.x = 0 -global = global + 1 -exportme() -write(stdout, "Hallo wie heißt du? ") -write(stdout, getPA().x) -s = readLine(stdin) -i = 0 -while i < s.len: - if s[i] == 'c': write(stdout, "'c' in deinem Namen gefunden\n") - i = i + 1 - -write(stdout, "Du heißt " & s) - diff --git a/tests/compile/tvoid.nim b/tests/compile/tvoid.nim deleted file mode 100644 index b286010dc..000000000 --- a/tests/compile/tvoid.nim +++ /dev/null @@ -1,33 +0,0 @@ -discard """ - output: "he, no return type;abc a string" -""" - -proc ReturnT[T](x: T): T = - when T is void: - echo "he, no return type;" - else: - result = x & " a string" - -proc nothing(x, y: void): void = - echo "ha" - -proc callProc[T](p: proc (x: T), x: T) = - when T is void: - p() - else: - p(x) - -proc intProc(x: int) = - echo x - -proc emptyProc() = - echo "empty" - -callProc[int](intProc, 12) -callProc[void](emptyProc) - - -ReturnT[void]() -echo ReturnT[string]("abc") -nothing() - diff --git a/tests/compile/twalker.nim b/tests/compile/twalker.nim deleted file mode 100755 index 3fdd8769b..000000000 --- a/tests/compile/twalker.nim +++ /dev/null @@ -1,13 +0,0 @@ -# iterate over all files with a given filter: - -import - os, times - -proc main(filter: string) = - for filename in walkFiles(filter): - writeln(stdout, filename) - - for key, val in envPairs(): - writeln(stdout, key & '=' & val) - -main("*.nim") diff --git a/tests/compile/typalias.nim b/tests/compile/typalias.nim deleted file mode 100755 index ba9f38ed9..000000000 --- a/tests/compile/typalias.nim +++ /dev/null @@ -1,15 +0,0 @@ - -type - TMyObj = TYourObj - TYourObj = object of TObject - x, y: int - -proc init: TYourObj = - result.x = 0 - result.y = -1 - -proc f(x: var TYourObj) = - nil - -var m: TMyObj = init() -f(m) |