Skip to content

Commit

Permalink
move widestrs out of system (#20462)
Browse files Browse the repository at this point in the history
* move widestrs out of system

* fix osproc
  • Loading branch information
metagn authored Oct 1, 2022
1 parent cbd9fee commit 0b16505
Show file tree
Hide file tree
Showing 29 changed files with 64 additions and 8 deletions.
1 change: 1 addition & 0 deletions changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
- `std/assertions`
- `std/formatfloat`
- `std/objectdollar`
- `std/widestrs`

In the future, these definitions will be removed from the `system` module,
and their respective modules will have to be imported to use them.
Expand Down
2 changes: 2 additions & 0 deletions lib/pure/asyncfile.nim
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ import asyncdispatch, os

when defined(nimPreviewSlimSystem):
import std/[assertions, syncio]
when defined(windows):
import std/widestrs

# TODO: Fix duplication introduced by PR #4683.

Expand Down
2 changes: 2 additions & 0 deletions lib/pure/browsers.nim
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ when defined(nimPreviewSlimSystem):

when defined(windows):
import winlean
when useWinUnicode and defined(nimPreviewSlimSystem):
import std/widestrs
from os import absolutePath
else:
import os
Expand Down
2 changes: 2 additions & 0 deletions lib/pure/includes/osenv.nim
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ when not defined(nimscript):
else:

when defined(windows):
when defined(nimPreviewSlimSystem):
import std/widestrs
proc c_putenv(envstring: cstring): cint {.importc: "_putenv", header: "<stdlib.h>".}
from std/private/win_setenv import setEnvImpl
proc c_wgetenv(varname: WideCString): WideCString {.importc: "_wgetenv",
Expand Down
2 changes: 2 additions & 0 deletions lib/pure/includes/oserr.nim
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ when not defined(nimscript):

when defined(windows):
import winlean
when useWinUnicode and defined(nimPreviewSlimSystem):
import std/widestrs

proc `==`*(err1, err2: OSErrorCode): bool {.borrow.}
proc `$`*(err: OSErrorCode): string {.borrow.}
Expand Down
2 changes: 2 additions & 0 deletions lib/pure/memfiles.nim
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@

when defined(windows):
import winlean
when useWinUnicode and defined(nimPreviewSlimSystem):
import std/widestrs
elif defined(posix):
import posix
else:
Expand Down
3 changes: 3 additions & 0 deletions lib/pure/os.nim
Original file line number Diff line number Diff line change
Expand Up @@ -968,6 +968,9 @@ proc getCacheDir*(app: string): string =
when defined(windows):
type DWORD = uint32

when defined(nimPreviewSlimSystem):
import std/widestrs

proc getTempPath(
nBufferLength: DWORD, lpBuffer: WideCString
): DWORD {.stdcall, dynlib: "kernel32.dll", importc: "GetTempPathW".} =
Expand Down
2 changes: 2 additions & 0 deletions lib/pure/osproc.nim
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ when defined(linux) and defined(useClone):

when defined(nimPreviewSlimSystem):
import std/[syncio, assertions]
when defined(windows):
import std/widestrs


type
Expand Down
2 changes: 2 additions & 0 deletions lib/std/envvars.nim
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ when not defined(nimscript):
proc c_putenv(envstring: cstring): cint {.importc: "_putenv", header: "<stdlib.h>".}
from std/private/win_setenv import setEnvImpl
import winlean
when defined(nimPreviewSlimSystem):
import std/widestrs
proc c_wgetenv(varname: WideCString): WideCString {.importc: "_wgetenv",
header: "<stdlib.h>".}
proc getEnvImpl(env: cstring): WideCString = c_wgetenv(env.newWideCString)
Expand Down
2 changes: 2 additions & 0 deletions lib/std/oserrors.nim
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@ type
when not defined(nimscript):
when defined(windows):
import winlean
when defined(nimPreviewSlimSystem):
import std/widestrs
else:
var errno {.importc, header: "<errno.h>".}: cint

Expand Down
3 changes: 3 additions & 0 deletions lib/std/private/win_setenv.nim
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@ check errno_t vs cint

when not defined(windows): discard
else:
when defined(nimPreviewSlimSystem):
import std/widestrs

type wchar_t {.importc: "wchar_t".} = int16

proc setEnvironmentVariableW*(lpName, lpValue: WideCString): int32 {.
Expand Down
2 changes: 2 additions & 0 deletions lib/std/syncio.nim
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
include system/inclrtl
import std/private/since
import std/formatfloat
when defined(windows):
import std/widestrs

# ----------------- IO Part ------------------------------------------------
type
Expand Down
2 changes: 2 additions & 0 deletions lib/std/tempfiles.nim
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ const

when defined(windows):
import winlean
when defined(nimPreviewSlimSystem):
import std/widestrs

var O_RDWR {.importc: "_O_RDWR", header: "<fcntl.h>".}: cint

Expand Down
3 changes: 1 addition & 2 deletions lib/system/widestrs.nim → lib/std/widestrs.nim
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@
# distribution, for details about the copyright.
#

# Nim support for C/C++'s `wide strings`:idx:. This is part of the system
# module! Do not import it directly!
# Nim support for C/C++'s `wide strings`:idx:.

#when not declared(ThisIsSystem):
# {.error: "You must not import this module explicitly".}
Expand Down
5 changes: 3 additions & 2 deletions lib/system.nim
Original file line number Diff line number Diff line change
Expand Up @@ -2655,8 +2655,9 @@ when defined(genode):
# and return to thread entrypoint.


import system/widestrs
export widestrs
when not defined(nimPreviewSlimSystem):
import std/widestrs
export widestrs

when notJSnotNims:
when defined(windows) and compileOption("threads"):
Expand Down
1 change: 0 additions & 1 deletion lib/system_overview.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ is in separate files:
* `exceptions <exceptions.html>`_
* `assertions <assertions.html>`_
* `dollars <dollars.html>`_
* `widestrs <widestrs.html>`_
* `ctypes <ctypes.html>`_


Expand Down
3 changes: 3 additions & 0 deletions lib/windows/registry.nim
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@

import winlean, os

when defined(nimPreviewSlimSystem):
import std/widestrs

type
HKEY* = uint

Expand Down
1 change: 1 addition & 0 deletions lib/windows/winlean.nim
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ when defined(nimHasStyleChecks):

when defined(nimPreviewSlimSystem):
from std/syncio import FileHandle
import std/widestrs

const
useWinUnicode* = not defined(useWinAnsi)
Expand Down
3 changes: 3 additions & 0 deletions lib/wrappers/odbcsql.nim
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
# distribution, for details about the copyright.
#

when defined(nimPreviewSlimSystem):
import std/widestrs

when not defined(ODBCVER):
const
ODBCVER = 0x0351 ## define ODBC version 3.51 by default
Expand Down
2 changes: 2 additions & 0 deletions tests/arc/t19862.nim
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ discard """
matrix: "--gc:refc; --gc:arc"
"""

import std/widestrs

# bug #19862
type NewString = object

Expand Down
1 change: 1 addition & 0 deletions tests/ccgbugs/tcgbug.nim
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ q(a)

# bug #914
when defined(windows):
import std/widestrs
var x = newWideCString("Hello")

echo "success"
Expand Down
9 changes: 9 additions & 0 deletions tests/effects/tstrict_funcs_imports.nim
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,15 @@ discard """
when defined(linux):
import linenoise

when defined(nimPreviewSlimSystem):
import std/[
assertions,
formatfloat,
objectdollar,
syncio,
widestrs,
]

import
algorithm,
asyncdispatch,
Expand Down
5 changes: 5 additions & 0 deletions tests/js/tstdlib_imports.nim
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@ discard """

{.warning[UnusedImport]: off.}

when defined(nimPreviewSlimSystem):
import std/[
syncio, assertions, formatfloat, objectdollar, widestrs
]

import std/[
# Core:
bitops, typetraits, lenientops, macros, volatile, typeinfo,
Expand Down
4 changes: 3 additions & 1 deletion tests/stdlib/t15663.nim
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,7 @@ discard """
output: "Test"
"""

import std/widestrs

let ws = newWideCString("Test")
echo ws
echo ws
1 change: 1 addition & 0 deletions tests/stdlib/tenvvars.nim
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ template main =
main()

when defined(windows):
import std/widestrs
proc c_wgetenv(env: WideCString): WideCString {.importc: "_wgetenv", header: "<stdlib.h>".}
proc c_getenv(env: cstring): cstring {.importc: "getenv", header: "<stdlib.h>".}

Expand Down
1 change: 1 addition & 0 deletions tests/stdlib/tosenv.nim
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ static: main()
main()

when defined(windows):
import std/widestrs
proc c_wgetenv(env: WideCString): WideCString {.importc: "_wgetenv", header: "<stdlib.h>".}
proc c_getenv(env: cstring): cstring {.importc: "getenv", header: "<stdlib.h>".}

Expand Down
1 change: 1 addition & 0 deletions tests/stdlib/twchartoutf8.nim
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import std/[syncio, assertions]
when not defined(windows):
echo "OK"
else:
import std/widestrs
{.push gcsafe.}

const CP_UTF8 = 65001'i32
Expand Down
4 changes: 3 additions & 1 deletion tests/test_nimscript.nims
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
from stdtest/specialpaths import buildDir

when defined(nimPreviewSlimSystem):
import std/syncio
import std/[
syncio, assertions, formatfloat, objectdollar, widestrs
]

import std/[
# Core:
Expand Down
1 change: 0 additions & 1 deletion tools/kochdocs.nim
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,6 @@ lib/system/assertions.nim
lib/system/iterators.nim
lib/system/exceptions.nim
lib/system/dollars.nim
lib/system/widestrs.nim
lib/system/ctypes.nim
""".splitWhitespace()

Expand Down

0 comments on commit 0b16505

Please sign in to comment.