2
0
Эх сурвалжийг харах

[json] add `isInline` to vars and print their expressions if exists

Simon Krajewski 7 жил өмнө
parent
commit
f45607c94b

+ 9 - 4
src/core/json/genjson.ml

@@ -240,10 +240,14 @@ and generate_type_parameter ctx (s,t) =
 (* texpr *)
 (* texpr *)
 
 
 and generate_tvar ctx v =
 and generate_tvar ctx v =
-	let generate_extra (params,eo) = jobject [
-		"params",jlist (generate_type_parameter ctx) params;
-		"expr",jopt (generate_texpr ctx) eo;
-	] in
+	let generate_extra (params,eo) = jobject (
+		("params",jlist (generate_type_parameter ctx) params) ::
+		(match eo with
+		| None -> []
+		| Some e ->	["expr",jobject [
+			("string",jstring (s_expr_pretty false "" false (s_type (print_context())) e))
+		]]);
+	) in
 	let fields = [
 	let fields = [
 		"id",jint v.v_id;
 		"id",jint v.v_id;
 		"name",jstring v.v_name;
 		"name",jstring v.v_name;
@@ -252,6 +256,7 @@ and generate_tvar ctx v =
 		"extra",jopt generate_extra v.v_extra;
 		"extra",jopt generate_extra v.v_extra;
 		"meta",generate_metadata ctx v.v_meta;
 		"meta",generate_metadata ctx v.v_meta;
 		"pos",generate_pos ctx v.v_pos;
 		"pos",generate_pos ctx v.v_pos;
+		"isInline",jbool (match v.v_extra with Some (_,Some _) -> true | _ -> false);
 	] in
 	] in
 	let fields = try
 	let fields = try
 		let origin = TVarOrigin.decode_from_meta v.v_meta in
 		let origin = TVarOrigin.decode_from_meta v.v_meta in