From cf3347b47ff8c2f2489dd7fb209ff8ff3aacb870 Mon Sep 17 00:00:00 2001 From: Kolo <67389779+JustKolosaki@users.noreply.github.com> Date: Sun, 16 Feb 2025 19:27:17 +0100 Subject: [PATCH] null safe field functions --- hscript/Parser.hx | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/hscript/Parser.hx b/hscript/Parser.hx index f71bb59b..8fff3392 100644 --- a/hscript/Parser.hx +++ b/hscript/Parser.hx @@ -810,6 +810,18 @@ class Parser { mk(EField(mk(EIdent(tmp),pmin(e1),pmax(e1)),field),pmin(e1)) )) ]),pmin(e1)); + + if ( maybe(TPOpen) ) { + e = mk(EBlock([ + mk(EVar(tmp, null, e1), pmin(e1), pmax(e1)), + mk(ETernary( + mk(EBinop("==", mk(EIdent(tmp),pmin(e1),pmax(e1)), mk(EIdent("null"),pmin(e1),pmax(e1)))), + mk(EIdent("null"),pmin(e1),pmax(e1)), + mk(ECall(mk(EField(mk(EIdent(tmp),pmin(e1),pmax(e1)),field),pmin(e1)),parseExprList(TPClose)),pmin(e1)) + )) + ]),pmin(e1)); + } + return parseExprNext(e); case TPOpen: return parseExprNext(mk(ECall(e1,parseExprList(TPClose)),pmin(e1)));