mirror of
https://github.com/nim-lang/Nim.git
synced 2026-01-22 12:30:46 +00:00
move io out of system (#19442)
* move io out of system * fix tests * fix tests * next step * rename to syncio * rename * fix nimscript * comma * fix * fix parts of errors * good for now * fix test
This commit is contained in:
@@ -20,6 +20,8 @@
|
||||
- `addr` is now available for all addressable locations, `unsafeAddr` is deprecated and
|
||||
becomes an alias for `addr`.
|
||||
|
||||
- io is about to move out of system; use `-d:nimPreviewSlimSystem` and import `std/syncio`.
|
||||
|
||||
## Standard library additions and changes
|
||||
|
||||
- `macros.parseExpr` and `macros.parseStmt` now accept an optional
|
||||
|
||||
@@ -12,6 +12,9 @@
|
||||
|
||||
import os, pathnorm
|
||||
|
||||
when defined(nimSlimSystem):
|
||||
import std/syncio
|
||||
|
||||
type
|
||||
AbsoluteFile* = distinct string
|
||||
AbsoluteDir* = distinct string
|
||||
|
||||
@@ -47,7 +47,7 @@ template systemop(op) {.dirty.} =
|
||||
registerCallback(c, "stdlib.system." & astToStr(op), `op Wrapper`)
|
||||
|
||||
template ioop(op) {.dirty.} =
|
||||
registerCallback(c, "stdlib.io." & astToStr(op), `op Wrapper`)
|
||||
registerCallback(c, "stdlib.syncio." & astToStr(op), `op Wrapper`)
|
||||
|
||||
template macrosop(op) {.dirty.} =
|
||||
registerCallback(c, "stdlib.macros." & astToStr(op), `op Wrapper`)
|
||||
|
||||
@@ -84,8 +84,8 @@ done with spaces only, tabulators are not allowed.
|
||||
|
||||
String literals are enclosed in double-quotes. The `var` statement declares
|
||||
a new variable named `name` of type `string` with the value that is
|
||||
returned by the `readLine <io.html#readLine,File>`_ procedure. Since the
|
||||
compiler knows that `readLine <io.html#readLine,File>`_ returns a string,
|
||||
returned by the `readLine <syncio.html#readLine,File>`_ procedure. Since the
|
||||
compiler knows that `readLine <syncio.html#readLine,File>`_ returns a string,
|
||||
you can leave out the type in the declaration (this is called `local type
|
||||
inference`:idx:). So this will work too:
|
||||
|
||||
@@ -97,7 +97,7 @@ Note that this is basically the only form of type inference that exists in
|
||||
Nim: it is a good compromise between brevity and readability.
|
||||
|
||||
The "hello world" program contains several identifiers that are already known
|
||||
to the compiler: `echo`, `readLine <io.html#readLine,File>`_, etc.
|
||||
to the compiler: `echo`, `readLine <syncio.html#readLine,File>`_, etc.
|
||||
These built-ins are declared in the system_ module which is implicitly
|
||||
imported by any other module.
|
||||
|
||||
@@ -594,7 +594,7 @@ Procedures
|
||||
==========
|
||||
|
||||
To define new commands like `echo <system.html#echo,varargs[typed,]>`_
|
||||
and `readLine <io.html#readLine,File>`_ in the examples, the concept of a
|
||||
and `readLine <syncio.html#readLine,File>`_ in the examples, the concept of a
|
||||
*procedure* is needed. You might be used to them being called *methods* or
|
||||
*functions* in other languages, but Nim
|
||||
`differentiates these concepts <tut1.html#procedures-funcs-and-methods>`_. In
|
||||
|
||||
@@ -37,6 +37,9 @@
|
||||
when defined(nimHasStyleChecks):
|
||||
{.push styleChecks: off.}
|
||||
|
||||
when defined(nimSlimSystem):
|
||||
import std/syncio
|
||||
|
||||
# TODO these constants don't seem to be fetched from a header file for unknown
|
||||
# platforms - where do they come from and why are they here?
|
||||
when false:
|
||||
|
||||
@@ -51,6 +51,9 @@
|
||||
|
||||
import strutils, streams, parsexml, xmltree, unicode, strtabs
|
||||
|
||||
when defined(nimPreviewSlimSystem):
|
||||
import std/syncio
|
||||
|
||||
type
|
||||
HtmlTag* = enum ## list of all supported HTML tags; order will always be
|
||||
## alphabetically
|
||||
|
||||
@@ -164,6 +164,9 @@ import hashes, tables, strutils, lexbase, streams, macros, parsejson
|
||||
import options # xxx remove this dependency using same approach as https://github.com/nim-lang/Nim/pull/14563
|
||||
import std/private/since
|
||||
|
||||
when defined(nimPreviewSlimSystem):
|
||||
import std/syncio
|
||||
|
||||
export
|
||||
tables.`$`
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
## .. warning::
|
||||
## For loggers that log to a console or to files, only error and fatal
|
||||
## messages will cause their output buffers to be flushed immediately.
|
||||
## Use the `flushFile proc <io.html#flushFile,File>`_ to flush the buffer
|
||||
## Use the `flushFile proc <syncio.html#flushFile,File>`_ to flush the buffer
|
||||
## manually if needed.
|
||||
##
|
||||
## Handlers
|
||||
@@ -146,6 +146,9 @@ import strutils, times
|
||||
when not defined(js):
|
||||
import os
|
||||
|
||||
when defined(nimPreviewSlimSystem):
|
||||
import std/syncio
|
||||
|
||||
type
|
||||
Level* = enum ## \
|
||||
## Enumeration of logging levels.
|
||||
@@ -346,7 +349,7 @@ method log*(logger: ConsoleLogger, level: Level, args: varargs[string, `$`]) =
|
||||
##
|
||||
## **Note:** Only error and fatal messages will cause the output buffer
|
||||
## to be flushed immediately. Use the `flushFile proc
|
||||
## <io.html#flushFile,File>`_ to flush the buffer manually if needed.
|
||||
## <syncio.html#flushFile,File>`_ to flush the buffer manually if needed.
|
||||
##
|
||||
## See also:
|
||||
## * `log method<#log.e,FileLogger,Level,varargs[string,]>`_
|
||||
@@ -422,7 +425,7 @@ when not defined(js):
|
||||
## **Notes:**
|
||||
## * Only error and fatal messages will cause the output buffer
|
||||
## to be flushed immediately. Use the `flushFile proc
|
||||
## <io.html#flushFile,File>`_ to flush the buffer manually if needed.
|
||||
## <syncio.html#flushFile,File>`_ to flush the buffer manually if needed.
|
||||
## * This method is not available for the JavaScript backend.
|
||||
##
|
||||
## See also:
|
||||
@@ -600,7 +603,7 @@ when not defined(js):
|
||||
## **Notes:**
|
||||
## * Only error and fatal messages will cause the output buffer
|
||||
## to be flushed immediately. Use the `flushFile proc
|
||||
## <io.html#flushFile,File>`_ to flush the buffer manually if needed.
|
||||
## <syncio.html#flushFile,File>`_ to flush the buffer manually if needed.
|
||||
## * This method is not available for the JavaScript backend.
|
||||
##
|
||||
## See also:
|
||||
|
||||
@@ -431,7 +431,7 @@ iterator memSlices*(mfile: MemFile, delim = '\l', eat = '\r'): MemSlice {.inline
|
||||
iterator lines*(mfile: MemFile, buf: var string, delim = '\l',
|
||||
eat = '\r'): string {.inline.} =
|
||||
## Replace contents of passed buffer with each new line, like
|
||||
## `readLine(File) <io.html#readLine,File,string>`_.
|
||||
## `readLine(File) <syncio.html#readLine,File,string>`_.
|
||||
## `delim`, `eat`, and delimiting logic is exactly as for `memSlices
|
||||
## <#memSlices.i,MemFile,char,char>`_, but Nim strings are returned.
|
||||
##
|
||||
@@ -450,7 +450,7 @@ iterator lines*(mfile: MemFile, buf: var string, delim = '\l',
|
||||
|
||||
iterator lines*(mfile: MemFile, delim = '\l', eat = '\r'): string {.inline.} =
|
||||
## Return each line in a file as a Nim string, like
|
||||
## `lines(File) <io.html#lines.i,File>`_.
|
||||
## `lines(File) <syncio.html#lines.i,File>`_.
|
||||
## `delim`, `eat`, and delimiting logic is exactly as for `memSlices
|
||||
## <#memSlices.i,MemFile,char,char>`_, but Nim strings are returned.
|
||||
##
|
||||
|
||||
@@ -34,6 +34,9 @@ import std/private/since
|
||||
|
||||
import strutils, pathnorm
|
||||
|
||||
when defined(nimPreviewSlimSystem):
|
||||
import std/syncio
|
||||
|
||||
const weirdTarget = defined(nimscript) or defined(js)
|
||||
|
||||
since (1, 1):
|
||||
|
||||
@@ -175,8 +175,12 @@ import strutils, lexbase, streams, tables
|
||||
import std/private/decode_helpers
|
||||
import std/private/since
|
||||
|
||||
when defined(nimPreviewSlimSystem):
|
||||
import std/syncio
|
||||
|
||||
include "system/inclrtl"
|
||||
|
||||
|
||||
type
|
||||
CfgEventKind* = enum ## enumeration of all events that may occur when parsing
|
||||
cfgEof, ## end of file reached
|
||||
|
||||
@@ -67,6 +67,9 @@
|
||||
|
||||
import lexbase, streams
|
||||
|
||||
when defined(nimPreviewSlimSystem):
|
||||
import std/syncio
|
||||
|
||||
type
|
||||
CsvRow* = seq[string] ## A row in a CSV file.
|
||||
CsvParser* = object of BaseLexer ## The parser object.
|
||||
|
||||
@@ -16,6 +16,8 @@
|
||||
##
|
||||
|
||||
include "system/inclrtl"
|
||||
when defined(nimPreviewSlimSystem):
|
||||
import std/syncio
|
||||
|
||||
const
|
||||
useUnicode = true ## change this to deactivate proper UTF-8 support
|
||||
|
||||
@@ -19,6 +19,9 @@
|
||||
include system/inclrtl
|
||||
import streams
|
||||
|
||||
when defined(nimPreviewSlimSystem):
|
||||
import std/syncio
|
||||
|
||||
{.push debugger: off.} # the user does not want to trace a part
|
||||
# of the standard library!
|
||||
|
||||
|
||||
@@ -92,10 +92,13 @@
|
||||
## See also
|
||||
## ========
|
||||
## * `asyncstreams module <asyncstreams.html>`_
|
||||
## * `io module <io.html>`_ for `FileMode enum <io.html#FileMode>`_
|
||||
## * `io module <syncio.html>`_ for `FileMode enum <syncio.html#FileMode>`_
|
||||
|
||||
import std/private/since
|
||||
|
||||
when defined(nimPreviewSlimSystem):
|
||||
import std/syncio
|
||||
|
||||
proc newEIO(msg: string): owned(ref IOError) =
|
||||
new(result)
|
||||
result.msg = msg
|
||||
@@ -1331,7 +1334,7 @@ proc newFileStream*(f: File): owned FileStream =
|
||||
## * `newStringStream proc <#newStringStream,string>`_ creates a new stream
|
||||
## from string.
|
||||
## * `newFileStream proc <#newFileStream,string,FileMode,int>`_ is the same
|
||||
## as using `open proc <io.html#open,File,string,FileMode,int>`_
|
||||
## as using `open proc <syncio.html#open,File,string,FileMode,int>`_
|
||||
## on Examples.
|
||||
## * `openFileStream proc <#openFileStream,string,FileMode,int>`_ creates a
|
||||
## file stream from the file name and the mode.
|
||||
@@ -1370,7 +1373,7 @@ proc newFileStream*(filename: string, mode: FileMode = fmRead,
|
||||
## Creates a new stream from the file named `filename` with the mode `mode`.
|
||||
##
|
||||
## If the file cannot be opened, `nil` is returned. See the `io module
|
||||
## <io.html>`_ for a list of available `FileMode enums <io.html#FileMode>`_.
|
||||
## <syncio.html>`_ for a list of available `FileMode enums <syncio.html#FileMode>`_.
|
||||
##
|
||||
## **Note:**
|
||||
## * **This function returns nil in case of failure.**
|
||||
|
||||
@@ -66,6 +66,9 @@ import colors
|
||||
when defined(windows):
|
||||
import winlean
|
||||
|
||||
when defined(nimPreviewSlimSystem):
|
||||
import std/syncio
|
||||
|
||||
type
|
||||
PTerminal = ref object
|
||||
trueColorIsSupported: bool
|
||||
|
||||
@@ -11,6 +11,9 @@
|
||||
|
||||
import streams, parsexml, strtabs, xmltree
|
||||
|
||||
when defined(nimPreviewSlimSystem):
|
||||
import std/syncio
|
||||
|
||||
type
|
||||
XmlError* = object of ValueError ## Exception that is raised
|
||||
## for invalid XML.
|
||||
|
||||
@@ -1,18 +1,17 @@
|
||||
#
|
||||
#
|
||||
# Nim's Runtime Library
|
||||
# (c) Copyright 2019 Nim contributors
|
||||
# (c) Copyright 2022 Nim contributors
|
||||
#
|
||||
# See the file "copying.txt", included in this
|
||||
# distribution, for details about the copyright.
|
||||
#
|
||||
|
||||
## This is a part of `system.nim`, you should not manually import it.
|
||||
## This module implements various synchronized I/O operations.
|
||||
|
||||
|
||||
include inclrtl
|
||||
include system/inclrtl
|
||||
import std/private/since
|
||||
import formatfloat
|
||||
import system/formatfloat
|
||||
|
||||
# ----------------- IO Part ------------------------------------------------
|
||||
type
|
||||
@@ -179,7 +178,7 @@ proc checkErr(f: File) =
|
||||
{.push stackTrace: off, profiler: off.}
|
||||
proc readBuffer*(f: File, buffer: pointer, len: Natural): int {.
|
||||
tags: [ReadIOEffect], benign.} =
|
||||
## reads `len` bytes into the buffer pointed to by `buffer`. Returns
|
||||
## Reads `len` bytes into the buffer pointed to by `buffer`. Returns
|
||||
## the actual number of bytes that have been read which may be less than
|
||||
## `len` (if not as many bytes are remaining), but not greater.
|
||||
result = cast[int](c_fread(buffer, 1, cast[csize_t](len), f))
|
||||
@@ -188,13 +187,13 @@ proc readBuffer*(f: File, buffer: pointer, len: Natural): int {.
|
||||
proc readBytes*(f: File, a: var openArray[int8|uint8], start,
|
||||
len: Natural): int {.
|
||||
tags: [ReadIOEffect], benign.} =
|
||||
## reads `len` bytes into the buffer `a` starting at `a[start]`. Returns
|
||||
## Reads `len` bytes into the buffer `a` starting at `a[start]`. Returns
|
||||
## the actual number of bytes that have been read which may be less than
|
||||
## `len` (if not as many bytes are remaining), but not greater.
|
||||
result = readBuffer(f, addr(a[start]), len)
|
||||
|
||||
proc readChars*(f: File, a: var openArray[char]): int {.tags: [ReadIOEffect], benign.} =
|
||||
## reads up to `a.len` bytes into the buffer `a`. Returns
|
||||
## Reads up to `a.len` bytes into the buffer `a`. Returns
|
||||
## the actual number of bytes that have been read which may be less than
|
||||
## `a.len` (if not as many bytes are remaining), but not greater.
|
||||
result = readBuffer(f, addr(a[0]), a.len)
|
||||
@@ -202,7 +201,7 @@ proc readChars*(f: File, a: var openArray[char]): int {.tags: [ReadIOEffect], be
|
||||
proc readChars*(f: File, a: var openArray[char], start, len: Natural): int {.
|
||||
tags: [ReadIOEffect], benign, deprecated:
|
||||
"use other `readChars` overload, possibly via: readChars(toOpenArray(buf, start, len-1))".} =
|
||||
## reads `len` bytes into the buffer `a` starting at `a[start]`. Returns
|
||||
## Reads `len` bytes into the buffer `a` starting at `a[start]`. Returns
|
||||
## the actual number of bytes that have been read which may be less than
|
||||
## `len` (if not as many bytes are remaining), but not greater.
|
||||
if (start + len) > len(a):
|
||||
@@ -216,7 +215,7 @@ proc write*(f: File, c: cstring) {.tags: [WriteIOEffect], benign.} =
|
||||
|
||||
proc writeBuffer*(f: File, buffer: pointer, len: Natural): int {.
|
||||
tags: [WriteIOEffect], benign.} =
|
||||
## writes the bytes of buffer pointed to by the parameter `buffer` to the
|
||||
## Writes the bytes of buffer pointed to by the parameter `buffer` to the
|
||||
## file `f`. Returns the number of actual written bytes, which may be less
|
||||
## than `len` in case of an error.
|
||||
result = cast[int](c_fwrite(buffer, 1, cast[csize_t](len), f))
|
||||
@@ -224,7 +223,7 @@ proc writeBuffer*(f: File, buffer: pointer, len: Natural): int {.
|
||||
|
||||
proc writeBytes*(f: File, a: openArray[int8|uint8], start, len: Natural): int {.
|
||||
tags: [WriteIOEffect], benign.} =
|
||||
## writes the bytes of `a[start..start+len-1]` to the file `f`. Returns
|
||||
## Writes the bytes of `a[start..start+len-1]` to the file `f`. Returns
|
||||
## the number of actual written bytes, which may be less than `len` in case
|
||||
## of an error.
|
||||
var x = cast[ptr UncheckedArray[int8]](a)
|
||||
@@ -232,7 +231,7 @@ proc writeBytes*(f: File, a: openArray[int8|uint8], start, len: Natural): int {.
|
||||
|
||||
proc writeChars*(f: File, a: openArray[char], start, len: Natural): int {.
|
||||
tags: [WriteIOEffect], benign.} =
|
||||
## writes the bytes of `a[start..start+len-1]` to the file `f`. Returns
|
||||
## Writes the bytes of `a[start..start+len-1]` to the file `f`. Returns
|
||||
## the number of actual written bytes, which may be less than `len` in case
|
||||
## of an error.
|
||||
var x = cast[ptr UncheckedArray[int8]](a)
|
||||
@@ -341,7 +340,7 @@ proc flushFile*(f: File) {.tags: [WriteIOEffect].} =
|
||||
discard c_fflush(f)
|
||||
|
||||
proc getFileHandle*(f: File): FileHandle =
|
||||
## returns the file handle of the file `f`. This is only useful for
|
||||
## Returns the file handle of the file `f`. This is only useful for
|
||||
## platform specific programming.
|
||||
## Note that on Windows this doesn't return the Windows-specific handle,
|
||||
## but the C library's notion of a handle, whatever that means.
|
||||
@@ -349,7 +348,7 @@ proc getFileHandle*(f: File): FileHandle =
|
||||
c_fileno(f)
|
||||
|
||||
proc getOsFileHandle*(f: File): FileHandle =
|
||||
## returns the OS file handle of the file `f`. This is only useful for
|
||||
## Returns the OS file handle of the file `f`. This is only useful for
|
||||
## platform specific programming.
|
||||
when defined(windows):
|
||||
result = FileHandle getOsfhandle(cint getFileHandle(f))
|
||||
@@ -380,7 +379,7 @@ when defined(nimdoc) or (defined(posix) and not defined(nimscript)) or defined(w
|
||||
|
||||
proc readLine*(f: File, line: var string): bool {.tags: [ReadIOEffect],
|
||||
benign.} =
|
||||
## reads a line of text from the file `f` into `line`. May throw an IO
|
||||
## Reads a line of text from the file `f` into `line`. May throw an IO
|
||||
## exception.
|
||||
## A line of text may be delimited by `LF` or `CRLF`. The newline
|
||||
## character(s) are not part of the returned string. Returns `false`
|
||||
@@ -500,7 +499,7 @@ proc readLine*(f: File, line: var string): bool {.tags: [ReadIOEffect],
|
||||
line.setLen(pos+sp)
|
||||
|
||||
proc readLine*(f: File): string {.tags: [ReadIOEffect], benign.} =
|
||||
## reads a line of text from the file `f`. May throw an IO exception.
|
||||
## Reads a line of text from the file `f`. May throw an IO exception.
|
||||
## A line of text may be delimited by `LF` or `CRLF`. The newline
|
||||
## character(s) are not part of the returned string.
|
||||
result = newStringOfCap(80)
|
||||
@@ -602,7 +601,7 @@ proc readAll*(file: File): string {.tags: [ReadIOEffect], benign.} =
|
||||
|
||||
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.
|
||||
for i in items(x):
|
||||
write(f, i)
|
||||
@@ -723,7 +722,7 @@ proc open*(f: var File, filename: string,
|
||||
|
||||
proc reopen*(f: File, filename: string, mode: FileMode = fmRead): bool {.
|
||||
tags: [], benign.} =
|
||||
## reopens the file `f` with given `filename` and `mode`. This
|
||||
## Reopens the file `f` with given `filename` and `mode`. This
|
||||
## is often used to redirect the `stdin`, `stdout` or `stderr`
|
||||
## file variables.
|
||||
##
|
||||
@@ -765,19 +764,19 @@ proc open*(filename: string,
|
||||
sysFatal(IOError, "cannot open: " & filename)
|
||||
|
||||
proc setFilePos*(f: File, pos: int64, relativeTo: FileSeekPos = fspSet) {.benign.} =
|
||||
## sets the position of the file pointer that is used for read/write
|
||||
## Sets the position of the file pointer that is used for read/write
|
||||
## operations. The file's first byte has the index zero.
|
||||
if c_fseek(f, pos, cint(relativeTo)) != 0:
|
||||
raiseEIO("cannot set file position")
|
||||
|
||||
proc getFilePos*(f: File): int64 {.benign.} =
|
||||
## retrieves the current position of the file pointer that is used to
|
||||
## Retrieves the current position of the file pointer that is used to
|
||||
## read from the file `f`. The file's first byte has the index zero.
|
||||
result = c_ftell(f)
|
||||
if result < 0: raiseEIO("cannot retrieve file position")
|
||||
|
||||
proc getFileSize*(f: File): int64 {.tags: [ReadIOEffect], benign.} =
|
||||
## retrieves the file size (in bytes) of `f`.
|
||||
## Retrieves the file size (in bytes) of `f`.
|
||||
let oldPos = getFilePos(f)
|
||||
discard c_fseek(f, 0, 2) # seek the end of the file
|
||||
result = getFilePos(f)
|
||||
@@ -906,7 +905,7 @@ proc writeFile*(filename: string, content: openArray[byte]) {.since: (1, 1).} =
|
||||
raise newException(IOError, "cannot open: " & filename)
|
||||
|
||||
proc readLines*(filename: string, n: Natural): seq[string] =
|
||||
## read `n` lines from the file named `filename`. Raises an IO exception
|
||||
## Reads `n` lines from the file named `filename`. Raises an IO exception
|
||||
## in case of an error. Raises EOF if file does not contain at least `n` lines.
|
||||
## Available at compile time. A line of text may be delimited by `LF` or `CRLF`.
|
||||
## The newline character(s) are not part of the returned strings.
|
||||
@@ -948,7 +947,7 @@ iterator lines*(filename: string): string {.tags: [ReadIOEffect].} =
|
||||
close(f)
|
||||
|
||||
iterator lines*(f: File): string {.tags: [ReadIOEffect].} =
|
||||
## Iterate over any line in the file `f`.
|
||||
## Iterates over any line in the file `f`.
|
||||
##
|
||||
## The trailing newline character(s) are removed from the iterated lines.
|
||||
##
|
||||
@@ -2680,7 +2680,7 @@ proc slurp*(filename: string): string {.magic: "Slurp".}
|
||||
## This is an alias for `staticRead <#staticRead,string>`_.
|
||||
|
||||
proc staticRead*(filename: string): string {.magic: "Slurp".}
|
||||
## Compile-time `readFile <io.html#readFile,string>`_ proc for easy
|
||||
## Compile-time `readFile <syncio.html#readFile,string>`_ proc for easy
|
||||
## `resource`:idx: embedding:
|
||||
##
|
||||
## The maximum file size limit that `staticRead` and `slurp` can read is
|
||||
@@ -3150,8 +3150,11 @@ when defined(genode):
|
||||
import system/widestrs
|
||||
export widestrs
|
||||
|
||||
import system/io
|
||||
export io
|
||||
when not defined(nimPreviewSlimSystem):
|
||||
{.deprecated: """io is about to move out of system; use `-d:nimPreviewSlimSystem` and
|
||||
import `std/syncio`.""".}
|
||||
import std/syncio
|
||||
export syncio
|
||||
|
||||
when not defined(createNimHcr) and not defined(nimscript):
|
||||
include nimhcr
|
||||
|
||||
@@ -7,7 +7,6 @@ is in separate files:
|
||||
* `iterators <iterators.html>`_
|
||||
* `assertions <assertions.html>`_
|
||||
* `dollars <dollars.html>`_
|
||||
* `io <io.html>`_
|
||||
* `widestrs <widestrs.html>`_
|
||||
|
||||
|
||||
|
||||
@@ -17,6 +17,9 @@ when defined(nimHasStyleChecks):
|
||||
|
||||
{.passc: "-DWIN32_LEAN_AND_MEAN".}
|
||||
|
||||
when defined(nimPreviewSlimSystem):
|
||||
from std/syncio import FileHandle
|
||||
|
||||
const
|
||||
useWinUnicode* = not defined(useWinAnsi)
|
||||
|
||||
|
||||
@@ -5,6 +5,9 @@ discard """
|
||||
|
||||
import sequtils, strutils
|
||||
|
||||
when defined(nimPreviewSlimSystem):
|
||||
import std/syncio
|
||||
|
||||
|
||||
let rules = toSeq(lines("input"))
|
||||
.mapIt(it.split(" => ").mapIt(it.replace("/", "")))
|
||||
|
||||
@@ -5,6 +5,9 @@
|
||||
|
||||
from stdtest/specialpaths import buildDir
|
||||
|
||||
when defined(nimSlimSystem):
|
||||
import std/syncio
|
||||
|
||||
import std/[
|
||||
# Core:
|
||||
bitops, typetraits, lenientops, macros, volatile,
|
||||
|
||||
@@ -187,7 +187,6 @@ proc getDocList(): seq[string] =
|
||||
|
||||
# don't ignore these even though in lib/system (not include files)
|
||||
const goodSystem = """
|
||||
lib/system/io.nim
|
||||
lib/system/nimscript.nim
|
||||
lib/system/assertions.nim
|
||||
lib/system/iterators.nim
|
||||
|
||||
Reference in New Issue
Block a user