@@ -137,8 +137,8 @@ constrain rtv (A.At region expression) expected =
137 , CEqual region (Access field) fieldType expected
137 , CEqual region (Access field) fieldType expected
140− Can.Update expr fields ->
140+ Can.Update name expr fields ->
141− constrainUpdate rtv region expr fields expected
141+ constrainUpdate rtv region name expr fields expected
143 Can.Record fields ->
143 Can.Record fields ->
144 constrainRecord rtv region fields expected
144 constrainRecord rtv region fields expected
@@ -406,20 +406,19 @@ constrainField rtv expr =
406-- CONSTRAIN RECORD UPDATE
406-- CONSTRAIN RECORD UPDATE
409−constrainUpdate :: RTV -> R.Region -> Can.Expr -> Map.Map N.Name Can.Expr -> Expected Type -> IO Constraint
409+constrainUpdate :: RTV -> R.Region -> N.Name -> Can.Expr -> Map.Map N.Name Can.Expr -> Expected Type -> IO Constraint
410−constrainUpdate rtv region expr fields expected =
410+constrainUpdate rtv region name expr fields expected =
411 do sharedVar <- mkFlexVar
411 do sharedVar <- mkFlexVar
412 let sharedType = VarN sharedVar
412 let sharedType = VarN sharedVar
414 oldVars <- traverse (\_ -> mkFlexVar) fields
414 oldVars <- traverse (\_ -> mkFlexVar) fields
415 let oldTypes = Map.map VarN oldVars
415 let oldTypes = Map.map VarN oldVars
416 let oldRecordType = RecordN oldTypes sharedType
416 let oldRecordType = RecordN oldTypes sharedType
417− oldCon <- constrain rtv expr (FromContext region RecordUpdate oldRecordType)
417+ oldCon <- constrain rtv expr (FromContext region (RecordUpdate name fields) oldRecordType)
419 newDict <- traverse (constrainField rtv) fields
419 newDict <- traverse (constrainField rtv) fields
421− let getType (_, t, _) = t
422− let newRecordType = RecordN (Map.map getType newDict) sharedType
421+ let newRecordType = RecordN (Map.map (\(_,t,_) -> t) newDict) sharedType
423 let newCon = CEqual region Record newRecordType expected
422 let newCon = CEqual region Record newRecordType expected
425 let vars = Map.foldr (\(v,_,_) vs -> v:vs) (sharedVar : Map.elems oldVars) newDict
424 let vars = Map.foldr (\(v,_,_) vs -> v:vs) (sharedVar : Map.elems oldVars) newDict