Skip to content

Commit

Permalink
don't zonk too early lest generic tyvars get lost. Fix #362
Browse files Browse the repository at this point in the history
  • Loading branch information
Ingo60 committed May 17, 2018
1 parent 46932e5 commit d384bdf
Showing 1 changed file with 10 additions and 2 deletions.
12 changes: 10 additions & 2 deletions frege/compiler/Typecheck.fr
Original file line number Diff line number Diff line change
Expand Up @@ -580,9 +580,10 @@ checkName nm = do
checkRho x rho0
sym <- findV sym.name -- refresh, might be updated meanwhile
let newstate = if sym.state != Recursive then Typechecked else Recursive
newsig <- maybe (error "untyped after checkRho") zonkSigma ex.typ
newsig <- maybe (error "untyped after checkRho") pure ex.typ
changeSym sym.{typ = newsig, expr=Just (return ex), state = newstate}
stio newsig

SymV {expr = Just dx, typ = t, state, anno}
| not (isPSigma t), state == Unchecked = do
x <- dx
Expand Down Expand Up @@ -1058,12 +1059,19 @@ tcRho' (x@Mem {ex,member}) ety = do
instRho Mem{ex, member, typ=Nothing} resolveme ety
tcMem pos ex member (tau:taus) ety = do
g <- getST
-- let etytxt =
E.logmsg TRACET pos (text "tcMem"
<+> nicest g ex <+> text member.value <+> PP.sep "," (map (text . flip nice g) (tau:taus))
<+> case ety of
Check t -> text "Check" <+> text (nice t g)
Infer t -> text "Infer" <+> text (nice t g)
)
let mpos = Pos member member
original = if member.value.startsWith "upd$"
|| member.value.startsWith "chg$"
then member.{value <- flip strtail 4}
else member

case instTauSym tau g of
Just (SymT {name, env, nativ, newt})
| Just (SymV {name}) <- env.lookup member.value = do
Expand Down

0 comments on commit d384bdf

Please sign in to comment.