diff --git a/tests/server/src/cases/issues/Issue10653.hx b/tests/server/src/cases/issues/Issue10653.hx index 2ebfa0b4fd1..418a68c0735 100644 --- a/tests/server/src/cases/issues/Issue10653.hx +++ b/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); + }); + } } diff --git a/tests/server/test/templates/issues/Issue10653/MainAfterWrong.hx b/tests/server/test/templates/issues/Issue10653/MainAfterWrong.hx new file mode 100644 index 00000000000..bfebe2386cf --- /dev/null +++ b/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() {} +}