@@ -137,8 +137,8 @@ constrain rtv (A.At region expression) expected =
137137 , CEqual region (Access field) fieldType expected
138138 ]
139139
140− Can.Update expr fields ->
141− constrainUpdate rtv region expr fields expected
140+ Can.Update name expr fields ->
141+ constrainUpdate rtv region name expr fields expected
142142
143143 Can.Record fields ->
144144 constrainRecord rtv region fields expected
@@ -406,20 +406,19 @@ constrainField rtv expr =
406406-- CONSTRAIN RECORD UPDATE
407407
408408
409−constrainUpdate :: RTV -> R.Region -> Can.Expr -> Map.Map N.Name Can.Expr -> Expected Type -> IO Constraint
410−constrainUpdate rtv region expr fields expected =
409+constrainUpdate :: RTV -> R.Region -> N.Name -> Can.Expr -> Map.Map N.Name Can.Expr -> Expected Type -> IO Constraint
410+constrainUpdate rtv region name expr fields expected =
411411 do sharedVar <- mkFlexVar
412412 let sharedType = VarN sharedVar
413413
414414 oldVars <- traverse (\_ -> mkFlexVar) fields
415415 let oldTypes = Map.map VarN oldVars
416416 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)
418418
419419 newDict <- traverse (constrainField rtv) fields
420420
421− let getType (_, t, _) = t
422− let newRecordType = RecordN (Map.map getType newDict) sharedType
421+ let newRecordType = RecordN (Map.map (\(_,t,_) -> t) newDict) sharedType
423422 let newCon = CEqual region Record newRecordType expected
424423
425424 let vars = Map.foldr (\(v,_,_) vs -> v:vs) (sharedVar : Map.elems oldVars) newDict