From 8f8dba0190fe2a3a8b148fecf0dc83a725fb3fd2 Mon Sep 17 00:00:00 2001
From: Ben Gamari <ben@smart-cactus.org>
Date: Wed, 2 Nov 2022 20:42:34 -0400
Subject: [PATCH] Revert "base: Move CString, CStringLen to GHC.Foreign"

This reverts commit 5ec22f0135483ea8a8a543c53dcc7f9d7f6a8dea.
---
 libraries/base/Foreign/C/String.hs | 11 ++++++++++-
 libraries/base/GHC/Foreign.hs      |  6 +-----
 2 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/libraries/base/Foreign/C/String.hs b/libraries/base/Foreign/C/String.hs
index 2b0c7ec25029..a8eb60c5a31e 100644
--- a/libraries/base/Foreign/C/String.hs
+++ b/libraries/base/Foreign/C/String.hs
@@ -110,11 +110,20 @@ import GHC.Base
 
 import {-# SOURCE #-} GHC.IO.Encoding
 import qualified GHC.Foreign as GHC
-import GHC.Foreign (CString, CStringLen)
 
 -----------------------------------------------------------------------------
 -- Strings
 
+-- representation of strings in C
+-- ------------------------------
+
+-- | A C string is a reference to an array of C characters terminated by NUL.
+type CString    = Ptr CChar
+
+-- | A string with explicit length information in bytes instead of a
+-- terminating NUL (allowing NUL characters in the middle of the string).
+type CStringLen = (Ptr CChar, Int)
+
 -- exported functions
 -- ------------------
 --
diff --git a/libraries/base/GHC/Foreign.hs b/libraries/base/GHC/Foreign.hs
index 0bd858190a8a..042745ce1108 100644
--- a/libraries/base/GHC/Foreign.hs
+++ b/libraries/base/GHC/Foreign.hs
@@ -19,7 +19,6 @@
 
 module GHC.Foreign (
     -- * C strings with a configurable encoding
-    CString, CStringLen,
 
     -- conversion of C strings into Haskell strings
     --
@@ -75,11 +74,8 @@ putDebugMsg | c_DEBUG_DUMP = debugLn
             | otherwise    = const (return ())
 
 
--- | A C string is a reference to an array of C characters terminated by NUL.
+-- These definitions are identical to those in Foreign.C.String, but copied in here to avoid a cycle:
 type CString    = Ptr CChar
-
--- | A string with explicit length information in bytes instead of a
--- terminating NUL (allowing NUL characters in the middle of the string).
 type CStringLen = (Ptr CChar, Int)
 
 -- exported functions
-- 
GitLab