Jelajahi Sumber

different Void & Dynamic handling.

Nicolas Cannasse 19 tahun lalu
induk
melakukan
904390b77c
4 mengubah file dengan 10 tambahan dan 1 penghapusan
  1. 4 0
      genjs.ml
  2. 3 1
      genneko.ml
  3. 2 0
      std/js/Boot.hx
  4. 1 0
      std/neko/Boot.hx

+ 4 - 0
genjs.ml

@@ -631,6 +631,10 @@ let generate_type ctx = function
 		| None -> ()
 		| Some e -> ctx.inits <- e :: ctx.inits);
 		if not c.cl_extern then generate_class ctx c
+	| TEnumDecl { e_path = ([],"Bool") } ->
+		()
+	| TEnumDecl e when PMap.is_empty e.e_constrs ->
+		()
 	| TEnumDecl e -> generate_enum ctx e
 	| TSignatureDecl _ -> ()
 

+ 3 - 1
genneko.ml

@@ -524,7 +524,7 @@ let gen_type ctx t =
 		else
 			gen_class ctx c
 	| TEnumDecl e ->
-		if e.e_path = ([],"Bool") then
+		if e.e_path = ([],"Bool") || PMap.is_empty e.e_constrs then
 			null (pos e.e_pos)
 		else
 			gen_enum e
@@ -584,6 +584,8 @@ let gen_boot hres =
 
 let gen_name acc t =
 	match t with
+	| TEnumDecl e when PMap.is_empty e.e_constrs || e.e_path = ([],"Bool") ->
+		acc
 	| TEnumDecl e ->
 		let p = pos e.e_pos in
 		let name = fst e.e_path @ [snd e.e_path] in

+ 2 - 0
std/js/Boot.hx

@@ -227,7 +227,9 @@ class Boot {
 				return oldsub.apply(this,[pos,len]);
 			};
 			Int = __new__("Object");
+			Dynamic = __new__("Object");
 			Float = __js__("Number");
+			Bool = __new__("Object");
 			Bool["true"] = true;
 			Bool["false"] = false;
 			__js__("$closure = js.Boot.__closure");

+ 1 - 0
std/neko/Boot.hx

@@ -131,6 +131,7 @@ class Boot {
 			Int = __dollar__new(null);
 			Float = __dollar__new(null);
 			Bool = __dollar__new(null);
+			Dynamic = __dollar__new(null);
 			__dollar__objset(Bool,__dollar__hash("true".__s),true);
 			__dollar__objset(Bool,__dollar__hash("false".__s),false);
 			__dollar__exports.__unserialize = __unserialize;