Przeglądaj źródła

[cs] Consider String as basic type (#8387)

* Add failing tests

* [cs] Consider String as basic type too

* HxObject.getParams() returns an Array<{}>

* Add tests for #5434
Rudy Ges 6 lat temu
rodzic
commit
c3d8e8a579

+ 1 - 1
src/codegen/gencommon/enumToClass2.ml

@@ -85,7 +85,7 @@ module EnumToClass2Modf = struct
 		let e_pack, e_name = en.e_path in
 		let cl_enum_t = TInst (cl_enum, []) in
 		let cf_getTag_t = tfun [] basic.tstring in
-		let cf_getParams_ret = basic.tarray basic.tstring in
+		let cf_getParams_ret = basic.tarray (mk_anon PMap.empty) in
 		let cf_getParams_t = tfun [] cf_getParams_ret in
 		let static_ctors = ref [] in
 		let ctors_map = ref PMap.empty in

+ 1 - 0
src/generators/gencs.ml

@@ -918,6 +918,7 @@ let generate con =
 					Null<> type parameters will be transformed into Dynamic.
 				*)
 				| true, TInst ( { cl_path = (["haxe";"lang"], "Null") }, _ ) -> dynamic_anon
+				| true, TInst ( { cl_path = ([], "String") }, _ ) -> t
 				| true, TInst ( { cl_kind = KTypeParameter _ }, _ ) -> t
 				| true, TInst _
 				| true, TEnum _

+ 6 - 0
tests/misc/projects/Issue5434/Main.hx

@@ -0,0 +1,6 @@
+interface ITest<K, V> {
+	function keys():Array<K>;
+	function values():Array<V>;
+}
+
+interface ISubTest extends ITest<String, String> {}

+ 2 - 0
tests/misc/projects/Issue5434/compile.hxml

@@ -0,0 +1,2 @@
+Main
+-cs bin

+ 22 - 0
tests/misc/projects/Issue8361/Main.hx

@@ -0,0 +1,22 @@
+class SortedStringMapImpl<V> extends haxe.ds.BalancedTree<String, V> implements haxe.Constraints.IMap<String,V> {
+
+	var cmp:String -> String -> Int;
+
+	public function new(?comparator:String -> String -> Int) {
+		super();
+		this.cmp = comparator == null ? haxe.Utf8.compare : comparator;
+	}
+
+	override
+	function compare(s1:String, s2:String):Int {
+		return cmp(s1, s2);
+	}
+}
+
+class Main {
+	static function main() {
+		var m = new SortedStringMapImpl<String>();
+		m.set("foo", "bar");
+		trace(m);
+	}
+}

+ 2 - 0
tests/misc/projects/Issue8361/compile.hxml

@@ -0,0 +1,2 @@
+-main Main
+-cs bin