diff options
author | Araq <rumpf_a@web.de> | 2011-11-29 17:27:48 +0100 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2011-11-29 17:27:48 +0100 |
commit | 7fcbdc6d422c92ec5070bee684c37a42c789dd46 (patch) | |
tree | cef1fb3a4b4f68d96e8d3f6b8adbcf6e0cff1a22 /tests | |
parent | 31a994cc107100c9c6f84455832ccce0b5fd9661 (diff) | |
download | Nim-7fcbdc6d422c92ec5070bee684c37a42c789dd46.tar.gz |
implemented 'let' statement
Diffstat (limited to 'tests')
-rw-r--r-- | tests/reject/tlet.nim | 11 | ||||
-rw-r--r-- | tests/reject/tlet2.nim | 16 | ||||
-rw-r--r-- | tests/run/tlet.nim | 19 | ||||
-rwxr-xr-x | tests/tester.nim | 18 |
4 files changed, 55 insertions, 9 deletions
diff --git a/tests/reject/tlet.nim b/tests/reject/tlet.nim new file mode 100644 index 000000000..3d36432fb --- /dev/null +++ b/tests/reject/tlet.nim @@ -0,0 +1,11 @@ +discard """ + line: "10" + errormsg: "'name' cannot be assigned to" +""" + +Echo("What's your name? ") +let name = readLine(stdin) +while name == "": + Echo("Please tell me your name: ") + name = readLine(stdin) + diff --git a/tests/reject/tlet2.nim b/tests/reject/tlet2.nim new file mode 100644 index 000000000..8b1ddf940 --- /dev/null +++ b/tests/reject/tlet2.nim @@ -0,0 +1,16 @@ +discard """ + line: "13" + errormsg: "for a 'var' type a variable needs to be passed" +""" + +proc divmod(a, b: int, res, remainder: var int) = + res = a div b # integer division + remainder = a mod b # integer modulo operation + +let + x = 9 + y = 3 +divmod(8, 5, x, y) # modifies x and y +echo(x) +echo(y) + diff --git a/tests/run/tlet.nim b/tests/run/tlet.nim new file mode 100644 index 000000000..ba355c5d8 --- /dev/null +++ b/tests/run/tlet.nim @@ -0,0 +1,19 @@ +discard """ + output: '''Very funny, your name is name. +nameabc''' +""" + +proc main = + let name = "name" + if name == "": + echo("Poor soul, you lost your name?") + elif name == "name": + echo("Very funny, your name is name.") + else: + Echo("Hi, ", name, "!") + + let (x, y) = ("abc", name) + echo y, x + +main() + diff --git a/tests/tester.nim b/tests/tester.nim index d50b4f766..15b1bb045 100755 --- a/tests/tester.nim +++ b/tests/tester.nim @@ -103,7 +103,7 @@ proc parseSpec(filename: string): TSpec = # ---------------------------------------------------------------------------- -var +let pegLineError = peg"{[^(]*} '(' {\d+} ', ' \d+ ') ' ('Error'/'Warning') ':' \s* {.*}" pegOtherError = peg"'Error:' \s* {.*}" @@ -111,10 +111,10 @@ var pegOfInterest = pegLineError / pegOtherError proc callCompiler(cmdTemplate, filename, options: string): TSpec = - var c = parseCmdLine(cmdTemplate % [options, filename]) + let c = parseCmdLine(cmdTemplate % [options, filename]) var p = startProcess(command=c[0], args=c[1.. -1], options={poStdErrToStdOut, poUseShell}) - var outp = p.outputStream + let outp = p.outputStream var suc = "" var err = "" var x = newStringOfCap(120) @@ -222,7 +222,7 @@ proc cmpMsgs(r: var TResults, expected, given: TSpec, test: string) = inc(r.passed) proc rejectSingleTest(r: var TResults, test, options: string) = - var test = test.addFileExt(".nim") + let test = test.addFileExt(".nim") var t = extractFilename(test) inc(r.total) echo t @@ -240,10 +240,10 @@ proc reject(r: var TResults, dir, options: string) = proc compile(r: var TResults, pattern, options: string) = for test in os.walkFiles(pattern): - var t = extractFilename(test) + let t = extractFilename(test) echo t inc(r.total) - var expected = parseSpec(test) + let expected = parseSpec(test) if expected.disabled: r.addResult(t, "", reIgnored) inc(r.skipped) @@ -253,11 +253,11 @@ proc compile(r: var TResults, pattern, options: string) = if not given.err: inc(r.passed) proc compileSingleTest(r: var TResults, test, options: string) = - var test = test.addFileExt(".nim") - var t = extractFilename(test) + let test = test.addFileExt(".nim") + let t = extractFilename(test) inc(r.total) echo t - var given = callCompiler(cmdTemplate, test, options) + let given = callCompiler(cmdTemplate, test, options) r.addResult(t, given.msg, if given.err: reFailure else: reSuccess) if not given.err: inc(r.passed) |