git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Move checkRefIsValid up
a4486d9Andrey Popp
src/Language/PureScript/Sugar/Names.hs+4−7
@@ -405,7 +405,7 @@ resolveImports env (Module currentModule decls _) =
405--
405--
406resolveImport :: ModuleName -> ModuleName -> Exports -> ImportEnvironment -> Maybe ModuleName -> Maybe ExplicitImports -> Maybe HiddenImports -> Either ErrorStack ImportEnvironment
406resolveImport :: ModuleName -> ModuleName -> Exports -> ImportEnvironment -> Maybe ModuleName -> Maybe ExplicitImports -> Maybe HiddenImports -> Either ErrorStack ImportEnvironment
407resolveImport currentModule importModule exps imps impQual explImports hiddenImports =
407resolveImport currentModule importModule exps imps impQual explImports hiddenImports =
408− maybe importAll (foldM importExplicit imps) explImports
408+ maybe importAll (foldM (\m -> checkRefIsValid >=> (importExplicit m)) imps) explImports
409 where
409 where
410
410
411 -- Import everything from a module
411 -- Import everything from a module
@@ -424,19 +424,16 @@ resolveImport currentModule importModule exps imps impQual explImports hiddenImp
424 -- Import something explicitly
424 -- Import something explicitly
425 importExplicit :: ImportEnvironment -> DeclarationRef -> Either ErrorStack ImportEnvironment
425 importExplicit :: ImportEnvironment -> DeclarationRef -> Either ErrorStack ImportEnvironment
426 importExplicit imp (PositionedDeclarationRef pos r) = rethrowWithPosition pos $ importExplicit imp r
426 importExplicit imp (PositionedDeclarationRef pos r) = rethrowWithPosition pos $ importExplicit imp r
427− importExplicit imp ref@(ValueRef name) = do
427+ importExplicit imp (ValueRef name) = do
428− _ <- checkRefIsValid ref
429 values' <- updateImports (importedValues imp) name
428 values' <- updateImports (importedValues imp) name
430 return $ imp { importedValues = values' }
429 return $ imp { importedValues = values' }
431− importExplicit imp ref@(TypeRef name dctors) = do
430+ importExplicit imp (TypeRef name dctors) = do
432− _ <- checkRefIsValid ref
433 types' <- updateImports (importedTypes imp) name
431 types' <- updateImports (importedTypes imp) name
434 let allDctors = allExportedDataConstructors name
432 let allDctors = allExportedDataConstructors name
435 dctors' <- maybe (return allDctors) (mapM $ checkDctorExists allDctors) dctors
433 dctors' <- maybe (return allDctors) (mapM $ checkDctorExists allDctors) dctors
436 dctors'' <- foldM updateImports (importedDataConstructors imp) dctors'
434 dctors'' <- foldM updateImports (importedDataConstructors imp) dctors'
437 return $ imp { importedTypes = types', importedDataConstructors = dctors'' }
435 return $ imp { importedTypes = types', importedDataConstructors = dctors'' }
438− importExplicit imp ref@(TypeClassRef name) = do
436+ importExplicit imp (TypeClassRef name) = do
439− _ <- checkRefIsValid ref
440 typeClasses' <- updateImports (importedTypeClasses imp) name
437 typeClasses' <- updateImports (importedTypeClasses imp) name
441 return $ imp { importedTypeClasses = typeClasses' }
438 return $ imp { importedTypeClasses = typeClasses' }
442 importExplicit _ _ = error "Invalid argument to importExplicit"
439 importExplicit _ _ = error "Invalid argument to importExplicit"