Преглед на файлове

[display] output string representation of field expression

closes #7147
Simon Krajewski преди 7 години
родител
ревизия
02221e791f
променени са 2 файла, в които са добавени 21 реда и са изтрити 3 реда
  1. 18 2
      src/core/json/genjson.ml
  2. 3 1
      std/haxe/display/JsonModuleTypes.hx

+ 18 - 2
src/core/json/genjson.ml

@@ -467,8 +467,24 @@ and generate_class_field' ctx cfs cf =
 		generate_adt ctx None name args
 	in
 	let expr = match ctx.generation_mode with
-		| GMFull | GMWithoutDoc -> jopt (generate_texpr ctx) cf.cf_expr
-		| GMMinimum -> jnull
+		| GMFull | GMWithoutDoc ->
+			let value = match cf.cf_kind with
+				| Method _ -> None
+				| Var _ ->
+					try
+						begin match Meta.get Meta.Value cf.cf_meta with
+							| (_,[e],_) -> Some e
+							| _ -> None
+						end
+					with Not_found ->
+						None
+			in
+			begin match value with
+				| None -> jnull
+				| Some e -> jobject ["string",jstring (Ast.s_expr e)]
+			end
+		| GMMinimum ->
+			jnull
 	in
 	[
 		"name",jstring cf.cf_name;

+ 3 - 1
std/haxe/display/JsonModuleTypes.hx

@@ -244,7 +244,9 @@ typedef JsonClassField = {
 	var params: JsonTypeParameters;
 	var meta: JsonMetadata;
 	var kind: JsonFieldKind<Dynamic>;
-	var expr: JsonTExpr;
+	var expr: {
+		var string: String;
+	};
 	var pos: JsonPos;
 	var doc: JsonDoc;
 	var overloads: JsonClassFields;