on master help sign in
Fix aliasing bug revealed by tests!

When you had aliases nested one inside of the next, we were throwing away necessary information!

commit501c60701ce49f14eab5e5702895bc6fbd390ae6 authorEvan Czaplicki <info@elm-lang.org> dateMon 2 Mar 2015, 10:21 (12 years ago) parent4b559e0
1 file changed+14−6
src/Type/Environment.hs+14−6
src/Type/Environment.hs+14−6
@@ -190,14 +190,22 @@ instantiatorHelp env aliasVars sourceType =
190190 do args' <- mapM (\(arg,tipe) -> (,) arg <$> go tipe) args
191191 aliasedType' <- instantiatorHelp env (Set.fromList (map fst args)) aliasedType
192192 case aliasedType' of
193− PlaceHolder x ->
194− return (PlaceHolder x)
193+ PlaceHolder _ ->
194+ error "problem instantiating type"
195195
196− VarN _ v ->
197− return (VarN (Just (name,args')) v)
196+ VarN maybeSubAlias v ->
197+ case maybeSubAlias of
198+ Nothing ->
199+ return (VarN (Just (name,args')) v)
200+ Just subAlias ->
201+ return (TermN (Just (name,args')) (Var1 aliasedType'))
198202
199− TermN _ t ->
200− return (TermN (Just (name, args')) t)
203+ TermN maybeSubAlias t ->
204+ case maybeSubAlias of
205+ Nothing ->
206+ return (TermN (Just (name, args')) t)
207+ Just subAlias ->
208+ return (TermN (Just (name,args')) (Var1 aliasedType'))
201209
202210 T.Type name ->
203211 case Map.lookup (V.toString name) (types env) of