closes #7827
@@ -115,6 +115,9 @@ let valid_redefinition ctx f1 t1 f2 t2 = (* child, parent *)
| _,(Var { v_read = AccNo | AccNever }) ->
(* read variance *)
valid t2 t1
+ | _,_ when has_class_field_flag f2 CfFinal ->
+ (* write variance *)
+ valid t1 t2
| _ , _ ->
(* in case args differs, or if an interface var *)
type_eq EqStrict t1 t2;
@@ -0,0 +1,22 @@
+package unit.issues;
+
+import utest.Assert;
+private class Base {}
+private class Child extends Base {
+ public function new() {}
+}
+private interface I {
+ final x:Base;
+private class C implements I {
+ public final x:Child = new Child();
+class Issue7827 extends unit.Test {
+ function test() {
+ Assert.pass();
+ }