Selaa lähdekoodia

[xml] add Classdef.isFinal (closes #9276)

Jens Fischer 5 vuotta sitten
vanhempi
commit
3d5cc4c34b

+ 2 - 1
src/codegen/genxml.ml

@@ -236,7 +236,8 @@ let rec gen_type_decl com pos t =
 		let meta = gen_meta c.cl_meta in
 		let ext = (if c.cl_extern then [("extern","1")] else []) in
 		let interf = (if c.cl_interface then [("interface","1")] else []) in
-		node "class" (gen_type_params pos c.cl_private (tpath t) c.cl_params c.cl_pos m @ ext @ interf) (tree @ stats @ fields @ constr @ doc @ meta)
+		let final = (if c.cl_final then [("final","1")] else []) in
+		node "class" (gen_type_params pos c.cl_private (tpath t) c.cl_params c.cl_pos m @ ext @ interf @ final) (tree @ stats @ fields @ constr @ doc @ meta)
 	| TEnumDecl e ->
 		let doc = gen_doc_opt e.e_doc in
 		let meta = gen_meta e.e_meta in

+ 1 - 0
src/core/json/genjson.ml

@@ -604,6 +604,7 @@ let generate_class ctx c =
 		"init",jopt (generate_texpr ctx) c.cl_init;
 		"overrides",jlist (classfield_ref ctx) c.cl_overrides;
 		"isExtern",jbool c.cl_extern;
+		"isFinal",jbool c.cl_final;
 	]
 
 let generate_enum ctx e =

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

@@ -299,6 +299,7 @@ typedef JsonClass = {
 	var kind:JsonClassKind<Dynamic>;
 	var isInterface:Bool;
 	var isExtern:Bool;
+	var isFinal:Bool;
 	var superClass:Null<JsonTypePathWithParams>;
 	var interfaces:Array<JsonTypePathWithParams>;
 	var fields:JsonClassFields;

+ 5 - 0
std/haxe/rtti/CType.hx

@@ -234,6 +234,11 @@ typedef Classdef = TypeInfos & {
 	**/
 	var isExtern:Bool;
 
+	/**
+		Whether or not the class is `final`.
+	**/
+	var isFinal:Bool;
+
 	/**
 		Whether or not the class is actually an [interface](https://haxe.org/manual/types-interfaces.html).
 	**/

+ 1 - 0
std/haxe/rtti/XmlParser.hx

@@ -396,6 +396,7 @@ class XmlParser {
 			doc: doc,
 			isPrivate: x.x.exists("private"),
 			isExtern: x.x.exists("extern"),
+			isFinal: x.x.exists("final"),
 			isInterface: x.x.exists("interface"),
 			params: mkTypeParams(x.att.params),
 			superClass: csuper,