summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--compiler/main/HscTypes.hs13
-rw-r--r--testsuite/tests/ghci.debugger/scripts/break011.stdout7
-rw-r--r--testsuite/tests/ghci.debugger/scripts/hist001.stdout4
-rw-r--r--testsuite/tests/ghci/scripts/T11547.script9
-rw-r--r--testsuite/tests/ghci/scripts/T11547.stdout5
-rw-r--r--testsuite/tests/ghci/scripts/T2976.stdout2
-rwxr-xr-xtestsuite/tests/ghci/scripts/all.T1
7 files changed, 30 insertions, 11 deletions
diff --git a/compiler/main/HscTypes.hs b/compiler/main/HscTypes.hs
index ddeee33ebe..127775e822 100644
--- a/compiler/main/HscTypes.hs
+++ b/compiler/main/HscTypes.hs
@@ -1522,7 +1522,7 @@ extendInteractiveContext ictxt new_tythings new_cls_insts new_fam_insts defaults
= ictxt { ic_mod_index = ic_mod_index ictxt + 1
-- Always bump this; even instances should create
-- a new mod_index (Trac #9426)
- , ic_tythings = new_tythings ++ old_tythings
+ , ic_tythings = new_tythings ++ ic_tythings ictxt
, ic_rn_gbl_env = ic_rn_gbl_env ictxt `icExtendGblRdrEnv` new_tythings
, ic_instances = ( new_cls_insts ++ old_cls_insts
, new_fam_insts ++ old_fam_insts )
@@ -1530,8 +1530,6 @@ extendInteractiveContext ictxt new_tythings new_cls_insts new_fam_insts defaults
, ic_fix_env = fix_env -- See Note [Fixity declarations in GHCi]
}
where
- new_ids = [id | AnId id <- new_tythings]
- old_tythings = filterOut (shadowed_by new_ids) (ic_tythings ictxt)
-- Discard old instances that have been fully overrridden
-- See Note [Override identical instances in GHCi]
@@ -1544,17 +1542,10 @@ extendInteractiveContextWithIds :: InteractiveContext -> [Id] -> InteractiveCont
extendInteractiveContextWithIds ictxt new_ids
| null new_ids = ictxt
| otherwise = ictxt { ic_mod_index = ic_mod_index ictxt + 1
- , ic_tythings = new_tythings ++ old_tythings
+ , ic_tythings = new_tythings ++ ic_tythings ictxt
, ic_rn_gbl_env = ic_rn_gbl_env ictxt `icExtendGblRdrEnv` new_tythings }
where
new_tythings = map AnId new_ids
- old_tythings = filterOut (shadowed_by new_ids) (ic_tythings ictxt)
-
-shadowed_by :: [Id] -> TyThing -> Bool
-shadowed_by ids = shadowed
- where
- shadowed id = getOccName id `elemOccSet` new_occs
- new_occs = mkOccSet (map getOccName ids)
setInteractivePackage :: HscEnv -> HscEnv
-- Set the 'thisPackage' DynFlag to 'interactive'
diff --git a/testsuite/tests/ghci.debugger/scripts/break011.stdout b/testsuite/tests/ghci.debugger/scripts/break011.stdout
index 47fb7b135d..ac5b7e3a24 100644
--- a/testsuite/tests/ghci.debugger/scripts/break011.stdout
+++ b/testsuite/tests/ghci.debugger/scripts/break011.stdout
@@ -23,6 +23,13 @@ _exception = SomeException
"foo"
"CallStack (from HasCallStack):
error, called at Test7.hs:2:18 in main:Main")
+Ghci1._exception :: SomeException = SomeException
+ (ErrorCallWithLocation
+ "foo"
+ "CallStack (from HasCallStack):
+ error, called at Test7.hs:<line>:<column> in <package-id>:Main")
+Ghci2._result :: a = _
+Ghci3._result :: IO a = _
_result :: a = _
_exception :: SomeException = SomeException
(ErrorCallWithLocation
diff --git a/testsuite/tests/ghci.debugger/scripts/hist001.stdout b/testsuite/tests/ghci.debugger/scripts/hist001.stdout
index a19a34f315..523605b00a 100644
--- a/testsuite/tests/ghci.debugger/scripts/hist001.stdout
+++ b/testsuite/tests/ghci.debugger/scripts/hist001.stdout
@@ -12,6 +12,7 @@ Logged breakpoint at Test3.hs:2:22-31
_result :: [a]
f :: t -> a
xs :: [t]
+Ghci1._result :: [a] = _
xs :: [t] = []
f :: t -> a = _
_result :: [a] = _
@@ -19,7 +20,10 @@ Logged breakpoint at Test3.hs:2:18-20
_result :: a
f :: Integer -> a
x :: Integer
+Ghci1._result :: [a] = _
xs :: [t] = []
+Ghci2.f :: t -> a = _
+Ghci2._result :: [a] = _
x :: Integer = 2
f :: Integer -> a = _
_result :: a = _
diff --git a/testsuite/tests/ghci/scripts/T11547.script b/testsuite/tests/ghci/scripts/T11547.script
new file mode 100644
index 0000000000..c4c15d6f78
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T11547.script
@@ -0,0 +1,9 @@
+foo = foo
+:t Ghci1.foo
+foo = foo
+:t Ghci2.foo
+:t Ghci1.foo
+data Foo = Foo | Bar
+data Foo = Bar
+:t Foo
+:t Ghci3.Bar
diff --git a/testsuite/tests/ghci/scripts/T11547.stdout b/testsuite/tests/ghci/scripts/T11547.stdout
new file mode 100644
index 0000000000..6f2a8333c3
--- /dev/null
+++ b/testsuite/tests/ghci/scripts/T11547.stdout
@@ -0,0 +1,5 @@
+Ghci1.foo :: t
+Ghci2.foo :: t
+Ghci1.foo :: t
+Foo :: Ghci3.Foo
+Ghci3.Bar :: Ghci3.Foo
diff --git a/testsuite/tests/ghci/scripts/T2976.stdout b/testsuite/tests/ghci/scripts/T2976.stdout
index 9fdc11072c..de31112bb3 100644
--- a/testsuite/tests/ghci/scripts/T2976.stdout
+++ b/testsuite/tests/ghci/scripts/T2976.stdout
@@ -1,6 +1,8 @@
test :: Integer = 0
test = 0
test :: Integer = 0
+Ghci1.test :: Integer = 0
test :: [Char] = _
test = "test"
+Ghci1.test :: Integer = 0
test :: [Char] = "test"
diff --git a/testsuite/tests/ghci/scripts/all.T b/testsuite/tests/ghci/scripts/all.T
index 9e3656728d..20888ae1db 100755
--- a/testsuite/tests/ghci/scripts/all.T
+++ b/testsuite/tests/ghci/scripts/all.T
@@ -258,6 +258,7 @@ test('T11376', normal, ghci_script, ['T11376.script'])
test('T12007', normal, ghci_script, ['T12007.script'])
test('T11975', normal, ghci_script, ['T11975.script'])
test('T10963', normal, ghci_script, ['T10963.script'])
+test('T11547', normal, ghci_script, ['T11547.script'])
test('T12520', normal, ghci_script, ['T12520.script'])
test('T12091',
[expect_broken(12091), extra_run_opts('-fobject-code')],