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