From e0f184c2624d99048b5d9116943cc4a24394f0bb Mon Sep 17 00:00:00 2001 From: Rudy Ges Date: Wed, 22 Jan 2025 07:53:47 +0100 Subject: [PATCH] [CI] Add test for #11892 (#11930) --- .../src/cases/display/issues/Issue11892.hx | 53 +++++++++++++++++++ .../test/templates/issues/Issue11892/Main.hx | 26 +++++++++ 2 files changed, 79 insertions(+) create mode 100644 tests/server/src/cases/display/issues/Issue11892.hx create mode 100644 tests/server/test/templates/issues/Issue11892/Main.hx diff --git a/tests/server/src/cases/display/issues/Issue11892.hx b/tests/server/src/cases/display/issues/Issue11892.hx new file mode 100644 index 00000000000..cdc3a42d9a0 --- /dev/null +++ b/tests/server/src/cases/display/issues/Issue11892.hx @@ -0,0 +1,53 @@ +package cases.display.issues; + +import haxe.Json; +import haxe.display.Display; + +private typedef HoverResponse = { + ?error:{code:Int, message:String}, + ?result:HoverResult +} + +class Issue11892 extends DisplayTestCase { + function testCompilerMetadata(_) { + var content = getTemplate("issues/Issue11892/Main.hx"); + var transform = Marker.extractMarkers(content); + vfs.putContent("Main.hx", transform.source); + + var args = ["--main", "Main", "-D", "analyzer-optimize", "--interp", "--dce=full"]; + // Needed to repro -4- + args = args.concat(["-D", "disable-hxb-cache"]); + runHaxe(["--no-output"].concat(args)); + + // Previously was pointing to @:pure + runHaxeJson(args, DisplayMethods.Hover, {file: new FsPath("Main.hx"), offset: transform.markers[1]}); + var response:HoverResponse = Json.parse(lastResult.stderr); + Assert.equals(null, response.error); + Assert.equals(null, response.result.result); + + runHaxe(["--no-output"].concat(args)); + + // Previously was pointing to @:value + runHaxeJson(args, DisplayMethods.Hover, {file: new FsPath("Main.hx"), offset: transform.markers[2]}); + var response:HoverResponse = Json.parse(lastResult.stderr); + Assert.equals(null, response.error); + Assert.equals(null, response.result.result); + + runHaxe(["--no-output"].concat(args)); + + // Previously was pointing to @:pure(expect) + // But previously was also giving an error.. + runHaxeJson(args, DisplayMethods.Hover, {file: new FsPath("Main.hx"), offset: transform.markers[3]}); + var response:HoverResponse = Json.parse(lastResult.stderr); + Assert.equals(null, response.error); + Assert.equals(null, response.result?.result); + + runHaxe(["--no-output"].concat(args)); + + // Previously was pointing to @:directlyUsed + runHaxeJson(args, DisplayMethods.Hover, {file: new FsPath("Main.hx"), offset: transform.markers[4]}); + var response:HoverResponse = Json.parse(lastResult.stderr); + Assert.equals(null, response.error); + Assert.equals(null, response.result.result); + } +} diff --git a/tests/server/test/templates/issues/Issue11892/Main.hx b/tests/server/test/templates/issues/Issue11892/Main.hx new file mode 100644 index 00000000000..d5df9c8e0e9 --- /dev/null +++ b/tests/server/test/templates/issues/Issue11892/Main.hx @@ -0,0 +1,26 @@ +class Main { + static function main():Void { + var pure {-1-}= 42; + } + + var value = { + var y {-2-}= 42; + 0; + }; +} + +class Foo { + @:pure function foo() {} +} + +class PureExpect extends Foo { + override final function foo() { + var y {-3-}= 42; + } + + function baz() trace(DirectlyUsedEnum); +} + +enum DirectlyUsedEnum { + Foobar(a:Int {-4-}, b:Int); +}