diff options
| author | Andrew Kelley <superjoe30@gmail.com> | 2016-07-27 23:04:24 -0700 |
|---|---|---|
| committer | Andrew Kelley <superjoe30@gmail.com> | 2016-07-27 23:08:27 -0700 |
| commit | 8552d7fd19836f3350b7303f9bd897708b966805 (patch) | |
| tree | 0189be7c4bc284bfb693db3eb007844bd168b213 /src/ast_render.cpp | |
| parent | 3eb5afd245d8e2059a8cf4b8aa4e201ec0613535 (diff) | |
| download | zig-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.cpp | 79 |
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 "&"; |
