Merge branch 'devel' of https://github.com/Araq/Nim into add-nre

* 'devel' of https://github.com/Araq/Nim:
  Fix #964, fix #1384
  Don't inspect typedescs
This commit is contained in:
Flaviu Tamas 2015-05-26 19:32:50 -04:00
commit 90ed34db72
168 changed files with 6305 additions and 6961 deletions

View file

@ -1,6 +1,6 @@
discard """
line: 7
errormsg: "undeclared identifier: 'items'"
errormsg: "attempting to call undeclared routine: 'items'"
"""
type a = enum b,c,d

View file

@ -1,3 +1,7 @@
discard """
action: run
"""
type T = object
x: int
s: string
@ -29,8 +33,10 @@ doAssert objDeref.x == 42
obj.s = "lorem ipsum dolor sit amet"
var indexAddr = addr(obj.s[2])
doAssert indexAddr[] == '4'
doAssert indexAddr[] == 'r'
indexAddr[] = 'd'
doAssert indexAddr[] == 'd'
doAssert obj.s == "lodem ipsum dolor sit amet"

View file

@ -1,5 +1,7 @@
discard """
output: '''true'''
output: '''true
123
'''
"""
# This file tests some magic
@ -7,3 +9,4 @@ discard """
var foo = cstring("foo")
var bar = cstring("foo")
echo(foo == bar)
echo "01234"[1 .. ^2]

View file

@ -1,3 +1,7 @@
discard """
action: run
"""
## Tests javascript object generation
type
@ -28,7 +32,7 @@ var
recurse1 = Recurse[int](data: 1, next: recurse2)
assert(test.name == "Jorden")
assert(knight.age == 19)
assert(knight.item.price == 50)
assert(recurse1.next.next.data == 3)
doAssert test.name == "Jorden"
doAssert knight.age == 19
doAssert knight.item.price == 50
doAssert recurse1.next.next.data == 3

35
tests/js/trefbyvar.nim Normal file
View file

@ -0,0 +1,35 @@
discard """
output: '''0
5
0
5'''
"""
# bug #2476
type A = ref object
m: int
proc f(a: var A) =
var b: A
b.new()
b.m = 5
a = b
var t: A
t.new()
echo t.m
t.f()
echo t.m
proc main =
# now test the same for locals
var t: A
t.new()
echo t.m
t.f()
echo t.m
main()

View file

@ -1,10 +1,7 @@
discard """
disabled: "true"
output: '''[OK] >:)'''
"""
# Unittest uses lambdalifting at compile-time which we disable for the JS
# codegen! So this cannot and will not work for quite some time.
import unittest
suite "Bacon":

View file

@ -1,7 +1,7 @@
discard """
file: "tissue710.nim"
line: 8
errorMsg: "undeclared identifier: '||'"
errorMsg: "attempting to call undeclared routine: '||'"
"""
var sum = 0
for x in 3..1000:

View file

@ -1,7 +1,7 @@
discard """
file: "tnoop.nim"
line: 11
errormsg: "undeclared identifier: 'a'"
errormsg: "attempting to call undeclared routine: 'a'"
"""

View file

@ -1,16 +1,16 @@
discard """
file: "topaque.nim"
line: 16
errormsg: "undeclared identifier: \'buffer\'"
errormsg: "undeclared field: \'buffer\'"
"""
# Test the new opaque types
import
import
mopaque
var
L: TLexer
L.filename = "ha"
L.line = 34
L.buffer[0] = '\0' #ERROR_MSG undeclared field: 'buffer'

View file

@ -0,0 +1,26 @@
# bug #2854
import locks, threadpool, osproc
const MAX_WORKERS = 10
type
Killer = object
lock: Lock
bailed {.guard: lock.}: bool
processes {.guard: lock.}: array[0..MAX_WORKERS-1, foreign ptr Process]
template hold(lock: Lock, body: stmt) =
lock.acquire
defer: lock.release
{.locks: [lock].}:
body
proc initKiller*(): Killer =
initLock(result.lock)
result.lock.hold:
result.bailed = false
for i, _ in result.processes:
result.processes[i] = nil
var killer = initKiller()

View file

@ -0,0 +1,21 @@
import unittest
proc doThings(spuds: var int): int =
spuds = 24
return 99
test "#964":
var spuds = 0
check doThings(spuds) == 99
check spuds == 24
from strutils import toUpper
test "#1384":
check(@["hello", "world"].map(toUpper) == @["HELLO", "WORLD"])
import options
test "unittest typedescs":
check(none(int) == none(int))
check(none(int) != some(1))

View file

@ -1,7 +1,7 @@
discard """
file: "twrongtupleaccess.nim"
line: 9
errormsg: "undeclared identifier: \'setBLAH\'"
errormsg: "attempting to call undeclared routine: \'setBLAH\'"
"""
# Bugfix

14
tests/vm/tconstobj.nim Normal file
View file

@ -0,0 +1,14 @@
discard """
output: '''(name: hello)'''
"""
# bug #2774
type Foo = object
name: string
const fooArray = [
Foo(name: "hello")
]
echo fooArray[0]