           contextType instanceof TempType
       # Typing deferred, use an impricise type var
       type = toConstrained ctx.freshTypeVariable star
-      ctx.addToDeferredNames {name: symbol, type: type}
+      ctx.addToDeferredNames {name: symbol, type: type, expression: atom}
       nameTranslate ctx, atom, symbol, type
     else
       # log "deferring in rhs for #{symbol}", ctx.definitionName()

          if ctx.isInTopScope()
            # TODO: error missing name
          else
            ctx.addToDeferredNames
              name: name
              type: addConstraints canonicalType, allConstraints

      unresolvedNames = newMap()
      for name, binding of values bindings
        if canonicalType = ctx.finalType name
          # log "already resolved", name, group, binding
          for type in binding.types
            # log "unify", (printType type.type), (printType canonicalType)
            unify ctx, type.type, (freshInstance ctx, canonicalType).type
