Browse Source

[tests] add test for #8712 (#11972)

* [display] Local origin is only defined for VUser vars

* [tests] add test for #8712
Rudy Ges 5 months ago
parent
commit
78aac18869
2 changed files with 42 additions and 1 deletions
  1. 1 1
      std/haxe/display/Display.hx
  2. 41 0
      tests/display/src/cases/Issue8712.hx

+ 1 - 1
std/haxe/display/Display.hx

@@ -129,7 +129,7 @@ typedef DisplayLocal<T> = {
 	var id:Int;
 	var name:String;
 	var type:JsonType<T>;
-	var origin:LocalOrigin;
+	var ?origin:LocalOrigin;
 	var capture:Bool;
 	var ?extra:{
 		var params:Array<JsonTypeParameter>;

+ 41 - 0
tests/display/src/cases/Issue8712.hx

@@ -0,0 +1,41 @@
+package cases;
+
+import haxe.display.Display;
+import haxe.display.FsPath;
+
+class Issue8712 extends DisplayTestCase {
+	#if (display.protocol == "jsonrpc")
+	/**
+		abstract Foo(Int) {
+			function foo() {
+				ab{-2-}stract;
+				ab{-3-}stract.bar();
+			}
+
+			function bar() return th{-1-}is;
+		}
+	**/
+	function test() @:privateAccess {
+		function hover(marker:Int, ?p:haxe.PosInfos) {
+			var item = ctx.callDisplay(DisplayMethods.Hover, {
+				file: new FsPath(ctx.source.path),
+				offset: pos(marker),
+			}).result.item;
+
+			switch (item.kind) {
+				case Local if (marker == 1):
+					eq("this", item.args.name);
+					eq(null, item.args.origin); // = NOT VUser
+
+				case Literal if (marker >= 2):
+					eq("abstract", item.args.name);
+
+				case kind:
+					utest.Assert.fail("Unexpected item kind: " + kind, p);
+			}
+		}
+
+		for (i in 1...4) hover(i);
+	}
+	#end
+}