git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Use import info in operator desugaring
commit45592b432ec78a1198350bbe6a4b30e663a28a76 authorGary Burgess <gary.burgess@gmail.com> dateTue 18 Mar 2014, 00:14 (13 years ago) parentaf10a2a
1 file changed+11−3
src/Language/PureScript/Sugar/Operators.hs+11−3
src/Language/PureScript/Sugar/Operators.hs+11−3
@@ -31,6 +31,7 @@ import Control.Applicative
3131import Control.Arrow (first)
3232import Control.Monad.State
3333
34+import Data.Maybe (fromMaybe, mapMaybe)
3435import Data.Function (on)
3536import Data.Functor.Identity
3637import Data.List (groupBy, sortBy)
@@ -124,9 +125,16 @@ collectFixities m moduleName (FixityDeclaration fixity name : rest) = do
124125 let qual = Qualified (Just moduleName) (Op name)
125126 when (qual `M.member` m) (Left $ "redefined fixity for " ++ show name)
126127 collectFixities (M.insert qual fixity m) moduleName rest
127−collectFixities m moduleName (ImportDeclaration importedModule _ _ : rest) = do
128− let fs = [ (i, fixity) | (Qualified mn i, fixity) <- M.toList m, mn == Just importedModule ]
129− let m' = M.fromList (map (first (Qualified (Just moduleName))) fs)
128+collectFixities m moduleName (ImportDeclaration importedModule explImports qual : rest) = do
129+ let qualName = fromMaybe moduleName qual
130+ let fs = [ (i, fixity) | (Qualified mn i, fixity) <- M.toList m, mn == Just importedModule && isImported explImports i ]
131+ let m' = M.fromList (map (first (Qualified (Just qualName))) fs)
130132 collectFixities (m' `M.union` m) moduleName rest
133+ where
134+ isImported Nothing _ = True
135+ isImported (Just imps) i = i `elem` (mapMaybe getExportedValue imps)
136+ getExportedValue (ValueRef name) = Just name
137+ getExportedValue _ = Nothing
138+
131139collectFixities m moduleName (_:ds) = collectFixities m moduleName ds
132140