Browse Source

signature => typedef

Nicolas Cannasse 19 years ago
parent
commit
b0a341ca81

+ 1 - 1
ast.ml

@@ -211,7 +211,7 @@ type enum_constructor = string * documentation * (string * bool * type_path) lis
 type type_def =
 	| EClass of string * documentation * type_param list * type_param_flag list * (class_field * pos) list
 	| EEnum of string * documentation * type_param list * enum_param list * enum_constructor list
-	| ESignature of string * documentation * type_param list * enum_param list * type_path
+	| ETypedef of string * documentation * type_param list * enum_param list * type_path
 	| EImport of string list * string * string option
 
 type type_decl = type_def * pos

+ 1 - 0
doc/CHANGES.txt

@@ -9,6 +9,7 @@
 	override is not mandatory by default (need --override)
 	added neko just-in-time
 	fixed bugs in haxe.Serializer and haxe.Unserializer (enum format change)
+	changed "signature" by "typedef" (more comprehensible)
 
 2006-06-23: 1.03
 	haxedoc executable now part of the distribution

+ 5 - 5
genjs.ml

@@ -201,7 +201,7 @@ and gen_expr ctx e =
 		| _ ->
 			gen_value ctx x;
 			spr ctx (field s))
-	| TType t ->
+	| TTypeExpr t ->
 		spr ctx (s_path (t_path t))
 	| TParenthesis e ->
 		spr ctx "(";
@@ -326,7 +326,7 @@ and gen_expr ctx e =
 			| TInst (c,_) -> Some (TClassDecl c)
 			| TFun _
 			| TLazy _
-			| TSign _
+			| TType _
 			| TAnon _ ->
 				assert false
 			| TMono _
@@ -347,7 +347,7 @@ and gen_expr ctx e =
 				spr ctx "}"
 			| Some t ->
 				print ctx "if( js.Boot.__instanceof($e%d," id;
-				gen_value ctx (mk (TType t) (mk_mono()) e.epos);
+				gen_value ctx (mk (TTypeExpr t) (mk_mono()) e.epos);
 				spr ctx ") ) {";
 				let bend = open_block ctx in
 				newline ctx;
@@ -460,7 +460,7 @@ and gen_value ctx e =
 	| TArray _
 	| TBinop _
 	| TField _
-	| TType _
+	| TTypeExpr _
 	| TParenthesis _
 	| TObjectDecl _
 	| TArrayDecl _
@@ -642,7 +642,7 @@ let generate_type ctx = function
 	| TEnumDecl e when PMap.is_empty e.e_constrs ->
 		()
 	| TEnumDecl e -> generate_enum ctx e
-	| TSignatureDecl _ -> ()
+	| TTypeDecl _ -> ()
 
 let generate file types hres =
 	let ctx = {

+ 7 - 7
genneko.ml

@@ -243,7 +243,7 @@ and gen_expr ctx e =
 		gen_binop ctx p op e1 e2
 	| TField (e2,f) ->
 		gen_closure p e.etype (gen_expr ctx e2) f
-	| TType t ->
+	| TTypeExpr t ->
 		gen_type_path p (t_path t)
 	| TParenthesis e ->
 		(EParenthesis (gen_expr ctx e),p)
@@ -413,7 +413,7 @@ let gen_method ctx p c acc =
 		(c.cf_name, null p) :: acc
 	| Some e ->
 		match e.eexpr with
-		| TCall ({ eexpr = TField ({ eexpr = TType (TClassDecl { cl_path = (["neko"],"Lib") }) }, "load")},[{ eexpr = TConst (TString m) };{ eexpr = TConst (TString f) };{ eexpr = TConst (TInt n) }]) ->
+		| TCall ({ eexpr = TField ({ eexpr = TTypeExpr (TClassDecl { cl_path = (["neko"],"Lib") }) }, "load")},[{ eexpr = TConst (TString m) };{ eexpr = TConst (TString f) };{ eexpr = TConst (TInt n) }]) ->
 			(c.cf_name, call (pos e.epos) (EField (builtin p "loader","loadprim"),p) [(EBinop ("+",(EBinop ("+",str p m,str p "@"),p),str p f),p); (EConst (Int (Int32.to_int n)),p)]) :: acc
 		| TFunction _ -> ((if c.cf_name = "new" then "__construct__" else c.cf_name), gen_expr ctx e) :: acc
 		| _ -> (c.cf_name, null p) :: acc
@@ -528,12 +528,12 @@ let gen_type ctx t =
 			null (pos e.e_pos)
 		else
 			gen_enum e
-	| TSignatureDecl s ->
-		null (pos s.s_pos)
+	| TTypeDecl t ->
+		null (pos t.t_pos)
 
 let gen_static_vars ctx t =
 	match t with
-	| TEnumDecl _ | TSignatureDecl _ -> []
+	| TEnumDecl _ | TTypeDecl _ -> []
 	| TClassDecl c ->
 		if c.cl_extern then
 			[]
@@ -559,7 +559,7 @@ let gen_package h t =
 		| x :: l ->
 			let path = acc @ [x] in
 			if not (Hashtbl.mem h path) then begin
-				let p = pos (match t with TClassDecl c -> c.cl_pos | TEnumDecl e -> e.e_pos | TSignatureDecl s -> s.s_pos) in
+				let p = pos (match t with TClassDecl c -> c.cl_pos | TEnumDecl e -> e.e_pos | TTypeDecl t -> t.t_pos) in
 				let e = (EBinop ("=",gen_type_path p (acc,x),call p (builtin p "new") [null p]),p) in
 				Hashtbl.add h path ();
 				(match acc with
@@ -602,7 +602,7 @@ let gen_name acc t =
 			(EBinop ("=",field p (gen_type_path p c.cl_path) "__name__",arr),p) ::
 			(EBinop ("=",interf, call p (field p (ident p "Array") "new1") [interf; int p (List.length c.cl_implements)]),p) ::
 			acc
-	| TSignatureDecl _ ->
+	| TTypeDecl _ ->
 		acc
 
 let generate file types hres =

+ 9 - 9
genswf8.ml

@@ -201,9 +201,9 @@ let rec is_protected ctx t check_mt =
 		| Some t -> is_protected ctx t check_mt)
 	| TLazy f ->
 		is_protected ctx ((!f)()) check_mt
-	| TSign (s,_) ->
-		(match s.s_static with
-		| None -> is_protected ctx s.s_type check_mt
+	| TType (t,_) ->
+		(match t.t_static with
+		| None -> is_protected ctx t.t_type check_mt
 		| Some c -> is_protected_name c.cl_path c.cl_extern)
 	| _ -> false
 
@@ -529,11 +529,11 @@ let rec gen_access ctx forcall e =
 		(match follow e.etype with
 		| TFun _ -> VarClosure
 		| _ -> VarObj)
-	| TType t ->
+	| TTypeExpr t ->
 		(match t with
 		| TClassDecl c -> gen_path ctx c.cl_path c.cl_extern
 		| TEnumDecl e -> gen_path ctx e.e_path false
-		| TSignatureDecl _ -> assert false)
+		| TTypeDecl _ -> assert false)
 	| _ ->
 		if not forcall then error e.epos;
 		gen_expr ctx true e;
@@ -553,7 +553,7 @@ and gen_try_catch ctx retval e catchs =
 			| TInst (c,_) -> Some (TClassDecl c)
 			| TFun _
 			| TLazy _
-			| TSign _
+			| TType _
 			| TAnon _ ->
 				assert false
 			| TMono _
@@ -565,7 +565,7 @@ and gen_try_catch ctx retval e catchs =
 			end_throw := false;
 			(fun() -> ())
 		| Some t ->
-			getvar ctx (gen_access ctx false (mk (TType t) (mk_mono()) e.epos));
+			getvar ctx (gen_access ctx false (mk (TTypeExpr t) (mk_mono()) e.epos));
 			push ctx [VReg 0; VInt 2; VStr ("@instanceof",false)];
 			call ctx VarStr 2;
 			write ctx ANot;
@@ -839,7 +839,7 @@ and gen_expr_2 ctx retval e =
 	| TField _
 	| TArray _
 	| TLocal _
-	| TType _
+	| TTypeExpr _
 	| TEnumField _ ->
 		getvar ctx (gen_access ctx false e)
 	| TConst c ->
@@ -1254,7 +1254,7 @@ let gen_type_def ctx t =
 		setvar ctx acc;
 		init_name ctx e.e_path true;
 		PMap.iter (fun _ f -> gen_enum_field ctx e f) e.e_constrs
-	| TSignatureDecl _ ->
+	| TTypeDecl _ ->
 		()
 
 let gen_boot ctx hres =

+ 5 - 5
genxml.ml

@@ -53,7 +53,7 @@ let rec gen_type t =
 	| TMono m -> (match !m with None -> tag "unknown" | Some t -> gen_type t)
 	| TEnum (e,params) -> node "e" [gen_path e.e_path e.e_private] (List.map gen_type params)
 	| TInst (c,params) -> node "c" [gen_path c.cl_path c.cl_private] (List.map gen_type params)
-	| TSign (s,params) -> node "s" [gen_path s.s_path s.s_private] (List.map gen_type params)
+	| TType (t,params) -> node "t" [gen_path t.t_path t.t_private] (List.map gen_type params)
 	| TFun (args,r) -> node "f" ["a",String.concat ":" (List.map gen_arg_name args)] (List.map gen_type (List.map (fun (_,_,t) -> t) args @ [r]))
 	| TAnon a -> node "a" [] (pmap (fun f -> node f.cf_name [] [gen_type f.cf_type]) a.a_fields)
 	| TDynamic t2 -> node "d" [] (if t == t2 then [] else [gen_type t2])
@@ -91,10 +91,10 @@ let gen_type ctx t =
 	| TEnumDecl e ->
 		let doc = gen_doc_opt e.e_doc in
 		node "enum" (gen_type_params e.e_private e.e_path e.e_types e.e_pos m) (pmap gen_constr e.e_constrs @ doc)
-	| TSignatureDecl s ->
-		let doc = gen_doc_opt s.s_doc in
-		let t = gen_type s.s_type in
-		node "signature" (gen_type_params s.s_private s.s_path s.s_types s.s_pos m) (t :: doc)
+	| TTypeDecl t ->
+		let doc = gen_doc_opt t.t_doc in
+		let tt = gen_type t.t_type in
+		node "typedef" (gen_type_params t.t_private t.t_path t.t_types t.t_pos m) (tt :: doc)
 
 let att_str att =
 	String.concat "" (List.map (fun (a,v) -> Printf.sprintf " %s=\"%s\"" a v) att)

+ 1 - 7
parser.ml

@@ -150,13 +150,7 @@ and parse_type_decl s =
 		match s with parser
 		| [< n , p1 = parse_enum_params; doc = get_doc; '(Const (Type name),_); tl = parse_type_params; '(BrOpen,_); l = plist parse_enum; '(BrClose,p2) >] -> (EEnum (name,doc,tl,List.map snd c @ n,l), punion p1 p2)
 		| [< n , p1 = parse_class_params; doc = get_doc; '(Const (Type name),_); tl = parse_type_params; hl = psep Comma parse_class_herit; '(BrOpen,_); fl = plist parse_class_field; '(BrClose,p2) >] -> (EClass (name,doc,tl,List.map fst c @ n @ hl,fl), punion p1 p2)
-		| [< '(Const (Ident "signature"),p1); doc = get_doc; '(Const (Type name),p2); tl = parse_type_params; s >] ->
-			let t = (match s with parser
-				| [< '(Binop OpAssign,_); t = parse_type_path >] -> t
-				| [< t = parse_type_path >] -> t
-				| [< >] -> serror()
-			) in
-			(ESignature (name,doc,tl,List.map snd c,t), punion p1 p2)
+		| [< '(Const (Ident "typedef"),p1); doc = get_doc; '(Const (Type name),p2); tl = parse_type_params; '(Binop OpAssign,_); t = parse_type_path >] -> (ETypedef (name,doc,tl,List.map snd c,t), punion p1 p2)
 
 and parse_package s = psep Dot ident s
 

+ 1 - 1
std/Reflect.hx

@@ -40,7 +40,7 @@ enum BasicType {
 /**
 	A class contains meta data about the class instance and an access to the prototype.
 **/
-signature Class {
+typedef Class = {
 
 	/**
 		The complete class name

+ 1 - 1
std/StdTypes.hx

@@ -39,7 +39,7 @@ enum Bool {
 enum Dynamic<T> {
 }
 
-signature Iterator<T> {
+typedef Iterator<T> = {
 	function hasNext() : Bool;
 	function next() : T;
 }

+ 1 - 1
std/flash/Color.hx

@@ -1,7 +1,7 @@
 package flash;
 
 #if flash_strict
-signature ColorTransform {
+typedef ColorTransform = {
 	var ra : Float;
 	var rb : Float;
 	var ga : Float;

+ 1 - 1
std/flash/Key.hx

@@ -1,7 +1,7 @@
 package flash;
 
 #if flash_strict
-signature KeyListener {
+typedef KeyListener = {
 	function onKeyDown() : Void;
 	function onKeyUp() : Void;
 }

+ 1 - 1
std/flash/Mouse.hx

@@ -1,7 +1,7 @@
 package flash;
 
 #if flash_strict
-signature MouseListener {
+typedef MouseListener = {
 	function onMouseDown() : Void;
 	function onMouseMove() : Void;
 	function onMouseUp() : Void;

+ 1 - 1
std/flash/MovieClipLoader.hx

@@ -1,7 +1,7 @@
 package flash;
 
 #if flash_strict
-signature MclListener {
+typedef MclListener = {
 
 	function onLoadInit(target:MovieClip) : Void;
 	function onLoadStart(target:MovieClip) : Void;

+ 1 - 1
std/haxe/PosInfos.hx

@@ -24,7 +24,7 @@
  */
 package haxe;
 
-signature PosInfos {
+typedef PosInfos = {
 	var fileName : String;
 	var lineNumber : Int;
 	var className : String;

+ 4 - 4
std/haxe/Template.hx

@@ -34,13 +34,13 @@ private enum TemplateExpr {
 	OpMacro( name : String, params : List<TemplateExpr> );
 }
 
-private signature Token {
+private typedef Token = {
 	var s : Bool;
 	var p : String;
 	var l : Array<String>;
 }
 
-private signature ExprToken {
+private typedef ExprToken = {
 	var s : Bool;
 	var p : String;
 }
@@ -113,7 +113,7 @@ class Template {
 					throw "Unclosed macro parenthesis";
 				parp++;
 			}
-			var params = data.substr(p.pos+p.len,parp - (p.pos+p.len) - 1).split(",");			
+			var params = data.substr(p.pos+p.len,parp - (p.pos+p.len) - 1).split(",");
 			tokens.add({ p : splitter.matched(2), s : false, l : params });
 			data = data.substr(parp,data.length - parp);
 		}
@@ -345,7 +345,7 @@ class Template {
 				}
 			}
 			buf = old;
-			try {				
+			try {
 				buf.add(Reflect.callMethod(null,v,pl));
 			} catch( e : Dynamic ) {
 				var msg = "Macro call "+m+" failed ("+Std.string(e)+")";

+ 1 - 1
std/haxe/Unserializer.hx

@@ -25,7 +25,7 @@
 package haxe;
 import Reflect;
 
-signature TypeResolver {
+typedef TypeResolver = {
 	resolveClass : Array<String> -> Class,
 	resolveEnum : Array<String> -> Dynamic
 }

+ 1 - 1
std/haxe/remoting/DelayedConnection.hx

@@ -24,7 +24,7 @@
  */
 package haxe.remoting;
 
-private signature InternalData {
+private typedef InternalData = {
 	var ref : AsyncConnection;
 	var msg : Array<{ path : Array<String>, params : Array<Dynamic>, onData : Dynamic -> Void }>;
 }

+ 34 - 34
std/js/Dom.hx

@@ -28,8 +28,8 @@ package js;
 extern class HtmlCollection<T> extends Array<T>, implements Dynamic<T> {
 }
 
-// the base signature for every DOM element
-signature MetaDom<T> {
+// the base typedef for every DOM element
+typedef MetaDom<T> = {
 	var nodeName : String;
 	var nodeType : Int;
 	var nodeValue : String;
@@ -52,9 +52,9 @@ signature MetaDom<T> {
 
 }
 
-signature Dom = MetaDom<Dom>
+typedef Dom = MetaDom<Dom>
 
-signature HtmlDom {> MetaDom<HtmlDom>,
+typedef HtmlDom = {> MetaDom<HtmlDom>,
 	var id : String;
 	var title : String;
 	var lang : String;
@@ -76,7 +76,7 @@ signature HtmlDom {> MetaDom<HtmlDom>,
 	#end
 }
 
-signature FormElement = {> HtmlDom,
+typedef FormElement = {> HtmlDom,
 
 	var disabled : Bool;
 	var form : Form;
@@ -94,7 +94,7 @@ signature FormElement = {> HtmlDom,
 
 }
 
-signature Anchor = {> HtmlDom,
+typedef Anchor = {> HtmlDom,
 
 	function blur() : Void;
 	function focus() : Void;
@@ -119,7 +119,7 @@ signature Anchor = {> HtmlDom,
 	var onfocus : Event -> Void;
 }
 
-signature Body = {> HtmlDom,
+typedef Body = {> HtmlDom,
 	// IE only, NO W3C var accessKey : String;
 	var aLink : String;
 	var background : String;
@@ -129,17 +129,17 @@ signature Body = {> HtmlDom,
 	var vLink : String;
 }
 
-signature Button = {> FormElement,
+typedef Button = {> FormElement,
 	var onmousedown : Event -> Void;
 	var onmouseup : Event -> Void;
 }
 
-signature Checkbox = {> FormElement,
+typedef Checkbox = {> FormElement,
 	var checked : Bool;
 	var defaultChecked : Bool;
 }
 
-signature Document = {> HtmlDom,
+typedef Document = {> HtmlDom,
 	var anchors : HtmlCollection<Anchor>;
 	// applets : Applet is deprecated in Dom2
 	var forms : HtmlCollection<Form>;
@@ -193,7 +193,7 @@ signature Document = {> HtmlDom,
 	var onresize : Event -> Void;
 }
 
-signature Event {
+typedef Event = {
 	var target : HtmlDom;
 	var type : String;
 
@@ -210,11 +210,11 @@ signature Event {
 	var cancelBubble : Bool;
 }
 
-signature FileUpload = {> FormElement,
+typedef FileUpload = {> FormElement,
 	var defaultValue : String;
 }
 
-signature Form = {> HtmlDom,
+typedef Form = {> HtmlDom,
 
 	var elements : HtmlCollection<FormElement>;
 
@@ -236,7 +236,7 @@ signature Form = {> HtmlDom,
 
 }
 
-signature Frame = {> HtmlDom,
+typedef Frame = {> HtmlDom,
 
 	var contentDocument : Document;
 	var frameBorder : String;
@@ -260,7 +260,7 @@ signature Frame = {> HtmlDom,
 	*/
 }
 
-signature Frameset = {> HtmlDom,
+typedef Frameset = {> HtmlDom,
 	var cols : Int;
 	var rows : Int;
 
@@ -273,18 +273,18 @@ signature Frameset = {> HtmlDom,
 	*/
 }
 
-signature Hidden = {> FormElement,
+typedef Hidden = {> FormElement,
 	var defaultValue : String;
 }
 
-signature History {
+typedef History = {
 	var length : Int;
 	function back() : Void;
 	function forward() : Void;
 	function go( p : Dynamic ) : Void;
 }
 
-signature IFrame = {> HtmlDom,
+typedef IFrame = {> HtmlDom,
 	var contentDocument : Document;
 	var frameBorder : String;
 	var height : Int;
@@ -309,7 +309,7 @@ signature IFrame = {> HtmlDom,
 	*/
 }
 
-signature Image = {> HtmlDom,
+typedef Image = {> HtmlDom,
 	var align : String;
 	var alt : String;
 	var border : String;
@@ -343,7 +343,7 @@ signature Image = {> HtmlDom,
 	var onload : Event -> Void;
 }
 
-signature Link = {> HtmlDom,
+typedef Link = {> HtmlDom,
 	var charset : String;
 	var disabled : Bool;
 	var href : String;
@@ -362,7 +362,7 @@ signature Link = {> HtmlDom,
 	var onload : Event -> Void;
 }
 
-signature Location {
+typedef Location = {
 	var hash : String;
 	var host : String;
 	var hostname : String;
@@ -377,7 +377,7 @@ signature Location {
 	function replace( url : String ) : Void;
 }
 
-signature Navigator {
+typedef Navigator = {
 	// var plugins : HtmlCollection<???>
 
 	var appCodeName : String;
@@ -400,13 +400,13 @@ signature Navigator {
 	function taintEnabled() : Bool;
 }
 
-signature Option = {> FormElement,
+typedef Option = {> FormElement,
 	var defaultSelected : String;
 	var selected : String;
 	var text : String;
 }
 
-signature Password = {> FormElement,
+typedef Password = {> FormElement,
 	var defaultValue : String;
 	var maxLength : Int;
 	var readOnly : Bool;
@@ -419,7 +419,7 @@ signature Password = {> FormElement,
 	var onkeypress : Event -> Void;
 }
 
-signature Radio = {> FormElement,
+typedef Radio = {> FormElement,
 	var checked : Bool;
 	var defaultChecked : Bool;
 	var size : Int;
@@ -427,11 +427,11 @@ signature Radio = {> FormElement,
 	function select() : Void;
 }
 
-signature Reset = {> FormElement,
+typedef Reset = {> FormElement,
 	function select() : Void;
 }
 
-signature Screen {
+typedef Screen = {
 	var availHeight : Int;
 	var availWidth : Int;
 	var colorDepth : Int;
@@ -450,7 +450,7 @@ signature Screen {
 	*/
 }
 
-signature Select = {> FormElement,
+typedef Select = {> FormElement,
 	var options : HtmlCollection<Option>;
 	var length : Int;
 	var multiple : Bool;
@@ -462,7 +462,7 @@ signature Select = {> FormElement,
 	var onChange : Void -> Void;
 }
 
-signature Style {
+typedef Style = {
 	// Position
 	var left : Int;
 	var bottom : Int;
@@ -597,7 +597,7 @@ signature Style {
 	var writingMode : Dynamic;
 }
 
-signature StyleSheet {
+typedef StyleSheet = {
 	var type : String;
 	var disabled : Bool;
 	var href : String;
@@ -605,12 +605,12 @@ signature StyleSheet {
 	// ??? more ???
 }
 
-signature Submit = {> FormElement,
+typedef Submit = {> FormElement,
 	function select() : Void;
 	var onselectstart : Event -> Void;
 }
 
-signature Text = {> FormElement,
+typedef Text = {> FormElement,
 	var defaultValue : String;
 	var maxLength : Int;
 	var readOnly : Bool;
@@ -625,7 +625,7 @@ signature Text = {> FormElement,
 	var onselect : Event -> Void;
 }
 
-signature Textarea = {> FormElement,
+typedef Textarea = {> FormElement,
 	var cols : Int;
 	var rows : Int;
 	var defaultValue : String;
@@ -643,7 +643,7 @@ signature Textarea = {> FormElement,
 	*/
 }
 
-signature Window {
+typedef Window = {
 
 	var history : History;
 	var location : Location;

+ 1 - 1
std/neko/FileSystem.hx

@@ -24,7 +24,7 @@
  */
 package neko;
 
-signature FileStat {
+typedef FileStat = {
 	var gid : Int;
 	var uid : Int;
 	var atime : Date;

+ 1 - 1
std/neko/zip/File.hx

@@ -24,7 +24,7 @@
  */
 package neko.zip;
 
-signature ZipEntry {
+typedef ZipEntry = {
 	var fileName : String;
 	var fileSize : Int;
 	var compressedSize : Int;

+ 8 - 8
std/tools/haxedoc/Main.hx

@@ -46,7 +46,7 @@ private enum DocType {
 	tfunction( params : Array<{ name : String, t : DocType }>, ret : DocType );
 	tparam( classpath : String, name : String );
 	tconstr( fields : Array<{ name : String, t : DocType }> );
-	tsign( name : String, params : Array<DocType> );
+	ttype( name : String, params : Array<DocType> );
 }
 
 private class DocField {
@@ -114,7 +114,7 @@ private class DocField {
 			return "Unknown";
 		case tclass(name,params):
 			return link(name)+paramsToString(params);
-		case tsign(name,params):
+		case ttype(name,params):
 			return link(name)+paramsToString(params);
 		case tenum(name,params):
 			return link(name)+paramsToString(params);
@@ -310,7 +310,7 @@ private class DocEnum extends DocClass {
 
 }
 
-private class DocSign extends DocClass {
+private class DocTypedef extends DocClass {
 
 	public var t : DocType;
 
@@ -325,7 +325,7 @@ private class DocSign extends DocClass {
 	}
 
 	override function genName( s : StringBuf ) {
-		s.add("signature ");
+		s.add("typedef ");
 		s.add(path);
 	}
 }
@@ -346,8 +346,8 @@ class DocView {
 			return tunknown;
 		case "c":
 			return tclass(x.get("path"),Lambda.amap(Lambda.array(x.elements()),processType));
-		case "s":
-			return tsign(x.get("path"),Lambda.amap(Lambda.array(x.elements()),processType));
+		case "t":
+			return ttype(x.get("path"),Lambda.amap(Lambda.array(x.elements()),processType));
 		case "e":
 			var path = x.get("path").split(".");
 			if( path.length >= 2 ) {
@@ -417,8 +417,8 @@ class DocView {
 				if( m.get("public") == "1" )
 					c.fields.push(processField(c,m));
 			}
-		case "signature":
-			var s = new DocSign(path);
+		case "typedef":
+			var s = new DocTypedef(path);
 			var t = processType(x.firstElement());
 			switch( t ) {
 			case tanon(fields):

+ 1 - 1
transform.ml

@@ -25,7 +25,7 @@ let rec map f e =
 	| TEnumField _
 	| TBreak
 	| TContinue
-	| TType _ ->
+	| TTypeExpr _ ->
 		e
 	| TArray (e1,e2) ->
 		{ e with eexpr = TArray (f e1,f e2) }

+ 31 - 60
type.ml

@@ -28,7 +28,7 @@ type t =
 	| TMono of t option ref
 	| TEnum of tenum * t list
 	| TInst of tclass * t list
-	| TSign of tsignature * t list
+	| TType of tdef * t list
 	| TFun of (string * bool * t) list * t
 	| TAnon of tanon
 	| TDynamic of t
@@ -61,7 +61,7 @@ and texpr_expr =
 	| TArray of texpr * texpr
 	| TBinop of Ast.binop * texpr * texpr
 	| TField of texpr * string
-	| TType of module_type
+	| TTypeExpr of module_type
 	| TParenthesis of texpr
 	| TObjectDecl of (string * texpr) list
 	| TArrayDecl of texpr list
@@ -134,20 +134,20 @@ and tenum = {
 	mutable e_constrs : (string , tenum_field) PMap.t;
 }
 
-and tsignature = {
-	s_path : module_path;
-	s_pos : Ast.pos;
-	s_doc : Ast.documentation;
-	s_private : bool;
-	s_static : tclass option;
-	mutable s_types : (string * t) list;
-	mutable s_type : t;
+and tdef = {
+	t_path : module_path;
+	t_pos : Ast.pos;
+	t_doc : Ast.documentation;
+	t_private : bool;
+	t_static : tclass option;
+	mutable t_types : (string * t) list;
+	mutable t_type : t;
 }
 
 and module_type =
 	| TClassDecl of tclass
 	| TEnumDecl of tenum
-	| TSignatureDecl of tsignature
+	| TTypeDecl of tdef
 
 type module_def = {
 	mpath : module_path;
@@ -203,12 +203,12 @@ let arg_name (name,_,_) = name
 let t_private = function
 	| TClassDecl c -> c.cl_private
 	| TEnumDecl e -> e.e_private
-	| TSignatureDecl s -> s.s_private
+	| TTypeDecl t -> t.t_private
 
 let t_path = function
 	| TClassDecl c -> c.cl_path
-	| TEnumDecl  e -> e.e_path
-	| TSignatureDecl s -> s.s_path
+	| TEnumDecl e -> e.e_path
+	| TTypeDecl t -> t.t_path
 
 let print_context() = ref []
 
@@ -222,8 +222,8 @@ let rec s_type ctx t =
 		Ast.s_type_path e.e_path ^ s_type_params ctx tl
 	| TInst (c,tl) ->
 		Ast.s_type_path c.cl_path ^ s_type_params ctx tl
-	| TSign (s,tl) ->
-		Ast.s_type_path s.s_path ^ s_type_params ctx tl
+	| TType (t,tl) ->
+		Ast.s_type_path t.t_path ^ s_type_params ctx tl
 	| TFun ([],t) ->
 		"Void -> " ^ s_fun ctx t false
 	| TFun (l,t) ->
@@ -261,7 +261,7 @@ let rec link e a b =
 			true
 		else match t with
 		| TMono t -> (match !t with None -> false | Some t -> loop t)
-		| TEnum (_,tl) | TInst (_,tl) | TSign (_,tl) -> List.exists loop tl
+		| TEnum (_,tl) | TInst (_,tl) | TType (_,tl) -> List.exists loop tl
 		| TFun (tl,t) -> List.exists (fun (_,_,t) -> loop t) tl || loop t
 		| TDynamic t2 ->
 			if t == t2 then
@@ -309,10 +309,10 @@ let apply_params cparams params t =
 			(match tl with
 			| [] -> t
 			| _ -> TEnum (e,List.map loop tl))
-		| TSign (s,tl) ->
+		| TType (t2,tl) ->
 			(match tl with
 			| [] -> t
-			| _ -> TSign (s,List.map loop tl))
+			| _ -> TType (t2,List.map loop tl))
 		| TInst (c,tl) ->
 			(match tl with
 			| [] ->
@@ -358,8 +358,8 @@ let rec follow t =
 		| _ -> t)
 	| TLazy f ->
 		follow (!f())
-	| TSign (s,tl) ->
-		follow (apply_params s.s_types tl s.s_type)
+	| TType (t,tl) ->
+		follow (apply_params t.t_types tl t.t_type)
 	| _ -> t
 
 let monomorphs eparams t =
@@ -371,8 +371,8 @@ let rec fast_eq a b =
 	else match a , b with
 	| TFun (l1,r1) , TFun (l2,r2) ->
 		List.for_all2 (fun (_,_,t1) (_,_,t2) -> fast_eq t1 t2) l1 l2 && fast_eq r1 r2
-	| TSign (s1,l1), TSign (s2,l2) ->
-		s1 == s2 && List.for_all2 fast_eq l1 l2
+	| TType (t1,l1), TType (t2,l2) ->
+		t1 == t2 && List.for_all2 fast_eq l1 l2
 	| TEnum (e1,l1), TEnum (e2,l2) ->
 		e1 == e2 && List.for_all2 fast_eq l1 l2
 	| TInst (c1,l1), TInst (c2,l2) ->
@@ -390,13 +390,13 @@ let rec type_eq param a b =
 	| _ , TLazy f -> type_eq param a (!f())
 	| TMono t , _ -> (match !t with None -> link t a b | Some t -> type_eq param t b)
 	| _ , TMono t -> (match !t with None -> link t b a | Some t -> type_eq param a t)
-	| TSign (s,tl) , _ -> type_eq param (apply_params s.s_types tl s.s_type) b
-	| _ , TSign (s,tl) ->
+	| TType (t,tl) , _ -> type_eq param (apply_params t.t_types tl t.t_type) b
+	| _ , TType (t,tl) ->
 		if List.exists (fun (a2,b2) -> fast_eq a a2 && fast_eq b b2) (!eq_stack) then
 			true
 		else begin
 			eq_stack := (a,b) :: !eq_stack;
-			let r = type_eq param a (apply_params s.s_types tl s.s_type) in
+			let r = type_eq param a (apply_params t.t_types tl t.t_type) in
 			eq_stack := List.tl !eq_stack;
 			r
 		end
@@ -506,16 +506,16 @@ let rec unify a b =
 		(match !t with
 		| None -> if not (link t b a) then error [cannot_unify a b]
 		| Some t -> unify a t)
-	| TSign (s,tl) , _ ->
+	| TType (t,tl) , _ ->
 		(try
-			unify (apply_params s.s_types tl s.s_type) b
+			unify (apply_params t.t_types tl t.t_type) b
 		with
 			Unify_error l -> error (cannot_unify a b :: l))
-	| _ , TSign (s,tl) ->
+	| _ , TType (t,tl) ->
 		if not (List.exists (fun (a2,b2) -> fast_eq a a2 && fast_eq b b2) (!unify_stack)) then begin
 			try
 				unify_stack := (a,b) :: !unify_stack;
-				unify a (apply_params s.s_types tl s.s_type);
+				unify a (apply_params t.t_types tl t.t_type);
 				unify_stack := List.tl !unify_stack;
 			with
 				Unify_error l ->
@@ -610,7 +610,7 @@ let rec iter f e =
 	| TEnumField _
 	| TBreak
 	| TContinue
-	| TType _ ->
+	| TTypeExpr _ ->
 		()
 	| TArray (e1,e2)
 	| TBinop (_,e1,e2)
@@ -653,32 +653,3 @@ let rec iter f e =
 		List.iter (fun (_,_,e) -> f e) catches
 	| TReturn eo ->
 		(match eo with None -> () | Some e -> f e)
-
-let s_expr e =
-	match e.eexpr with
-	| TConst _ -> "Const"
-	| TLocal s -> "Local:" ^ s
-	| TEnumField (_,s) -> "EnumField:" ^ s
-	| TArray _ -> "Array"
-	| TBinop (op,_,_) -> "Binop:" ^ Ast.s_binop op
-	| TField (_,f) -> "Field:" ^ f
-	| TType _ -> "Type"
-	| TParenthesis _ -> "Parent"
-	| TObjectDecl _ -> "ObjDecl"
-	| TArrayDecl _ -> "ArrayDecl"
-	| TCall _ -> "Call"
-	| TNew _ -> "New"
-	| TUnop (op,_,_) -> "Unop:" ^ Ast.s_unop op
-	| TFunction _ -> "Function"
-	| TVars _ -> "Vars"
-	| TBlock _ -> "Block"
-	| TFor _ -> "For"
-	| TIf _ -> "If"
-	| TWhile _ -> "While"
-	| TSwitch _ -> "Switch"
-	| TMatch _ -> "Match"
-	| TTry _ -> "Try"
-	| TReturn _ -> "Return"
-	| TBreak -> "Break"
-	| TContinue -> "Continue"
-	| TThrow _ -> "Throw"

+ 61 - 61
typer.ml

@@ -276,7 +276,7 @@ let rec load_normal_type ctx t p allow_no_params =
 		let types , path , f = match load_type_def ctx p (t.tpackage,t.tname) with
 			| TClassDecl c -> c.cl_types , c.cl_path , (fun t -> TInst (c,t))
 			| TEnumDecl e -> e.e_types , e.e_path , (fun t -> TEnum (e,t))
-			| TSignatureDecl s -> s.s_types , s.s_path , (fun t -> TSign(s,t))
+			| TTypeDecl t -> t.t_types , t.t_path , (fun tl -> TType(t,tl))
 		in
 		if allow_no_params && t.tparams = [] then
 			f (List.map (fun (name,t) ->
@@ -387,8 +387,8 @@ let rec reverse_type t =
 		TPNormal { tpackage = fst e.e_path; tname = snd e.e_path; tparams = List.map reverse_type params }
 	| TInst (c,params) ->
 		TPNormal { tpackage = fst c.cl_path; tname = snd c.cl_path; tparams = List.map reverse_type params }
-	| TSign (s,params) ->
-		TPNormal { tpackage = fst s.s_path; tname = snd s.s_path; tparams = List.map reverse_type params }
+	| TType (t,params) ->
+		TPNormal { tpackage = fst t.t_path; tname = snd t.t_path; tparams = List.map reverse_type params }
 	| TFun (params,ret) ->
 		TPFunction (List.map (fun (_,_,t) -> reverse_type t) params,reverse_type ret)
 	| TAnon a ->
@@ -619,10 +619,10 @@ let rec is_flash_extern t =
 		(match fst c.cl_path with
 		| "flash" :: _ -> c.cl_extern
 		| _ -> false)
-	| TSign (s,_) ->
-		(match s.s_static with		
+	| TType (t,_) ->
+		(match t.t_static with		
 		| Some { cl_extern = true; cl_path = "flash" :: _ , _ } -> true
-		| _ -> is_flash_extern s.s_type);
+		| _ -> is_flash_extern t.t_type);
 	| _ -> false
 
 let t_array ctx =
@@ -639,11 +639,11 @@ let t_array ctx =
 let t_iterator ctx =
 	let show = hide_types ctx in
 	match load_type_def ctx null_pos ([],"Iterator") with
-	| TSignatureDecl s ->
+	| TTypeDecl t ->
 		show();
-		if List.length s.s_types <> 1 then assert false;
+		if List.length t.t_types <> 1 then assert false;
 		let pt = mk_mono() in
-		apply_params s.s_types [pt] s.s_type, pt
+		apply_params t.t_types [pt] t.t_type, pt
 	| _ ->
 		assert false
 
@@ -702,7 +702,7 @@ let unify_call_params ctx t el args p =
 				| _ -> t
 			in
 			(match follow2 t with
-			| TSign ({ s_path = ["haxe"] , "PosInfos" },[]) ->
+			| TType ({ t_path = ["haxe"] , "PosInfos" },[]) ->
 				let infos = mk_infos ctx p [] in
 				let e = (!type_expr_ref) ctx ~need_val:true infos in
 				loop (e :: acc) [] []
@@ -790,7 +790,7 @@ let type_ident ctx i p get =
 		(* static variable lookup *)
 		let f = PMap.find i ctx.curclass.cl_statics in
 		(* expr type is not accurate but needed for protect *)
-		let tt = mk (TType (TClassDecl ctx.curclass)) (TInst (ctx.curclass,[])) p in
+		let tt = mk (TTypeExpr (TClassDecl ctx.curclass)) (TInst (ctx.curclass,[])) p in
 		field_access ctx get f (field_type f) tt p
 	with Not_found -> try
 		(* lookup imported *)
@@ -799,7 +799,7 @@ let type_ident ctx i p get =
 			| [] -> raise Not_found
 			| t :: l ->
 				match t with
-				| TClassDecl _ | TSignatureDecl _ ->
+				| TClassDecl _ | TTypeDecl _ ->
 					loop l
 				| TEnumDecl e ->
 					try
@@ -836,16 +836,16 @@ let type_type ctx tpath p =
 			| Some l ->
 				l
 		) in
-		let s_tmp = {
-			s_path = fst c.cl_path, "#" ^ snd c.cl_path;
-			s_doc = None;
-			s_pos = c.cl_pos;
-			s_type = mk_anon (if pub then PMap.map (fun f -> { f with cf_public = true }) c.cl_statics else c.cl_statics);
-			s_private = true;
-			s_static = Some c;
-			s_types = c.cl_types;
+		let t_tmp = {
+			t_path = fst c.cl_path, "#" ^ snd c.cl_path;
+			t_doc = None;
+			t_pos = c.cl_pos;
+			t_type = mk_anon (if pub then PMap.map (fun f -> { f with cf_public = true }) c.cl_statics else c.cl_statics);
+			t_private = true;
+			t_static = Some c;
+			t_types = c.cl_types;
 		} in
-		mk (TType (TClassDecl c)) (TSign (s_tmp,types)) p
+		mk (TTypeExpr (TClassDecl c)) (TType (t_tmp,types)) p
 	| TEnumDecl e ->
 		let types = (match tparams with None -> List.map (fun _ -> mk_mono()) e.e_types | Some l -> l) in
 		let fl = PMap.fold (fun f acc ->
@@ -860,18 +860,18 @@ let type_type ctx tpath p =
 				cf_params = [];
 			} acc
 		) e.e_constrs PMap.empty in
-		let s_tmp = {
-			s_path = fst e.e_path, "#" ^ snd e.e_path;
-			s_doc = None;
-			s_pos = e.e_pos;
-			s_type = mk_anon fl;
-			s_private = true;
-			s_static = None;
-			s_types = e.e_types;
+		let t_tmp = {
+			t_path = fst e.e_path, "#" ^ snd e.e_path;
+			t_doc = None;
+			t_pos = e.e_pos;
+			t_type = mk_anon fl;
+			t_private = true;
+			t_static = None;
+			t_types = e.e_types;
 		} in
-		mk (TType (TEnumDecl e)) (TSign (s_tmp,types)) p
-	| TSignatureDecl s ->
-		match follow s.s_type with
+		mk (TTypeExpr (TEnumDecl e)) (TType (t_tmp,types)) p
+	| TTypeDecl s ->
+		match follow s.t_type with
 		| TEnum (e,params) ->
 			loop (TEnumDecl e) (Some params)
 		| TInst (c,params) ->
@@ -902,7 +902,7 @@ let check_assign ctx e =
 	match e.eexpr with
 	| TLocal _ | TArray _ | TField _ ->
 		()
-	| TType _ when ctx.untyped ->
+	| TTypeExpr _ when ctx.untyped ->
 		()
 	| _ ->
 		error "Invalid assign" e.epos
@@ -2035,19 +2035,19 @@ let type_module ctx m tdecls loadp =
 				e_constrs = PMap.empty;
 			} in
 			decls := TEnumDecl e :: !decls
-		| ESignature (name,doc,_,flags,_) ->
+		| ETypedef (name,doc,_,flags,_) ->
 			let priv = List.mem EPrivate flags in
 			let path = decl_with_name name p priv in
-			let s = {
-				s_path = path;
-				s_pos = p;
-				s_doc = doc;
-				s_private = priv;
-				s_types = [];
-				s_static = None;
-				s_type = mk_mono();
+			let t = {
+				t_path = path;
+				t_pos = p;
+				t_doc = doc;
+				t_private = priv;
+				t_types = [];
+				t_static = None;
+				t_type = mk_mono();
 			} in
-			decls := TSignatureDecl s :: !decls
+			decls := TTypeDecl t :: !decls
 	) tdecls;
 	let m = {
 		mpath = m;
@@ -2089,9 +2089,9 @@ let type_module ctx m tdecls loadp =
 		let e = List.find (fun d -> match d with TEnumDecl { e_path = _ , n } -> n = name | _ -> false) m.mtypes in
 		match e with TEnumDecl e -> e | _ -> assert false
 	in
-	let get_sign name =
-		let s = List.find (fun d -> match d with TSignatureDecl { s_path = _ , n } -> n = name | _ -> false) m.mtypes in
-		match s with TSignatureDecl s -> s | _ -> assert false
+	let get_tdef name =
+		let s = List.find (fun d -> match d with TTypeDecl { t_path = _ , n } -> n = name | _ -> false) m.mtypes in
+		match s with TTypeDecl s -> s | _ -> assert false
 	in
 	(* here is an additional PASS 1 phase, which handle the type parameters declaration, with lazy contraints *)
 	List.iter (fun (d,p) ->
@@ -2103,9 +2103,9 @@ let type_module ctx m tdecls loadp =
 		| EEnum (name,_,types,_,_) ->
 			let e = get_enum name in
 			e.e_types <- List.map (type_type_params ctx e.e_path p) types;
-		| ESignature (name,_,types,_,_) ->
-			let s = get_sign name in
-			s.s_types <- List.map (type_type_params ctx s.s_path p) types;
+		| ETypedef (name,_,types,_,_) ->
+			let t = get_tdef name in
+			t.t_types <- List.map (type_type_params ctx t.t_path p) types;
 	) tdecls;
 	(* back to PASS2 *)
 	List.iter (fun (d,p) ->
@@ -2137,11 +2137,11 @@ let type_module ctx m tdecls loadp =
 				) in
 				e.e_constrs <- PMap.add c { ef_name = c; ef_type = t; ef_pos = p; ef_doc = doc } e.e_constrs
 			) constrs
-		| ESignature (name,_,_,_,t) ->
-			let s = get_sign name in
-			ctx.type_params <- s.s_types;
-			let t = load_type ctx p t in
-			unify ctx s.s_type t p;
+		| ETypedef (name,_,_,_,tt) ->
+			let t = get_tdef name in
+			ctx.type_params <- t.t_types;
+			let tt = load_type ctx p tt in
+			unify ctx t.t_type tt p;
 	) tdecls;
 	(* PASS 3 : type checking, delayed until all modules and types are built *)
 	ctx.delays := !delays :: !(ctx.delays);
@@ -2227,7 +2227,7 @@ let types ctx main excludes =
 					c.cl_init <- None;
 				end;
 				t
-			| TEnumDecl _ | TSignatureDecl _ ->
+			| TEnumDecl _ | TTypeDecl _ ->
 				t
 			) in
 			Hashtbl.replace states p Done;
@@ -2256,11 +2256,11 @@ let types ctx main excludes =
 
 	and walk_expr p e =
 		match e.eexpr with
-		| TType t ->
+		| TTypeExpr t ->
 			(match t with
 			| TClassDecl c -> loop_class p c
 			| TEnumDecl e -> loop_enum p e
-			| TSignatureDecl _ -> assert false)
+			| TTypeDecl _ -> assert false)
 		| TEnumField (e,_) ->
 			loop_enum p e
 		| TNew (c,_,_) ->
@@ -2274,10 +2274,10 @@ let types ctx main excludes =
 			(* static call for initializing a variable *)
 			let rec loop f =
 				match f.eexpr with
-				| TField ({ eexpr = TType t },name) ->
+				| TField ({ eexpr = TTypeExpr t },name) ->
 					(match t with
 					| TEnumDecl _ -> ()
-					| TSignatureDecl _ -> assert false
+					| TTypeDecl _ -> assert false
 					| TClassDecl c -> walk_static_call p c name)
 				| _ -> ()
 			in
@@ -2307,7 +2307,7 @@ let types ctx main excludes =
 	| Some cl ->
 		let t = load_type_def ctx null_pos cl in
 		let cmain = (match t with
-		| TEnumDecl _ | TSignatureDecl _ ->
+		| TEnumDecl _ | TTypeDecl _ ->
 			error ("Invalid -main : " ^ s_type_path cl ^ " is not a class") null_pos
 		| TClassDecl c ->
 			try
@@ -2330,7 +2330,7 @@ let types ctx main excludes =
 			cf_set = NormalAccess;
 			cf_doc = None;
 			cf_params = [];
-			cf_expr = Some (mk (TCall (mk (TField (mk (TType t) tmain null_pos,"main")) (mk_mono()) null_pos,[])) (mk_mono()) null_pos);
+			cf_expr = Some (mk (TCall (mk (TField (mk (TTypeExpr t) tmain null_pos,"main")) (mk_mono()) null_pos,[])) (mk_mono()) null_pos);
 		} in
 		c.cl_statics <- PMap.add "init" f c.cl_statics;
 		c.cl_ordered_statics <- f :: c.cl_ordered_statics;