@@ -7,6 +7,7 @@ import qualified Data.UnionFind.IO as UF
7import qualified Data.Map as Map
7import qualified Data.Map as Map
8import qualified Data.Traversable as Traversable
8import qualified Data.Traversable as Traversable
9import qualified Data.Maybe as Maybe
9import qualified Data.Maybe as Maybe
10+import qualified Data.List as List
10import Type.Type
11import Type.Type
11import Type.Unify
12import Type.Unify
12import qualified Type.Environment as Env
13import qualified Type.Environment as Env
@@ -118,8 +119,14 @@ solve constraint =
119 CInstance name term -> do
120 CInstance name term -> do
120 env <- TS.getEnv
121 env <- TS.getEnv
123+ case Map.lookup name env of
124+ Just tipe -> TS.makeInstance tipe
126+ | List.isPrefixOf "Native." name -> liftIO flexibleVar
121− let msg = "Could not find '" ++ name ++ "' when solving type constraints."
128+ error ("Could not find '" ++ name ++ "' when solving type constraints.")
122− freshCopy <- TS.makeInstance (Map.findWithDefault (error msg) name env)
129+
123 t <- TS.flatten term
130 t <- TS.flatten term
124 unify freshCopy t
131 unify freshCopy t