Răsfoiți Sursa

[display] don't lose inline function type when in display

closes #7023
Simon Krajewski 7 ani în urmă
părinte
comite
934a5eccb4

+ 1 - 1
src/typing/typer.ml

@@ -2053,7 +2053,7 @@ and type_local_function ctx name f with_type p =
 				mk (TBinop (OpAssign,mk (TLocal v) ft p,e)) ft p;
 				mk (TLocal v) ft p
 			]) ft p))) ctx.t.tvoid p
-		end else if inline then
+		end else if inline && not ctx.in_display then
 			mk (TBlock []) ctx.t.tvoid p (* do not add variable since it will be inlined *)
 		else
 			mk (TVar (v,Some e)) ctx.t.tvoid p

+ 1 - 1
tests/display/src/Macro.hx

@@ -58,7 +58,7 @@ class Macro {
 				var p = new haxe.io.Path(file);
 				if (p.ext == "hx") {
 					var tp = {pack: pack, name: p.file};
-					cases.push(macro new $tp());
+					cases.push(macro { name:$v{tp.name}, exec:new $tp() });
 				} else if(Path.join([path, file]).isDirectory()) {
 					loop(pack.concat([file]));
 				}

+ 3 - 2
tests/display/src/Main.hx

@@ -5,10 +5,11 @@ class Main {
 		var numFailures = 0;
 		for (test in tests) {
 			try {
-				var result = test.run();
+				Sys.print(test.name);
+				var result = test.exec.run();
 				numTests += result.numTests;
 				numFailures += result.numFailures;
-			   Sys.println('${result.testName}: ${result.numTests} tests, ${result.numFailures} failures');
+			    Sys.println(' ${result.numTests} tests, ${result.numFailures} failures');
 			} catch(e:DisplayTestContext.HaxeInvocationException) {
 				Sys.println("Error:      " + e.message);
 				Sys.println("Field name: " + e.fieldName);

+ 16 - 0
tests/display/src/cases/Issue7023.hx

@@ -0,0 +1,16 @@
+package cases;
+
+class Issue7023 extends DisplayTestCase {
+	/**
+	class Main {
+		public static function main() {
+			inl{-1-}ine funct{-2-}ion fo{-3-}o() return "foo";
+		}
+	}
+	**/
+	function test() {
+		eq("Void -> String", type(pos(1)));
+		eq("Void -> String", type(pos(2)));
+		eq("Void -> String", type(pos(3)));
+	}
+}