Browse Source

add enum field to TEnumParameter

Simon Krajewski 12 years ago
parent
commit
8dbad24ce7
12 changed files with 25 additions and 25 deletions
  1. 1 1
      genas3.ml
  2. 1 1
      gencommon.ml
  3. 5 5
      gencpp.ml
  4. 1 1
      genjs.ml
  5. 1 1
      genneko.ml
  6. 1 1
      genphp.ml
  7. 1 1
      genswf8.ml
  8. 1 1
      genswf9.ml
  9. 1 1
      interp.ml
  10. 1 1
      matcher.ml
  11. 2 2
      optimizer.ml
  12. 9 9
      type.ml

+ 1 - 1
genas3.ml

@@ -580,7 +580,7 @@ and gen_expr ctx e =
 		gen_expr ctx e1;
 		spr ctx ")";
 		gen_field_access ctx e1.etype (field_name s)
-	| TEnumParameter (e,i) ->
+	| TEnumParameter (e,_,i) ->
 		gen_value ctx e;
 		print ctx ".params[%i]" i;
 	| TField (e,s) ->

+ 1 - 1
gencommon.ml

@@ -8584,7 +8584,7 @@ struct
     let traverse gen t opt_get_native_enum_tag =
       let rec run e =
         match e.eexpr with
-          | TEnumParameter(f, i) ->
+          | TEnumParameter(f, _,i) ->
             let f = run f in
             (* check if en was converted to class *)
             (* if it was, switch on tag field and change cond type *)

+ 5 - 5
gencpp.ml

@@ -758,7 +758,7 @@ let rec iter_retval f retval e =
 		f false e2;
 	| TThrow e
 	| TField (e,_)
-	| TEnumParameter (e,_)
+	| TEnumParameter (e,_,_)
 	| TUnop (_,_,e) ->
 		f true e
 	| TParenthesis e | TMeta(_,e) ->
@@ -943,7 +943,7 @@ let rec is_dynamic_in_cpp ctx expr =
 	else begin
 		let result = (
 		match expr.eexpr with
- 		| TEnumParameter( obj, index ) ->
+ 		| TEnumParameter( obj, _, index ) ->
 			true (* TODO? *)
 		| TField( obj, field ) ->
 			let name = field_name field in
@@ -1270,7 +1270,7 @@ and find_local_functions_and_return_blocks_ctx ctx retval expression =
 			let func_name = next_anon_function_name ctx in
 			output "\n";
 			define_local_function_ctx ctx func_name func
-		| TField (obj,_) | TEnumParameter (obj,_) when (is_null obj) -> ( )
+		| TField (obj,_) | TEnumParameter (obj,_,_) when (is_null obj) -> ( )
 		| TArray (obj,_) when (is_null obj) -> ( )
 		| TIf ( _ , _ , _ ) when retval -> (* ? operator style *)
 		   iter_retval find_local_functions_and_return_blocks retval expression
@@ -1736,8 +1736,8 @@ and gen_expression ctx retval expression =
 		end
 	(* Get precidence matching haxe ? *)
 	| TBinop (op,expr1,expr2) -> gen_bin_op op expr1 expr2
-	| TField (expr,_) | TEnumParameter (expr,_) when (is_null expr) -> output "Dynamic()"
-	| TEnumParameter (expr,i) ->
+	| TField (expr,_) | TEnumParameter (expr,_,_) when (is_null expr) -> output "Dynamic()"
+	| TEnumParameter (expr,_,i) ->
 		let enum = match follow expr.etype with TEnum(enum,_) -> enum | _ -> assert false in
 		output (  "(::" ^ (join_class_path_remap enum.e_path "::") ^ "(");
 		gen_expression ctx true expr;

+ 1 - 1
genjs.ml

@@ -449,7 +449,7 @@ and gen_expr ctx e =
 			print ctx "($_=";
 			gen_value ctx x;
 			print ctx ",$bind($_,$_%s))" (field f.cf_name))
-	| TEnumParameter (x,i) ->
+	| TEnumParameter (x,_,i) ->
 		gen_value ctx x;
 		print ctx "[%i]" (i + 2)
 	| TField (x,f) ->

+ 1 - 1
genneko.ml

@@ -248,7 +248,7 @@ and gen_expr ctx e =
 					call p (ident p ("@closure" ^ string_of_int n)) [tmp;ident p "@fun"]
 			] , p
 		| _ -> assert false)
-	| TEnumParameter (e,i) ->
+	| TEnumParameter (e,_,i) ->
 		EArray (field p (gen_expr ctx e) "args",int p i),p
 	| TField (e,f) ->
 		field p (gen_expr ctx e) (field_name f)

+ 1 - 1
genphp.ml

@@ -1226,7 +1226,7 @@ and gen_expr ctx e =
 			print ctx " %s " (Ast.s_binop op);
 			gen_value_op ctx e2;
 		));
-	| TEnumParameter(e1,i) ->
+	| TEnumParameter(e1,_,i) ->
 		gen_value ctx e1;
 		print ctx "->params[%d]" i;
 	| TField (e1,s) ->

+ 1 - 1
genswf8.ml

@@ -588,7 +588,7 @@ let rec gen_access ?(read_write=false) ctx forcall e =
 		if read_write then assert false;
 		push ctx [VStr (f,is_protected ctx e.etype f)];
 		VarClosure
-	| TEnumParameter(e,i) ->
+	| TEnumParameter(e,_,i) ->
 		gen_expr ctx true e;
 		push ctx [VInt i];
 		VarObj

+ 1 - 1
genswf9.ml

@@ -862,7 +862,7 @@ let rec gen_access ctx e (forset : 'a) : 'a access =
 		let id, _, _ = property ctx f e1.etype in
 		write ctx HThis;
 		VSuper id
-	| TEnumParameter (e1,i) ->
+	| TEnumParameter (e1,_,i) ->
 		gen_expr ctx true e1;
 		write ctx (HGetProp (ident "params"));
 		write ctx (HSmallInt i);

+ 1 - 1
interp.ml

@@ -4481,7 +4481,7 @@ let rec make_ast e =
 	| TLocal v -> EConst (mk_ident v.v_name)
 	| TArray (e1,e2) -> EArray (make_ast e1,make_ast e2)
 	| TBinop (op,e1,e2) -> EBinop (op, make_ast e1, make_ast e2)
-	| TEnumParameter (e,i) -> assert false
+	| TEnumParameter (e,_,i) -> assert false
 	| TField (e,f) -> EField (make_ast e, Type.field_name f)
 	| TTypeExpr t -> fst (mk_path (full_type_path t) e.epos)
 	| TParenthesis e -> EParenthesis (make_ast e)

+ 1 - 1
matcher.ml

@@ -891,7 +891,7 @@ let rec convert_st ctx st = match st.st_def with
 		mk (TField(e,fa)) st.st_type st.st_pos
 	| SArray (sts,i) -> mk (TArray(convert_st ctx sts,mk_const ctx st.st_pos (TInt (Int32.of_int i)))) st.st_type st.st_pos
 	| STuple (st,_,_) -> convert_st ctx st
-	| SEnum(sts,ef,i) -> mk (TEnumParameter(convert_st ctx sts, i)) st.st_type st.st_pos
+	| SEnum(sts,ef,i) -> mk (TEnumParameter(convert_st ctx sts, ef, i)) st.st_type st.st_pos
 
 let convert_con ctx con = match con.c_def with
 	| CConst c -> mk_const ctx con.c_pos c

+ 2 - 2
optimizer.ml

@@ -717,8 +717,8 @@ let sanitize_expr com e =
 		{ e with eexpr = TFunction f }
 	| TCall (e2,args) ->
 		if need_parent e2 then { e with eexpr = TCall(parent e2,args) } else e
-	| TEnumParameter (e2,i) ->
-		if need_parent e2 then { e with eexpr = TEnumParameter(parent e2,i) } else e
+	| TEnumParameter (e2,ef,i) ->
+		if need_parent e2 then { e with eexpr = TEnumParameter(parent e2,ef,i) } else e
 	| TField (e2,f) ->
 		if need_parent e2 then { e with eexpr = TField(parent e2,f) } else e
 	| TArray (e1,e2) ->

+ 9 - 9
type.ml

@@ -128,7 +128,7 @@ and texpr_expr =
 	| TThrow of texpr
 	| TCast of texpr * module_type option
 	| TMeta of metadata_entry * texpr
-	| TEnumParameter of texpr * int
+	| TEnumParameter of texpr * tenum_field * int
 
 and tfield_access =
 	| FInstance of tclass * tclass_field
@@ -1309,7 +1309,7 @@ let iter f e =
 		f e2;
 	| TThrow e
 	| TField (e,_)
-	| TEnumParameter (e,_)
+	| TEnumParameter (e,_,_)
 	| TParenthesis e
 	| TCast (e,_)
 	| TUnop (_,_,e)
@@ -1378,8 +1378,8 @@ let map_expr f e =
 		{ e with eexpr = TWhile (f e1,f e2,flag) }
 	| TThrow e1 ->
 		{ e with eexpr = TThrow (f e1) }
-	| TEnumParameter (e1,i) ->
-		 { e with eexpr = TEnumParameter(f e1,i) }
+	| TEnumParameter (e1,ef,i) ->
+		 { e with eexpr = TEnumParameter(f e1,ef,i) }
 	| TField (e1,v) ->
 		{ e with eexpr = TField (f e1,v) }
 	| TParenthesis e1 ->
@@ -1442,8 +1442,8 @@ let map_expr_type f ft fv e =
 		{ e with eexpr = TWhile (f e1,f e2,flag); etype = ft e.etype }
 	| TThrow e1 ->
 		{ e with eexpr = TThrow (f e1); etype = ft e.etype }
-	| TEnumParameter (e1,i) ->
-		{ e with eexpr = TEnumParameter(f e1,i); etype = ft e.etype }
+	| TEnumParameter (e1,ef,i) ->
+		{ e with eexpr = TEnumParameter(f e1,ef,i); etype = ft e.etype }
 	| TField (e1,v) ->
 		{ e with eexpr = TField (f e1,v); etype = ft e.etype }
 	| TParenthesis e1 ->
@@ -1501,7 +1501,7 @@ let s_expr_kind e =
 	| TLocal _ -> "Local"
 	| TArray (_,_) -> "Array"
 	| TBinop (_,_,_) -> "Binop"
-	| TEnumParameter (_,_) -> "EnumParameter"
+	| TEnumParameter (_,_,_) -> "EnumParameter"
 	| TField (_,_) -> "Field"
 	| TTypeExpr _ -> "TypeExpr"
 	| TParenthesis _ -> "Parenthesis"
@@ -1549,7 +1549,7 @@ let rec s_expr s_type e =
 		sprintf "%s[%s]" (loop e1) (loop e2)
 	| TBinop (op,e1,e2) ->
 		sprintf "(%s %s %s)" (loop e1) (s_binop op) (loop e2)
-	| TEnumParameter (e1,i) ->
+	| TEnumParameter (e1,_,i) ->
 		sprintf "%s[%i]" (loop e1) i
 	| TField (e,f) ->
 		let fstr = (match f with
@@ -1638,7 +1638,7 @@ let rec s_expr_pretty tabs s_type e =
 	| TLocal v -> v.v_name
 	| TArray (e1,e2) -> sprintf "%s[%s]" (loop e1) (loop e2)
 	| TBinop (op,e1,e2) -> sprintf "%s %s %s" (loop e1) (s_binop op) (loop e2)
-	| TEnumParameter (e1,i) -> sprintf "%s[%i]" (loop e1) i
+	| TEnumParameter (e1,_,i) -> sprintf "%s[%i]" (loop e1) i
 	| TField (e1,s) -> sprintf "%s.%s" (loop e1) (field_name s)
 	| TTypeExpr mt -> (s_type_path (t_path mt))
 	| TParenthesis e1 -> sprintf "(%s)" (loop e1)