浏览代码

[typer] resolve typedefs in `make_typeexpr`

closes #7540
Simon Krajewski 7 年之前
父节点
当前提交
5e915bd976
共有 2 个文件被更改,包括 17 次插入1 次删除
  1. 1 1
      src/core/texpr.ml
  2. 16 0
      tests/unit/src/unit/issues/Issue7540.hx

+ 1 - 1
src/core/texpr.ml

@@ -219,7 +219,7 @@ module Builder = struct
 
 	let make_typeexpr mt pos =
 		let t =
-			match mt with
+			match resolve_typedef mt with
 			| TClassDecl c -> TAnon { a_fields = c.cl_statics; a_status = ref (Statics c) }
 			| TEnumDecl e -> TAnon { a_fields = PMap.empty; a_status = ref (EnumStatics e) }
 			| TAbstractDecl a -> TAnon { a_fields = PMap.empty; a_status = ref (AbstractStatics a) }

+ 16 - 0
tests/unit/src/unit/issues/Issue7540.hx

@@ -0,0 +1,16 @@
+package unit.issues;
+
+class Issue7540 extends unit.Test {
+	function test() {
+		eq(1, get());
+	}
+
+	function get() {
+		return try throw new Error() catch (e:Error) 1;
+	}
+}
+
+private typedef Error = TypedError<Dynamic>;
+private class TypedError<T> {
+	public function new() { }
+}