diff options
Diffstat (limited to 'tests/accept')
183 files changed, 0 insertions, 4222 deletions
diff --git a/tests/accept/compile/mrecmod.nim b/tests/accept/compile/mrecmod.nim deleted file mode 100755 index fab9654d5..000000000 --- a/tests/accept/compile/mrecmod.nim +++ /dev/null @@ -1 +0,0 @@ -import trecmod diff --git a/tests/accept/compile/mrecmod2.nim b/tests/accept/compile/mrecmod2.nim deleted file mode 100755 index 9557ce729..000000000 --- a/tests/accept/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/accept/compile/mvarious.nim b/tests/accept/compile/mvarious.nim deleted file mode 100755 index 333b34d33..000000000 --- a/tests/accept/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/accept/compile/sunset.tmpl b/tests/accept/compile/sunset.tmpl deleted file mode 100755 index 6475bac4e..000000000 --- a/tests/accept/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/accept/compile/tarrindx.nim b/tests/accept/compile/tarrindx.nim deleted file mode 100755 index 13919cc2c..000000000 --- a/tests/accept/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/accept/compile/tassign.nim b/tests/accept/compile/tassign.nim deleted file mode 100755 index f51c20783..000000000 --- a/tests/accept/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/accept/compile/tbug538751.nim b/tests/accept/compile/tbug538751.nim deleted file mode 100755 index c9ac45797..000000000 --- a/tests/accept/compile/tbug538751.nim +++ /dev/null @@ -1,8 +0,0 @@ -type - PNode = ref TNode - TNode = tuple[self: PNode] - -var node: PNode -new(node) -node.self = node - diff --git a/tests/accept/compile/tccgen1.nim b/tests/accept/compile/tccgen1.nim deleted file mode 100755 index b1d8835f2..000000000 --- a/tests/accept/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/accept/compile/tcmdline.nim b/tests/accept/compile/tcmdline.nim deleted file mode 100755 index f43aecafa..000000000 --- a/tests/accept/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: " & getApplicationFilename()) -writeln(stdout, "Number of parameters: " & $params) -while i <= params: - writeln(stdout, paramStr(i)) - i = i + 1 diff --git a/tests/accept/compile/tcolors.nim b/tests/accept/compile/tcolors.nim deleted file mode 100755 index 9d1034405..000000000 --- a/tests/accept/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/accept/compile/tconsteval.nim b/tests/accept/compile/tconsteval.nim deleted file mode 100755 index ce90d7c27..000000000 --- a/tests/accept/compile/tconsteval.nim +++ /dev/null @@ -1,28 +0,0 @@ -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/accept/compile/tconvcolors.nim b/tests/accept/compile/tconvcolors.nim deleted file mode 100755 index 07e829550..000000000 --- a/tests/accept/compile/tconvcolors.nim +++ /dev/null @@ -1,5 +0,0 @@ - -import colors - -echo int32(colWhite), 'A' - diff --git a/tests/accept/compile/tconvert.nim b/tests/accept/compile/tconvert.nim deleted file mode 100755 index f96cf2688..000000000 --- a/tests/accept/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/accept/compile/tcputime.nim b/tests/accept/compile/tcputime.nim deleted file mode 100755 index 2fc46ee64..000000000 --- a/tests/accept/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/accept/compile/tdeprecated.nim b/tests/accept/compile/tdeprecated.nim deleted file mode 100755 index e287da3f9..000000000 --- a/tests/accept/compile/tdeprecated.nim +++ /dev/null @@ -1,6 +0,0 @@ -var - a {.deprecated.}: array[0..11, int] - -a[8] = 1 - - diff --git a/tests/accept/compile/tdialogs.nim b/tests/accept/compile/tdialogs.nim deleted file mode 100755 index d161a976d..000000000 --- a/tests/accept/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/accept/compile/tdictdestruct.nim b/tests/accept/compile/tdictdestruct.nim deleted file mode 100755 index 8d828aaf7..000000000 --- a/tests/accept/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) - -# Problem: destroyDict is not instantiated when newDict is instantiated! - -discard newDict("a", "b") - - diff --git a/tests/accept/compile/tdllvar.nim b/tests/accept/compile/tdllvar.nim deleted file mode 100755 index ab767770c..000000000 --- a/tests/accept/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/accept/compile/tdumpast.nim b/tests/accept/compile/tdumpast.nim deleted file mode 100755 index fb31af0ec..000000000 --- a/tests/accept/compile/tdumpast.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/accept/compile/techo.nim b/tests/accept/compile/techo.nim deleted file mode 100755 index 0fa4b5fe0..000000000 --- a/tests/accept/compile/techo.nim +++ /dev/null @@ -1,3 +0,0 @@ -# Simplest Nimrod program - -echo "Hello, World!" diff --git a/tests/accept/compile/temptyecho.nim b/tests/accept/compile/temptyecho.nim deleted file mode 100755 index 5f1aa6515..000000000 --- a/tests/accept/compile/temptyecho.nim +++ /dev/null @@ -1,2 +0,0 @@ -echo() - diff --git a/tests/accept/compile/tendian.nim b/tests/accept/compile/tendian.nim deleted file mode 100755 index 256e2653c..000000000 --- a/tests/accept/compile/tendian.nim +++ /dev/null @@ -1,3 +0,0 @@ -# test the new endian magic - -writeln(stdout, repr(system.cpuEndian)) diff --git a/tests/accept/compile/tenum.nim b/tests/accept/compile/tenum.nim deleted file mode 100755 index 6e53b9c08..000000000 --- a/tests/accept/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/accept/compile/tenum2.nim b/tests/accept/compile/tenum2.nim deleted file mode 100755 index feba36dd6..000000000 --- a/tests/accept/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/accept/compile/tenum3.nim b/tests/accept/compile/tenum3.nim deleted file mode 100755 index 09a516932..000000000 --- a/tests/accept/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/accept/compile/tforwty.nim b/tests/accept/compile/tforwty.nim deleted file mode 100755 index 0f1d3697f..000000000 --- a/tests/accept/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/accept/compile/tforwty2.nim b/tests/accept/compile/tforwty2.nim deleted file mode 100755 index 5d15e112a..000000000 --- a/tests/accept/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/accept/compile/tgenericprocvar.nim b/tests/accept/compile/tgenericprocvar.nim deleted file mode 100755 index 7825db4c3..000000000 --- a/tests/accept/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/accept/compile/tgenericvariant.nim b/tests/accept/compile/tgenericvariant.nim deleted file mode 100644 index 51d01355a..000000000 --- a/tests/accept/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/accept/compile/tgetstartmilsecs.nim b/tests/accept/compile/tgetstartmilsecs.nim deleted file mode 100755 index 340c78af1..000000000 --- a/tests/accept/compile/tgetstartmilsecs.nim +++ /dev/null @@ -1,7 +0,0 @@ -# -import times, os - -var start = getStartMilsecs() -os.sleep(1000) - -echo getStartMilsecs() - start #OUT 1000 diff --git a/tests/accept/compile/tgtk.nim b/tests/accept/compile/tgtk.nim deleted file mode 100755 index 7febb0ab8..000000000 --- a/tests/accept/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/accept/compile/thallo.nim b/tests/accept/compile/thallo.nim deleted file mode 100755 index 8cbe10bd5..000000000 --- a/tests/accept/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(copy(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/accept/compile/thexrange.nim b/tests/accept/compile/thexrange.nim deleted file mode 100755 index 875a5bab3..000000000 --- a/tests/accept/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/accept/compile/tident.nim b/tests/accept/compile/tident.nim deleted file mode 100755 index 1ed9894c6..000000000 --- a/tests/accept/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/accept/compile/tindent1.nim b/tests/accept/compile/tindent1.nim deleted file mode 100755 index 0527b6e57..000000000 --- a/tests/accept/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/accept/compile/tio.nim b/tests/accept/compile/tio.nim deleted file mode 100755 index 5ae119f77..000000000 --- a/tests/accept/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/accept/compile/titer.nim b/tests/accept/compile/titer.nim deleted file mode 100755 index 19a11dc4e..000000000 --- a/tests/accept/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/accept/compile/tlastmod.nim b/tests/accept/compile/tlastmod.nim deleted file mode 100755 index 75b047fc8..000000000 --- a/tests/accept/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/accept/compile/tlexer.nim b/tests/accept/compile/tlexer.nim deleted file mode 100755 index 968a10bdf..000000000 --- a/tests/accept/compile/tlexer.nim +++ /dev/null @@ -1,56 +0,0 @@ -# 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/accept/compile/tlibs.nim b/tests/accept/compile/tlibs.nim deleted file mode 100755 index 1f81a5ede..000000000 --- a/tests/accept/compile/tlibs.nim +++ /dev/null @@ -1,24 +0,0 @@ -# Test wether the bindings at least compile... - -import - unicode, cgi, terminal, libcurl, web, - 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 - -when defined(linux): - import - zlib, zipfiles - -writeln(stdout, "test compilation of binding modules") diff --git a/tests/accept/compile/tloops.nim b/tests/accept/compile/tloops.nim deleted file mode 100755 index 74a3992c9..000000000 --- a/tests/accept/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/accept/compile/tmath.nim b/tests/accept/compile/tmath.nim deleted file mode 100755 index 6a1dae54d..000000000 --- a/tests/accept/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/accept/compile/tmodulealias.nim b/tests/accept/compile/tmodulealias.nim deleted file mode 100755 index 1154cb99d..000000000 --- a/tests/accept/compile/tmodulealias.nim +++ /dev/null @@ -1,17 +0,0 @@ - - -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/accept/compile/tnamedparams.nim b/tests/accept/compile/tnamedparams.nim deleted file mode 100644 index 4b0cd5361..000000000 --- a/tests/accept/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/accept/compile/tnew.nim b/tests/accept/compile/tnew.nim deleted file mode 100755 index 6527541a2..000000000 --- a/tests/accept/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/accept/compile/tnewlibs.nim b/tests/accept/compile/tnewlibs.nim deleted file mode 100755 index aca2e3c30..000000000 --- a/tests/accept/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/accept/compile/tnewsets.nim b/tests/accept/compile/tnewsets.nim deleted file mode 100755 index 415fe8f7e..000000000 --- a/tests/accept/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/accept/compile/tnewuns.nim b/tests/accept/compile/tnewuns.nim deleted file mode 100755 index 5181e467c..000000000 --- a/tests/accept/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/accept/compile/tnoargopenarray.nim b/tests/accept/compile/tnoargopenarray.nim deleted file mode 100755 index 872ec86d2..000000000 --- a/tests/accept/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/accept/compile/tobjcov.nim b/tests/accept/compile/tobjcov.nim deleted file mode 100755 index da34fcb60..000000000 --- a/tests/accept/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: proc (x: var TA) = bp -var a: TA -f(a) # bp expects a TB, but gets a TA - diff --git a/tests/accept/compile/tobject2.nim b/tests/accept/compile/tobject2.nim deleted file mode 100755 index 8f69a6bac..000000000 --- a/tests/accept/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/accept/compile/tobjects.nim b/tests/accept/compile/tobjects.nim deleted file mode 100755 index 8305e2838..000000000 --- a/tests/accept/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/accept/compile/toop.nim b/tests/accept/compile/toop.nim deleted file mode 100644 index d103c6304..000000000 --- a/tests/accept/compile/toop.nim +++ /dev/null @@ -1,18 +0,0 @@ - -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/accept/compile/toptions.nim b/tests/accept/compile/toptions.nim deleted file mode 100755 index 95bb5cfbc..000000000 --- a/tests/accept/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/accept/compile/tos.nim b/tests/accept/compile/tos.nim deleted file mode 100755 index 9ab4295f8..000000000 --- a/tests/accept/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 pcDirectory: walkDirTree(f) - of pcLinkToDirectory: nil - -walkDirTree(".") diff --git a/tests/accept/compile/toverprc.nim b/tests/accept/compile/toverprc.nim deleted file mode 100755 index f35528ace..000000000 --- a/tests/accept/compile/toverprc.nim +++ /dev/null @@ -1,25 +0,0 @@ -# Test overloading of procs when used as function pointers - -import strutils - -proc parseInt(x: float): int = nil -proc parseInt(x: bool): int = nil -proc parseInt(x: float32): int = nil -proc parseInt(x: int8): int = nil -proc parseInt(x: TFile): int = nil -proc parseInt(x: char): int = nil -proc parseInt(x: int16): int = nil - -type - TParseInt = proc (x: string): int - -var - q = TParseInt(parseInt) - p: TParseInt = parseInt - -proc takeParseInt(x: proc (y: string): int): 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/accept/compile/tparedef.nim b/tests/accept/compile/tparedef.nim deleted file mode 100755 index dedebf6b7..000000000 --- a/tests/accept/compile/tparedef.nim +++ /dev/null @@ -1,4 +0,0 @@ -# This test is now superfluous: - -proc a(a: int) = - return diff --git a/tests/accept/compile/tparscfg.nim b/tests/accept/compile/tparscfg.nim deleted file mode 100755 index 618ecadd6..000000000 --- a/tests/accept/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/accept/compile/tparsefloat.nim b/tests/accept/compile/tparsefloat.nim deleted file mode 100755 index 38ed2db6d..000000000 --- a/tests/accept/compile/tparsefloat.nim +++ /dev/null @@ -1,3 +0,0 @@ -import strutils - -echo ParseFloat("5000") / ParseFloat("10") diff --git a/tests/accept/compile/tparsopt.nim b/tests/accept/compile/tparsopt.nim deleted file mode 100755 index 2b2da7e51..000000000 --- a/tests/accept/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/accept/compile/tposix.nim b/tests/accept/compile/tposix.nim deleted file mode 100755 index bf0b49586..000000000 --- a/tests/accept/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/accept/compile/tprep.nim b/tests/accept/compile/tprep.nim deleted file mode 100755 index 999b2f57f..000000000 --- a/tests/accept/compile/tprep.nim +++ /dev/null @@ -1,28 +0,0 @@ -# Test the features that used to belong to the preprocessor - -import - times - -{.warning: "This is only a test warning!".} - -{.define: case2.} -{.define: case3.} -when defined(case1): - {.hint: "Case 1".} - when defined(case3): - {.hint: "Case 1.3".} -elif defined(case2): - {.hint: "Case 2".} - when defined(case3): - {.hint: "Case 2.3".} -elif defined(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/accept/compile/tpush.nim b/tests/accept/compile/tpush.nim deleted file mode 100755 index 5fb411a79..000000000 --- a/tests/accept/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/accept/compile/tquicksort.nim b/tests/accept/compile/tquicksort.nim deleted file mode 100755 index 6706a185e..000000000 --- a/tests/accept/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/accept/compile/tquit.nim b/tests/accept/compile/tquit.nim deleted file mode 100755 index d4dc1522d..000000000 --- a/tests/accept/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/accept/compile/tradix.nim b/tests/accept/compile/tradix.nim deleted file mode 100755 index e7ca210e4..000000000 --- a/tests/accept/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/accept/compile/treadln.nim b/tests/accept/compile/treadln.nim deleted file mode 100755 index 1117ab5f9..000000000 --- a/tests/accept/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/accept/compile/treadx.nim b/tests/accept/compile/treadx.nim deleted file mode 100755 index 13acb0514..000000000 --- a/tests/accept/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/accept/compile/trecmod.nim b/tests/accept/compile/trecmod.nim deleted file mode 100755 index 9d39d3ff7..000000000 --- a/tests/accept/compile/trecmod.nim +++ /dev/null @@ -1,2 +0,0 @@ -# recursive module -import mrecmod diff --git a/tests/accept/compile/trecmod2.nim b/tests/accept/compile/trecmod2.nim deleted file mode 100755 index 85fe2215f..000000000 --- a/tests/accept/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/accept/compile/trepr.nim b/tests/accept/compile/trepr.nim deleted file mode 100755 index 4a56842f6..000000000 --- a/tests/accept/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/accept/compile/tseq2.nim b/tests/accept/compile/tseq2.nim deleted file mode 100755 index 03bdb3fab..000000000 --- a/tests/accept/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/accept/compile/tseqcon2.nim b/tests/accept/compile/tseqcon2.nim deleted file mode 100755 index 6225c3bb1..000000000 --- a/tests/accept/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 == pcDirectory: - add(result, rec_dir(path)) - else: - add(result, path) diff --git a/tests/accept/compile/tsizeof.nim b/tests/accept/compile/tsizeof.nim deleted file mode 100755 index f7b70dd4d..000000000 --- a/tests/accept/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/accept/compile/tsockets.nim b/tests/accept/compile/tsockets.nim deleted file mode 100755 index cc7d18b87..000000000 --- a/tests/accept/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/accept/compile/tstrace.nim b/tests/accept/compile/tstrace.nim deleted file mode 100755 index 56f20a0dd..000000000 --- a/tests/accept/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/accept/compile/tstrdesc.nim b/tests/accept/compile/tstrdesc.nim deleted file mode 100755 index 1c2e85b4b..000000000 --- a/tests/accept/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/accept/compile/tstrdist.nim b/tests/accept/compile/tstrdist.nim deleted file mode 100755 index 3e1939e73..000000000 --- a/tests/accept/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/accept/compile/tstreams.nim b/tests/accept/compile/tstreams.nim deleted file mode 100755 index 640565a27..000000000 --- a/tests/accept/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/accept/compile/tstrset.nim b/tests/accept/compile/tstrset.nim deleted file mode 100755 index e19ccee4d..000000000 --- a/tests/accept/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/accept/compile/tstrtabs.nim b/tests/accept/compile/tstrtabs.nim deleted file mode 100755 index 299db609d..000000000 --- a/tests/accept/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/accept/compile/ttempl.nim b/tests/accept/compile/ttempl.nim deleted file mode 100755 index 2c4785325..000000000 --- a/tests/accept/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/accept/compile/ttempl3.nim b/tests/accept/compile/ttempl3.nim deleted file mode 100755 index 0c8fa9a94..000000000 --- a/tests/accept/compile/ttempl3.nim +++ /dev/null @@ -1,26 +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) - diff --git a/tests/accept/compile/ttime.nim b/tests/accept/compile/ttime.nim deleted file mode 100755 index bad818816..000000000 --- a/tests/accept/compile/ttime.nim +++ /dev/null @@ -1,6 +0,0 @@ -# test the new time module - -import - times - -write(stdout, $getTime()) diff --git a/tests/accept/compile/ttuple1.nim b/tests/accept/compile/ttuple1.nim deleted file mode 100755 index 5787cc309..000000000 --- a/tests/accept/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/accept/compile/tuserpragma.nim b/tests/accept/compile/tuserpragma.nim deleted file mode 100755 index 784baa176..000000000 --- a/tests/accept/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/accept/compile/tvarious.nim b/tests/accept/compile/tvarious.nim deleted file mode 100755 index 52dd46184..000000000 --- a/tests/accept/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/accept/compile/twalker.nim b/tests/accept/compile/twalker.nim deleted file mode 100755 index ba89ee7c6..000000000 --- a/tests/accept/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 iterOverEnvironment(): - writeln(stdout, key & '=' & val) - -main("*.nim") diff --git a/tests/accept/compile/typalias.nim b/tests/accept/compile/typalias.nim deleted file mode 100755 index ba9f38ed9..000000000 --- a/tests/accept/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) diff --git a/tests/accept/run/mambsys1.nim b/tests/accept/run/mambsys1.nim deleted file mode 100755 index 5472b5ae4..000000000 --- a/tests/accept/run/mambsys1.nim +++ /dev/null @@ -1,7 +0,0 @@ -import mambsys2 # import TExport - -type - TExport* = enum x, y, z - -proc foo*(x: int) = - nil diff --git a/tests/accept/run/mambsys2.nim b/tests/accept/run/mambsys2.nim deleted file mode 100755 index 395425b86..000000000 --- a/tests/accept/run/mambsys2.nim +++ /dev/null @@ -1,4 +0,0 @@ -type - TExport* = enum x, y, z # exactly the same type! - -proc foo*(x: int) = nil diff --git a/tests/accept/run/mbind3.nim b/tests/accept/run/mbind3.nim deleted file mode 100755 index 586222eb8..000000000 --- a/tests/accept/run/mbind3.nim +++ /dev/null @@ -1,9 +0,0 @@ -# Module A -var - lastId = 0 - -template genId*: expr = - inc(bind lastId) - lastId - - diff --git a/tests/accept/run/minit.nim b/tests/accept/run/minit.nim deleted file mode 100755 index 75fcebb77..000000000 --- a/tests/accept/run/minit.nim +++ /dev/null @@ -1,2 +0,0 @@ -# Test the new initialization for modules -write(stdout, "Hello from module! ") diff --git a/tests/accept/run/mmultim3.nim b/tests/accept/run/mmultim3.nim deleted file mode 100755 index ca73ebea6..000000000 --- a/tests/accept/run/mmultim3.nim +++ /dev/null @@ -1,12 +0,0 @@ -type - TObj* = object - -var myObj* : ref TObj - -method test123(a : ref TObj) = - echo("Hi base!") - -proc testMyObj*() = - test123(myObj) - - diff --git a/tests/accept/run/spec.csv b/tests/accept/run/spec.csv deleted file mode 100755 index 7a3d2bd98..000000000 --- a/tests/accept/run/spec.csv +++ /dev/null @@ -1,87 +0,0 @@ -tack.nim;125 -tambsym2.nim;7 -tambsys.nim; -tarray.nim;10012 -tarray2.nim;[16, 25, 36] -tarray3.nim;3 -tassert.nim;assertion failure!this shall be always written -tbind1.nim;3 -tbind3.nim;1 -tbintre2.nim;helloworld99110223 -tbintree.nim;helloworld99110223 -tbug499771.nim;TSubRange: 5 from 1 to 10 -tbug511622.nim;3 -tcasestm.nim;ayyy -tcgbug.nim; -tclosure.nim;2 4 6 8 10 -tcnstseq.nim;AngelikaAnneAnnaAnkaAnja -tconstr2.nim;69 -tcontinuexc.nim;ECcaught -tcopy.nim;TEMP=C:\Programs\xyz\bin -tcurrncy.nim;25 -temit.nim;509 -tenumhole;my value A1my value Bconc2valueCabc4abc -texcsub.nim;caught! -texplicitgeneric1.nim;Key: 12 value: 12Key: 13 value: 13 Key: A value: 12 Key: B value: 13 -tfinally.nim;came here 3 -tfinally2.nim;ABCD -tfinally3.nim;false -tfloat1.nim;Error: unhandled exception: FPU operation caused an overflow [EFloatOverflow] -tfloat2.nim;Error: unhandled exception: FPU operation caused a NaN result [EFloatInvalidOp] -tfloat3.nim;Nimrod 3.4368930843, 0.3299290698 C double: 3.4368930843, 0.3299290698 -tformat.nim;Hi Andreas! How do you feel, Rumpf? -thintoff.nim;0 -tinit.nim;Hello from module! Hello from main module! -tints.nim;Success -tisopr.nim;falsetrue -titer2.nim;123 -titer3.nim;1231 -titer5.nim;abcxyz -titer6.nim;000 -tlenopenarray.nim;1 -tlowhigh.nim;10 -tmatrix.nim;111 -tmultim1.nim;7 -tmultim2.nim;collide: unit, thing collide: unit, thing collide: thing, unit -tmultim3.nim;Hi derived! -tmultim4.nim;hello -tnamedenumfields;my value A0my value Bconc1valueCabc3abc -tnestif.nim;i == 2 -tnestprc.nim;10 -toop1.nim;34[]o 5 -topenarrayrepr.nim;5 - [1] -topenlen.nim;7 -toprprec.nim;done -toverflw.nim;the computation overflowed -toverflw2.nim;Error: unhandled exception: over- or underflow [EOverflow] -toverl2.nim;true012 -toverlop.nim;3 -toverwr.nim;hello -tovfint.nim;works! -tpos.nim;6 -tprintf.nim;Andreas Rumpf -tprocvar.nim;papbpcpdpe7 -tquotewords.nim;thisanexample -tregex.nim;key: keyAYes! -treguse.nim;055this should be the casehugh -treraise.nim;Error: unhandled exception: bla [ESomeOtherErr] -tromans.nim;success -tseqcon.nim;Hithere, what's your name?Hathere, what's your name? -tseqtuple.nim;fA13msg1falsefB14msg2truefC15msg3false -tsets.nim;Ha ein F ist in s! -tsidee2.nim;5 -tsidee3.nim;5 -tsimmeth.nim;HELLO WORLD! -tsplit.nim;true -tstrange.nim;hallo4 -tstrlits.nim;a""long string"""""abc"def -tstrutil.nim;ha/home/a1xyz/usr/bin -tvardecl.nim;44 -tvariantasgn.nim;came here -tvariantstack.nim;came here -tvarnums.nim;Success! -tvartup.nim;2 3 -tunhandledexc.nim;Error: unhandled exception: bla [ESomeOtherErr] -twrongexc.nim;Error: unhandled exception [EInvalidValue] -txmlgen.nim;<h1><a href="http://force7.de/nimrod">Nimrod</a></h1> -txmltree.nim;true diff --git a/tests/accept/run/tack.nim b/tests/accept/run/tack.nim deleted file mode 100755 index 59535e547..000000000 --- a/tests/accept/run/tack.nim +++ /dev/null @@ -1,15 +0,0 @@ -# the Ackermann function - -proc ack(x, y: int): int = - if x != 0: - if y != 0: - return ack(x-1, ack(x, y-1)) - return ack(x-1, 1) - else: - return y + 1 -# if x == 0: return y + 1 -# elif y == 0: return ack(x-1, 1) -# else: return ack(x-1, ack(x, y-1)) - -# echo(ack(0, 0)) -write(stdout, ack(3, 4)) #OUT 125 diff --git a/tests/accept/run/tambsym2.nim b/tests/accept/run/tambsym2.nim deleted file mode 100755 index 9178182aa..000000000 --- a/tests/accept/run/tambsym2.nim +++ /dev/null @@ -1,18 +0,0 @@ -# Test overloading of procs with locals - -type - TMyType = object - len: int - data: string - -proc len(x: TMyType): int {.inline.} = return x.len - -proc x(s: TMyType, len: int) = - writeln(stdout, len(s)) - -var - m: TMyType -m.len = 7 -m.data = "1234" - -x(m, 5) #OUT 7 diff --git a/tests/accept/run/tambsys.nim b/tests/accept/run/tambsys.nim deleted file mode 100755 index bb2622824..000000000 --- a/tests/accept/run/tambsys.nim +++ /dev/null @@ -1,7 +0,0 @@ -# Test ambiguous symbols - -import mambsys1, mambsys2 - -var - v: mambsys1.TExport -mambsys2.foo(3) #OUT diff --git a/tests/accept/run/tarray.nim b/tests/accept/run/tarray.nim deleted file mode 100755 index 252cbd991..000000000 --- a/tests/accept/run/tarray.nim +++ /dev/null @@ -1,27 +0,0 @@ -# simple check for one dimensional arrays - -type - TMyArray = array[0..2, int] - TMyRecord = tuple[x, y: int] - -proc sum(a: TMyarray): int = - result = 0 - var i = 0 - while i < len(a): - inc(result, a[i]) - inc(i) - -proc sum(a: openarray[int]): int = - result = 0 - var i = 0 - while i < len(a): - inc(result, a[i]) - inc(i) - -proc getPos(r: TMyRecord): int = - result = r.x + r.y - -write(stdout, sum([1, 2, 3, 4])) -write(stdout, sum([])) -write(stdout, getPos( (x: 5, y: 7) )) -#OUT 10012 diff --git a/tests/accept/run/tarray2.nim b/tests/accept/run/tarray2.nim deleted file mode 100755 index eb0b75692..000000000 --- a/tests/accept/run/tarray2.nim +++ /dev/null @@ -1,18 +0,0 @@ -# simple check for one dimensional arrays - -type - TMyArray = array[0..2, int] - -proc mul(a, b: TMyarray): TMyArray = - result = a - for i in 0..len(a)-1: - result[i] = a[i] * b[i] - -var - x, y, z: TMyArray - -x = [ 4, 5, 6 ] -y = x -echo repr(mul(x, y)) - -#OUT [16, 25, 36] diff --git a/tests/accept/run/tarray3.nim b/tests/accept/run/tarray3.nim deleted file mode 100755 index 881bb7ba4..000000000 --- a/tests/accept/run/tarray3.nim +++ /dev/null @@ -1,7 +0,0 @@ -# simple check for two dimensional arrays - -const - myData = [[1,2,3], [4, 5, 6]] - -echo myData[0][2] #OUT 3 - diff --git a/tests/accept/run/tassert.nim b/tests/accept/run/tassert.nim deleted file mode 100755 index 9fd18e9bd..000000000 --- a/tests/accept/run/tassert.nim +++ /dev/null @@ -1,16 +0,0 @@ -# test assert and exception handling - -proc callB() = assert(False) -proc callA() = callB() -proc callC() = callA() - -try: - callC() -except EAssertionFailed: - write(stdout, "assertion failure!") -except: - write(stdout, "unknown exception!") -finally: - system.write(stdout, "this shall be always written") - -assert(false) #OUT assertion failure!this shall be always written diff --git a/tests/accept/run/tbind1.nim b/tests/accept/run/tbind1.nim deleted file mode 100755 index e7eed3e4f..000000000 --- a/tests/accept/run/tbind1.nim +++ /dev/null @@ -1,14 +0,0 @@ -# Test the new ``bind`` keyword for templates - -proc p1(x: int8, y: int): int = return x + y - -template tempBind(x, y: expr): expr = - bind p1(x, y) - -proc p1(x: int, y: int8): int = return x - y - -# This is tricky: the call to ``p1(1'i8, 2'i8)`` should not fail in line 6, -# because it is not ambiguous there. But it is ambiguous after line 8. - -echo tempBind(1'i8, 2'i8) #OUT 3 - diff --git a/tests/accept/run/tbind3.nim b/tests/accept/run/tbind3.nim deleted file mode 100755 index f7fb4865b..000000000 --- a/tests/accept/run/tbind3.nim +++ /dev/null @@ -1,5 +0,0 @@ -# Module B -import mbind3 - -echo genId() #OUT 1 - diff --git a/tests/accept/run/tbintre2.nim b/tests/accept/run/tbintre2.nim deleted file mode 100755 index e85837dfa..000000000 --- a/tests/accept/run/tbintre2.nim +++ /dev/null @@ -1,25 +0,0 @@ -# Same test, but check module boundaries - -import tbintree - -var - root: PBinaryTree[string] - x = newNode("hello") -add(root, x) -add(root, "world") -if find(root, "world"): - for str in items(root): - stdout.write(str) -else: - stdout.writeln("BUG") - -var - r2: PBinaryTree[int] -add(r2, newNode(110)) -add(r2, 223) -add(r2, 99) -for y in items(r2): - stdout.write(y) - -#OUT helloworld99110223 - diff --git a/tests/accept/run/tbintree.nim b/tests/accept/run/tbintree.nim deleted file mode 100755 index 0561e004a..000000000 --- a/tests/accept/run/tbintree.nim +++ /dev/null @@ -1,101 +0,0 @@ -type - TBinaryTree[T] = object # TBinaryTree is a generic type with - # with generic param ``T`` - le, ri: ref TBinaryTree[T] # left and right subtrees; may be nil - data: T # the data stored in a node - PBinaryTree*[A] = ref TBinaryTree[A] # type that is exported - -proc newNode*[T](data: T): PBinaryTree[T] = - # constructor for a node - new(result) - result.data = data - -proc add*[Ty](root: var PBinaryTree[Ty], n: PBinaryTree[Ty]) = - # insert a node into the tree - if root == nil: - root = n - else: - var it = root - while it != nil: - # compare the data items; uses the generic ``cmp`` proc that works for - # any type that has a ``==`` and ``<`` operator - var c = cmp(n.data, it.data) - if c < 0: - if it.le == nil: - it.le = n - return - it = it.le - else: - if it.ri == nil: - it.ri = n - return - it = it.ri - -proc add*[Ty](root: var PBinaryTree[Ty], data: Ty) = - # convenience proc: - add(root, newNode(data)) - -proc find*[Ty2](b: PBinaryTree[Ty2], data: Ty2): bool = - # for testing this needs to be recursive, so that the - # instantiated type is checked for proper tyGenericInst envelopes - if b == nil: - result = false - else: - var c = cmp(data, b.data) - if c < 0: result = find(b.le, data) - elif c > 0: result = find(b.ri, data) - else: result = true - -iterator preorder*[T](root: PBinaryTree[T]): T = - # Preorder traversal of a binary tree. - # Since recursive iterators are not yet implemented, - # this uses an explicit stack: - var stack: seq[PBinaryTree[T]] = @[root] - while stack.len > 0: - var n = stack.pop() - while n != nil: - yield n.data - add(stack, n.ri) # push right subtree onto the stack - n = n.le # and follow the left pointer - -iterator items*[T](root: PBinaryTree[T]): T = - ## Inorder traversal of the binary tree. - var stack: seq[PBinaryTree[T]] = @[] - var n = root - while true: - while n != nil: - add(stack, n) - n = n.le - if stack.len > 0: - n = stack.pop() - yield n.data - n = n.ri - if stack.len == 0 and n == nil: break - -proc debug[T](a: PBinaryTree[T]) = - if a != nil: - debug(a.le) - echo a.data - debug(a.ri) - -when isMainModule: - var - root: PBinaryTree[string] - x = newNode("hello") - add(root, x) - add(root, "world") - if find(root, "world"): - for str in items(root): - stdout.write(str) - else: - stdout.writeln("BUG") - - var - r2: PBinaryTree[int] - add(r2, newNode(110)) - add(r2, 223) - add(r2, 99) - for y in items(r2): - stdout.write(y) - -#OUT helloworld99110223 diff --git a/tests/accept/run/tbug499771.nim b/tests/accept/run/tbug499771.nim deleted file mode 100755 index 1b141adac..000000000 --- a/tests/accept/run/tbug499771.nim +++ /dev/null @@ -1,6 +0,0 @@ -type TSubRange = range[1 .. 10] -var sr: TSubRange = 5 -echo("TSubRange: " & $sr & " from " & $low(TSubRange) & " to " & - $high(TSubRange)) - - diff --git a/tests/accept/run/tbug511622.nim b/tests/accept/run/tbug511622.nim deleted file mode 100755 index c0a2555f4..000000000 --- a/tests/accept/run/tbug511622.nim +++ /dev/null @@ -1,10 +0,0 @@ -import StrUtils, Math - -proc FibonacciA(n: int): int64 = - var fn = float64(n) - var p: float64 = (1.0 + sqrt(5.0)) / 2.0 - var q: float64 = 1.0 / p - return int64((pow(p, fn) + pow(q, fn)) / sqrt(5.0)) - -echo FibonacciA(4) #OUT 3 - diff --git a/tests/accept/run/tcasestm.nim b/tests/accept/run/tcasestm.nim deleted file mode 100755 index 277b0bab1..000000000 --- a/tests/accept/run/tcasestm.nim +++ /dev/null @@ -1,32 +0,0 @@ -# Test the case statement - -type - tenum = enum eA, eB, eC - -var - x: string = "yyy" - y: Tenum = eA - i: int - -case y -of eA: write(stdout, "a") -of eB, eC: write(stdout, "b or c") - -case x -of "Andreas", "Rumpf": write(stdout, "Hallo Meister!") -of "aa", "bb": write(stdout, "Du bist nicht mein Meister") -of "cc", "hash", "when": nil -of "will", "it", "finally", "be", "generated": nil - -case i -of 1..5, 8, 9: nil -of 6, 7: nil -elif x == "Ha": - nil -elif x == "yyy": - write(stdout, x) -else: - nil - -#OUT ayyy - diff --git a/tests/accept/run/tcgbug.nim b/tests/accept/run/tcgbug.nim deleted file mode 100755 index 320821fb6..000000000 --- a/tests/accept/run/tcgbug.nim +++ /dev/null @@ -1,17 +0,0 @@ - -type - TObj = object - x, y: int - PObj = ref TObj - -proc p(a: PObj) = - a.x = 0 - -proc q(a: var PObj) = - a.p() - -var - a: PObj -new(a) -q(a) - diff --git a/tests/accept/run/tclosure.nim b/tests/accept/run/tclosure.nim deleted file mode 100755 index 761e9a8f3..000000000 --- a/tests/accept/run/tclosure.nim +++ /dev/null @@ -1,26 +0,0 @@ -# Test the closure implementation - -proc map(n: var openarray[int], fn: proc (x: int): int {.closure}) = - for i in 0..n.len-1: n[i] = fn(n[i]) - -proc foldr(n: openarray[int], fn: proc (x, y: int): int {.closure}): int = - for i in 0..n.len-1: - result = fn(result, n[i]) - -var - myData: array[0..4, int] = [0, 1, 2, 3, 4] - -proc testA() = - var p = 0 - map(myData, proc (x: int): int = - result = x + 1 shl (proc (y: int): int = - return y + p - )(0) - inc(p)) - -testA() -for x in items(myData): - write(stout, x) -#OUT 2 4 6 8 10 - - diff --git a/tests/accept/run/tcnstseq.nim b/tests/accept/run/tcnstseq.nim deleted file mode 100755 index 4f389bb3b..000000000 --- a/tests/accept/run/tcnstseq.nim +++ /dev/null @@ -1,11 +0,0 @@ -# Test the new implicit conversion from sequences to arrays in a constant -# context. - -import strutils - -const - myWords = "Angelika Anne Anna Anka Anja".split() - -for x in items(myWords): - write(stdout, x) #OUT AngelikaAnneAnnaAnkaAnja - diff --git a/tests/accept/run/tconstr2.nim b/tests/accept/run/tconstr2.nim deleted file mode 100755 index 7687a416c..000000000 --- a/tests/accept/run/tconstr2.nim +++ /dev/null @@ -1,20 +0,0 @@ -# Test array, record constructors - -type - TComplexRecord = tuple[ - s: string, - x, y: int, - z: float, - chars: set[char]] - -const - things: array [0..1, TComplexRecord] = [ - (s: "hi", x: 69, y: 45, z: 0.0, chars: {'a', 'b', 'c'}), - (s: "hi", x: 69, y: 45, z: 1.0, chars: {})] - otherThings = [ # the same - (s: "hi", x: 69, y: 45, z: 0.0, chars: {'a', 'b', 'c'}), - (s: "hi", x: 69, y: 45, z: 1.0, chars: {'a'})] - -write(stdout, things[0].x) -#OUT 69 - diff --git a/tests/accept/run/tcontinuexc.nim b/tests/accept/run/tcontinuexc.nim deleted file mode 100755 index 496ee8164..000000000 --- a/tests/accept/run/tcontinuexc.nim +++ /dev/null @@ -1,23 +0,0 @@ -type - ESomething = object of E_Base - ESomeOtherErr = object of E_Base - -proc genErrors(s: string) = - if s == "error!": - raise newException(ESomething, "Test") - else: - raise newException(EsomeotherErr, "bla") - -try: - for i in 0..3: - try: - genErrors("error!") - except ESomething: - stdout.write("E") - stdout.write("C") - raise newException(EsomeotherErr, "bla") -finally: - echo "caught" - -#OUT ECcaught - diff --git a/tests/accept/run/tcopy.nim b/tests/accept/run/tcopy.nim deleted file mode 100755 index 6cb2ec14c..000000000 --- a/tests/accept/run/tcopy.nim +++ /dev/null @@ -1,19 +0,0 @@ -# tests the copy proc - -import - strutils - -proc main() = - const - example = r"TEMP=C:\Programs\xyz\bin" - var - a, b: string - p: int - p = find(example, "=") - a = copy(example, 0, p-1) - b = copy(example, p+1) - writeln(stdout, a & '=' & b) - #writeln(stdout, b) - -main() -#OUT TEMP=C:\Programs\xyz\bin diff --git a/tests/accept/run/tcurrncy.nim b/tests/accept/run/tcurrncy.nim deleted file mode 100755 index fa08d620b..000000000 --- a/tests/accept/run/tcurrncy.nim +++ /dev/null @@ -1,32 +0,0 @@ -template Additive(typ: typeDesc): stmt = - proc `+` *(x, y: typ): typ {.borrow.} - proc `-` *(x, y: typ): typ {.borrow.} - - # unary operators: - proc `+` *(x: typ): typ {.borrow.} - proc `-` *(x: typ): typ {.borrow.} - -template Multiplicative(typ, base: typeDesc): stmt = - proc `*` *(x: typ, y: base): typ {.borrow.} - proc `*` *(x: base, y: typ): typ {.borrow.} - proc `div` *(x: typ, y: base): typ {.borrow.} - proc `mod` *(x: typ, y: base): typ {.borrow.} - -template Comparable(typ: typeDesc): stmt = - proc `<` * (x, y: typ): bool {.borrow.} - proc `<=` * (x, y: typ): bool {.borrow.} - proc `==` * (x, y: typ): bool {.borrow.} - -template DefineCurrency(typ, base: expr): stmt = - type - typ* = distinct base - Additive(typ) - Multiplicative(typ, base) - Comparable(typ) - - proc `$` * (t: typ): string {.borrow.} - -DefineCurrency(TDollar, int) -DefineCurrency(TEuro, int) -echo($( 12.TDollar + 13.TDollar )) #OUT 25 - diff --git a/tests/accept/run/temit.nim b/tests/accept/run/temit.nim deleted file mode 100644 index 81f9b53ae..000000000 --- a/tests/accept/run/temit.nim +++ /dev/null @@ -1,14 +0,0 @@ -# Test the new ``emit`` pragma: - -{.emit: """ -static int cvariable = 420; - -""".} - -proc embedsC() {.pure.} = - var nimrodVar = 89 - {.emit: """fprintf(stdout, "%d\n", cvariable + (int)`nimrodVar`);""".} - -embedsC() - - diff --git a/tests/accept/run/tenumhole.nim b/tests/accept/run/tenumhole.nim deleted file mode 100644 index 75fb74592..000000000 --- a/tests/accept/run/tenumhole.nim +++ /dev/null @@ -1,16 +0,0 @@ - -const - strValB = "my value B" - -type - TMyEnum = enum - valueA = (1, "my value A"), - valueB = strValB & "conc", - valueC, - valueD = (4, "abc") - -# trick the optimizer with a variable: -var x = valueD -echo valueA, ord(valueA), valueB, ord(valueB), valueC, valueD, ord(valueD), x - - diff --git a/tests/accept/run/texcsub.nim b/tests/accept/run/texcsub.nim deleted file mode 100644 index b35f0fa3f..000000000 --- a/tests/accept/run/texcsub.nim +++ /dev/null @@ -1,11 +0,0 @@ -# Test inheritance for exception matching: - -try: - raise newException(EOS, "dummy message") -except E_Base: - echo "caught!" -except: - echo "wtf!?" - -#OUT caught! - diff --git a/tests/accept/run/texplicitgeneric1.nim b/tests/accept/run/texplicitgeneric1.nim deleted file mode 100755 index 54fff5246..000000000 --- a/tests/accept/run/texplicitgeneric1.nim +++ /dev/null @@ -1,32 +0,0 @@ -# test explicit type instantiation - -type - TDict*[TKey, TValue] = object - data: seq[tuple[k: TKey, v: TValue]] - PDict*[TKey, #with `==`(a, b: TKey): bool - # hash(a: TKey): int, - TValue] = ref TDict[TKey, TValue] - -proc newDict*[TKey, TValue](): PDict[TKey, TValue] = - new(result) - result.data = @[] - -proc add*[TKey, TValue](d: PDict[TKey, TValue], k: TKey, v: TValue) = - d.data.add((k, v)) - -iterator items*[Tkey, tValue](d: PDict[TKey, TValue]): tuple[k: TKey, - v: TValue] = - for k, v in items(d.data): yield (k, v) - -var d = newDict[int, string]() -d.add(12, "12") -d.add(13, "13") -for k, v in items(d): - stdout.write("Key: ", $k, " value: ", v) - -var c = newDict[char, string]() -c.add('A', "12") -c.add('B', "13") -for k, v in items(c): - stdout.write(" Key: ", $k, " value: ", v) - diff --git a/tests/accept/run/texplicitgeneric2.nim b/tests/accept/run/texplicitgeneric2.nim deleted file mode 100755 index 9bd2f04c8..000000000 --- a/tests/accept/run/texplicitgeneric2.nim +++ /dev/null @@ -1,30 +0,0 @@ -# test explicit type instantiation - -type - TDict*[TKey, TValue] = object - data: seq[tuple[k: TKey, v: TValue]] - PDict*[TKey, TValue] = ref TDict[TKey, TValue] - -proc newDict*[TKey, TValue](): PDict[TKey, TValue] = - new(result) - result.data = @[] - -proc add*(d: PDict, k: TKey, v: TValue) = - d.data.add((k, v)) - - -#iterator items*(d: PDict): tuple[k: TKey, v: TValue] = -# for k, v in items(d.data): yield (k, v) - -var d = newDict[int, string]() -d.add(12, "12") -d.add(13, "13") -for k, v in items(d): - stdout.write("Key: ", $k, " value: ", v) - -var c = newDict[char, string]() -c.add('A', "12") -c.add('B', "13") -for k, v in items(c): - stdout.write(" Key: ", $k, " value: ", v) - diff --git a/tests/accept/run/tfinally.nim b/tests/accept/run/tfinally.nim deleted file mode 100755 index 92c1e500f..000000000 --- a/tests/accept/run/tfinally.nim +++ /dev/null @@ -1,15 +0,0 @@ -# Test return in try statement: - -proc main: int = - try: - try: - return 1 - finally: - stdout.write("came ") - return 2 - finally: - stdout.write("here ") - return 3 - -echo main() #OUT came here 3 - diff --git a/tests/accept/run/tfinally2.nim b/tests/accept/run/tfinally2.nim deleted file mode 100755 index 10d08e816..000000000 --- a/tests/accept/run/tfinally2.nim +++ /dev/null @@ -1,21 +0,0 @@ -# Test break in try statement: - -proc main: int = - try: - block AB: - try: - try: - break AB - finally: - stdout.write("A") - stdout.write("skipped") - finally: - block B: - stdout.write("B") - stdout.write("skipped") - stdout.write("C") - finally: - stdout.writeln("D") - -discard main() #OUT ABCD - diff --git a/tests/accept/run/tfinally3.nim b/tests/accept/run/tfinally3.nim deleted file mode 100755 index e8d81c893..000000000 --- a/tests/accept/run/tfinally3.nim +++ /dev/null @@ -1,12 +0,0 @@ -# Test break in try statement: - -proc main: bool = - while true: - try: - return true - finally: - break - return false - -echo main() #OUT false - diff --git a/tests/accept/run/tfloat1.nim b/tests/accept/run/tfloat1.nim deleted file mode 100755 index 89911dd61..000000000 --- a/tests/accept/run/tfloat1.nim +++ /dev/null @@ -1,8 +0,0 @@ -# Test new floating point exceptions - -{.floatChecks: on.} - -var x = 0.8 -var y = 0.0 - -echo x / y #OUT Error: unhandled exception: FPU operation caused an overflow [EFloatOverflow] diff --git a/tests/accept/run/tfloat2.nim b/tests/accept/run/tfloat2.nim deleted file mode 100755 index 92421d446..000000000 --- a/tests/accept/run/tfloat2.nim +++ /dev/null @@ -1,8 +0,0 @@ -# Test new floating point exceptions - -{.floatChecks: on.} - -var x = 0.0 -var y = 0.0 - -echo x / y #OUT Error: unhandled exception: FPU operation caused a NaN result [EFloatInvalidOp] diff --git a/tests/accept/run/tfloat3.nim b/tests/accept/run/tfloat3.nim deleted file mode 100644 index 72acce958..000000000 --- a/tests/accept/run/tfloat3.nim +++ /dev/null @@ -1,18 +0,0 @@ - -import math, strutils - -{.emit: """ -void printFloats(void) { - double y = 1.234567890123456789; - - printf("C double: %.10f, %.10f ", exp(y), cos(y)); -} -""".} - -proc c_printf(frmt: CString) {.importc: "printf", header: "<stdio.h>", varargs.} -proc printFloats {.importc, nodecl.} - -var x: float = 1.234567890123456789 -c_printf("Nimrod %.10f, %.10f ", exp(x), cos(x)) -printFloats() - diff --git a/tests/accept/run/tformat.nim b/tests/accept/run/tformat.nim deleted file mode 100755 index aba35504b..000000000 --- a/tests/accept/run/tformat.nim +++ /dev/null @@ -1,6 +0,0 @@ -# Tests the new format proc (including the & and &= operators) - -import strutils - -echo("Hi $1! How do you feel, $2?\n" % ["Andreas", "Rumpf"]) -#OUT Hi Andreas! How do you feel, Rumpf? diff --git a/tests/accept/run/thintoff.nim b/tests/accept/run/thintoff.nim deleted file mode 100755 index 7aff283d6..000000000 --- a/tests/accept/run/thintoff.nim +++ /dev/null @@ -1,6 +0,0 @@ - -{.hint[XDeclaredButNotUsed]: off.} -var - x: int - -echo x #OUT 0 diff --git a/tests/accept/run/tinit.nim b/tests/accept/run/tinit.nim deleted file mode 100755 index 386bfec37..000000000 --- a/tests/accept/run/tinit.nim +++ /dev/null @@ -1,6 +0,0 @@ -# Test the new init section in modules - -import minit - -write(stdout, "Hello from main module!\n") -#OUT Hello from module! Hello from main module! diff --git a/tests/accept/run/tints.nim b/tests/accept/run/tints.nim deleted file mode 100755 index f2b52c134..000000000 --- a/tests/accept/run/tints.nim +++ /dev/null @@ -1,41 +0,0 @@ -# Test the different integer operations - -var testNumber = 0 - -template test(opr, a, b, c: expr): stmt = - # test the expression at compile and runtime - block: - const constExpr = opr(a, b) - when constExpr != c: - {.error: "Test failed " & $constExpr & " " & $c.} - inc(testNumber) - #Echo("Test: " & $testNumber) - var aa = a - var bb = b - var varExpr = opr(aa, bb) - assert(varExpr == c) - -test(`+`, 12'i8, -13'i16, -1'i16) -test(`shl`, 0b11, 0b100, 0b110000) -test(`shl`, 0b11'i32, 0b100'i64, 0b110000'i64) -test(`shl`, 0b11'i32, 0b100'i32, 0b110000'i32) - -test(`or`, 0xf0f0'i16, 0x0d0d'i16, 0xfdfd'i16) -test(`and`, 0xf0f0'i16, 0xfdfd'i16, 0xf0f0'i16) - -test(`shr`, 0xffffffffffffffff'i64, 0x4'i64, 0x0fffffffffffffff'i64) -test(`shr`, 0xffff'i16, 0x4'i16, 0x0fff'i16) -test(`shr`, 0xff'i8, 0x4'i8, 0x0f'i8) - -test(`shr`, 0xffffffff'i64, 0x4'i64, 0x0fffffff'i64) -test(`shr`, 0xffffffff'i32, 0x4'i32, 0x0fffffff'i32) - -test(`shl`, 0xffffffffffffffff'i64, 0x4'i64, 0xfffffffffffffff0'i64) -test(`shl`, 0xffff'i16, 0x4'i16, 0xfff0'i16) -test(`shl`, 0xff'i8, 0x4'i8, 0xf0'i8) - -test(`shl`, 0xffffffff'i64, 0x4'i64, 0xffffffff0'i64) -test(`shl`, 0xffffffff'i32, 0x4'i32, 0xfffffff0'i32) - -Echo("Success") #OUT Success - diff --git a/tests/accept/run/tisopr.nim b/tests/accept/run/tisopr.nim deleted file mode 100755 index d52859b09..000000000 --- a/tests/accept/run/tisopr.nim +++ /dev/null @@ -1,20 +0,0 @@ -# Test is operator - -type - TMyType = object - len: int - data: string - - TOtherType = object of TMyType - -proc p(x: TMyType): bool = - return x is TOtherType - -var - m: TMyType - n: TOtherType - -write(stdout, p(m)) -write(stdout, p(n)) - -#OUT falsetrue diff --git a/tests/accept/run/titer2.nim b/tests/accept/run/titer2.nim deleted file mode 100755 index b9cdb53fe..000000000 --- a/tests/accept/run/titer2.nim +++ /dev/null @@ -1,10 +0,0 @@ -# Try to break the transformation pass: -iterator iterAndZero(a: var openArray[int]): int = - for i in 0..len(a)-1: - yield a[i] - a[i] = 0 - -var x = [[1, 2, 3], [4, 5, 6]] -for y in iterAndZero(x[0]): write(stdout, $y) -#OUT 123 - diff --git a/tests/accept/run/titer3.nim b/tests/accept/run/titer3.nim deleted file mode 100755 index d0e121445..000000000 --- a/tests/accept/run/titer3.nim +++ /dev/null @@ -1,17 +0,0 @@ - -iterator count1_3: int = - yield 1 - yield 2 - yield 3 - -for x in count1_3(): - write(stdout, $x) - -# yield inside an iterator, but not in a loop: -iterator iter1(a: openArray[int]): int = - yield a[0] - -var x = [[1, 2, 3], [4, 5, 6]] -for y in iter1(x[0]): write(stdout, $y) - -#OUT 1231 \ No newline at end of file diff --git a/tests/accept/run/titer5.nim b/tests/accept/run/titer5.nim deleted file mode 100755 index 1ac37ba66..000000000 --- a/tests/accept/run/titer5.nim +++ /dev/null @@ -1,10 +0,0 @@ -# Test method call syntax for iterators: -import strutils - -const lines = """abc xyz""" - -for x in lines.split(): - stdout.write(x) - -#OUT abcxyz - diff --git a/tests/accept/run/titer6.nim b/tests/accept/run/titer6.nim deleted file mode 100644 index 8a1d9cf1b..000000000 --- a/tests/accept/run/titer6.nim +++ /dev/null @@ -1,31 +0,0 @@ -# Test iterator with more than 1 yield statement - -import strutils - -iterator tokenize2(s: string, seps: set[char] = Whitespace): tuple[ - token: string, isSep: bool] = - var i = 0 - while i < s.len: - var j = i - if s[j] in seps: - while j < s.len and s[j] in seps: inc(j) - if j > i: - yield (copy(s, i, j-1), true) - else: - while j < s.len and s[j] notin seps: inc(j) - if j > i: - yield (copy(s, i, j-1), false) - i = j - -for word, isSep in tokenize2("ta da", whiteSpace): - var titer2TestVar = 0 - stdout.write(titer2TestVar) - -proc wordWrap2(s: string, maxLineWidth = 80, - splitLongWords = true, - seps: set[char] = whitespace, - newLine = "\n"): string = - result = "" - for word, isSep in tokenize2(s, seps): - var w = 0 - diff --git a/tests/accept/run/tlenopenarray.nim b/tests/accept/run/tlenopenarray.nim deleted file mode 100755 index 9731cb4f2..000000000 --- a/tests/accept/run/tlenopenarray.nim +++ /dev/null @@ -1,5 +0,0 @@ - -# len(x) --> len([x]) --> match! -echo len(1_000_000) #OUT 1 - - diff --git a/tests/accept/run/tlowhigh.nim b/tests/accept/run/tlowhigh.nim deleted file mode 100755 index 79f5c5b95..000000000 --- a/tests/accept/run/tlowhigh.nim +++ /dev/null @@ -1,18 +0,0 @@ -# Test the magic low() and high() procs - -type - myEnum = enum e1, e2, e3, e4, e5 - -var - a: array [myEnum, int] - -for i in low(a) .. high(a): - a[i] = 0 - -proc sum(a: openarray[int]): int = - result = 0 - for i in low(a)..high(a): - inc(result, a[i]) - -write(stdout, sum([1, 2, 3, 4])) -#OUT 10 diff --git a/tests/accept/run/tmatrix.nim b/tests/accept/run/tmatrix.nim deleted file mode 100755 index a162d0f10..000000000 --- a/tests/accept/run/tmatrix.nim +++ /dev/null @@ -1,60 +0,0 @@ -# Test overloading of [] with multiple indices - -type - TMatrix* = object - data: seq[float] - fWidth, fHeight: int - -template `|`(x, y: int): expr = y * m.fWidth + x - -proc createMatrix*(width, height: int): TMatrix = - result.fWidth = width - result.fHeight = height - newSeq(result.data, width*height) - -proc width*(m: TMatrix): int {.inline.} = return m.fWidth -proc height*(m: TMatrix): int {.inline.} = return m.fHeight - -proc `[,]`*(m: TMatrix, x, y: int): float {.inline.} = - result = m.data[x|y] - -proc `[,]=`*(m: var TMatrix, x, y: int, val: float) {.inline.} = - m.data[x|y] = val - -proc `[$ .. $, $ .. $]`*(m: TMatrix, a, b, c, d: int): TMatrix = - result = createMatrix(b-a+1, d-c+1) - for x in a..b: - for y in c..d: - result[x-a, y-c] = m[x, y] - -proc `[$ .. $, $ .. $]=`*(m: var TMatrix, a, b, c, d: int, val: float) = - for x in a..b: - for y in c..d: - m[x, y] = val - -proc `[$ .. $, $ .. $]=`*(m: var TMatrix, a, b, c, d: int, val: TMatrix) = - assert val.width == b-a+1 - assert val.height == d-c+1 - for x in a..b: - for y in c..d: - m[x, y] = val[x-a, y-c] - -proc `-|`*(m: TMatrix): TMatrix = - ## transposes a matrix - result = createMatrix(m.height, m.width) - for x in 0..m.width-1: - for y in 0..m.height-1: result[y,x] = m[x,y] - -#m.row(0, 2) # select row -#m.col(0, 89) # select column - -const - w = 3 - h = 20 - -var m = createMatrix(w, h) -for i in 0..w-1: - m[i, i] = 1.0 - -for i in 0..w-1: - stdout.write(m[i,i]) #OUT 111 diff --git a/tests/accept/run/tmultim1.nim b/tests/accept/run/tmultim1.nim deleted file mode 100755 index 5d807e4c9..000000000 --- a/tests/accept/run/tmultim1.nim +++ /dev/null @@ -1,23 +0,0 @@ -# Test multi methods - -type - TExpr = object - TLiteral = object of TExpr - x: int - TPlusExpr = object of TExpr - a, b: ref TExpr - -method eval(e: ref TExpr): int = quit "to override!" -method eval(e: ref TLiteral): int = return e.x -method eval(e: ref TPlusExpr): int = return eval(e.a) + eval(e.b) - -proc newLit(x: int): ref TLiteral = - new(result) - result.x = x - -proc newPlus(a, b: ref TExpr): ref TPlusExpr = - new(result) - result.a = a - result.b = b - -echo eval(newPlus(newPlus(newLit(1), newLit(2)), newLit(4))) #OUT 7 diff --git a/tests/accept/run/tmultim2.nim b/tests/accept/run/tmultim2.nim deleted file mode 100755 index bf3b5fd6e..000000000 --- a/tests/accept/run/tmultim2.nim +++ /dev/null @@ -1,30 +0,0 @@ -# Test multi methods - -type - TThing = object - TUnit = object of TThing - x: int - TParticle = object of TThing - a, b: int - -method collide(a, b: TThing) {.inline.} = - quit "to override!" - -method collide(a: TThing, b: TUnit) {.inline.} = - write stdout, "collide: thing, unit " - -method collide(a: TUnit, b: TThing) {.inline.} = - write stdout, "collide: unit, thing " - -proc test(a, b: TThing) {.inline.} = - collide(a, b) - -var - a: TThing - b, c: TUnit -collide(b, c) # ambiguous unit, thing or thing, unit? -> prefer unit, thing! -test(b, c) -collide(a, b) -#OUT collide: unit, thing collide: unit, thing collide: thing, unit - - diff --git a/tests/accept/run/tmultim3.nim b/tests/accept/run/tmultim3.nim deleted file mode 100755 index a3271d8d9..000000000 --- a/tests/accept/run/tmultim3.nim +++ /dev/null @@ -1,14 +0,0 @@ -import mmultim3 - -type - TBObj* = object of TObj - - -method test123(a : ref TBObj) = - echo("Hi derived!") - -var a : ref TBObj -new(a) -myObj = a -testMyObj() - diff --git a/tests/accept/run/tmultim4.nim b/tests/accept/run/tmultim4.nim deleted file mode 100644 index fbfaf3175..000000000 --- a/tests/accept/run/tmultim4.nim +++ /dev/null @@ -1,39 +0,0 @@ -type - Test = object of TObject - -method doMethod(a: ref TObject) = - quit "override" - -method doMethod(a: ref Test) = - echo "hello" - -proc doProc(a: ref Test) = - echo "hello" - -proc newTest(): ref Test = - new(result) - -var s:ref Test = newTest() - - -#doesn't work -for z in 1..4: - s.doMethod() - break - -#works -#for z in 1..4: -# s.doProc() -# break - -#works -#while true: -# s.doMethod() -# break - -#works -#while true: -# s.doProc() -# break - - diff --git a/tests/accept/run/tnamedenumfields.nim b/tests/accept/run/tnamedenumfields.nim deleted file mode 100644 index 6012cf1eb..000000000 --- a/tests/accept/run/tnamedenumfields.nim +++ /dev/null @@ -1,17 +0,0 @@ - -const - strValB = "my value B" - -type - TMyEnum = enum - valueA = (0, "my value A"), - valueB = strValB & "conc", - valueC, - valueD = (3, "abc"), - valueE = 4 - -# trick the optimizer with a variable: -var x = valueD -echo valueA, ord(valueA), valueB, ord(valueB), valueC, valueD, ord(valueD), x - - diff --git a/tests/accept/run/tnestif.nim b/tests/accept/run/tnestif.nim deleted file mode 100755 index 558fe8d07..000000000 --- a/tests/accept/run/tnestif.nim +++ /dev/null @@ -1,18 +0,0 @@ -# test nested ifs - -var - x, y: int -x = 2 -if x == 0: - write(stdout, "i == 0") - if y == 0: - write(stdout, x) - else: - write(stdout, y) -elif x == 1: - write(stdout, "i == 1") -elif x == 2: - write(stdout, "i == 2") -else: - write(stdout, "looks like Python") -#OUT i == 2 diff --git a/tests/accept/run/tnestprc.nim b/tests/accept/run/tnestprc.nim deleted file mode 100755 index b7326e032..000000000 --- a/tests/accept/run/tnestprc.nim +++ /dev/null @@ -1,10 +0,0 @@ -# Test nested procs without closures - -proc Add3(x: int): int = - proc add(x, y: int): int {.noconv.} = - result = x + y - - result = add(x, 3) - -echo Add3(7) #OUT 10 - diff --git a/tests/accept/run/toop1.nim b/tests/accept/run/toop1.nim deleted file mode 100755 index 8bae002e7..000000000 --- a/tests/accept/run/toop1.nim +++ /dev/null @@ -1,82 +0,0 @@ -# Test the stuff in the tutorial -import macros - -type - TFigure = object of TObject # abstract base class: - draw: proc (my: var TFigure) # concrete classes implement this proc - -proc init(f: var TFigure) = - f.draw = nil - -type - TCircle = object of TFigure - radius: int - -proc drawCircle(my: var TCircle) = stdout.writeln("o " & $my.radius) - -proc init(my: var TCircle) = - init(TFigure(my)) # call base constructor - my.radius = 5 - my.draw = drawCircle - -type - TRectangle = object of TFigure - width, height: int - -proc drawRectangle(my: var TRectangle) = stdout.write("[]") - -proc init(my: var TRectangle) = - init(TFigure(my)) # call base constructor - my.width = 5 - my.height = 10 - my.draw = drawRectangle - -macro `!` (n: expr): stmt = - result = newNimNode(nnkCall, n) - var dot = newNimNode(nnkDotExpr, n) - dot.add(n[1]) # obj - if n[2].kind == nnkCall: - # transforms ``obj!method(arg1, arg2, ...)`` to - # ``(obj.method)(obj, arg1, arg2, ...)`` - dot.add(n[2][0]) # method - result.add(dot) - result.add(n[1]) # obj - for i in 1..n[2].len-1: - result.add(n[2][i]) - else: - # transforms ``obj!method`` to - # ``(obj.method)(obj)`` - dot.add(n[2]) # method - result.add(dot) - result.add(n[1]) # obj - -type - TSocket* = object of TObject - FHost: int # cannot be accessed from the outside of the module - # the `F` prefix is a convention to avoid clashes since - # the accessors are named `host` - -proc `host=`*(s: var TSocket, value: int) {.inline.} = - ## setter of hostAddr - s.FHost = value - -proc host*(s: TSocket): int {.inline.} = - ## getter of hostAddr - return s.FHost - -var - s: TSocket -s.host = 34 # same as `host=`(s, 34) -stdout.write(s.host) - -# now use these classes: -var - r: TRectangle - c: TCircle -init(r) -init(c) -r!draw -c!draw() - -#OUT 34[]o 5 - diff --git a/tests/accept/run/topenarrayrepr.nim b/tests/accept/run/topenarrayrepr.nim deleted file mode 100755 index 7e976540f..000000000 --- a/tests/accept/run/topenarrayrepr.nim +++ /dev/null @@ -1,11 +0,0 @@ -type - TProc = proc (n: int, m: openarray[int64]) - -proc Foo(x: int, P: TProc) = - P(x, [ 1'i64 ]) - -proc Bar(n: int, m: openarray[int64]) = - echo($n & " - " & repr(m)) - -Foo(5, Bar) #OUT 5 - [1] - diff --git a/tests/accept/run/topenlen.nim b/tests/accept/run/topenlen.nim deleted file mode 100755 index b9d7fbc2d..000000000 --- a/tests/accept/run/topenlen.nim +++ /dev/null @@ -1,12 +0,0 @@ -# Tests a special bug - -proc choose(b: openArray[string]): string = return b[0] - -proc p(a, b: openarray[string]): int = - result = a.len + b.len - 1 - for j in 0 .. a.len: inc(result) - discard choose(a) - discard choose(b) - -discard choose(["sh", "-c", $p([""], ["a"])]) -echo($p(["", "ha", "abc"], ["xyz"])) #OUT 7 diff --git a/tests/accept/run/toprprec.nim b/tests/accept/run/toprprec.nim deleted file mode 100644 index 4728b2e68..000000000 --- a/tests/accept/run/toprprec.nim +++ /dev/null @@ -1,12 +0,0 @@ -# Test operator precedence: - -assert 3+5*5-2 == 28- -26-28 - -proc `^-` (x, y: int): int = - # now right-associative! - result = x - y - -assert 34 ^- 6 ^- 2 == 30 -assert 34 - 6 - 2 == 26 -echo "done" - diff --git a/tests/accept/run/toverflw.nim b/tests/accept/run/toverflw.nim deleted file mode 100755 index 3dadcf13b..000000000 --- a/tests/accept/run/toverflw.nim +++ /dev/null @@ -1,15 +0,0 @@ -# Tests nimrod's ability to detect overflows - -{.push overflowChecks: on.} - -var - a, b: int -a = high(int) -b = -2 -try: - writeln(stdout, b - a) -except EOverflow: - writeln(stdout, "the computation overflowed") - -{.pop.} # overflow check -#OUT the computation overflowed diff --git a/tests/accept/run/toverflw2.nim b/tests/accept/run/toverflw2.nim deleted file mode 100755 index b54bda9fa..000000000 --- a/tests/accept/run/toverflw2.nim +++ /dev/null @@ -1,5 +0,0 @@ -var a : int32 = 2147483647 -var b : int32 = 2147483647 -var c = a + b - - diff --git a/tests/accept/run/toverl2.nim b/tests/accept/run/toverl2.nim deleted file mode 100755 index 2d1225c6f..000000000 --- a/tests/accept/run/toverl2.nim +++ /dev/null @@ -1,21 +0,0 @@ -# Test new overloading resolution rules - -import strutils - -proc toverl2(x: int): string = return $x -proc toverl2(x: bool): string = return $x - -iterator toverl2(x: int): int = - var res = 0 - while res < x: - yield res - inc(res) - -var - pp: proc (x: bool): string = toverl2 -stdout.write(pp(true)) -for x in toverl2(3): - stdout.write(toverl2(x)) -stdout.write("\n") -#OUT true012 - diff --git a/tests/accept/run/toverlop.nim b/tests/accept/run/toverlop.nim deleted file mode 100755 index f11275644..000000000 --- a/tests/accept/run/toverlop.nim +++ /dev/null @@ -1,10 +0,0 @@ -# Test operator overloading - -proc `%` (a, b: int): int = - return a mod b - -var x, y: int -x = 15 -y = 6 -write(stdout, x % y) -#OUT 3 diff --git a/tests/accept/run/toverwr.nim b/tests/accept/run/toverwr.nim deleted file mode 100755 index 6705c6b3f..000000000 --- a/tests/accept/run/toverwr.nim +++ /dev/null @@ -1,7 +0,0 @@ -# Test the overloading resolution in connection with a qualifier - -proc write(t: TFile, s: string) = - nil # a nop - -system.write(stdout, "hello") -#OUT hello diff --git a/tests/accept/run/tovfint.nim b/tests/accept/run/tovfint.nim deleted file mode 100755 index 91eda8d0b..000000000 --- a/tests/accept/run/tovfint.nim +++ /dev/null @@ -1,17 +0,0 @@ -# this tests the new overflow literals - -var - i: int -i = int(0xffffffff) -when defined(cpu64): - if i == 4294967295: - write(stdout, "works!\n") - else: - write(stdout, "broken!\n") -else: - if i == -1: - write(stdout, "works!\n") - else: - write(stdout, "broken!\n") - -#OUT works! diff --git a/tests/accept/run/tpos.nim b/tests/accept/run/tpos.nim deleted file mode 100755 index df701d3c5..000000000 --- a/tests/accept/run/tpos.nim +++ /dev/null @@ -1,29 +0,0 @@ -# test this particular function - -proc mypos(sub, s: string, start: int = 0): int = - var - i, j, M, N: int - M = sub.len - N = s.len - i = start - j = 0 - if i >= N: - result = -1 - else: - while True: - if s[i] == sub[j]: - Inc(i) - Inc(j) - else: - i = i - j + 1 - j = 0 - if (j >= M) or (i >= N): break - if j >= M: - result = i - M - else: - result = -1 - -var sub = "hello" -var s = "world hello" -write(stdout, mypos(sub, s)) -#OUT 6 diff --git a/tests/accept/run/tprintf.nim b/tests/accept/run/tprintf.nim deleted file mode 100755 index 14687a937..000000000 --- a/tests/accept/run/tprintf.nim +++ /dev/null @@ -1,10 +0,0 @@ -# Test a printf proc - -proc printf(file: TFile, args: openarray[string]) = - var i = 0 - while i < args.len: - write(file, args[i]) - inc(i) - -printf(stdout, ["Andreas ", "Rumpf\n"]) -#OUT Andreas Rumpf diff --git a/tests/accept/run/tprocvar.nim b/tests/accept/run/tprocvar.nim deleted file mode 100755 index f51543dfa..000000000 --- a/tests/accept/run/tprocvar.nim +++ /dev/null @@ -1,26 +0,0 @@ -# test variables of type proc - -proc pa() {.cdecl.} = write(stdout, "pa") -proc pb() {.cdecl.} = write(stdout, "pb") -proc pc() {.cdecl.} = write(stdout, "pc") -proc pd() {.cdecl.} = write(stdout, "pd") -proc pe() {.cdecl.} = write(stdout, "pe") - -const - algos = [pa, pb, pc, pd, pe] - -var - x: proc (a, b: int): int {.cdecl.} - -proc ha(c, d: int): int {.cdecl.} = - echo(c + d) - result = c + d - -for a in items(algos): - a() - -x = ha -discard x(3, 4) - -#OUT papbpcpdpe7 - diff --git a/tests/accept/run/tquotewords.nim b/tests/accept/run/tquotewords.nim deleted file mode 100755 index 462293b40..000000000 --- a/tests/accept/run/tquotewords.nim +++ /dev/null @@ -1,19 +0,0 @@ -# Test an idea I recently had: - -import macros - -macro quoteWords(n: expr): expr = - result = newNimNode(nnkBracket, n) - for i in 1..n.len-1: - expectKind(n[i], nnkIdent) - result.add(toStrLit(n[i])) - -const - myWordList = quoteWords(this, an, example) - -var s = "" -for w in items(myWordList): - s.add(w) - -echo s #OUT thisanexample - diff --git a/tests/accept/run/tregex.nim b/tests/accept/run/tregex.nim deleted file mode 100755 index 43dc8f99c..000000000 --- a/tests/accept/run/tregex.nim +++ /dev/null @@ -1,19 +0,0 @@ -# Test the new regular expression module -# which is based on the PCRE library - -import - re - -if "keyA = valueA" =~ re"\s*(\w+)\s*\=\s*(\w+)": - write(stdout, "key: ", matches[0]) -elif "# comment!" =~ re"\s*(\#.*)": - echo("comment: ", matches[0]) -else: - echo("Bug!") - -if "Username".match(re"[A-Za-z]+"): - echo("Yes!") -else: - echo("Bug!") - -#OUT key: keyAYes! diff --git a/tests/accept/run/treguse.nim b/tests/accept/run/treguse.nim deleted file mode 100755 index dc805fc70..000000000 --- a/tests/accept/run/treguse.nim +++ /dev/null @@ -1,21 +0,0 @@ -# Test the register usage of the virtual machine and -# the blocks in var statements - -proc main(a, b: int) = - var x = 0 - write(stdout, x) - if x == 0: - var y = 55 - write(stdout, y) - write(stdout, "this should be the case") - var input = "<no input>" - if input == "Andreas": - write(stdout, "wow") - else: - write(stdout, "hugh") - else: - var z = 66 - write(stdout, z) # "bug!") - -main(45, 1000) -#OUT 055this should be the casehugh diff --git a/tests/accept/run/treraise.nim b/tests/accept/run/treraise.nim deleted file mode 100755 index 18f2b5f54..000000000 --- a/tests/accept/run/treraise.nim +++ /dev/null @@ -1,17 +0,0 @@ -type - ESomething = object of E_Base - ESomeOtherErr = object of E_Base - -proc genErrors(s: string) = - if s == "error!": - raise newException(ESomething, "Test") - else: - raise newException(EsomeotherErr, "bla") - -try: - genErrors("errssor!") -except ESomething: - echo("Error happened") -except: - raise - diff --git a/tests/accept/run/tromans.nim b/tests/accept/run/tromans.nim deleted file mode 100755 index 12deca1ea..000000000 --- a/tests/accept/run/tromans.nim +++ /dev/null @@ -1,65 +0,0 @@ -import - strutils - -## Convert an integer to a Roman numeral -# See http://en.wikipedia.org/wiki/Roman_numerals for reference - -proc raiseInvalidValue(msg: string) {.noreturn.} = - # Yes, we really need a shorthand for this code... - var e: ref EInvalidValue - new(e) - e.msg = msg - raise e - -# I should use a class, perhaps. -# --> No. Why introduce additional state into such a simple and nice -# interface? State is evil. :D - -proc RomanToDecimal(romanVal: string): int = - result = 0 - var prevVal = 0 - for i in countdown(romanVal.len - 1, 0): - var val = 0 - case romanVal[i] - of 'I', 'i': val = 1 - of 'V', 'v': val = 5 - of 'X', 'x': val = 10 - of 'L', 'l': val = 50 - of 'C', 'c': val = 100 - of 'D', 'd': val = 500 - of 'M', 'm': val = 1000 - else: raiseInvalidValue("Incorrect character in roman numeral! (" & - $romanVal[i] & ")") - if val >= prevVal: - inc(result, val) - else: - dec(result, val) - prevVal = val - -proc DecimalToRoman(decValParam: int): string = - # Apparently numbers cannot be above 4000 - # Well, they can be (using overbar or parenthesis notation) - # but I see little interest (beside coding challenge) in coding them as - # we rarely use huge Roman numeral. - const romanComposites = [ - ("M", 1000), ("CM", 900), - ("D", 500), ("CD", 400), ("C", 100), - ("XC", 90), ("L", 50), ("XL", 40), ("X", 10), ("IX", 9), - ("V", 5), ("IV", 4), ("I", 1)] - if decValParam < 1 or decValParam > 3999: - raiseInvalidValue("number not representable") - result = "" - var decVal = decValParam - for key, val in items(romanComposites): - while decVal >= val: - dec(decVal, val) - result.add(key) - -for i in 1..100: - if RomanToDecimal(DecimalToRoman(i)) != i: quit "BUG" - -for i in items([1238, 1777, 3830, 2401, 379, 33, 940, 3973]): - if RomanToDecimal(DecimalToRoman(i)) != i: quit "BUG" - -echo "success" #OUT success - diff --git a/tests/accept/run/tseqcon.nim b/tests/accept/run/tseqcon.nim deleted file mode 100755 index 935da86b5..000000000 --- a/tests/accept/run/tseqcon.nim +++ /dev/null @@ -1,45 +0,0 @@ -# Test the add proc for sequences and strings - -const - nestedFixed = true - -type - TRec {.final.} = object - x, y: int - s: string - seq: seq[string] - TRecSeq = seq[TRec] - -proc test() = - var s, b: seq[string] - s = @[] - add(s, "Hi") - add(s, "there, ") - add(s, "what's your name?") - - b = s # deep copying here! - b[0][1] = 'a' - - for i in 0 .. len(s)-1: - write(stdout, s[i]) - for i in 0 .. len(b)-1: - write(stdout, b[i]) - - -when nestedFixed: - proc nested() = - var - s: seq[seq[string]] - for i in 0..10_000: # test if the garbage collector - # now works with sequences - s = @[ - @["A", "B", "C", "D"], - @["E", "F", "G", "H"], - @["I", "J", "K", "L"], - @["M", "N", "O", "P"]] - -test() -when nestedFixed: - nested() - -#OUT Hithere, what's your name?Hathere, what's your name? diff --git a/tests/accept/run/tseqtuple.nim b/tests/accept/run/tseqtuple.nim deleted file mode 100755 index 975521c56..000000000 --- a/tests/accept/run/tseqtuple.nim +++ /dev/null @@ -1,22 +0,0 @@ - -type - TMsg = tuple[ - file: string, - line: int, - msg: string, - err: bool] - -var s: seq[TMsg] = @[] - -s.add(("fA", 13, "msg1", false)) -s.add(("fB", 14, "msg2", true)) -s.add(("fC", 15, "msg3", false)) - -for file, line, msg, err in items(s): - stdout.write(file) - stdout.write($line) - stdout.write(msg) - stdout.write($err) - -#OUT fA13msg1falsefB14msg2truefC15msg3false - diff --git a/tests/accept/run/tsets.nim b/tests/accept/run/tsets.nim deleted file mode 100755 index 08ab3e54b..000000000 --- a/tests/accept/run/tsets.nim +++ /dev/null @@ -1,58 +0,0 @@ -# Test the handling of sets - -import - strutils - -proc testSets(s: var set[char]) = - s = {'A', 'B', 'C', 'E'..'G'} + {'Z'} + s - -# test sets if the first element is different from 0: -type - TAZ = range['a'..'z'] - TAZset = set[TAZ] - - TTokType* = enum - tkInvalid, tkEof, - tkSymbol, - tkAddr, tkAnd, tkAs, tkAsm, tkBlock, tkBreak, tkCase, tkCast, tkConst, - tkContinue, tkConverter, tkDiscard, tkDiv, tkElif, tkElse, tkEnd, tkEnum, - tkExcept, tkException, tkFinally, tkFor, tkFrom, tkGeneric, tkIf, tkImplies, - tkImport, tkIn, tkInclude, tkIs, tkIsnot, tkIterator, tkLambda, tkMacro, - tkMethod, tkMod, tkNil, tkNot, tkNotin, tkObject, tkOf, tkOr, tkOut, tkProc, - tkPtr, tkRaise, tkRecord, tkRef, tkReturn, tkShl, tkShr, tkTemplate, tkTry, - tkType, tkVar, tkWhen, tkWhere, tkWhile, tkWith, tkWithout, tkXor, tkYield, - tkIntLit, tkInt8Lit, tkInt16Lit, tkInt32Lit, tkInt64Lit, tkFloatLit, - tkFloat32Lit, tkFloat64Lit, tkStrLit, tkRStrLit, tkTripleStrLit, tkCharLit, - tkRCharLit, tkParLe, tkParRi, tkBracketLe, tkBracketRi, tkCurlyLe, - tkCurlyRi, tkBracketDotLe, tkBracketDotRi, - tkCurlyDotLe, tkCurlyDotRi, - tkParDotLe, tkParDotRi, - tkComma, tkSemiColon, tkColon, tkEquals, tkDot, tkDotDot, tkHat, tkOpr, - tkComment, tkAccent, tkInd, tkSad, tkDed, - tkSpaces, tkInfixOpr, tkPrefixOpr, tkPostfixOpr - TTokTypeRange = range[tkSymbol..tkDed] - TTokTypes* = set[TTokTypeRange] - -const - toktypes: TTokTypes = {TTokTypeRange(tkSymbol)..pred(tkIntLit), - tkStrLit..tkTripleStrLit} - -var - s: set[char] - a: TAZset -s = {'0'..'9'} -testSets(s) -if 'F' in s: write(stdout, "Ha ein F ist in s!\n") -else: write(stdout, "BUG: F ist nicht in s!\n") -a = {} #{'a'..'z'} -for x in low(TAZ) .. high(TAZ): - incl(a, x) - if x in a: nil - else: write(stdout, "BUG: something not in a!\n") - -for x in low(TTokTypeRange) .. high(TTokTypeRange): - if x in tokTypes: - nil - #writeln(stdout, "the token '$1' is in the set" % repr(x)) - -#OUT Ha ein F ist in s! diff --git a/tests/accept/run/tsidee2.nim b/tests/accept/run/tsidee2.nim deleted file mode 100755 index 2eaec01d7..000000000 --- a/tests/accept/run/tsidee2.nim +++ /dev/null @@ -1,11 +0,0 @@ - -var - global: int - -proc dontcare(x: int): int = return x - -proc SideEffectLyer(x, y: int): int {.noSideEffect.} = - return x + y + dontcare(x) - -echo SideEffectLyer(1, 3) #OUT 5 - diff --git a/tests/accept/run/tsidee3.nim b/tests/accept/run/tsidee3.nim deleted file mode 100755 index be94192e7..000000000 --- a/tests/accept/run/tsidee3.nim +++ /dev/null @@ -1,11 +0,0 @@ - -var - global: int - -proc dontcare(x: int): int {.noSideEffect.} = return x - -proc noSideEffect(x, y: int, p: proc (a: int): int {.noSideEffect.}): int {.noSideEffect.} = - return x + y + dontcare(x) - -echo noSideEffect(1, 3, dontcare) #OUT 5 - diff --git a/tests/accept/run/tsimmeth.nim b/tests/accept/run/tsimmeth.nim deleted file mode 100755 index c6dbf69bb..000000000 --- a/tests/accept/run/tsimmeth.nim +++ /dev/null @@ -1,8 +0,0 @@ -# Test method simulation - -import strutils - -var x = "hello world!".toLower.toUpper -x.echo() -#OUT HELLO WORLD! - diff --git a/tests/accept/run/tsplit.nim b/tests/accept/run/tsplit.nim deleted file mode 100755 index 711696b9e..000000000 --- a/tests/accept/run/tsplit.nim +++ /dev/null @@ -1,14 +0,0 @@ -import strutils - -var s = "" -for w in split("|abc|xy|z", {'|'}): - s.add("#") - s.add(w) - -if s == "#abc#xy#z": - echo "true" -else: - echo "false" - -#OUT true - diff --git a/tests/accept/run/tstrange.nim b/tests/accept/run/tstrange.nim deleted file mode 100755 index 13aab2302..000000000 --- a/tests/accept/run/tstrange.nim +++ /dev/null @@ -1,17 +0,0 @@ -# test for extremely strange bug - -proc ack(x: int, y: int): int = - if x != 0: - if y != 5: - return y - return x - return x+y - -proc gen[T](a: T) = - write(stdout, a) - - -gen("hallo") -write(stdout, ack(5, 4)) -#OUT hallo4 - diff --git a/tests/accept/run/tstrlits.nim b/tests/accept/run/tstrlits.nim deleted file mode 100755 index 48ae08212..000000000 --- a/tests/accept/run/tstrlits.nim +++ /dev/null @@ -1,14 +0,0 @@ -# Test the new different string literals - -const - tripleEmpty = """"long string"""""""" # "long string """"" - - rawQuote = r"a""" - - raw = r"abc""def" - -stdout.write(rawQuote) -stdout.write(tripleEmpty) -stdout.write(raw) -#OUT a""long string"""""abc"def - diff --git a/tests/accept/run/tstrutil.nim b/tests/accept/run/tstrutil.nim deleted file mode 100755 index 0488d1dc7..000000000 --- a/tests/accept/run/tstrutil.nim +++ /dev/null @@ -1,39 +0,0 @@ -# test the new strutils module - -import - strutils - -proc testStrip() = - write(stdout, strip(" ha ")) - -proc main() = - testStrip() - for p in split("/home/a1:xyz:/usr/bin", {':'}): - write(stdout, p) - -proc testDelete = - var s = "0123456789ABCDEFGH" - delete(s, 4, 5) - assert s == "01236789ABCDEFGH" - delete(s, s.len-1, s.len-1) - assert s == "01236789ABCDEFG" - delete(s, 0, 0) - assert s == "1236789ABCDEFG" - -testDelete() - -assert(insertSep($1000_000) == "1_000_000") -assert(insertSep($232) == "232") -assert(insertSep($12345, ',') == "12,345") -assert(insertSep($0) == "0") - -assert(editDistance("prefix__hallo_suffix", "prefix__hallo_suffix") == 0) -assert(editDistance("prefix__hallo_suffix", "prefix__hallo_suffi1") == 1) -assert(editDistance("prefix__hallo_suffix", "prefix__HALLO_suffix") == 5) -assert(editDistance("prefix__hallo_suffix", "prefix__ha_suffix") == 3) -assert(editDistance("prefix__hallo_suffix", "prefix") == 14) -assert(editDistance("prefix__hallo_suffix", "suffix") == 14) -assert(editDistance("prefix__hallo_suffix", "prefix__hao_suffix") == 2) - -main() -#OUT ha/home/a1xyz/usr/bin diff --git a/tests/accept/run/tunhandledexc.nim b/tests/accept/run/tunhandledexc.nim deleted file mode 100755 index 36ba5418d..000000000 --- a/tests/accept/run/tunhandledexc.nim +++ /dev/null @@ -1,16 +0,0 @@ -type - ESomething = object of E_Base - ESomeOtherErr = object of E_Base - -proc genErrors(s: string) = - if s == "error!": - raise newException(ESomething, "Test") - else: - raise newException(EsomeotherErr, "bla") - -when True: - try: - genErrors("errssor!") - except ESomething: - echo("Error happened") - diff --git a/tests/accept/run/tvardecl.nim b/tests/accept/run/tvardecl.nim deleted file mode 100755 index 496601e3a..000000000 --- a/tests/accept/run/tvardecl.nim +++ /dev/null @@ -1,9 +0,0 @@ -# Test the new variable declaration syntax - -var - x = 0 - s = "Hallo" - a, b: int = 4 - -write(stdout, a) -write(stdout, b) #OUT 44 diff --git a/tests/accept/run/tvariantasgn.nim b/tests/accept/run/tvariantasgn.nim deleted file mode 100755 index 2cc38f434..000000000 --- a/tests/accept/run/tvariantasgn.nim +++ /dev/null @@ -1,24 +0,0 @@ -#BUG -type - TAnyKind = enum - nkInt, - nkFloat, - nkString - TAny = object - case kind: TAnyKind - of nkInt: intVal: int - of nkFloat: floatVal: float - of nkString: strVal: string - -var s: TAny -s.kind = nkString -s.strVal = "test" - -var nr: TAny -nr.kind = nkint -nr.intVal = 78 - - -# s = nr # works -nr = s # fails! -echo "came here" diff --git a/tests/accept/run/tvariantstack.nim b/tests/accept/run/tvariantstack.nim deleted file mode 100755 index e7378ce9a..000000000 --- a/tests/accept/run/tvariantstack.nim +++ /dev/null @@ -1,46 +0,0 @@ -#BUG -type - TAnyKind = enum - nkInt, - nkFloat, - nkString - PAny = ref TAny - TAny = object - case kind: TAnyKind - of nkInt: intVal: int - of nkFloat: floatVal: float - of nkString: strVal: string - - TStack* = object - list*: seq[TAny] - -proc newStack(): TStack = - result.list = @[] - -proc push(Stack: var TStack, item: TAny) = - var nSeq: seq[TAny] = @[item] - for i in items(Stack.list): - nSeq.add(i) - Stack.list = nSeq - -proc pop(Stack: var TStack): TAny = - result = Stack.list[0] - Stack.list.delete(0) - -var stack = newStack() - -var s: TAny -s.kind = nkString -s.strVal = "test" - -stack.push(s) - -var nr: TAny -nr.kind = nkint -nr.intVal = 78 - -stack.push(nr) - -var t = stack.pop() -echo "came here" - diff --git a/tests/accept/run/tvarnums.nim b/tests/accept/run/tvarnums.nim deleted file mode 100755 index 1b683ad94..000000000 --- a/tests/accept/run/tvarnums.nim +++ /dev/null @@ -1,136 +0,0 @@ -# Test variable length binary integers - -import - strutils - -type - TBuffer = array [0..10, int8] - -proc toVarNum(x: int32, b: var TBuffer) = - # encoding: first bit indicates end of number (0 if at end) - # second bit of the first byte denotes the sign (1 --> negative) - var a = x - if x != low(x): - # low(int) is a special case, - # because abs() does not work here! - # we leave x as it is and use the check >% instead of > - # for low(int) this is needed and positive numbers are not affected - # anyway - a = abs(x) - # first 6 bits: - b[0] = toU8(ord(a >% 63'i32) shl 7 or (ord(x < 0'i32) shl 6) or (int(a) and 63)) - a = a shr 6'i32 # skip first 6 bits - var i = 1 - while a != 0'i32: - b[i] = toU8(ord(a >% 127'i32) shl 7 or (int(a) and 127)) - inc(i) - a = a shr 7'i32 - -proc toVarNum64(x: int64, b: var TBuffer) = - # encoding: first bit indicates end of number (0 if at end) - # second bit of the first byte denotes the sign (1 --> negative) - var a = x - if x != low(x): - # low(int) is a special case, - # because abs() does not work here! - # we leave x as it is and use the check >% instead of > - # for low(int) this is needed and positive numbers are not affected - # anyway - a = abs(x) - # first 6 bits: - b[0] = toU8(ord(a >% 63'i64) shl 7 or (ord(x < 0'i64) shl 6) or int(a and 63)) - a = a shr 6 # skip first 6 bits - var i = 1 - while a != 0'i64: - b[i] = toU8(ord(a >% 127'i64) shl 7 or int(a and 127)) - inc(i) - a = a shr 7 - -proc toNum64(b: TBuffer): int64 = - # treat first byte different: - result = ze64(b[0]) and 63 - var - i = 0 - Shift = 6'i64 - while (ze(b[i]) and 128) != 0: - inc(i) - result = result or ((ze64(b[i]) and 127) shl Shift) - inc(Shift, 7) - if (ze(b[0]) and 64) != 0: # sign bit set? - result = not result +% 1 - # this is the same as ``- result`` - # but gives no overflow error for low(int) - -proc toNum(b: TBuffer): int32 = - # treat first byte different: - result = ze(b[0]) and 63 - var - i = 0 - Shift = 6'i32 - while (ze(b[i]) and 128) != 0: - inc(i) - result = result or ((int32(ze(b[i])) and 127'i32) shl Shift) - Shift = shift + 7'i32 - if (ze(b[0]) and (1 shl 6)) != 0: # sign bit set? - result = (not result) +% 1'i32 - # this is the same as ``- result`` - # but gives no overflow error for low(int) - -proc toBinary(x: int64): string = - result = newString(64) - for i in 0..63: - result[63-i] = chr((int(x shr i) and 1) + ord('0')) - -proc t64(i: int64) = - var - b: TBuffer - toVarNum64(i, b) - var x = toNum64(b) - if x != i: - writeln(stdout, $i) - writeln(stdout, toBinary(i)) - writeln(stdout, toBinary(x)) - -proc t32(i: int32) = - var - b: TBuffer - toVarNum(i, b) - var x = toNum(b) - if x != i: - writeln(stdout, toBinary(i)) - writeln(stdout, toBinary(x)) - -proc tm(i: int32) = - var - b: TBuffer - toVarNum64(i, b) - var x = toNum(b) - if x != i: - writeln(stdout, toBinary(i)) - writeln(stdout, toBinary(x)) - -t32(0) -t32(1) -t32(-1) -t32(-100_000) -t32(100_000) -t32(low(int32)) -t32(high(int32)) - -t64(low(int64)) -t64(high(int64)) -t64(0) -t64(-1) -t64(1) -t64(1000_000) -t64(-1000_000) - -tm(0) -tm(1) -tm(-1) -tm(-100_000) -tm(100_000) -tm(low(int32)) -tm(high(int32)) - -writeln(stdout, "Success!") #OUT Success! diff --git a/tests/accept/run/tvartup.nim b/tests/accept/run/tvartup.nim deleted file mode 100755 index 05b00b207..000000000 --- a/tests/accept/run/tvartup.nim +++ /dev/null @@ -1,11 +0,0 @@ -# Test the new tuple unpacking - -proc divmod(a, b: int): tuple[di, mo: int] = - return (a div b, a mod b) - -var (x, y) = divmod(15, 6) -stdout.write(x) -stdout.write(" ") -stdout.write(y) - -#OUT 2 3 diff --git a/tests/accept/run/twrongexc.nim b/tests/accept/run/twrongexc.nim deleted file mode 100755 index 8ba07bbce..000000000 --- a/tests/accept/run/twrongexc.nim +++ /dev/null @@ -1,6 +0,0 @@ -try: - raise newException(EInvalidValue, "") -except EOverflow: - echo("Error caught") - - diff --git a/tests/accept/run/txmlgen.nim b/tests/accept/run/txmlgen.nim deleted file mode 100755 index 56ca42d53..000000000 --- a/tests/accept/run/txmlgen.nim +++ /dev/null @@ -1,6 +0,0 @@ -import xmlgen - -var nim = "Nimrod" -echo h1(a(href="http://force7.de/nimrod", nim)) - - diff --git a/tests/accept/run/txmltree.nim b/tests/accept/run/txmltree.nim deleted file mode 100755 index 2e5f52576..000000000 --- a/tests/accept/run/txmltree.nim +++ /dev/null @@ -1,7 +0,0 @@ - -import xmltree, strtabs - -var x = <>a(href="nimrod.de", newText("www.nimrod-test.de")) - -echo($x == "<a href=\"nimrod.de\">www.nimrod-test.de</a>") - |