Browse Source

[display] send if define is reserved in display/defines request (#12339)

Yuxiao Mao 4 months ago
parent
commit
8d19bc516e
4 changed files with 17 additions and 3 deletions
  1. 2 1
      src/context/display/displayJson.ml
  2. 4 1
      src/core/define.ml
  3. 10 1
      src/prebuild.ml
  4. 1 0
      std/haxe/display/Display.hx

+ 2 - 1
src/context/display/displayJson.ml

@@ -303,7 +303,8 @@ let handler =
 							| UserDefined (Some o) -> o
 						);
 						"deprecated", jopt jstring data.d_deprecated;
-						"links", jarray (List.map jstring data.d_links)
+						"links", jarray (List.map jstring data.d_links);
+						"reserved", jopt jbool data.d_reserved
 					] in
 
 					(jobject fields)

+ 4 - 1
src/core/define.ml

@@ -32,17 +32,19 @@ type define_infos = {
 	d_links : string list;
 	d_deprecated : string option;
 	d_default : string option;
+	d_reserved : bool option;
 }
 
 let infos ?user_defines d =
 	let extract_infos (t, (doc, flags), origin) =
-		let params = ref [] and pfs = ref [] and links = ref [] and deprecated = ref None and default = ref None in
+		let params = ref [] and pfs = ref [] and links = ref [] and deprecated = ref None and default = ref None and reserved = ref None in
 		List.iter (function
 			| HasParam s -> params := s :: !params
 			| Platforms fl -> pfs := fl @ !pfs
 			| Link url -> links := url :: !links
 			| Deprecated s -> deprecated := Some s
 			| DefaultValue s -> default := Some s
+			| Reserved b -> reserved := Some b
 		) flags;
 		(t, {
 			d_doc = doc;
@@ -52,6 +54,7 @@ let infos ?user_defines d =
 			d_links = !links;
 			d_deprecated = !deprecated;
 			d_default = !default;
+			d_reserved = !reserved;
 		})
 	in
 

+ 10 - 1
src/prebuild.ml

@@ -116,6 +116,7 @@ type parsed_define = {
 	d_deprecated_define : string option;
 	d_default : string option;
 	d_signature_neutral : bool option;
+	d_reserved : bool option;
 }
 let parse_define json =
 	let fields = match json with
@@ -133,6 +134,7 @@ let parse_define json =
 		d_deprecated_define = get_optional_field2 "deprecatedDefine" as_string fields;
 		d_default = get_optional_field2 "default" as_string fields;
 		d_signature_neutral = get_optional_field2 "signatureNeutral" as_bool fields;
+		d_reserved = get_optional_field2 "reserved" as_bool fields;
 	}
 
 let parse_meta json =
@@ -236,6 +238,12 @@ let gen_define_info defines =
 					DynArray.add default_values (Printf.sprintf "\t(%S,%S)" define x);
 					[Printf.sprintf "DefaultValue(%s)" quoted]
 			in
+			let reserved = match def.d_reserved with
+				| None ->
+					[]
+				| Some b ->
+					[Printf.sprintf "Reserved(%b)" b]
+			in
 			(match def.d_signature_neutral with
 				| Some true ->
 					DynArray.add sig_neutral (Printf.sprintf "| %S" (convert_define define));
@@ -244,7 +252,7 @@ let gen_define_info defines =
 					| Some s -> DynArray.add sig_neutral (Printf.sprintf "| %S" (convert_define s))
 					end
 				| _ -> ());
-			"\t| " ^ def.d_name ^ " -> \"" ^ define ^ "\",(" ^ (Printf.sprintf "%S" def.d_doc) ^ ",[" ^ (String.concat "; " (platforms_str @ params_str @ links_str @ deprecated @ default)) ^ "])"
+			"\t| " ^ def.d_name ^ " -> \"" ^ define ^ "\",(" ^ (Printf.sprintf "%S" def.d_doc) ^ ",[" ^ (String.concat "; " (platforms_str @ params_str @ links_str @ deprecated @ default @ reserved )) ^ "])"
 	) defines in
 	(
 		String.concat "\n" define_str,
@@ -326,6 +334,7 @@ type define_parameter =
 	| Link of string
 	| Deprecated of string
 	| DefaultValue of string
+	| Reserved of bool
 
 type define_deprecation =
 	| DueTo of string

+ 1 - 0
std/haxe/display/Display.hx

@@ -322,6 +322,7 @@ typedef Define = {
 	var links:Array<String>;
 	var ?origin:String;
 	var ?deprecated:String;
+	var ?reserved:Bool;
 }
 
 typedef Keyword = {