Browse Source

:real -> :realPath + fixed issue #959

Nicolas Cannasse 13 years ago
parent
commit
e3f0700e60
5 changed files with 7 additions and 8 deletions
  1. 2 2
      codegen.ml
  2. 1 1
      common.ml
  3. 1 1
      genswf9.ml
  4. 2 3
      genxml.ml
  5. 1 1
      main.ml

+ 2 - 2
codegen.ml

@@ -539,7 +539,7 @@ let on_generate ctx t =
 		List.iter (fun m ->
 			match m with
 			| ":native",[Ast.EConst (Ast.String name),p],mp ->
-				c.cl_meta <- (":real",[Ast.EConst (Ast.String (s_type_path c.cl_path)),p],mp) :: c.cl_meta;
+				c.cl_meta <- (":realPath",[Ast.EConst (Ast.String (s_type_path c.cl_path)),p],mp) :: c.cl_meta;
 				c.cl_path <- parse_path name;
 			| _ -> ()
 		) c.cl_meta;
@@ -579,7 +579,7 @@ let on_generate ctx t =
 		List.iter (fun m ->
 			match m with
 			| ":native",[Ast.EConst (Ast.String name),p],mp ->
-				e.e_meta <- (":real",[Ast.EConst (Ast.String (s_type_path e.e_path)),p],mp) :: e.e_meta;
+				e.e_meta <- (":realPath",[Ast.EConst (Ast.String (s_type_path e.e_path)),p],mp) :: e.e_meta;
 				e.e_path <- parse_path name;
 			| _ -> ()
 		) e.e_meta;

+ 1 - 1
common.ml

@@ -241,7 +241,7 @@ let rec has_feature com f =
 		| meth :: cl :: pack ->
 			let r = (try
 				let path = List.rev pack, cl in
-				(match List.find (fun t -> t_path t = path) com.types with
+				(match List.find (fun t -> t_path t = path && not (has_meta ":realPath" (t_infos t).mt_meta)) com.types with
 				| t when meth = "*" -> (not com.dead_code_elimination) || has_meta ":?used" (t_infos t).mt_meta
 				| TClassDecl c -> PMap.exists meth c.cl_statics || PMap.exists meth c.cl_fields
 				| _ -> false)

+ 1 - 1
genswf9.ml

@@ -2262,7 +2262,7 @@ let generate_type ctx t =
 	match t with
 	| TClassDecl c ->
 		if c.cl_path = (["flash";"_Boot"],"RealBoot") then c.cl_path <- ctx.boot;
-		if c.cl_extern && (c.cl_path <> ([],"Dynamic") || has_meta ":real" c.cl_meta) then
+		if c.cl_extern && (c.cl_path <> ([],"Dynamic") || has_meta ":realPath" c.cl_meta) then
 			None
 		else
 			let hlc = generate_class ctx c in

+ 2 - 3
genxml.ml

@@ -54,7 +54,7 @@ let gen_arg_name (name,opt,_) =
 let cpath c =
 	let rec loop = function
 		| [] -> c.cl_path
-		| (":real",[(Ast.EConst (Ast.String s),_)],_) :: _ -> parse_path s
+		| (":realPath",[(Ast.EConst (Ast.String s),_)],_) :: _ -> parse_path s
 		| _ :: l -> loop l
 	in
 	loop c.cl_meta
@@ -82,8 +82,7 @@ let rec sexpr (e,_) =
 let gen_meta meta = match meta with
 	| [] -> []
 	| _ ->
-		let ignore = [":?used"; ":real"] in
-		let meta = List.filter (fun (m,_,_) -> not (List.mem m ignore)) meta in
+		let meta = List.filter (fun (m,_,_) -> match m with ":?used" | ":realPath" -> false | _ -> true) meta in
 		let nodes = List.map (fun (m,el,_) ->
 			node "m" ["n",m] (List.map (fun e -> node "e" [] [gen_string (sexpr e)]) el)
 		) meta in

+ 1 - 1
main.ml

@@ -534,7 +534,7 @@ and wait_loop boot_com host port =
 						| TEnumDecl e ->
 							let rec loop acc = function
 								| [] -> ()
-								| (":real",[Ast.EConst (Ast.String path),_],_) :: l ->
+								| (":realPath",[Ast.EConst (Ast.String path),_],_) :: l ->
 									e.e_path <- Ast.parse_path path;
 									e.e_meta <- (List.rev acc) @ l;
 								| x :: l -> loop (x::acc) l