浏览代码

Fix @:require vs overload (#10891)

* Fix @:require and false duplicate reports

* Add test for (expected) failures with @:require(true)

* Separate static vs instance and function vs var cases

* Cleanup

* Only fix @:require vs overload

* Update tests
Rudy Ges 2 年之前
父节点
当前提交
66a53c6cd1
共有 3 个文件被更改,包括 11 次插入1 次删除
  1. 5 1
      src/typing/typeloadFields.ml
  2. 5 0
      tests/misc/projects/Issue10890/Main.hx
  3. 1 0
      tests/misc/projects/Issue10890/build.hxml

+ 5 - 1
src/typing/typeloadFields.ml

@@ -1772,7 +1772,11 @@ let init_class ctx c p context_init herits fields =
 				if not cctx.is_native && not (has_class_flag c CExtern) && dup then typing_error ("Same field name can't be used for both static and instance : " ^ cf.cf_name) p;
 				if fctx.override <> None then
 					add_class_field_flag cf CfOverride;
-				let is_var cf = match cf.cf_kind with | Var _ -> true | _ -> false in
+				let is_var cf = match cf.cf_kind with
+					| Var {v_read = AccRequire _; v_write = AccRequire _} -> false
+					| Var _ -> true
+					| _ -> false
+				in
 				if PMap.mem cf.cf_name (if fctx.is_static then c.cl_statics else c.cl_fields) then
 					if has_class_field_flag cf CfOverload && not (is_var cf) then
 						let mainf = PMap.find cf.cf_name (if fctx.is_static then c.cl_statics else c.cl_fields) in

+ 5 - 0
tests/misc/projects/Issue10890/Main.hx

@@ -0,0 +1,5 @@
+extern class Main {
+	overload function test(b:Bool):Void;
+	@:require(false) overload function test(i:Int):Void;
+	@:require(false) overload function test(s:String):Void;
+}

+ 1 - 0
tests/misc/projects/Issue10890/build.hxml

@@ -0,0 +1 @@
+Main