From 169924e38842669d13d7228957adfe240c14fb22 Mon Sep 17 00:00:00 2001
From: simonm <unknown>
Date: Wed, 8 Oct 1997 12:08:14 +0000
Subject: [PATCH] [project @ 1997-10-08 12:08:14 by simonm] Fix for special
 prelude names ((),[],-> etc) when compiling with -fno-implicit-prelude.

---
 ghc/compiler/reader/ReadPrefix.lhs | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/ghc/compiler/reader/ReadPrefix.lhs b/ghc/compiler/reader/ReadPrefix.lhs
index 6f724093a3ec..88bd2442dcd5 100644
--- a/ghc/compiler/reader/ReadPrefix.lhs
+++ b/ghc/compiler/reader/ReadPrefix.lhs
@@ -27,7 +27,7 @@ import RdrHsSyn
 import BasicTypes	( Fixity(..), FixityDirection(..), NewOrData(..), IfaceFlavour(..) )
 import PrefixToHs
 
-import CmdLineOpts      ( opt_PprUserLength )
+import CmdLineOpts      ( opt_PprUserLength, opt_NoImplicitPrelude )
 import ErrUtils		( addErrLoc, ghcExit )
 import FiniteMap	( elemFM, FiniteMap )
 import Name		( OccName(..), SYN_IE(Module) )
@@ -77,20 +77,26 @@ wlkEntId = wlkQid (\occ -> if isLexConId occ
 wlkQid	:: (FAST_STRING -> OccName) -> U_qid -> UgnM RdrName
 
 -- There are three kinds of qid:
---	qualified name (noqual)		A.x
---	unqualified name (aqual)	x
+--	qualified name (aqual)		A.x
+--	unqualified name (noqual)	x
 --	special name (gid)		[], (), ->, (,,,)
 -- The special names always mean "Prelude.whatever"; that's why
 -- they are distinct.  So if you write "()", it's just as if  you
--- had written "Prelude.()".  NB: The (qualified) prelude is always in scope,
--- so the renamer will find it.
+-- had written "Prelude.()".  
+-- NB: The (qualified) prelude is always in scope, so the renamer will find it.
+
+-- EXCEPT: when we're compiling with -fno-implicit-prelude, in which
+-- case we need to unqualify these things. -- SDM.
 
 wlkQid mk_occ_name (U_noqual name)
   = returnUgn (Unqual (mk_occ_name name))
 wlkQid mk_occ_name (U_aqual  mod name)
   = returnUgn (Qual mod (mk_occ_name name) HiFile)
 wlkQid mk_occ_name (U_gid n name)
-  = returnUgn (Qual pRELUDE (mk_occ_name name) HiFile)
+  | opt_NoImplicitPrelude 
+	= returnUgn (Unqual (mk_occ_name name))
+  | otherwise
+	= returnUgn (Qual pRELUDE (mk_occ_name name) HiFile)
 
 rdTCId  pt = rdU_qid pt `thenUgn` \ qid -> wlkTCId qid
 rdVarId pt = rdU_qid pt `thenUgn` \ qid -> wlkVarId qid
-- 
GitLab