Pārlūkot izejas kodu

fixed pattern evaluation order

Simon Krajewski 13 gadi atpakaļ
vecāks
revīzija
274f088356
1 mainītis faili ar 3 papildinājumiem un 3 dzēšanām
  1. 3 3
      matcher.ml

+ 3 - 3
matcher.ml

@@ -849,8 +849,8 @@ let rec collapse_case el = match el with
 let match_expr ctx e cases def need_val with_type p =
 let match_expr ctx e cases def need_val with_type p =
 	let cases = match cases,def with
 	let cases = match cases,def with
 		| [],None -> error "Empty switch" p
 		| [],None -> error "Empty switch" p
-		| cases,Some def -> ([(EConst(Ident "_")),pos def],None,def) :: List.rev cases
-		| _ -> List.rev cases
+		| cases,Some def -> cases @ [[(EConst(Ident "_")),pos def],None,def]
+		| _ -> cases
 	in
 	in
 	let evals = match fst e with
 	let evals = match fst e with
 		| EArrayDecl el ->
 		| EArrayDecl el ->
@@ -893,7 +893,7 @@ let match_expr ctx e cases def need_val with_type p =
 		subtree_index = Hashtbl.create 0;
 		subtree_index = Hashtbl.create 0;
 		num_subtrees = 0;
 		num_subtrees = 0;
 	} in
 	} in
-	let pl = List.rev_map (fun (el,eg,e) ->
+	let pl = List.map (fun (el,eg,e) ->
 		let ep = collapse_case el in
 		let ep = collapse_case el in
 		let save = save_locals ctx in
 		let save = save_locals ctx in
 		let pl = match fst ep,stl with
 		let pl = match fst ep,stl with