Handle :cd in external interpreter in a more robust way

Authored by watashi on Dec 17 2018, 12:16 AM.

Description

Handle :cd in external interpreter in a more robust way

We used to enqueue another command to change directory in the external
interpreter subprocess, this is not as robust as:

  • it can fail with -fno-implict-import-qualified;
  • it doesn't work when we setGHCiMonad to something other than IO.

Neither of them works if directory package is hidden though.

Test Plan:

$ inplace/bin/ghc-stage2 --interactive # -fexternal-interpreter
GHCi, version 8.7.20181213: http://www.haskell.org/ghc/  :? for help
Prelude> :cd ..
Prelude> System.Directory.getCurrentDirectory
"/data/users/watashi"
Prelude> :!pwd
/data/users/watashi
Prelude>
Leaving GHCi.
./validate

Reviewers: simonmar, bgamari, RyanGlScott

Reviewed By: simonmar

Subscribers: rwbarton, carter

Differential Revision: https://phabricator.haskell.org/D5453