Browse Source

[eval] create abstract instance methods

closes #9795
Simon Krajewski 5 years ago
parent
commit
7ceaa8b590
2 changed files with 22 additions and 1 deletions
  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();
+	}
+}