Browse Source

[display] recursively follow expectedTypeFollowed

closes #7262
Simon Krajewski 5 years ago
parent
commit
f805cd53dc
2 changed files with 18 additions and 1 deletions
  1. 1 1
      src/typing/typerDisplay.ml
  2. 17 0
      tests/server/src/DisplayTests.hx

+ 1 - 1
src/typing/typerDisplay.ml

@@ -141,7 +141,7 @@ let get_expected_type ctx with_type =
 		| None -> None
 		| Some t ->
 			let from_type = CompletionType.from_type (get_import_status ctx) in
-			Some (from_type t,from_type (follow t))
+			Some (from_type t,from_type (Type.map follow (follow t)))
 
 let raise_toplevel ctx dk with_type (subject,psubject) =
 	let expected_type = get_expected_type ctx with_type in

+ 17 - 0
tests/server/src/DisplayTests.hx

@@ -10,6 +10,23 @@ import haxe.display.FsPath;
 @:timeout(5000)
 // TODO: somebody has to clean this up
 class DisplayTests extends HaxeServerTestCase {
+	function testIssue7262() {
+		var content = 'class Main {
+			static public function main() {
+				var x:haxe.extern.EitherType<haxe.PosInfos, () -> Void> = {-1-}
+			}
+		}';
+		var transform = Marker.extractMarkers(content);
+		vfs.putContent("Main.hx", transform.source);
+		runHaxeJson([], DisplayMethods.Completion, {
+			file: new FsPath("Main.hx"),
+			offset: transform.markers[1],
+			wasAutoTriggered: true
+		});
+		var result = parseCompletion().result;
+		equals("TAnonymous", result.mode.args.expectedTypeFollowed.args.params[0].kind);
+	}
+
 	function testIssue7305() {
 		var content = 'class Main {
 	static public function main() {