浏览代码

[display] follow expected type when finding enum ctors

closes #7923
Simon Krajewski 5 年之前
父节点
当前提交
310eae9e60

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

@@ -357,7 +357,7 @@ let collect ctx tk with_type sort =
 		(* enum constructors of expected type *)
 		begin match with_type with
 			| WithType.WithType(t,_) ->
-				(try enum_ctors (module_type_of_type t) with Exit -> ())
+				(try enum_ctors (module_type_of_type (follow t)) with Exit -> ())
 			| _ -> ()
 		end;
 

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

@@ -65,6 +65,23 @@ class DisplayTests extends HaxeServerTestCase {
 		Assert.equals("obj", result.result.mode.args.item.args.name);
 	}
 
+	function testIssue7923() {
+		vfs.putContent("TreeItem.hx", getTemplate("issues/Issue7923/TreeItem.hx"));
+		var content = getTemplate("issues/Issue7923/Main.hx");
+		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();
+		assertHasCompletion(result, item -> switch (item.kind) {
+			case EnumAbstractField: item.args.field.name == "Collapsed";
+			case _: false;
+		});
+	}
+
 	function testIssue8061() {
 		var content = 'class Main {
 	static function main() {

+ 6 - 0
tests/server/test/templates/issues/Issue7923/Main.hx

@@ -0,0 +1,6 @@
+class Main {
+	static function main() {
+		var treeItem:TreeItem;
+		treeItem.collapsibleState = {-1-}
+	}
+}

+ 7 - 0
tests/server/test/templates/issues/Issue7923/TreeItem.hx

@@ -0,0 +1,7 @@
+class TreeItem {
+	public var collapsibleState:Null<TreeItemCollapsibleState>;
+}
+
+enum abstract TreeItemCollapsibleState(Int) {
+	var Collapsed;
+}