Преглед на файлове

[flash] use `Dynamic` as a default type param for `Vector` loaded from swc
(fixes #9805)

Aleksandr Kuzmenko преди 5 години
родител
ревизия
79d42b76ea

+ 1 - 1
src/codegen/swfLoader.ml

@@ -71,7 +71,7 @@ let rec make_tpath = function
 			| [] , "QName" -> ["flash";"utils"], "QName"
 			| [] , "Namespace" -> ["flash";"utils"], "Namespace"
 			| [] , "RegExp" -> ["flash";"utils"], "RegExp"
-			| ["__AS3__";"vec"] , "Vector" -> ["flash"], "Vector"
+			| ["__AS3__";"vec"] , "Vector" -> pdyn := true; ["flash"], "Vector"
 			| _ -> lowercase_pack pack, name
 		in
 		{

+ 1 - 0
tests/misc/flash/projects/.gitignore

@@ -0,0 +1 @@
+bin/*

+ 6 - 0
tests/misc/flash/projects/Issue9805/C.as

@@ -0,0 +1,6 @@
+package {
+	public class C {
+		public static function dyn(v:Vector):void {}
+		public static function typed(v:Vector.<int>):void {}
+	}
+}

+ 6 - 0
tests/misc/flash/projects/Issue9805/Main.hx

@@ -0,0 +1,6 @@
+class Main {
+	static function main() {
+		$type(C.dyn);
+		$type(C.typed);
+	}
+}

+ 7 - 0
tests/misc/flash/projects/Issue9805/compile.hxml

@@ -0,0 +1,7 @@
+--cmd compc -source-path . -include-classes C -output bin/lib.swc
+
+--next
+
+--main Main
+--swf-lib bin/lib.swc
+--swf bin/test.swf

+ 2 - 0
tests/misc/flash/projects/Issue9805/compile.hxml.stderr

@@ -0,0 +1,2 @@
+Main.hx:3: characters 9-14 : Warning : (p1 : flash.Vector<Dynamic>) -> Void
+Main.hx:4: characters 9-16 : Warning : (p1 : flash.Vector<Int>) -> Void

+ 2 - 0
tests/misc/flash/run.hxml

@@ -0,0 +1,2 @@
+-cp ../src
+--run Main

+ 7 - 0
tests/runci/targets/Flash.hx

@@ -11,6 +11,9 @@ import runci.System.*;
 import runci.Config.*;
 
 class Flash {
+	static var miscFlashDir(get,never):String;
+	static inline function get_miscFlashDir() return miscDir + 'flash/';
+
 	static public function getLatestFPVersion():Array<Int> {
 		var appcast = Xml.parse(haxe.Http.requestUrl("http://fpdownload2.macromedia.com/get/flashplayer/update/current/xml/version_en_mac_pep.xml"));
 		var versionStr = new haxe.xml.Access(appcast).node.XML.node.update.att.version;
@@ -161,6 +164,10 @@ class Flash {
 				success = false;
 			}
 		}
+
+		changeDirectory(miscFlashDir);
+		runCommand("haxe", ["run.hxml"]);
+
 		if (!success)
 			fail();
 	}