aboutsummaryrefslogtreecommitdiff
path: root/src/ast_render.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <superjoe30@gmail.com>2016-07-27 23:04:24 -0700
committerAndrew Kelley <superjoe30@gmail.com>2016-07-27 23:08:27 -0700
commit8552d7fd19836f3350b7303f9bd897708b966805 (patch)
tree0189be7c4bc284bfb693db3eb007844bd168b213 /src/ast_render.cpp
parent3eb5afd245d8e2059a8cf4b8aa4e201ec0613535 (diff)
downloadzig-8552d7fd19836f3350b7303f9bd897708b966805.tar.gz
zig-8552d7fd19836f3350b7303f9bd897708b966805.zip
explicit wrapping integer operations
instead of wrapping integer types closes #159
Diffstat (limited to 'src/ast_render.cpp')
-rw-r--r--src/ast_render.cpp79
1 files changed, 44 insertions, 35 deletions
diff --git a/src/ast_render.cpp b/src/ast_render.cpp
index 9d9f56cb3c..c1d50ddfff 100644
--- a/src/ast_render.cpp
+++ b/src/ast_render.cpp
@@ -4,41 +4,49 @@
static const char *bin_op_str(BinOpType bin_op) {
switch (bin_op) {
- case BinOpTypeInvalid: return "(invalid)";
- case BinOpTypeBoolOr: return "||";
- case BinOpTypeBoolAnd: return "&&";
- case BinOpTypeCmpEq: return "==";
- case BinOpTypeCmpNotEq: return "!=";
- case BinOpTypeCmpLessThan: return "<";
- case BinOpTypeCmpGreaterThan: return ">";
- case BinOpTypeCmpLessOrEq: return "<=";
- case BinOpTypeCmpGreaterOrEq: return ">=";
- case BinOpTypeBinOr: return "|";
- case BinOpTypeBinXor: return "^";
- case BinOpTypeBinAnd: return "&";
- case BinOpTypeBitShiftLeft: return "<<";
- case BinOpTypeBitShiftRight: return ">>";
- case BinOpTypeAdd: return "+";
- case BinOpTypeSub: return "-";
- case BinOpTypeMult: return "*";
- case BinOpTypeDiv: return "/";
- case BinOpTypeMod: return "%";
- case BinOpTypeAssign: return "=";
- case BinOpTypeAssignTimes: return "*=";
- case BinOpTypeAssignDiv: return "/=";
- case BinOpTypeAssignMod: return "%=";
- case BinOpTypeAssignPlus: return "+=";
- case BinOpTypeAssignMinus: return "-=";
- case BinOpTypeAssignBitShiftLeft: return "<<=";
- case BinOpTypeAssignBitShiftRight: return ">>=";
- case BinOpTypeAssignBitAnd: return "&=";
- case BinOpTypeAssignBitXor: return "^=";
- case BinOpTypeAssignBitOr: return "|=";
- case BinOpTypeAssignBoolAnd: return "&&=";
- case BinOpTypeAssignBoolOr: return "||=";
- case BinOpTypeUnwrapMaybe: return "??";
- case BinOpTypeArrayCat: return "++";
- case BinOpTypeArrayMult: return "**";
+ case BinOpTypeInvalid: return "(invalid)";
+ case BinOpTypeBoolOr: return "||";
+ case BinOpTypeBoolAnd: return "&&";
+ case BinOpTypeCmpEq: return "==";
+ case BinOpTypeCmpNotEq: return "!=";
+ case BinOpTypeCmpLessThan: return "<";
+ case BinOpTypeCmpGreaterThan: return ">";
+ case BinOpTypeCmpLessOrEq: return "<=";
+ case BinOpTypeCmpGreaterOrEq: return ">=";
+ case BinOpTypeBinOr: return "|";
+ case BinOpTypeBinXor: return "^";
+ case BinOpTypeBinAnd: return "&";
+ case BinOpTypeBitShiftLeft: return "<<";
+ case BinOpTypeBitShiftLeftWrap: return "<<%";
+ case BinOpTypeBitShiftRight: return ">>";
+ case BinOpTypeAdd: return "+";
+ case BinOpTypeAddWrap: return "+%";
+ case BinOpTypeSub: return "-";
+ case BinOpTypeSubWrap: return "-%";
+ case BinOpTypeMult: return "*";
+ case BinOpTypeMultWrap: return "*%";
+ case BinOpTypeDiv: return "/";
+ case BinOpTypeMod: return "%";
+ case BinOpTypeAssign: return "=";
+ case BinOpTypeAssignTimes: return "*=";
+ case BinOpTypeAssignTimesWrap: return "*%=";
+ case BinOpTypeAssignDiv: return "/=";
+ case BinOpTypeAssignMod: return "%=";
+ case BinOpTypeAssignPlus: return "+=";
+ case BinOpTypeAssignPlusWrap: return "+%=";
+ case BinOpTypeAssignMinus: return "-=";
+ case BinOpTypeAssignMinusWrap: return "-%=";
+ case BinOpTypeAssignBitShiftLeft: return "<<=";
+ case BinOpTypeAssignBitShiftLeftWrap: return "<<%=";
+ case BinOpTypeAssignBitShiftRight: return ">>=";
+ case BinOpTypeAssignBitAnd: return "&=";
+ case BinOpTypeAssignBitXor: return "^=";
+ case BinOpTypeAssignBitOr: return "|=";
+ case BinOpTypeAssignBoolAnd: return "&&=";
+ case BinOpTypeAssignBoolOr: return "||=";
+ case BinOpTypeUnwrapMaybe: return "??";
+ case BinOpTypeArrayCat: return "++";
+ case BinOpTypeArrayMult: return "**";
}
zig_unreachable();
}
@@ -47,6 +55,7 @@ static const char *prefix_op_str(PrefixOp prefix_op) {
switch (prefix_op) {
case PrefixOpInvalid: return "(invalid)";
case PrefixOpNegation: return "-";
+ case PrefixOpNegationWrap: return "-%";
case PrefixOpBoolNot: return "!";
case PrefixOpBinNot: return "~";
case PrefixOpAddressOf: return "&";