summary refs log tree commit diff stats
diff options
context:
space:
mode:
authormetagn <metagngn@gmail.com>2022-10-01 23:35:09 +0300
committerGitHub <noreply@github.com>2022-10-01 22:35:09 +0200
commit0b1650576c6102ce85b4b2c0788b3a5b77154e43 (patch)
treeef5e7e6d804665be33b92c507a0d07e082634463
parentcbd9fee22ac7063c66cc9aa38f20e78df082e387 (diff)
downloadNim-0b1650576c6102ce85b4b2c0788b3a5b77154e43.tar.gz
move widestrs out of system (#20462)
* move widestrs out of system

* fix osproc
-rw-r--r--changelog.md1
-rw-r--r--lib/pure/asyncfile.nim2
-rw-r--r--lib/pure/browsers.nim2
-rw-r--r--lib/pure/includes/osenv.nim2
-rw-r--r--lib/pure/includes/oserr.nim2
-rw-r--r--lib/pure/memfiles.nim2
-rw-r--r--lib/pure/os.nim3
-rw-r--r--lib/pure/osproc.nim2
-rw-r--r--lib/std/envvars.nim2
-rw-r--r--lib/std/oserrors.nim2
-rw-r--r--lib/std/private/win_setenv.nim3
-rw-r--r--lib/std/syncio.nim2
-rw-r--r--lib/std/tempfiles.nim2
-rw-r--r--lib/std/widestrs.nim (renamed from lib/system/widestrs.nim)3
-rw-r--r--lib/system.nim5
-rw-r--r--lib/system_overview.rst1
-rw-r--r--lib/windows/registry.nim3
-rw-r--r--lib/windows/winlean.nim1
-rw-r--r--lib/wrappers/odbcsql.nim3
-rw-r--r--tests/arc/t19862.nim2
-rw-r--r--tests/ccgbugs/tcgbug.nim1
-rw-r--r--tests/effects/tstrict_funcs_imports.nim9
-rw-r--r--tests/js/tstdlib_imports.nim5
-rw-r--r--tests/stdlib/t15663.nim4
-rw-r--r--tests/stdlib/tenvvars.nim1
-rw-r--r--tests/stdlib/tosenv.nim1
-rw-r--r--tests/stdlib/twchartoutf8.nim1
-rw-r--r--tests/test_nimscript.nims4
-rw-r--r--tools/kochdocs.nim1
29 files changed, 64 insertions, 8 deletions
diff --git a/changelog.md b/changelog.md
index 70ebbac09..840a19b51 100644
--- a/changelog.md
+++ b/changelog.md
@@ -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.
diff --git a/lib/pure/asyncfile.nim b/lib/pure/asyncfile.nim
index 9cc9f5b48..217dca6d9 100644
--- a/lib/pure/asyncfile.nim
+++ b/lib/pure/asyncfile.nim
@@ -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.
 
diff --git a/lib/pure/browsers.nim b/lib/pure/browsers.nim
index c36e31b11..b95b37a1d 100644
--- a/lib/pure/browsers.nim
+++ b/lib/pure/browsers.nim
@@ -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
diff --git a/lib/pure/includes/osenv.nim b/lib/pure/includes/osenv.nim
index b7200a8e2..a1d906519 100644
--- a/lib/pure/includes/osenv.nim
+++ b/lib/pure/includes/osenv.nim
@@ -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",
diff --git a/lib/pure/includes/oserr.nim b/lib/pure/includes/oserr.nim
index a6eba84ba..c58fdb22c 100644
--- a/lib/pure/includes/oserr.nim
+++ b/lib/pure/includes/oserr.nim
@@ -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.}
diff --git a/lib/pure/memfiles.nim b/lib/pure/memfiles.nim
index a952933ed..d0877b311 100644
--- a/lib/pure/memfiles.nim
+++ b/lib/pure/memfiles.nim
@@ -17,6 +17,8 @@
 
 when defined(windows):
   import winlean
+  when useWinUnicode and defined(nimPreviewSlimSystem):
+    import std/widestrs
 elif defined(posix):
   import posix
 else:
diff --git a/lib/pure/os.nim b/lib/pure/os.nim
index a39fcaf46..b1292a648 100644
--- a/lib/pure/os.nim
+++ b/lib/pure/os.nim
@@ -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".} =
diff --git a/lib/pure/osproc.nim b/lib/pure/osproc.nim
index a0079cf95..5e130b47a 100644
--- a/lib/pure/osproc.nim
+++ b/lib/pure/osproc.nim
@@ -33,6 +33,8 @@ when defined(linux) and defined(useClone):
 
 when defined(nimPreviewSlimSystem):
   import std/[syncio, assertions]
+  when defined(windows):
+    import std/widestrs
 
 
 type
diff --git a/lib/std/envvars.nim b/lib/std/envvars.nim
index d7706c17d..9748cd2ad 100644
--- a/lib/std/envvars.nim
+++ b/lib/std/envvars.nim
@@ -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)
diff --git a/lib/std/oserrors.nim b/lib/std/oserrors.nim
index 9c2649eab..8d06c41da 100644
--- a/lib/std/oserrors.nim
+++ b/lib/std/oserrors.nim
@@ -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
 
diff --git a/lib/std/private/win_setenv.nim b/lib/std/private/win_setenv.nim
index 89bb0421f..9315f3e7e 100644
--- a/lib/std/private/win_setenv.nim
+++ b/lib/std/private/win_setenv.nim
@@ -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 {.
diff --git a/lib/std/syncio.nim b/lib/std/syncio.nim
index fc132bba7..dadad9791 100644
--- a/lib/std/syncio.nim
+++ b/lib/std/syncio.nim
@@ -12,6 +12,8 @@
 include system/inclrtl
 import std/private/since
 import std/formatfloat
+when defined(windows):
+  import std/widestrs
 
 # ----------------- IO Part ------------------------------------------------
 type
diff --git a/lib/std/tempfiles.nim b/lib/std/tempfiles.nim
index ee42f8a5c..1160aaaad 100644
--- a/lib/std/tempfiles.nim
+++ b/lib/std/tempfiles.nim
@@ -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
 
diff --git a/lib/system/widestrs.nim b/lib/std/widestrs.nim
index bb348fd67..7df4004d1 100644
--- a/lib/system/widestrs.nim
+++ b/lib/std/widestrs.nim
@@ -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".}
diff --git a/lib/system.nim b/lib/system.nim
index daee96c1c..fd31cf3da 100644
--- a/lib/system.nim
+++ b/lib/system.nim
@@ -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"):
diff --git a/lib/system_overview.rst b/lib/system_overview.rst
index 158069375..b338845d6 100644
--- a/lib/system_overview.rst
+++ b/lib/system_overview.rst
@@ -8,7 +8,6 @@ is in separate files:
 * `exceptions <exceptions.html>`_
 * `assertions <assertions.html>`_
 * `dollars <dollars.html>`_
-* `widestrs <widestrs.html>`_
 * `ctypes <ctypes.html>`_
 
 
diff --git a/lib/windows/registry.nim b/lib/windows/registry.nim
index 44e4e4420..6abc41a89 100644
--- a/lib/windows/registry.nim
+++ b/lib/windows/registry.nim
@@ -11,6 +11,9 @@
 
 import winlean, os
 
+when defined(nimPreviewSlimSystem):
+  import std/widestrs
+
 type
   HKEY* = uint
 
diff --git a/lib/windows/winlean.nim b/lib/windows/winlean.nim
index 91b0d18c1..93ab3dd2e 100644
--- a/lib/windows/winlean.nim
+++ b/lib/windows/winlean.nim
@@ -19,6 +19,7 @@ when defined(nimHasStyleChecks):
 
 when defined(nimPreviewSlimSystem):
   from std/syncio import FileHandle
+  import std/widestrs
 
 const
   useWinUnicode* = not defined(useWinAnsi)
diff --git a/lib/wrappers/odbcsql.nim b/lib/wrappers/odbcsql.nim
index 4e37e1a17..6b300c5ff 100644
--- a/lib/wrappers/odbcsql.nim
+++ b/lib/wrappers/odbcsql.nim
@@ -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
diff --git a/tests/arc/t19862.nim b/tests/arc/t19862.nim
index f7146ec26..6d3f57692 100644
--- a/tests/arc/t19862.nim
+++ b/tests/arc/t19862.nim
@@ -2,6 +2,8 @@ discard """
   matrix: "--gc:refc; --gc:arc"
 """
 
+import std/widestrs
+
 # bug #19862
 type NewString = object
 
diff --git a/tests/ccgbugs/tcgbug.nim b/tests/ccgbugs/tcgbug.nim
index 0fe4b8852..14ed390d4 100644
--- a/tests/ccgbugs/tcgbug.nim
+++ b/tests/ccgbugs/tcgbug.nim
@@ -24,6 +24,7 @@ q(a)
 
 # bug #914
 when defined(windows):
+  import std/widestrs
   var x = newWideCString("Hello")
 
 echo "success"
diff --git a/tests/effects/tstrict_funcs_imports.nim b/tests/effects/tstrict_funcs_imports.nim
index 264771a1a..eb83bb69b 100644
--- a/tests/effects/tstrict_funcs_imports.nim
+++ b/tests/effects/tstrict_funcs_imports.nim
@@ -7,6 +7,15 @@ discard """
 when defined(linux):
   import linenoise
 
+when defined(nimPreviewSlimSystem):
+  import std/[
+    assertions,
+    formatfloat,
+    objectdollar,
+    syncio,
+    widestrs,
+  ]
+
 import
   algorithm,
   asyncdispatch,
diff --git a/tests/js/tstdlib_imports.nim b/tests/js/tstdlib_imports.nim
index 30aca7561..ed01ff6a4 100644
--- a/tests/js/tstdlib_imports.nim
+++ b/tests/js/tstdlib_imports.nim
@@ -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,
diff --git a/tests/stdlib/t15663.nim b/tests/stdlib/t15663.nim
index 1ad5677fd..8e8bfd9a8 100644
--- a/tests/stdlib/t15663.nim
+++ b/tests/stdlib/t15663.nim
@@ -3,5 +3,7 @@ discard """
   output: "Test"
 """
 
+import std/widestrs
+
 let ws = newWideCString("Test")
-echo ws
\ No newline at end of file
+echo ws
diff --git a/tests/stdlib/tenvvars.nim b/tests/stdlib/tenvvars.nim
index 47c1ad24a..2d084f71d 100644
--- a/tests/stdlib/tenvvars.nim
+++ b/tests/stdlib/tenvvars.nim
@@ -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>".}
 
diff --git a/tests/stdlib/tosenv.nim b/tests/stdlib/tosenv.nim
index f7b3bb9d6..365edc8c2 100644
--- a/tests/stdlib/tosenv.nim
+++ b/tests/stdlib/tosenv.nim
@@ -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>".}
 
diff --git a/tests/stdlib/twchartoutf8.nim b/tests/stdlib/twchartoutf8.nim
index add104b07..0b6cf696e 100644
--- a/tests/stdlib/twchartoutf8.nim
+++ b/tests/stdlib/twchartoutf8.nim
@@ -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
diff --git a/tests/test_nimscript.nims b/tests/test_nimscript.nims
index 5fc77f6e4..a68e00fe1 100644
--- a/tests/test_nimscript.nims
+++ b/tests/test_nimscript.nims
@@ -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:
diff --git a/tools/kochdocs.nim b/tools/kochdocs.nim
index 18659825b..ee9c29499 100644
--- a/tools/kochdocs.nim
+++ b/tools/kochdocs.nim
@@ -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()