From 5871f06803038534f6daa51ddb87929bbae5d260 Mon Sep 17 00:00:00 2001 From: Yuxiao Mao Date: Thu, 4 Dec 2025 08:57:36 +0100 Subject: [PATCH 1/3] [CI] Run tests with haxe latest, 4.3.7, 4.2.5 --- .github/workflows/main.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 026aaad2..5d84e7f4 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -9,12 +9,16 @@ on: jobs: build: + strategy: + matrix: + haxe-version: [latest, 4.3.7, 4.2.5] + fail-fast: false runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: krdlab/setup-haxe@v1 with: - haxe-version: 4.3.4 + haxe-version: ${{ matrix.haxe-version }} - name: Install haxelib dependencies run: | haxelib install hx3compat From 98bd32254f0e4ad962f1d2b42368f1302cd8a120 Mon Sep 17 00:00:00 2001 From: Yuxiao Mao Date: Thu, 4 Dec 2025 09:04:02 +0100 Subject: [PATCH 2/3] hscript.Checker replace ?. with classic syntax --- hscript/Checker.hx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hscript/Checker.hx b/hscript/Checker.hx index 7ee549da..7be5b746 100644 --- a/hscript/Checker.hx +++ b/hscript/Checker.hx @@ -1052,7 +1052,7 @@ class Checker { switch( e.e ) { case EField(obj, f): if( cf.isMethod ) { - switch( callExpr?.e ) { + switch( callExpr == null ? null : callExpr.e ) { case null: case ECall(ec,params) if( ec == e ): e.e = EField(acc,f); From ab462208619b0d4aeed9873a216efef7ad745cee Mon Sep 17 00:00:00 2001 From: Yuxiao Mao Date: Thu, 4 Dec 2025 09:11:47 +0100 Subject: [PATCH 3/3] hscript.JsInterp fix missing return for 4.2.5 (probably not detecting throw) --- hscript/JsInterp.hx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hscript/JsInterp.hx b/hscript/JsInterp.hx index 9161c441..2f91a7d6 100644 --- a/hscript/JsInterp.hx +++ b/hscript/JsInterp.hx @@ -264,6 +264,7 @@ class JsInterp extends Interp { default: error(EInvalidOp(op)); } + return null; case EUnop(op, prefix, e): switch( op ) { case "!": @@ -300,6 +301,7 @@ class JsInterp extends Interp { default: error(EInvalidOp(op)); } + return null; case ECall(e, params): var args = [for( p in params ) exprValue(p)]; switch( Tools.expr(e) ) {