@@ -175,13 +175,10 @@ typeCheckAll mainModuleName moduleName (d@(FixityDeclaration _ name) : rest) = d
175 return $ d : ds
175 return $ d : ds
176typeCheckAll mainModuleName currentModule (d@(ImportDeclaration moduleName _) : rest) = do
176typeCheckAll mainModuleName currentModule (d@(ImportDeclaration moduleName _) : rest) = do
177 env <- getEnv
177 env <- getEnv
178− let instances = filter (\tcd ->
179− let Qualified (Just mn) _ = tcdName tcd in
178+ let instances = filter (\tcd -> let Qualified (Just mn) _ = tcdName tcd in moduleName == mn) (typeClassDictionaries env)
180− moduleName == mn && tcdType tcd == TCDRegular
181− ) (typeClassDictionaries env)
182 forM_ instances $ \tcd -> do
179 forM_ instances $ \tcd -> do
183 let (Qualified _ ident) = tcdName tcd
180 let (Qualified _ ident) = tcdName tcd
184− addTypeClassDictionaries [tcd { tcdName = Qualified (Just currentModule) ident, tcdType = TCDAlias (tcdName tcd) }]
181+ addTypeClassDictionaries [tcd { tcdName = Qualified (Just currentModule) ident, tcdType = TCDAlias (canonicalizeDictionary tcd) }]
185 ds <- typeCheckAll mainModuleName currentModule rest
182 ds <- typeCheckAll mainModuleName currentModule rest
186 return $ d : ds
183 return $ d : ds
187typeCheckAll mainModuleName moduleName (d@(TypeClassDeclaration pn args tys) : rest) = do
184typeCheckAll mainModuleName moduleName (d@(TypeClassDeclaration pn args tys) : rest) = do