瀏覽代碼

"haxe" define (#8305)

* added "haxe" define

* added "haxe" and "haxe_ver" to reserved flags

* Use s_version

* fix

* add "haxe" to define.json
Aleksandr Kuzmenko 6 年之前
父節點
當前提交
9213adb592
共有 3 個文件被更改,包括 17 次插入7 次删除
  1. 6 1
      src-json/define.json
  2. 4 3
      src/compiler/main.ml
  3. 7 3
      src/compiler/server.ml

+ 6 - 1
src-json/define.json

@@ -209,7 +209,12 @@
 	{
 		"name": "HaxeVer",
 		"define": "haxe_ver",
-		"doc": "The current Haxe version value"
+		"doc": "The current Haxe version value as decimal number. E.g. 4.000 for 4.0.0"
+	},
+	{
+		"name": "Haxe",
+		"define": "haxe",
+		"doc": "The current Haxe version value in SemVer format"
 	},
 	{
 		"name": "HxcppApiLevel",

+ 4 - 3
src/compiler/main.ml

@@ -82,7 +82,7 @@ let error ctx msg p =
 
 let reserved_flags = [
 	"cross";"js";"lua";"neko";"flash";"php";"cpp";"cs";"java";"python";
-	"as3";"swc";"macro";"sys";"static";"utf16"
+	"as3";"swc";"macro";"sys";"static";"utf16";"haxe";"haxe_ver"
 	]
 
 let reserved_flag_namespaces = ["target"]
@@ -462,7 +462,7 @@ and usage_string ?(print_cat=true) arg_spec usage =
 and init ctx =
 	let usage = Printf.sprintf
 		"Haxe Compiler %s - (C)2005-2019 Haxe Foundation\nUsage: haxe%s <target> [options] [hxml files...]\n"
-		s_version (if Sys.os_type = "Win32" then ".exe" else "")
+		(s_version true) (if Sys.os_type = "Win32" then ".exe" else "")
 	in
 	let com = ctx.com in
 	let classes = ref [([],"Std")] in
@@ -483,6 +483,7 @@ try
 	Common.define_value com Define.HaxeVer (Printf.sprintf "%.3f" (float_of_int Globals.version /. 1000.));
 	Common.raw_define com "haxe3";
 	Common.raw_define com "haxe4";
+	Common.define_value com Define.Haxe (s_version false);
 	Common.define_value com Define.Dce "std";
 	com.warning <- (fun msg p -> message ctx (CMWarning(msg,p)));
 	com.error <- error ctx;
@@ -585,7 +586,7 @@ try
 			com.debug <- true;
 		),"","add debug information to the compiled code");
 		("Miscellaneous",["--version"],["-version"],Arg.Unit (fun() ->
-			message ctx (CMInfo(s_version,null_pos));
+			message ctx (CMInfo(s_version true,null_pos));
 			did_something := true;
 		),"","print version and exit");
 		("Miscellaneous", ["-h";"--help"], ["-help"], Arg.Unit (fun () ->

+ 7 - 3
src/compiler/server.ml

@@ -28,9 +28,13 @@ type context = {
 	mutable has_error : bool;
 }
 
-let s_version =
+let s_version with_build =
 	let pre = Option.map_default (fun pre -> "-" ^ pre) "" version_pre in
-	let build = Option.map_default (fun (_,build) -> "+" ^ build) "" Version.version_extra in
+	let build =
+		match with_build, Version.version_extra with
+			| true, Some (_,build) -> "+" ^ build
+			| _, _ -> ""
+	in
 	Printf.sprintf "%d.%d.%d%s%s" version_major version_minor version_revision pre build
 
 let check_display_flush ctx f_otherwise = match ctx.com.json_out with
@@ -83,7 +87,7 @@ let default_flush ctx =
 
 let create_context params =
 	let ctx = {
-		com = Common.create version s_version params;
+		com = Common.create version (s_version true) params;
 		flush = (fun()->());
 		setup = (fun()->());
 		messages = [];