Prechádzať zdrojové kódy

[cs] Fix is_hxgen/generic test for abstracts that have an implementation

Closes #3711
Cauê Waneck 10 rokov pred
rodič
commit
86e940912f
2 zmenil súbory, kde vykonal 20 pridanie a 1 odobranie
  1. 5 1
      gencommon.ml
  2. 15 0
      tests/unit/src/unit/issues/Issue3711.hx

+ 5 - 1
gencommon.ml

@@ -1606,8 +1606,10 @@ struct
 			| TAbstractDecl a -> (match follow a.a_this with
 				| TInst _ | TEnum _ | TAbstract _ ->
 					default_hxgen_func (t_to_md (follow a.a_this))
+				| TDynamic _ | TFun _ ->
+					true
 				| _ ->
-					Meta.has Meta.NativeGen a.a_meta)
+					not (Meta.has Meta.NativeGen a.a_meta))
 			| TTypeDecl t -> (* TODO see when would we use this *)
 				false
 
@@ -4235,6 +4237,7 @@ struct
 					| TEnum(e,_) -> follow_all_md (TEnumDecl e)
 					| TAbstract(a,_) -> follow_all_md (TAbstractDecl a)
 					| TType(t,_) -> follow_all_md (TTypeDecl t)
+					| TDynamic _ -> Some (TClassDecl (null_class))
 					| _ -> None)
 			| TTypeDecl t -> (
 				match follow (apply_params t.t_params (List.map snd t.t_params) t.t_type) with
@@ -4242,6 +4245,7 @@ struct
 				| TEnum(e,_) -> follow_all_md (TEnumDecl e)
 				| TAbstract(a,_) -> follow_all_md (TAbstractDecl a)
 				| TType(t,_) -> follow_all_md (TTypeDecl t)
+				| TDynamic _ -> Some (TClassDecl (null_class))
 				| _ -> None)
 			| md -> Some md
 

+ 15 - 0
tests/unit/src/unit/issues/Issue3711.hx

@@ -0,0 +1,15 @@
+package unit.issues;
+
+private abstract A<K>(haxe.DynamicAccess<Int>) {
+    public function f():Array<K> return [];
+}
+
+class Issue3711 extends Test {
+    public function test()
+		{
+			var a:A<String> = null;
+			var k = a.f();
+			eq(k[0],null);
+			eq(k.length,0);
+    }
+}