| 25 |
) r in |
) r in |
| 26 |
(code,ret) |
(code,ret) |
| 27 |
|
|
| 28 |
|
let rec run_disp_basic v f = function |
| 29 |
|
| [(_,r)] -> make_result_basic v r |
| 30 |
|
| (t,r)::rem -> if f t then make_result_basic v r else run_disp_basic v f rem |
| 31 |
|
| _ -> |
| 32 |
|
assert false |
| 33 |
|
|
| 34 |
let dummy_r = [||] |
let dummy_r = [||] |
| 35 |
|
|
| 36 |
let rec run_dispatcher d v = |
let rec run_dispatcher d v = |
| 62 |
run_disp_kind actions (normalize v) |
run_disp_kind actions (normalize v) |
| 63 |
|
|
| 64 |
|
|
|
and run_disp_basic v f = function |
|
|
(* | [(_,r)] -> make_result_basic v r *) |
|
|
| (t,r)::rem -> if f t then make_result_basic v r else run_disp_basic v f rem |
|
|
| _ -> |
|
|
assert false |
|
|
|
|
| 65 |
|
|
| 66 |
and run_disp_prod v v1 v2 = function |
and run_disp_prod v v1 v2 = function |
| 67 |
| Impossible -> assert false |
| Impossible -> assert false |
| 81 |
|
|
| 82 |
and run_disp_record other v fields = function |
and run_disp_record other v fields = function |
| 83 |
| None -> assert false |
| None -> assert false |
| 84 |
| Some (`Label (l,d)) -> |
| Some (RecLabel (l,d)) -> |
| 85 |
let rec aux other = function |
let rec aux other = function |
| 86 |
| (l1,_) :: rem when l1 < l -> aux true rem |
| (l1,_) :: rem when l1 < l -> aux true rem |
| 87 |
| (l1,vl) :: rem when l1 = l -> |
| (l1,vl) :: rem when l1 = l -> |
| 90 |
run_disp_record1 other Absent rem d |
run_disp_record1 other Absent rem d |
| 91 |
in |
in |
| 92 |
aux other fields |
aux other fields |
| 93 |
| Some (`Nolabel (some,none)) -> |
| Some (RecNolabel (some,none)) -> |
| 94 |
let r = if other then some else none in |
let r = if other then some else none in |
| 95 |
match r with |
match r with |
| 96 |
| Some r -> make_result_basic v r |
| Some r -> make_result_basic v r |