summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyle Gunger <kgunger12@gmail.com>2023-05-14 10:35:43 -0400
committerKyle Gunger <kgunger12@gmail.com>2023-05-14 10:35:43 -0400
commit3217d450a61d5acb5f268604ce97b7b134697afd (patch)
tree011b8e7f1976d28c8933f8e05ac333a544c9afb5
parent6a64c6f33f345b88bf6f7fcbe18f7757706a9976 (diff)
Fix postfix operator
-rw-r--r--tnslc/tnslc.tnsl20
1 files changed, 14 insertions, 6 deletions
diff --git a/tnslc/tnslc.tnsl b/tnslc/tnslc.tnsl
index 5248a29..485113d 100644
--- a/tnslc/tnslc.tnsl
+++ b/tnslc/tnslc.tnsl
@@ -3063,12 +3063,12 @@
;/
;Variable s1, s2
+ ;layer` = layer` + 1
/; if (first == start)
;s1 = _eval_value(tok, first + 1, max, out, mov, current, scope, t, layer)
;; else if (first == max - 1)
;s1 = _eval_value(tok, start, first, out, mov, current, scope, t, layer)
;; else
- ;layer` = layer` + 1
/; if (tok`{first}.cmp("="))
;layer` = layer` - 1
;/
@@ -3076,7 +3076,7 @@
;s1 = _eval_value(tok, start, first, out, mov, current, scope, t, layer)
;t = s1.data_type
- ;t.strip_refs()
+ ;t.strip_refs()
;s2 = _eval_value(tok, first + 1, max, out, mov, current, scope, t, ~l2)
/; if (tok`{first}.cmp("="))
@@ -3084,13 +3084,13 @@
;/
;log_debug(string_add("Calculated s2 as ", s2.sprint()))
- ;layer` = layer` - 1
;/
-
+ ;layer` = layer` - 1
+
;log_debug(string_add("Calculated s1 as ", s1.sprint()))
/; if (tok`{first}.cmp("="))
- ;s1.set(s2, out)
+ ;s1.set(s2, out)
;return s1
;/
@@ -3106,13 +3106,21 @@
}, " "))
# Inc and dec
- /; else if (tok`{first}.cmp("++") || tok`{first}.cmp("--"))
+ /; if (tok`{first}.cmp("++") || tok`{first}.cmp("--"))
+ ;wk.data_type = s1.data_type
+ ;wk.data_type.strip_refs()
+ ;wk.set(s1, out)
+
/; if (tok`{first}.cmp("++"))
;s1.inc(out)
;; else
;s1.dec(out)
;/
+ /; if (first == max - 1)
+ ;return wk
+ ;/
+
;return s1
;/