diff options
Diffstat (limited to 'lib/system.nim')
-rw-r--r-- | lib/system.nim | 66 |
1 files changed, 32 insertions, 34 deletions
diff --git a/lib/system.nim b/lib/system.nim index 26feb5ce8..fae111ce2 100644 --- a/lib/system.nim +++ b/lib/system.nim @@ -226,6 +226,7 @@ proc high*[T](x: T): T {.magic: "High", noSideEffect.} ## var arr = [1,2,3,4,5,6,7] ## high(arr) #=> 6 ## high(2) #=> 9223372036854775807 + ## high(int) #=> 9223372036854775807 proc low*[T](x: T): T {.magic: "Low", noSideEffect.} ## returns the lowest possible index of an array, a sequence, a string or @@ -236,6 +237,7 @@ proc low*[T](x: T): T {.magic: "Low", noSideEffect.} ## var arr = [1,2,3,4,5,6,7] ## low(arr) #=> 0 ## low(2) #=> -9223372036854775808 + ## low(int) #=> -9223372036854775808 type range*{.magic: "Range".}[T] ## Generic type to construct range types. @@ -603,7 +605,7 @@ proc `<`*[T](x: Ordinal[T]): T {.magic: "UnaryLt", noSideEffect.} ## unary ``<`` that can be used for nice looking excluding ranges: ## ## .. code-block:: nim - ## for i in 0 .. <10: echo i + ## for i in 0 .. <10: echo i #=> 0 1 2 3 4 5 6 7 8 9 ## ## Semantically this is the same as ``pred``. @@ -889,8 +891,8 @@ proc `shl` *(x, y: int64): int64 {.magic: "ShlI", noSideEffect.} ## computes the `shift left` operation of `x` and `y`. ## ## .. code-block:: Nim - ## 1'i32 shl 4 == 0x0000_0010 - ## 1'i64 shl 4 == 0x0000_0000_0000_0010 + ## 1'i32 shl 4 == 0x0000_0010 + ## 1'i64 shl 4 == 0x0000_0000_0000_0010 proc `and` *(x, y: int): int {.magic: "BitandI", noSideEffect.} proc `and` *(x, y: int8): int8 {.magic: "BitandI", noSideEffect.} @@ -1313,20 +1315,20 @@ when defined(boehmgc): when taintMode: type TaintedString* = distinct string ## a distinct string type that - ## is `tainted`:idx:. It is an alias for + ## is `tainted`:idx:, see `taint mode + ## <manual.html#taint-mode>`_ for + ## details. It is an alias for ## ``string`` if the taint mode is not - ## turned on. Use the ``-d:taintMode`` - ## command line switch to turn the taint - ## mode on. + ## turned on. proc len*(s: TaintedString): int {.borrow.} else: type TaintedString* = string ## a distinct string type that - ## is `tainted`:idx:. It is an alias for + ## is `tainted`:idx:, see `taint mode + ## <manual.html#taint-mode>`_ for + ## details. It is an alias for ## ``string`` if the taint mode is not - ## turned on. Use the ``-d:taintMode`` - ## command line switch to turn the taint - ## mode on. + ## turned on. when defined(profiler): proc nimProfile() {.compilerProc, noinline.} @@ -1410,7 +1412,7 @@ proc del*[T](x: var seq[T], i: Natural) {.noSideEffect.} = ## This is an O(1) operation. ## ## .. code-block:: nim - ## var i = @[1,2,3,4,5] + ## var i = @[1, 2, 3, 4, 5] ## i.del(2) #=> @[1, 2, 5, 4] let xl = x.len - 1 shallowCopy(x[i], x[xl]) @@ -1421,7 +1423,7 @@ proc delete*[T](x: var seq[T], i: Natural) {.noSideEffect.} = ## This is an O(n) operation. ## ## .. code-block:: nim - ## var i = @[1,2,3,4,5] + ## var i = @[1, 2, 3, 4, 5] ## i.delete(2) #=> @[1, 2, 4, 5] template defaultImpl = let xl = x.len @@ -1440,8 +1442,8 @@ proc insert*[T](x: var seq[T], item: T, i = 0.Natural) {.noSideEffect.} = ## inserts `item` into `x` at position `i`. ## ## .. code-block:: nim - ## var i = @[1,2,3,4,5] - ## i.insert(2,4) #=> @[1, 2, 3, 4, 2, 5] + ## var i = @[1, 2, 3, 4, 5] + ## i.insert(2, 4) #=> @[1, 2, 3, 4, 2, 5] template defaultImpl = let xl = x.len setLen(x, xl+1) @@ -1465,8 +1467,8 @@ proc repr*[T](x: T): string {.magic: "Repr", noSideEffect.} ## debugging tool. ## ## .. code-block:: nim - ## var s: seq[string] = @["test2","test2"] - ## var i = @[1,2,3,4,5] + ## var s: seq[string] = @["test2", "test2"] + ## var i = @[1, 2, 3, 4, 5] ## repr(s) #=> 0x1055eb050[0x1055ec050"test2", 0x1055ec078"test2"] ## repr(i) #=> 0x1055ed050[1, 2, 3, 4, 5] @@ -1519,7 +1521,7 @@ type # these work for most platforms: ## This is the same as the type ``double`` in *C*. clongdouble* {.importc: "long double", nodecl.} = BiggestFloat ## This is the same as the type ``long double`` in *C*. - ## This C type is not supported by Nim's code generator + ## This C type is not supported by Nim's code generator. cuchar* {.importc: "unsigned char", nodecl.} = char ## This is the same as the type ``unsigned char`` in *C*. @@ -1822,18 +1824,15 @@ const NimMajor*: int = 0 ## is the major number of Nim's version. - NimMinor*: int = 14 + NimMinor*: int = 15 ## is the minor number of Nim's version. - NimPatch*: int = 3 + NimPatch*: int = 1 ## is the patch number of Nim's version. NimVersion*: string = $NimMajor & "." & $NimMinor & "." & $NimPatch ## is the version of Nim as a string. -{.deprecated: [TEndian: Endianness, NimrodVersion: NimVersion, - NimrodMajor: NimMajor, NimrodMinor: NimMinor, NimrodPatch: NimPatch].} - # GC interface: when not defined(nimscript) and hasAlloc: @@ -2654,12 +2653,11 @@ when not defined(JS): #and not defined(nimscript): when defined(nimscript): proc readFile*(filename: string): string {.tags: [ReadIOEffect], benign.} - ## Opens a file named `filename` for reading. - ## - ## Then calls `readAll <#readAll>`_ and closes the file afterwards. - ## Returns the string. Raises an IO exception in case of an error. If - ## you need to call this inside a compile time macro you can use - ## `staticRead <#staticRead>`_. + ## Opens a file named `filename` for reading, calls `readAll + ## <#readAll>`_ and closes the file afterwards. Returns the string. + ## Raises an IO exception in case of an error. If # you need to call + ## this inside a compile time macro you can use `staticRead + ## <#staticRead>`_. proc writeFile*(filename, content: string) {.tags: [WriteIOEffect], benign.} ## Opens a file named `filename` for writing. Then writes the @@ -2733,7 +2731,7 @@ when not defined(JS): #and not defined(nimscript): proc setStdIoUnbuffered*() {.tags: [], benign.} ## Configures `stdin`, `stdout` and `stderr` to be unbuffered. - proc close*(f: File) {.tags: [].} + proc close*(f: File) {.tags: [], gcsafe.} ## Closes the file. proc endOfFile*(f: File): bool {.tags: [], benign.} @@ -2795,7 +2793,7 @@ when not defined(JS): #and not defined(nimscript): proc writeLine*[Ty](f: File, x: varargs[Ty, `$`]) {.inline, tags: [WriteIOEffect], benign.} - ## writes the values `x` to `f` and then writes "\n". + ## writes the values `x` to `f` and then writes "\\n". ## May throw an IO exception. proc getFileSize*(f: File): int64 {.tags: [ReadIOEffect], benign.} @@ -2926,14 +2924,14 @@ when not defined(JS): #and not defined(nimscript): ## allows you to override the behaviour of your application when CTRL+C ## is pressed. Only one such hook is supported. - proc writeStackTrace*() {.tags: [WriteIOEffect].} + proc writeStackTrace*() {.tags: [WriteIOEffect], gcsafe.} ## writes the current stack trace to ``stderr``. This is only works ## for debug builds. when hostOS != "standalone": - proc getStackTrace*(): string + proc getStackTrace*(): string {.gcsafe.} ## gets the current stack trace. This only works for debug builds. - proc getStackTrace*(e: ref Exception): string + proc getStackTrace*(e: ref Exception): string {.gcsafe.} ## gets the stack trace associated with `e`, which is the stack that ## lead to the ``raise`` statement. This only works for debug builds. |