git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Merge pull request #1824 from soupi/master

adding qualified name lookup for psci :browse issue #974

commitf4d109c0e0c760d93644c1203716778df0ac96af authorPhil Freeman <paf31@cantab.net> dateSun 24 Jan 2016, 09:36 (11 years ago) parentca662651934294
1 file changed+17−4
psci/PSCi.hs+17−4
psci/PSCi.hs+17−4
@@ -14,7 +14,7 @@ import Prelude.Compat
1414
1515import Data.Foldable (traverse_)
1616import Data.Maybe (mapMaybe)
17−import Data.List (intersperse, intercalate, nub, sort)
17+import Data.List (intersperse, intercalate, nub, sort, find)
1818import Data.Tuple (swap)
1919import Data.Version (showVersion)
2020import qualified Data.Map as M
@@ -486,9 +486,22 @@ handleBrowse moduleName = do
486486 case env of
487487 Left errs -> printErrors errs
488488 Right env' ->
489− if moduleName `notElem` (nub . map ((\ (P.Module _ _ modName _ _ ) -> modName) . snd)) (psciLoadedModules st)
490− then PSCI $ outputStrLn $ "Module '" ++ N.runModuleName moduleName ++ "' is not valid."
491− else printModuleSignatures moduleName env'
489+ if isModInEnv moduleName st
490+ then printModuleSignatures moduleName env'
491+ else case lookupUnQualifiedModName moduleName st of
492+ Just unQualifiedName ->
493+ if isModInEnv unQualifiedName st
494+ then printModuleSignatures unQualifiedName env'
495+ else failNotInEnv moduleName
496+ Nothing ->
497+ failNotInEnv moduleName
498+ where
499+ isModInEnv modName =
500+ any ((== modName) . P.getModuleName . snd) . psciLoadedModules
501+ failNotInEnv modName =
502+ PSCI $ outputStrLn $ "Module '" ++ N.runModuleName modName ++ "' is not valid."
503+ lookupUnQualifiedModName quaModName st =
504+ (\(modName,_,_) -> modName) <$> find ( \(_, _, mayQuaName) -> mayQuaName == Just quaModName) (psciImportedModules st)
492505
493506-- | Pretty-print errors
494507printErrors :: P.MultipleErrors -> PSCI ()