git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Merge pull request #1105 from mjgpy3/1088_import_module_name

Correct ConflictingImport error, add suggestion. Resolves #1088.

commitf9d6d0c59f1138c098094e02d4918fd956fcf558 authorPhil Freeman <paf31@cantab.net> dateWed 6 May 2015, 17:36 (11 years ago) parent3dc09934e92b9b
2 files changed+6−3
src/Language/PureScript/Errors.hs+4−1 src/Language/PureScript/Sugar/Names.hs+2−2
src/Language/PureScript/Errors.hs+4−1
@@ -390,7 +390,7 @@ prettyPrintSingleError full e = prettyPrintErrorMessage <$> onTypesInErrorMessag
390390 goSimple (UnknownValue name) = line $ "Unknown value " ++ show name
391391 goSimple (UnknownTypeConstructor name) = line $ "Unknown type constructor " ++ show name
392392 goSimple (UnknownDataConstructor dc tc) = line $ "Unknown data constructor " ++ show dc ++ foldMap ((" for type constructor " ++) . show) tc
393− goSimple (ConflictingImport nm mn) = line $ "Declaration " ++ nm ++ " conflicts with import " ++ show mn
393+ goSimple (ConflictingImport nm mn) = line $ "Cannot declare `" ++ nm ++ "` since another declaration of that name was imported from `" ++ show mn ++ "`"
394394 goSimple (ConflictingImports nm m1 m2) = line $ "Conflicting imports for " ++ nm ++ " from modules " ++ show m1 ++ " and " ++ show m2
395395 goSimple (ConflictingTypeDecls nm) = line $ "Conflicting type declarations for " ++ show nm
396396 goSimple (ConflictingCtorDecls nm) = line $ "Conflicting data constructor declarations for " ++ show nm
@@ -544,6 +544,9 @@ prettyPrintSingleError full e = prettyPrintErrorMessage <$> onTypesInErrorMessag
544544 suggestions :: ErrorMessage -> [Box.Box]
545545 suggestions = suggestions' . unwrapErrorMessage
546546 where
547+ suggestions' (ConflictingImport nm im) = [ line $ "Possible fix: hide `" ++ nm ++ "` when importing `" ++ show im ++ "`:"
548+ , indent . line $ "import " ++ show im ++ " hiding (" ++ nm ++ ")"
549+ ]
547550 suggestions' (TypesDoNotUnify t1 t2)
548551 | any isObject [t1, t2] = [line "Note that function composition in PureScript is defined using `(<<<)`"]
549552 | otherwise = []
src/Language/PureScript/Sugar/Names.hs+2−2
@@ -514,8 +514,8 @@ resolveImport currentModule importModule exps imps impQual =
514514 Just (Qualified Nothing _) -> error "Invalid state in updateImports"
515515 Just (Qualified (Just mn) _) -> throwError . errorMessage $ err
516516 where
517− err = if mn == currentModule || importModule == currentModule
518− then ConflictingImport (show name) mn
517+ err = if currentModule `elem` [mn, importModule]
518+ then ConflictingImport (show name) importModule
519519 else ConflictingImports (show name) mn importModule
520520
521521 -- The available values, types, and classes in the module being imported