Browse Source

[tests] Add type hole test for 10653

Rudy Ges 1 year ago
parent
commit
ab884f89e1

+ 22 - 0
tests/server/src/cases/issues/Issue10653.hx

@@ -1,5 +1,7 @@
 package cases.issues;
 
+import haxe.display.Diagnostic;
+
 class Issue10653 extends TestCase {
 	function test(_) {
 		vfs.putContent("Test.hx", getTemplate("issues/Issue10653/Test.hx"));
@@ -16,4 +18,24 @@ class Issue10653 extends TestCase {
 			Assert.equals(0, res.length);
 		});
 	}
+
+	function testTypeHole(_) {
+		vfs.putContent("Test.hx", getTemplate("issues/Issue10653/Test.hx"));
+		vfs.putContent("Main.hx", getTemplate("issues/Issue10653/MainBefore.hx"));
+		var args = ["-main", "Main", "--js", "no.js", "--no-output"];
+		runHaxe(args);
+		vfs.putContent("Main.hx", getTemplate("issues/Issue10653/MainAfterWrong.hx"));
+		runHaxeJson([], ServerMethods.Invalidate, {file: new FsPath("Main.hx")});
+		runHaxeJsonCb(args, DisplayMethods.Diagnostics, {file: new FsPath("Main.hx")}, res -> {
+			Assert.equals(1, res.length);
+			var arg:MissingFieldDiagnostics = cast res[0].diagnostics[0].args;
+			Assert.equals("foo", arg.entries[0].fields[0].field.name);
+		});
+		runHaxeJson([], ServerMethods.Invalidate, {file: new FsPath("Main.hx")});
+		runHaxeJsonCb(args, DisplayMethods.Diagnostics, {file: new FsPath("Main.hx")}, res -> {
+			Assert.equals(1, res.length);
+			var arg:MissingFieldDiagnostics = cast res[0].diagnostics[0].args;
+			Assert.equals("foo", arg.entries[0].fields[0].field.name);
+		});
+	}
 }

+ 9 - 0
tests/server/test/templates/issues/Issue10653/MainAfterWrong.hx

@@ -0,0 +1,9 @@
+class Main {
+	static function main() {
+		var x = Test.test();
+		x = new Main();
+		x.foo = "wtf";
+	}
+
+	function new() {}
+}