diff options
author | Araq <rumpf_a@web.de> | 2019-11-28 10:47:20 +0100 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2019-11-28 23:00:34 +0100 |
commit | 0996eb174fdafc2980d21149dae5b5a7c5889dff (patch) | |
tree | 05f8c484c8a423ea1c0c885980a99f3f58ba9d13 /compiler/vmgen.nim | |
parent | 87f0d534d6da2e8a7dc390e47ba60ca4d8bfb759 (diff) | |
download | Nim-0996eb174fdafc2980d21149dae5b5a7c5889dff.tar.gz |
fixes #11727 [backport]
Diffstat (limited to 'compiler/vmgen.nim')
-rw-r--r-- | compiler/vmgen.nim | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/compiler/vmgen.nim b/compiler/vmgen.nim index 18397ec26..f8f4b81dd 100644 --- a/compiler/vmgen.nim +++ b/compiler/vmgen.nim @@ -1719,8 +1719,13 @@ proc genCheckedObjAccessAux(c: PCtx; n: PNode; dest: var TDest; flags: TGenFlags # If the check fails let the user know let lab1 = c.xjmp(n, if negCheck: opcFJmp else: opcTJmp, rs) c.freeTemp(rs) - # Not ideal but will do for the moment - c.gABC(n, opcQuit) + let strType = getSysType(c.graph, n.info, tyString) + var fieldNameRegister: TDest = c.getTemp(strType) + let strLit = newStrNode($accessExpr[1], accessExpr[1].info) + strLit.typ = strType + c.genLit(strLit, fieldNameRegister) + c.gABC(n, opcInvalidField, fieldNameRegister) + c.freeTemp(fieldNameRegister) c.patch(lab1) proc genCheckedObjAccess(c: PCtx; n: PNode; dest: var TDest; flags: TGenFlags) = |