diff --git a/lib/system/reprjs.nim b/lib/system/reprjs.nim
index 658220c113..304ce43107 100644
--- a/lib/system/reprjs.nim
+++ b/lib/system/reprjs.nim
@@ -35,7 +35,7 @@ proc isUndefined[T](x: T): bool {.inline.} = {.emit: "`result` = `x` === undefin
proc reprEnum(e: int, typ: PNimType): string {.compilerRtl.} =
if not typ.node.sons[e].isUndefined:
- result = $typ.node.sons[e].name
+ result = makeNimstrLit(typ.node.sons[e].name)
else:
result = $e & " (invalid data!)"
diff --git a/readme.md b/readme.md
index 6fbe60c6ae..1d4ef4f5b8 100644
--- a/readme.md
+++ b/readme.md
@@ -92,7 +92,7 @@ This project exists thanks to all the people who contribute. [Read on to find ou
## Contributing
-[](#backers) [](#sponsors) [![Contribute to Nim via Gratipay][badge-nim-gratipay]][nim-gratipay]
+[](#backers) [](#sponsors)
[![Setup a bounty via Bountysource][badge-nim-bountysource]][nim-bountysource]
[![Donate Bitcoins][badge-nim-bitcoin]][nim-bitcoin]
@@ -137,7 +137,6 @@ You can also help with the development of Nim by making donations. Donations can
made using:
* [Open Collective](https://opencollective.com/nim)
-* [Gratipay][nim-gratipay]
* [Bountysource][nim-bountysource]
* [Bitcoin][nim-bitcoin]
@@ -189,7 +188,6 @@ Copyright © 2006-2017 Andreas Rumpf, all rights reserved.
[nim-stackoverflow]: https://stackoverflow.com/questions/tagged/nim
[nim-stackoverflow-newest]: https://stackoverflow.com/questions/tagged/nim?sort=newest&pageSize=15
[nim-gitter]: https://gitter.im/nim-lang/Nim
-[nim-gratipay]: https://gratipay.com/nim/
[nim-bountysource]: https://www.bountysource.com/teams/nim
[nim-bitcoin]: https://blockchain.info/address/1BXfuKM2uvoD6mbx4g5xM3eQhLzkCK77tJ
[nimble-repo]: https://github.com/nim-lang/nimble
@@ -201,7 +199,6 @@ Copyright © 2006-2017 Andreas Rumpf, all rights reserved.
[badge-nim-forum-gethelp]: https://img.shields.io/badge/Forum-get%20help-4eb899.svg?style=flat-square
[badge-nim-twitter]: https://img.shields.io/twitter/follow/nim_lang.svg?style=social
[badge-nim-stackoverflow]: https://img.shields.io/badge/stackoverflow-nim_tag-yellow.svg?style=flat-square
-[badge-nim-gratipay]: https://img.shields.io/gratipay/team/nim.svg?style=flat-square
[badge-nim-bountysource]: https://img.shields.io/bountysource/team/nim/activity.svg?style=flat-square
[badge-nim-bitcoin]: https://img.shields.io/badge/bitcoin-1BXfuKM2uvoD6mbx4g5xM3eQhLzkCK77tJ-D69134.svg?style=flat-square
[pull-request-instructions]: https://help.github.com/articles/using-pull-requests/
diff --git a/tests/js/trepr.nim b/tests/js/trepr.nim
index 06dbbca22d..3f07e67932 100644
--- a/tests/js/trepr.nim
+++ b/tests/js/trepr.nim
@@ -3,7 +3,7 @@ discard """
"""
block ints:
- let
+ let
na: int8 = -120'i8
nb: int16 = -32700'i16
nc: int32 = -2147483000'i32
@@ -12,9 +12,9 @@ block ints:
pa: int8 = 120'i8
pb: int16 = 32700'i16
pc: int32 = 2147483000'i32
- pd: int64 = 9223372036854775000'i64
+ pd: int64 = 9223372036854775000'i64
pe: int = 1234567
-
+
doAssert(repr(na) == "-120")
doAssert(repr(nb) == "-32700")
doAssert(repr(nc) == "-2147483000")
@@ -27,13 +27,13 @@ block ints:
doAssert(repr(pe) == "1234567")
block uints:
- let
+ let
a: uint8 = 254'u8
b: uint16 = 65300'u16
c: uint32 = 4294967290'u32
# d: uint64 = 18446744073709551610'u64 -> unknown node type
e: uint = 1234567
-
+
doAssert(repr(a) == "254")
doAssert(repr(b) == "65300")
doAssert(repr(c) == "4294967290")
@@ -41,26 +41,26 @@ block uints:
doAssert(repr(e) == "1234567")
block floats:
- let
+ let
a: float32 = 3.4e38'f32
b: float64 = 1.7976931348623157e308'f64
c: float = 1234.567e89
-
- when defined js:
+
+ when defined js:
doAssert(repr(a) == "3.4e+38") # in C: 3.399999952144364e+038
doAssert(repr(b) == "1.7976931348623157e+308") # in C: 1.797693134862316e+308
doAssert(repr(c) == "1.234567e+92") # in C: 1.234567e+092
block bools:
- let
+ let
a: bool = true
b: bool = false
-
- doAssert(repr(a) == "true")
+
+ doAssert(repr(a) == "true")
doAssert(repr(b) == "false")
block enums:
- type
+ type
AnEnum = enum
aeA
aeB
@@ -69,28 +69,34 @@ block enums:
heA = -12
heB = 15
heC = 123
-
- doAssert(repr(aeA) == "aeA")
+
+ doAssert(repr(aeA) == "aeA")
doAssert(repr(aeB) == "aeB")
- doAssert(repr(aeC) == "aeC")
+ doAssert(repr(aeC) == "aeC")
doAssert(repr(heA) == "heA")
- doAssert(repr(heB) == "heB")
+ doAssert(repr(heB) == "heB")
doAssert(repr(heC) == "heC")
+block emums_and_unicode: #6741
+ type K = enum Kanji = "漢字"
+ let kanji = Kanji
+ doAssert(kanji == Kanji, "Enum values are not equal")
+ doAssert($kanji == $Kanji, "Enum string values are not equal")
+
block chars:
let
a = 'a'
b = 'z'
one = '1'
nl = '\x0A'
-
+
doAssert(repr(a) == "'a'")
doAssert(repr(b) == "'z'")
doAssert(repr(one) == "'1'")
doAssert(repr(nl) == "'\\10'")
block strings:
- let
+ let
a: string = "12345"
b: string = "hello,repr"
c: string = "hi\nthere"
@@ -103,19 +109,19 @@ block sets:
let
a: set[int16] = {1'i16, 2'i16, 3'i16}
b: set[char] = {'A', 'k'}
-
+
doAssert(repr(a) == "{1, 2, 3}")
doAssert(repr(b) == "{'A', 'k'}")
block ranges:
- let
+ let
a: range[0..12] = 6
b: range[-12..0] = -6
doAssert(repr(a) == "6")
doAssert(repr(b) == "-6")
block tuples:
- type
+ type
ATuple = tuple
a: int
b: float
@@ -124,7 +130,7 @@ block tuples:
OtherTuple = tuple
a: bool
b: int8
-
+
let
ot: OtherTuple = (a: true, b: 120'i8)
t: ATuple = (a: 42, b: 12.34, c: "tuple", d: ot)
@@ -176,7 +182,7 @@ block arrays:
o = AObj(x: 42, y: a)
c = [o, o, o]
d = ["hi", "array", "!"]
-
+
doAssert(repr(a) == "[0.0, 1.0, 2.0]\n")
doAssert(repr(b) == "[[0.0, 1.0, 2.0], [0.0, 1.0, 2.0], [0.0, 1.0, 2.0]]\n")
doAssert(repr(c) == """
@@ -198,7 +204,7 @@ block seqs:
o = AObj(x: 42, y: a)
c = @[o, o, o]
d = @["hi", "array", "!"]
-
+
doAssert(repr(a) == "@[0.0, 1.0, 2.0]\n")
doAssert(repr(b) == "@[@[0.0, 1.0, 2.0], @[0.0, 1.0, 2.0], @[0.0, 1.0, 2.0]]\n")
doAssert(repr(c) == """
@@ -210,16 +216,16 @@ y = @[0.0, 1.0, 2.0]]]
doAssert(repr(d) == "@[\"hi\", \"array\", \"!\"]\n")
block ptrs:
- type
+ type
AObj = object
x: ptr array[2, AObj]
y: int
- var
+ var
a = [12.0, 13.0, 14.0]
b = addr a[0]
c = addr a[2]
d = AObj()
-
+
doAssert(repr(a) == "[12.0, 13.0, 14.0]\n")
doAssert(repr(b) == "ref 0 --> 12.0\n")
doAssert(repr(c) == "ref 2 --> 14.0\n")
@@ -229,13 +235,13 @@ y = 0]
""")
block ptrs:
- type
+ type
AObj = object
x: ref array[2, AObj]
y: int
- var
+ var
a = AObj()
-
+
new(a.x)
doAssert(repr(a) == """
@@ -248,10 +254,10 @@ y = 0]
block procs:
proc test(): int =
echo "hello"
- var
+ var
ptest = test
nilproc: proc(): int
-
+
doAssert(repr(test) == "0\n")
doAssert(repr(ptest) == "0\n")
doAssert(repr(nilproc) == "nil\n")
@@ -262,7 +268,7 @@ block bunch:
eA, eB, eC
B = object
a: string
- b: seq[char]
+ b: seq[char]
A = object
a: uint32
b: int
@@ -281,17 +287,17 @@ block bunch:
o: tuple[x: B, y: string]
p: proc(b: B): ref B
q: cstring
-
+
proc refB(b:B):ref B =
new result
result[] = b
-
+
var
aa: A
bb: B = B(a: "inner", b: @['o', 'b', 'j'])
cc: A = A(a: 12, b: 1, c: 1.2, d: '\0', e: eC,
f: "hello", g: {'A'}, h: {2'i16},
- i: ["hello", "world", "array"],
+ i: ["hello", "world", "array"],
j: @["hello", "world", "seq"], k: -1,
l: bb, m: refB(bb), n: addr bb,
o: (bb, "tuple!"), p: refB, q: "cstringtest" )
@@ -344,12 +350,12 @@ q = "cstringtest"]
""")
block another:
- type
- Size1 = enum
+ type
+ Size1 = enum
s1a, s1b
- Size2 = enum
+ Size2 = enum
s2c=0, s2d=20000
- Size3 = enum
+ Size3 = enum
s3e=0, s3f=2000000000
doAssert(repr([s1a, s1b]) == "[s1a, s1b]\n")
@@ -357,7 +363,7 @@ block another:
doAssert(repr([s3e, s3f]) == "[s3e, s3f]\n")
block another2:
-
+
type
AnEnum = enum
en1, en2, en3, en4, en5, en6
diff --git a/tests/realtimeGC/cmain.c b/tests/realtimeGC/cmain.c
index e9a46d7ce1..0d4bb096ab 100644
--- a/tests/realtimeGC/cmain.c
+++ b/tests/realtimeGC/cmain.c
@@ -1,8 +1,8 @@
-
#ifdef WIN
#include
#else
#include
+#include /* for sleep(3) */
#endif
#include
#include
diff --git a/tests/realtimeGC/readme.txt b/tests/realtimeGC/readme.txt
index 17e18a5e5b..b2e37a1f0f 100644
--- a/tests/realtimeGC/readme.txt
+++ b/tests/realtimeGC/readme.txt
@@ -1,21 +1,21 @@
Test the realtime GC without linking nimrtl.dll/so.
Note, this is a long running test, default is 35 minutes. To change the
-the run time see RUNTIME in main.nim and main.c.
+the run time see RUNTIME in nmain.nim and cmain.c.
-You can build shared.nim, main.nim, and main.c by running make (nix systems)
-or maike.bat (Windows systems). They both assume GCC and that it's in your
-path. Output: shared.(dll/so), camin(.exe), nmain(.exe).
+You can build shared.nim, nmain.nim, and cmain.c by running make (nix systems)
+or make.bat (Windows systems). They both assume GCC and that it's in your
+path. Output: shared.(dll/so), cmain(.exe), nmain(.exe).
To run the test: execute either nmain or cmain in a shell window.
-To build buy hand:
+To build by hand:
- build the shared object (shared.nim):
- $ nim c shared.nim
+ $ nim c tests/realtimeGC/shared.nim
- build the client executables:
- $ nim c -o:nmain main.nim
- $ gcc -o cmain main.c -ldl
+ $ nim c --threads:on tests/realtimeGC/nmain.nim
+ $ gcc -o tests/realtimeGC/cmain tests/realtimeGC/cmain.c -ldl
diff --git a/tests/testament/categories.nim b/tests/testament/categories.nim
index 90468e6270..ac6b5b2528 100644
--- a/tests/testament/categories.nim
+++ b/tests/testament/categories.nim
@@ -167,9 +167,9 @@ proc gcTests(r: var TResults, cat: Category, options: string) =
proc longGCTests(r: var TResults, cat: Category, options: string) =
when defined(windows):
- let cOptions = "gcc -ldl -DWIN"
+ let cOptions = "-ldl -DWIN"
else:
- let cOptions = "gcc -ldl"
+ let cOptions = "-ldl"
var c = initResults()
# According to ioTests, this should compile the file