Procházet zdrojové kódy

[display] avoid duplicate EDisplay wrapping for signatures

closes #7252
Simon Krajewski před 7 roky
rodič
revize
e5d178e352

+ 3 - 1
src/context/display/display.ml

@@ -166,10 +166,12 @@ module ExprPreprocessing = struct
 				Parser.mk_display_expr e DKCall
 				end else
 					e
+			| EDisplay(_,DKCall) ->
+				raise Exit
 			| _ -> e
 		in
 		let rec map e = loop (Ast.map_expr map e) in
-		map e
+		try map e with Exit -> e
 
 
 	let process_expr com e = match com.display.dms_kind with

+ 17 - 0
tests/display/src/cases/Issue7252.hx

@@ -0,0 +1,17 @@
+package cases;
+
+class Issue7252 extends DisplayTestCase {
+	/**
+	class Main {
+		var a : Array<Int>;
+		function foo() {
+			a.map(function(_) {
+				a.concat({-1-})
+			});
+		}
+	}
+	**/
+	function test() {
+		sigEq(0, [["a:Array<Int>"]], signature(pos(1)));
+	}
+}