diff --git a/tests/server/src/cases/ServerTests.hx b/tests/server/src/cases/ServerTests.hx index 3de168c9790..aa27ccbda4b 100644 --- a/tests/server/src/cases/ServerTests.hx +++ b/tests/server/src/cases/ServerTests.hx @@ -446,6 +446,30 @@ class ServerTests extends TestCase { assertSuccess(); } + function testHxbUnbound1() { + vfs.putContent("Main.hx", getTemplate("hxb/UnboundLocalFunGeneric.hx")); + var args = ["-main", "Main"]; + runHaxe(args); + assertSuccess(); + Assert.equals("", lastResult.stderr); + } + + function testHxbUnbound2() { + vfs.putContent("Main.hx", getTemplate("hxb/UnboundAbstractUnderlyingAnonField.hx")); + var args = ["-main", "Main"]; + runHaxe(args); + assertSuccess(); + Assert.equals("", lastResult.stderr); + + runHaxe(args); + assertSuccess(); + Assert.equals("", lastResult.stderr); + + runHaxe(args); + assertSuccess(); + Assert.equals("", lastResult.stderr); + } + // See https://github.com/HaxeFoundation/haxe/issues/8368#issuecomment-525379060 #if false function testXRedefinedFromX() { diff --git a/tests/server/test/templates/hxb/UnboundAbstractUnderlyingAnonField.hx b/tests/server/test/templates/hxb/UnboundAbstractUnderlyingAnonField.hx new file mode 100644 index 00000000000..04a5d854775 --- /dev/null +++ b/tests/server/test/templates/hxb/UnboundAbstractUnderlyingAnonField.hx @@ -0,0 +1,11 @@ +function main() {} + +typedef Foo = { + function get():Null; +} + +abstract HaxeMemento(Foo) { + public function getInner():Null { + return this.get(); + } +} diff --git a/tests/server/test/templates/hxb/UnboundLocalFunGeneric.hx b/tests/server/test/templates/hxb/UnboundLocalFunGeneric.hx new file mode 100644 index 00000000000..ae800d93007 --- /dev/null +++ b/tests/server/test/templates/hxb/UnboundLocalFunGeneric.hx @@ -0,0 +1,11 @@ +class Main { + static function main() { + function foo(arr:Array) sortDesc(arr); + + foo([""]); + foo([42]); + } + + @:generic + public inline static function sortDesc(array : Array) {} +}