浏览代码

[eval] create abstract instance methods

closes #9795
Simon Krajewski 5 年之前
父节点
当前提交
59251ef984
共有 2 个文件被更改,包括 22 次插入1 次删除
  1. 5 1
      src/macro/eval/evalPrototype.ml
  2. 17 0
      tests/unit/src/unit/issues/Issue9795.hx

+ 5 - 1
src/macro/eval/evalPrototype.ml

@@ -278,7 +278,11 @@ let create_instance_prototype ctx c =
 		| Var _,_ when is_physical_field cf ->
 			let name = hash cf.cf_name in
 			PrototypeBuilder.add_instance_field pctx name (lazy vnull);
-		|  _ ->
+		| Method meth,None when has_class_field_flag cf CfAbstract ->
+			let name = hash cf.cf_name in
+			let v = lazy vnull in
+			PrototypeBuilder.add_proto_field pctx name v
+		| _ ->
 			()
 	) fields;
 	PrototypeBuilder.finalize pctx

+ 17 - 0
tests/unit/src/unit/issues/Issue9795.hx

@@ -0,0 +1,17 @@
+package unit.issues;
+
+import utest.Assert;
+
+private abstract class C {
+	abstract function f():String;
+
+	public function test() {
+		return f();
+	}
+}
+
+class Issue9795 extends unit.Test {
+	function test() {
+		Assert.pass();
+	}
+}