anchor.diff:          desugar_disjunctive_pattern pat wopt b, aq
         in
         let e, aq = desugar_term_aq env e in
  +      let asc_opt, aq0 =
  +        match topt with
  +        | None -> None, []
  +        | Some t -> desugar_ascription env t None |> (fun (t, q) -> Some t, q) in
         let brs, aqs = List.map desugar_branch branches |> List.unzip |> (fun (x, y) -> (List.flatten x, y)) in
  -      mk <| Tm_match(e, brs), join_aqs (aq::aqs)
  +      mk <| Tm_match(e, asc_opt, brs), join_aqs (aq::aq0::aqs)
   
       | Ascribed(e, t, tac_opt) ->
  -      let annot, aq0 =
  -        if is_comp_type env t
  -        then let comp = desugar_comp t.range true env t in
  -             (Inr comp, [])
  -        else let tm, aq = desugar_term_aq env t in
  -             (Inl tm, aq)
  -      in
  -      let tac_opt = BU.map_opt tac_opt (desugar_term env) in
  +      let asc, aq0 = desugar_ascription env t tac_opt in
         let e, aq = desugar_term_aq env e in
  -      mk <| Tm_ascribed(e, (annot, tac_opt), None), aq0@aq
  +      mk <| Tm_ascribed(e, asc, None), aq0@aq
   
       | Record(_, []) ->
         raise_error (Errors.Fatal_UnexpectedEmptyRecord, "Unexpected empty record") top.range
  
positive.code:       let a2 = mk_term (App(a1, handler, Nothing)) r top.level in
        desugar_term_aq env a2
  
      | Match(e, branches) ->
        let desugar_branch (pat, wopt, b) =
          let env, pat = desugar_match_pat env pat in
          let wopt = match wopt with
  
negative.code:     | _ ->
        raise_error (Fatal_UnexpectedTerm, ("Unexpected term: " ^ term_to_string top)) top.range
    end
  
  and desugar_ascription env t tac_opt =
    let annot, aq0 =
      if is_comp_type env t
      then let comp = desugar_comp t.range true env t in
           (Inr comp, [])
      else let tm, aq = desugar_term_aq env t in
           (Inl tm, aq) in
    (annot, BU.map_opt tac_opt (desugar_term env)), aq0
  
  and desugar_args env args =
      args |> List.map (fun (a, imp) -> arg_withimp_e imp (desugar_term env a))
  