Browse Source

preserve enum ctor order when generating xml

Simon Krajewski 12 years ago
parent
commit
1f8828a41d
1 changed files with 10 additions and 1 deletions
  1. 10 1
      genxml.ml

+ 10 - 1
genxml.ml

@@ -142,6 +142,15 @@ let gen_constr e =
 	) in
 	node e.ef_name args t
 
+let gen_ordered_constr e =
+	let rec loop el = match el with
+		| n :: el ->
+			gen_constr (PMap.find n e.e_constrs) :: loop el
+		| [] ->
+			[]
+	in
+	loop e.e_names
+
 let gen_type_params ipos priv path params pos m =
 	let mpriv = (if priv then [("private","1")] else []) in
 	let mpath = (if m.m_path <> path then [("module",snd (gen_path m.m_path false))] else []) in
@@ -185,7 +194,7 @@ let rec gen_type_decl com pos t =
 	| TEnumDecl e ->
 		let doc = gen_doc_opt e.e_doc in
 		let meta = gen_meta e.e_meta in
-		node "enum" (gen_type_params pos e.e_private (tpath t) e.e_types e.e_pos m) (pmap gen_constr e.e_constrs @ doc @ meta)
+		node "enum" (gen_type_params pos e.e_private (tpath t) e.e_types e.e_pos m) (gen_ordered_constr e  @ doc @ meta)
 	| TTypeDecl t ->
 		let doc = gen_doc_opt t.t_doc in
 		let meta = gen_meta t.t_meta in